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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file OBRequests-2.0.1.tar.gz.

File metadata

  • Download URL: OBRequests-2.0.1.tar.gz
  • Upload date:
  • Size: 20.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for OBRequests-2.0.1.tar.gz
Algorithm Hash digest
SHA256 1f286799add86b6f5440bca6926d2fd8a314de523339df2374fae0a0eaab2f26
MD5 768ffd85d7a14edc7c01e8cea09fd629
BLAKE2b-256 034c289c15edf4650531965df9b51930c13166834c863586e0bf469345c901d4

See more details on using hashes here.

File details

Details for the file OBRequests-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: OBRequests-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 24.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for OBRequests-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 64c94e846e565bc0a751d79390735c037061a4ef320947dcf8d38519a2fd7f1a
MD5 3955bea3533f68badf7e636b95c03e6f
BLAKE2b-256 7c1d6c880c93a805d87bae07715b1197af681a98af61ece6c02d4a262386309b

See more details on using hashes here.

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