Types for HTTP requests and responses
Project description
HTTP types in Python
Types for HTTP request and response.
Requires Python >= 3.6.
Installation
pip install http-types
Usage
Creating objects by hand
You can create typed Request
and Response
objects directly by listing arguments:
from http_types import Request, Response, RequestBuilder
req = Request(method="get",
host="api.github.com",
path="/user/repos?id=1",
pathname="/user/repos",
protocol="https",
query={"id": ["1"]},
body="",
bodyAsJson="",
headers={}) # Valid `Request` object, passes type-checking
res = Response(statusCode=200, body="OK", headers={}) # Valid `Response` object, passes type-checking
invalid_req = Request(method="get") # Fails type-checking, missing arguments
invalid_res = Response(body=1, ...) # Fails type-checking, wrong type for `body`
Creating objects via helper methods
from http_types import RequestBuilder, ResponseBuilder, HttpExchangeBuilder
# Create Request object from URL
url = "https://api.github.com/v1/repos?id=1"
req = RequestBuilder.from_url(url) # Validated Request object
# Create request object from dictionary
req_obj = {
'host': 'api.github.com',
'protocol': 'https',
'method': 'get',
'path': '/v1/users', # pathname inferred automatically
'query': {}
}
req = RequestBuilder.from_dict(req_obj) # `body`, `pathname`, and `headers` are optional
Validating objects
from http_types import RequestBuilder, ResponseBuilder
req = Request(...)
RequestBuilder.validate(req) # Validate `Request` object
res = Response(...)
ResponseBuilder.validate(res) # Validate `Response` object
Development
Local development
- Create a new virtual environment.
- Install dependencies:
pip install --upgrade -e '.[dev]'
Running tests
Run pytest tests/
or python setup.py test
.
Configuration for pytest
is found in pytest.ini file.
Running type-checking
Install pyright and run pyright --lib
or python setup.py typecheck
.
Configuration for pyright
is found in pyrightconfig.json file.
Automated tests
See .circleci/config.yml.
Publishing package
- Bump the version in setup.py if the version is the same as in the published package. Commit and push.
- Run
python setup.py test
,python setup.py typecheck
andpython setup.py dist
to check everything works - To build and upload the package, run
python setup.py upload
. Insert PyPI credentials to upload the pacakge toPyPI
. The command will also rungit tag
to tag the commit as a release and push the tags to remote.
To see what the different commands do, see Command
classes in setup.py.
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
http-types-0.0.6.tar.gz
(7.0 kB
view hashes)
Built Distribution
Close
Hashes for http_types-0.0.6-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4614573e2ce6cb856d3a463d89140c27b31870c12b369dc8017848fb18c24016 |
|
MD5 | f6cf94e4f07574503a0c414914c4ac6f |
|
BLAKE2b-256 | a8d3481cd71aeb094ae2e5c63360d06749aa1316afa928d02ba58afddd06d796 |