A Declarative HTTP Client for Python.
Project description
Builds Reusable Objects for Consuming Web APIs.
Works with Requests, asyncio, and Twisted.
Inspired by Retrofit.
A Quick Walkthrough, with GitHub API v3
Uplink turns your HTTP API into a Python class.
from uplink import Consumer, get, headers, Path, Query
class GitHub(Consumer):
@get("users/{user}/repos")
def get_repos(self, user: Path, sort_by: Query("sort")):
"""Retrieves the user's public repositories."""
Build an instance to interact with the webservice.
github = GitHub(base_url="https://api.github.com/")
Then, executing an HTTP request is as simply as invoking a method.
repos = github.get_repos("octocat", sort_by="created")
The returned object is a friendly requests.Response:
print(repos.json())
# Output: [{'id': 64778136, 'name': 'linguist', ...
For sending non-blocking requests, Uplink comes with support for aiohttp and twisted.
Use decorators and function annotations to describe the HTTP request:
URL parameter replacement and query parameter support
Convert response bodies into Python objects (e.g., using marshmallow or a custom converter)
JSON, URL-encoded, and multipart request body and file upload
Inject functions as middleware to apply custom response and error handling
Installation
uplink supports Python 2.7 & 3.3-3.7.
To install the latest stable release, you can use pip:
$ pip install -U uplink
If you are interested in the cutting-edge, preview the upcoming release with:
$ pip install https://github.com/prkumar/uplink/archive/master.zip
Extra! Extra!
Further, uplink has optional integrations and features. You can view a full list of available extras here.
When installing Uplink with pip, you can select extras using the format:
$ pip install -U uplink[extra1, extra2, ..., extraN]
For instance, to install aiohttp and marshmallow support:
$ pip install -U uplink[aiohttp, marshmallow]
Documentation
For more details, check out the documentation at https://uplink.readthedocs.io/.
Contributing
Want to report a bug, request a feature, or contribute code to Uplink? Checkout the Contribution Guide for where to start. Thank you for taking the time to improve an open source project 💜
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for uplink-0.5.4-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1287bad4096c2cbf32018286b1dccb64c2f2ffbfdb2288711a5b42fc5e7bfa72 |
|
MD5 | 3df6a8e910d2a591f3b7becd116414ac |
|
BLAKE2b-256 | ec39ec86c4b26142939eb9ce99590a0177a6bfb305c8d1c9de718b63fde26190 |