Metadata-Version: 2.1
Name: python-http_request
Version: 0.1.6.1
Summary: Python http request utils.
Home-page: https://github.com/ChenyangGao/python-modules/tree/main/python-http_request
License: MIT
Keywords: http,request
Author: ChenyangGao
Author-email: wosiwujm@gmail.com
Requires-Python: >=3.12,<4.0
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: http_response (>=0.0.9)
Requires-Dist: orjson
Requires-Dist: python-argtools (>=0.0.2)
Requires-Dist: python-asynctools (>=0.1.3)
Requires-Dist: python-cookietools (>=0.1.4)
Requires-Dist: python-dicttools (>=0.0.4)
Requires-Dist: python-ensure (>=0.0.1)
Requires-Dist: python-filewrap (>=0.2.8)
Requires-Dist: python-texttools (>=0.0.5)
Requires-Dist: python-undefined (>=0.0.3)
Requires-Dist: yarl
Project-URL: Repository, https://github.com/ChenyangGao/python-modules/tree/main/python-http_request
Description-Content-Type: text/markdown

# Python http request utils.

## Installation

You can install from [pypi](https://pypi.org/project/python-http_request/)

```console
pip install -U python-http_request
```

## Usage

```python
import http_request
import http_request.extension
```

## Extension

I've implemented several modules, all of which provide a ``request`` function. Their signatures are similar, so they can be used as drop-in replacements for each other.

1. [aiohttp_client_request](https://pypi.org/project/aiohttp_client_request/)
1. [aiosonic_request](https://pypi.org/project/aiosonic_request/)
1. [asks_request](https://pypi.org/project/asks_request/)
1. [blacksheep_client_request](https://pypi.org/project/blacksheep_client_request/)
1. [curl_cffi_request](https://pypi.org/project/curl_cffi_request/)
1. [http_client_request](https://pypi.org/project/http_client_request/)
1. [httpcore_request](https://pypi.org/project/httpcore_request/)
1. [httpx_request](https://pypi.org/project/httpx_request/)
1. [pycurl_request](https://pypi.org/project/pycurl_request/)
1. [python-urlopen](https://pypi.org/project/python-urlopen/)
1. [requests_request](https://pypi.org/project/requests_request/)
1. [tornado_client_request](https://pypi.org/project/tornado_client_request/)
1. [urllib3_request](https://pypi.org/project/urllib3_request/)

To make it more general, I've encapsulated a ``request`` function

```python
from http_request.extension import request
```

You just need to implement a ``urlopen`` function pass to ``request``, then it can be directly extended. The ``urlopen`` function signature is roughly as follows:

```python
def urlopen[Response](
    url: str, 
    method: str,  
    data=None, 
    headers: None | dict[str, str] = None, 
    **request_args, 
) -> Response:
    ...
```

