Differences between revisions 10 and 47 (spanning 37 versions)
Revision 10 as of 2008-10-04 16:21:24
Size: 3054
Editor: e178020075
Comment: Updated package_releases signature and doc string to reflect the real behaviour.
Revision 47 as of 2017-04-12 00:40:48
Size: 5094
Editor: EWDurbin
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= PyPI's XML-RPC methods = [[CheeseShopDev|PyPI]] APIs: [[PyPISimple|Simple]], [[PyPIJSON|JSON]], '''XMLRPC'''.
Line 3: Line 3:
= The XMLRPC interface for PyPI is considered legacy and should not be used. =
= Use the Simple and JSON APIs. =
== PyPI's XML-RPC methods ==
Line 4: Line 7:
Line 5: Line 9:
>>> import xmlrpclib
>>> server = xmlrpclib.Server('http://pypi.python.org/pypi')
>>> server.package_releases('roundup')
['1.1.2']
>>> server.package_urls('roundup', '1.1.2')
[{'has_sig': True, 'comment_text': '', 'python_version': 'source', 'url': 'http://pypi.python.org/packages/source/r/roundup/roundup-1.1.2.tar.gz', 'md5_digest': '7c395da56412e263d7600fa7f0afa2e5', 'downloads': 2989, 'filename': 'roundup-1.1.2.tar.gz', 'packagetype': 'sdist', 'size': 876455}, {'has_sig': True, 'comment_text': '', 'python_version': 'any', 'url': 'http://pypi.python.org/packages/any/r/roundup/roundup-1.1.2.win32.exe', 'md5_digest': '983d565b0b87f83f1b6460e54554a845', 'downloads': 2020, 'filename': 'roundup-1.1.2.win32.exe', 'packagetype': 'bdist_wininst', 'size': 614270}]
>>> try:
>>> import xmlrpclib
>>> except ImportError:
>>> import xmlrpc.client as xmlrpclib
>>> import pprint
>>> client = xmlrpclib.ServerProxy('https://pypi.python.org/pypi')
>>> client.package_releases('roundup')
['1.4.10']
>>> pprint.pprint(client.release_urls('roundup', '1.4.10'))
[{'comment_text': '',
  'downloads': 3163,
  'filename': 'roundup-1.1.2.tar.gz',
  'has_sig': True,
  'md5_digest': '7c395da56412e263d7600fa7f0afa2e5',
  'packagetype': 'sdist',
  'python_version': 'source',
  'size': 876455,
  'upload_time': <DateTime '20060427T06:22:35' at 912fecc>,
  'url': 'http://pypi.python.org/packages/source/r/roundup/roundup-1.1.2.tar.gz'},
 {'comment_text': '',
  'downloads': 2067,
  'filename': 'roundup-1.1.2.win32.exe',
  'has_sig': True,
  'md5_digest': '983d565b0b87f83f1b6460e54554a845',
  'packagetype': 'bdist_wininst',
  'python_version': 'any',
  'size': 614270,
  'upload_time': <DateTime '20060427T06:26:04' at 912fdec>,
  'url': 'http://pypi.python.org/packages/any/r/roundup/roundup-1.1.2.win32.exe'}]
Line 12: Line 39:
'''list_packages()'''
Line 13: Line 41:
'''list_packages()'''
Retrieve a list of the package names registered with the package index. Returns a list of name strings.
 . Retrieve a list of the package names registered with the package index. Returns a list of name strings.
Line 17: Line 44:
  Retrieve a list of the releases registered for the given package_name. Returns a list with all version strings if show_hidden is True or a list with only the most recent version string otherwise.
 . Retrieve a list of the releases registered for the given package_name. Returns a list with all version strings if show_hidden is True or only the non-hidden ones otherwise.

'''package_roles(package_name)'''

 . Retrieve a list of users and their attributes roles for a given package_name. Role is either 'Maintainer' or 'Owner'.

'''user_packages(user)'''

 . Retrieve a list of [role_name, package_name] for a given username. Role is either 'Maintainer' or 'Owner'.

'''release_downloads(package_name, version)'''

 . Retrieve a list of files and download count for a given package and release version.
Line 20: Line 60:
  Retrieve a list of download URLs for the given package release. Returns a list of dicts with the following keys:
     * url
    * packagetype ('sdist', 'bdist', etc)
     * filename
     * size
    * md5_digest
     * downloads
     * has_sig
    * python_version (required version, or 'source', or 'any')
     * comment_text

 .
Retrieve a list of download URLs for the given package release. Returns a list of dicts with the following keys:
  * url
  * packagetype ('sdist', 'bdist', etc)
  * filename
  * size
  * md5_digest
  * downloads
  * has_sig
  * python_version (required version, or 'source', or 'any')
  * comment_text
Line 32: Line 73:
  Retrieve metadata describing a specific package release. Returns a dict with keys for:
Line 34: Line 74:
     * name
     * version
     * stable_version
     * author
     * author_email
     * maintainer
     * maintainer_email
     * home_page
     * license
     * summary
     * description
     * keywords
     * platform
     * download_url
     * classifiers (list of classifier strings)
 . Retrieve metadata describing a specific package release. Returns a dict with keys for:
  * name
  * version
  * stable_version
  * author
  * author_email
  * maintainer
  * maintainer_email
  * home_page
  * license
  * summary
  * description
  * keywords
  * platform
  * download_url
  * classifiers (list of classifier strings)
  * requires
  * requires_dist
  * provides
  * provides_dist
  * requires_external
  * requires_python
  * obsoletes
  * obsoletes_dist
  * project_url
  * docs_url (URL of the packages.python.org docs if they've been supplied)
 If the release does not exist, an empty dictionary is returned.
Line 51: Line 103:
   Search the package database using the indicated search spec.
Line 53: Line 104:
 The spec may include any of the keywords described in the above list (except 'stable_version' and 'classifiers'), for example: {'description': 'spam'} will search description fields. Within the spec, a field's value can be a string or a list of strings (the values within the list are combined with an OR), for example: {'name': ['foo', 'bar']}.  . Search the package database using the indicated search spec.
Line 55: Line 106:
 Arguments for different fields are combined using either "and" (the default) or "or". Example: search({'name': 'foo', 'description': 'bar'}, 'or').  . The spec may include any of the keywords described in the above list (except 'stable_version' and 'classifiers'), for example: {'description': 'spam'} will search description fields. Within the spec, a field's value can be a string or a list of strings (the values within the list are combined with an OR), for example: {'name': ['foo', 'bar']}. Valid keys for the spec dict are listed here. Invalid keys are ignored:
  * name
  * version
  * author
  * author_email
  * maintainer
  * maintainer_email
  * home_page
  * license
  * summary
  * description
  * keywords
  * platform
  * download_url
 Arguments for different fields are combined using either "and" (the default) or "or". Example: search({'name': 'foo', 'description': 'bar'}, 'or'). The results are returned as a list of dicts {'name': package name, 'version': package release version, 'summary': package release summary}
Line 57: Line 122:
 The results are returned as a list of dicts {'name': package name, 'version': package release version, 'summary': package release summary} '''browse(classifiers)'''
Line 59: Line 124:
'''changelog(since)'''
  Retrieve a list of four-tuples (name, version, timestamp, action) since the given timestamp. All timestamps are UTC values. The argument is a UTC integer seconds since the epoch.
 . Retrieve a list of (name, version) pairs of all releases classified with all of the given classifiers. 'classifiers' must be a list of Trove classifier strings.

'''changelog(since, with_ids=False)'''

 . Retrieve a list of four-tuples (name, version, timestamp, action), or five-tuple including the serial id if ids are requested, since the given timestamp. All timestamps are UTC values. The argument is a UTC integer seconds since the epoch.

'''changelog_last_serial()'''

 . Retrieve the last event's serial id.

'''changelog_since_serial(since_serial)'''

 . Retrieve a list of five-tuples (name, version, timestamp, action, serial) since the event identified by the given serial. All timestamps are UTC values. The argument is a UTC integer seconds since the epoch.

PyPI APIs: Simple, JSON, XMLRPC.

The XMLRPC interface for PyPI is considered legacy and should not be used.

Use the Simple and JSON APIs.

PyPI's XML-RPC methods

Example usage:

>>> try:
>>>     import xmlrpclib
>>> except ImportError:
>>>     import xmlrpc.client as xmlrpclib
>>> import pprint
>>> client = xmlrpclib.ServerProxy('https://pypi.python.org/pypi')
>>> client.package_releases('roundup')
['1.4.10']
>>> pprint.pprint(client.release_urls('roundup', '1.4.10'))
[{'comment_text': '',
  'downloads': 3163,
  'filename': 'roundup-1.1.2.tar.gz',
  'has_sig': True,
  'md5_digest': '7c395da56412e263d7600fa7f0afa2e5',
  'packagetype': 'sdist',
  'python_version': 'source',
  'size': 876455,
  'upload_time': <DateTime '20060427T06:22:35' at 912fecc>,
  'url': 'http://pypi.python.org/packages/source/r/roundup/roundup-1.1.2.tar.gz'},
 {'comment_text': '',
  'downloads': 2067,
  'filename': 'roundup-1.1.2.win32.exe',
  'has_sig': True,
  'md5_digest': '983d565b0b87f83f1b6460e54554a845',
  'packagetype': 'bdist_wininst',
  'python_version': 'any',
  'size': 614270,
  'upload_time': <DateTime '20060427T06:26:04' at 912fdec>,
  'url': 'http://pypi.python.org/packages/any/r/roundup/roundup-1.1.2.win32.exe'}]

list_packages()

  • Retrieve a list of the package names registered with the package index. Returns a list of name strings.

package_releases(package_name, show_hidden=False)

  • Retrieve a list of the releases registered for the given package_name. Returns a list with all version strings if show_hidden is True or only the non-hidden ones otherwise.

package_roles(package_name)

  • Retrieve a list of users and their attributes roles for a given package_name. Role is either 'Maintainer' or 'Owner'.

user_packages(user)

  • Retrieve a list of [role_name, package_name] for a given username. Role is either 'Maintainer' or 'Owner'.

release_downloads(package_name, version)

  • Retrieve a list of files and download count for a given package and release version.

release_urls(package_name, version)

  • Retrieve a list of download URLs for the given package release. Returns a list of dicts with the following keys:
    • url
    • packagetype ('sdist', 'bdist', etc)
    • filename
    • size
    • md5_digest
    • downloads
    • has_sig
    • python_version (required version, or 'source', or 'any')
    • comment_text

release_data(package_name, version)

  • Retrieve metadata describing a specific package release. Returns a dict with keys for:
    • name
    • version
    • stable_version
    • author
    • author_email
    • maintainer
    • maintainer_email
    • home_page
    • license
    • summary
    • description
    • keywords
    • platform
    • download_url
    • classifiers (list of classifier strings)
    • requires
    • requires_dist
    • provides
    • provides_dist
    • requires_external
    • requires_python
    • obsoletes
    • obsoletes_dist
    • project_url
    • docs_url (URL of the packages.python.org docs if they've been supplied)
    If the release does not exist, an empty dictionary is returned.

search(spec[, operator])

  • Search the package database using the indicated search spec.
  • The spec may include any of the keywords described in the above list (except 'stable_version' and 'classifiers'), for example: {'description': 'spam'} will search description fields. Within the spec, a field's value can be a string or a list of strings (the values within the list are combined with an OR), for example: {'name': ['foo', 'bar']}. Valid keys for the spec dict are listed here. Invalid keys are ignored:
    • name
    • version
    • author
    • author_email
    • maintainer
    • maintainer_email
    • home_page
    • license
    • summary
    • description
    • keywords
    • platform
    • download_url
    Arguments for different fields are combined using either "and" (the default) or "or". Example: search({'name': 'foo', 'description': 'bar'}, 'or'). The results are returned as a list of dicts {'name': package name, 'version': package release version, 'summary': package release summary}

browse(classifiers)

  • Retrieve a list of (name, version) pairs of all releases classified with all of the given classifiers. 'classifiers' must be a list of Trove classifier strings.

changelog(since, with_ids=False)

  • Retrieve a list of four-tuples (name, version, timestamp, action), or five-tuple including the serial id if ids are requested, since the given timestamp. All timestamps are UTC values. The argument is a UTC integer seconds since the epoch.

changelog_last_serial()

  • Retrieve the last event's serial id.

changelog_since_serial(since_serial)

  • Retrieve a list of five-tuples (name, version, timestamp, action, serial) since the event identified by the given serial. All timestamps are UTC values. The argument is a UTC integer seconds since the epoch.


CategoryDocumentation CategoryDocumentation

PyPIXmlRpc (last edited 2018-07-10 16:43:27 by EWDurbin)

Unable to edit the page? See the FrontPage for instructions.