Skip to main content

Python HTTP Made Expressive. Inspired by Retrofit.

PyPI Version Build Status Coverage Status Documentation Status

A Quick Walkthrough, with GitHub API v3

Using decorators and function annotations, you can turn any plain old Python class into a self-describing consumer of your favorite HTTP webservice:

from uplink import *

# To register entities that are common to all API requests, you can
# decorate the enclosing class rather than each method separately:
@headers({"Accept": "application/vnd.github.v3.full+json"})
class GitHub(object):

    @get("/users/{username}")
    def get_user(self, username):
        """Get a single user."""

    @json
    @patch("/user")
    def update_user(self, access_token: Query, **info: Body):
        """Update an authenticated user."""

To construct a consumer instance, use the helper function uplink.build:

github = build(GitHub, base_url="https://api.github.com/")

To access the GitHub API with this instance, we simply invoke any of the methods that we defined in the interface above. To illustrate, let’s update my GitHub profile bio:

response = github.update_user(oauth_token, bio="Beam me up, Scotty!").execute()

Voila, update_user(...) seamlessly builds the request (using the decorators and annotations from the method’s definition), and execute() sends that synchronously over the network. Furthermore, the returned response is a requests.Response (documentation):

print(response.json()) # {u'disk_usage': 216141, u'private_gists': 0, ...

In essence, Uplink delivers reusable and self-sufficient objects for accessing HTTP webservices, with minimal code and user pain ☺️.

Installation

uplink supports Python 2.7 & 3.3-3.7.

To install the latest stable release, you can use pip:

$ pip install uplink

Interested in the cutting-edge? You can install the work-in-progress for the upcoming release with:

$ pip install https://github.com/prkumar/uplink/archive/develop.zip

Documentation

For more details, check out the documentation at http://uplink.readthedocs.io/.

Contributing

Looking to report a bug, request a feature, or contribute code to Uplink? Checkout the Contribution Guide ! Thanks for taking the time to improve an open source project!

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uplink-0.1.1.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uplink-0.1.1-py2.py3-none-any.whl (18.7 kB view details)

Uploaded Python 2Python 3

Release history Release notifications | RSS feed

0.10.0

2 files

0.9.7

2 files

0.9.6

2 files

0.9.5

2 files

0.9.4

2 files

0.9.3

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.0.post2

2 files

0.8.0.post1

1 file

0.8.0.post0

1 file

0.7.0

2 files

0.6.1

2 files

0.6.0

2 files

0.5.5

2 files

0.5.4

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.1

2 files

0.4.0

2 files

0.3.0

2 files

0.2.2

2 files

0.2.0.post3

2 files

0.2.0.post2

3 files

0.2.0.post1

2 files

This release

0.1.1 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page