Skip to content

Commit

Permalink
Merge pull request #143 from r1chardj0n3s/legacy-xml-rpc
Browse files Browse the repository at this point in the history
Legacy xml rpc
  • Loading branch information
dstufft committed Nov 7, 2013
2 parents e94d58e + 1961b13 commit 7227a4f
Show file tree
Hide file tree
Showing 7 changed files with 755 additions and 23 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ sdist
develop-eggs
.installed.cfg
node_modules
htmlcov
.wake.json
.sass-cache

Expand Down
1 change: 1 addition & 0 deletions docs/api-reference/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ API Reference
.. toctree::
:maxdepth: 1

xml-rpc
legacy

Application Structure
Expand Down
173 changes: 173 additions & 0 deletions docs/api-reference/xml-rpc.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@

PyPI's XML-RPC methods
======================

Example usage::

>>> import 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': 'https://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': 'https://pypi.python.org/packages/any/r/roundup/roundup-1.1.2.win32.exe'}]

Changes to Legacy API
---------------------

``package_releases`` "show_hidden" flag is now ignored. All versions are
returned.

``release_data`` "stable_version" is always an empty string. It was never
fully supported anyway.


Package Querying
----------------

``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,
ordered by version.

The "show_hidden" flag is now ignored. All versions are returned.

``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 (always an empty string)
- 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.

``top_packages([number])``
Retrieve the sorted list of packages ranked by number of downloads.
Optionally limit the list to the number given.

``updated_releases(since)``
Retrieve a list of package releases made since the given timestamp. The
releases will be listed in descending release date.


Mirroring Support
-----------------

``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.

``list_packages_with_serial()``
Retrieve a dictionary mapping package names to the last serial for each
package.
Loading

0 comments on commit 7227a4f

Please sign in to comment.