Skip to main content

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!

Index

Install

pip3 install OBRequests>=2.0.0

Docs

obrequests.readthedocs.io

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


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.1.tar.gz (20.2 kB view hashes)

Uploaded Source

Built Distribution

OBRequests-2.0.1-py3-none-any.whl (24.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page