diff options
author | Éric Araujo <merwok@netwok.org> | 2012-03-05 15:16:37 (GMT) |
---|---|---|
committer | Éric Araujo <merwok@netwok.org> | 2012-03-05 15:16:37 (GMT) |
commit | 80f7102d439446f6e1cf9abacfc5b4eac3796cea (patch) | |
tree | 36eaab6ef20c4dc55f25964dac9457b438ad5876 | |
parent | bf6c7eca43d7c7d80525c97af08aef52ec81e4a1 (diff) | |
download | cpython-80f7102d439446f6e1cf9abacfc5b4eac3796cea.zip cpython-80f7102d439446f6e1cf9abacfc5b4eac3796cea.tar.gz cpython-80f7102d439446f6e1cf9abacfc5b4eac3796cea.tar.bz2 |
Improve packaging.database documentation
-rw-r--r-- | Doc/library/packaging.database.rst | 45 | ||||
-rw-r--r-- | Lib/packaging/database.py | 1 |
2 files changed, 34 insertions, 12 deletions
diff --git a/Doc/library/packaging.database.rst b/Doc/library/packaging.database.rst index aaa2cb9..9d750f0 100644 --- a/Doc/library/packaging.database.rst +++ b/Doc/library/packaging.database.rst @@ -15,6 +15,11 @@ Installed Python distributions are represented by instances of Most functions also provide an extra argument ``use_egg_info`` to take legacy distributions into account. +For the purpose of this module, "installed" means that the distribution's +:file:`.dist-info`, :file:`.egg-info` or :file:`egg` directory or file is found +on :data:`sys.path`. For example, if the parent directory of a +:file:`dist-info` directory is added to :envvar:`PYTHONPATH`, then it will be +available in the database. Classes representing installed distributions -------------------------------------------- @@ -128,7 +133,7 @@ Functions to work with the database for the first installed distribution matching *name*. Egg distributions are considered only if *use_egg_info* is true; if both a dist-info and an egg file are found, the dist-info prevails. The directories to be searched are - given in *paths*, which defaults to :data:`sys.path`. Return ``None`` if no + given in *paths*, which defaults to :data:`sys.path`. Returns ``None`` if no matching distribution is found. .. FIXME param should be named use_egg @@ -200,20 +205,23 @@ functions: Examples -------- -Print all information about a distribution -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Printing all information about a distribution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Given a path to a ``.dist-info`` distribution, we shall print out all +Given the name of an installed distribution, we shall print out all information that can be obtained using functions provided in this module:: import sys import packaging.database - path = input() - # first create the Distribution instance try: - dist = packaging.database.Distribution(path) - except FileNotFoundError: + name = sys.argv[1] + except ValueError: + sys.exit('Not enough arguments') + + # first create the Distribution instance + dist = packaging.database.Distribution(path) + if dist is None: sys.exit('No such distribution') print('Information about %r' % dist.name) @@ -244,7 +252,7 @@ information from a :file:`.dist-info` directory. By typing in the console: .. code-block:: sh - $ echo /tmp/choxie/choxie-2.0.0.9.dist-info | python3 print_info.py + python print_info.py choxie we get the following output: @@ -299,10 +307,23 @@ we get the following output: * It was installed as a dependency -Find out obsoleted distributions -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Getting metadata about a distribution +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Sometimes you're not interested about the packaging information contained in a +full :class:`Distribution` object but just want to do something with its +:attr:`~Distribution.metadata`:: + + >>> from packaging.database import get_distribution + >>> info = get_distribution('chocolate').metadata + >>> info['Keywords'] + ['cooking', 'happiness'] + + +Finding out obsoleted distributions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Now, we take tackle a different problem, we are interested in finding out +Now, we tackle a different problem, we are interested in finding out which distributions have been obsoleted. This can be easily done as follows:: import packaging.database diff --git a/Lib/packaging/database.py b/Lib/packaging/database.py index b2fcb97..e028dc5 100644 --- a/Lib/packaging/database.py +++ b/Lib/packaging/database.py @@ -19,6 +19,7 @@ __all__ = [ 'get_distributions', 'get_distribution', 'get_file_users', 'provides_distribution', 'obsoletes_distribution', 'enable_cache', 'disable_cache', 'clear_cache', + # XXX these functions' names look like get_file_users but are not related 'get_file_path', 'get_file'] |