Modern typed requests for Python 3 built on-top of HTTPX
Project description
Object-Based Requests
OBRequests is a modern typed requests library for Python 3 built on-top of HTTPX. It aims to eliminate common boilerplate code when creating API wrappers and makes supporting async & sync python together easy!
TODO:
- Complete documentation
- Final before production optimizations
Index
Install
pip3 install OBRequests>=2.0.0
Docs
Features
- Unique route typing
- Documented
- Supports sync & async with a flick of a boolean
- Built on top of HTTPX for stability and security.
- Supports all the amazing features of HTTPX
Example
from OBRequests import (
OBRequests, Response, CallBack, Route,
Get, json, raise_for_status,
HTTPStatusError, AnyStatus, BasicAuth
)
def custom_response(resp: Response, is_get: bool = False,
**kwargs) -> None:
if is_get:
print(resp.status_code)
else:
raise NotImplementedError()
class Requests(OBRequests):
posts = Route(
"/posts/{post_id}",
responses={
AnyStatus: CallBack(raise_for_status)
},
path_params={
"post_id": "404_error"
},
methods=[
Get(
responses={
200: CallBack(custom_response, is_get=True),
201: ConditionalCallBack(
awaiting=CallBack(custom_response, is_get=True),
blocking=CallBack(custom_response, is_get=False)
)
},
auth=BasicAuth("different", "password")
),
],
auth=BasicAuth("username", "password")
)
request = Requests(
responses={
200: CallBack(json)
},
base_url="https://jsonplaceholder.typicode.com",
awaiting=False,
globals_={
"example": True
}
)
try:
request.posts.get()
except HTTPStatusError as error:
print(error)
# Prints status code
request.posts.get(path_params={
"post_id": 1
})
# Returns phased JSON
request.base_.get(url="/posts")
# Only needed for async
request.close_()
Thanks to
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
OBRequests-2.0.0.tar.gz
(20.2 kB
view hashes)
Built Distribution
OBRequests-2.0.0-py3-none-any.whl
(24.9 kB
view hashes)
Close
Hashes for OBRequests-2.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c4428dd00474310a7c11833ce5792f5490083e66deec924d98ea0786bc0ebe02 |
|
MD5 | cdf009cab021d10df70676481102afd4 |
|
BLAKE2b-256 | e0c4884759ad5d1f9f5bcf2fd908c9d77e77b9029082d782a35261aa6f530fad |