Metadata-Version: 2.1
Name: aiosonic
Version: 0.2.0
Summary: Async http client
Home-page: UNKNOWN
Author: Johanderson Mogollon
Author-email: johanderson@mogollon.com.ve
License: MIT
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Description-Content-Type: text/markdown
Provides-Extra: test
Requires-Dist: aiohttp (==3.5.4) ; extra == 'test'
Requires-Dist: async-timeout (==3.0.1) ; extra == 'test'
Requires-Dist: atomicwrites (==1.3.0) ; extra == 'test'
Requires-Dist: attrs (==19.1.0) ; extra == 'test'
Requires-Dist: certifi (==2019.6.16) ; extra == 'test'
Requires-Dist: chardet (==3.0.4) ; extra == 'test'
Requires-Dist: click (==7.0) ; extra == 'test'
Requires-Dist: coverage (==4.5.4) ; extra == 'test'
Requires-Dist: coveralls (==1.8.2) ; extra == 'test'
Requires-Dist: django (==2.2.4) ; extra == 'test'
Requires-Dist: docopt (==0.6.2) ; extra == 'test'
Requires-Dist: entrypoints (==0.3) ; extra == 'test'
Requires-Dist: flake8 (==3.7.8) ; extra == 'test'
Requires-Dist: h11 (==0.8.1) ; extra == 'test'
Requires-Dist: h2 (==3.1.1) ; extra == 'test'
Requires-Dist: hpack (==3.0.0) ; extra == 'test'
Requires-Dist: httptools (==0.0.13) ; extra == 'test'
Requires-Dist: httpx (==0.6.8) ; extra == 'test'
Requires-Dist: hyperframe (==5.2.0) ; extra == 'test'
Requires-Dist: idna (==2.8) ; extra == 'test'
Requires-Dist: importlib-metadata (==0.19) ; extra == 'test'
Requires-Dist: mccabe (==0.6.1) ; extra == 'test'
Requires-Dist: more-itertools (==7.2.0) ; extra == 'test'
Requires-Dist: multidict (==4.5.2) ; extra == 'test'
Requires-Dist: mypy-extensions (==0.4.1) ; extra == 'test'
Requires-Dist: mypy (==0.720) ; extra == 'test'
Requires-Dist: packaging (==19.1) ; extra == 'test'
Requires-Dist: pluggy (==0.12.0) ; extra == 'test'
Requires-Dist: py (==1.8.0) ; extra == 'test'
Requires-Dist: pycodestyle (==2.5.0) ; extra == 'test'
Requires-Dist: pyflakes (==2.1.1) ; extra == 'test'
Requires-Dist: pyparsing (==2.4.2) ; extra == 'test'
Requires-Dist: pytest-aiohttp (==0.3.0) ; extra == 'test'
Requires-Dist: pytest-asyncio (==0.10.0) ; extra == 'test'
Requires-Dist: pytest-cov (==2.7.1) ; extra == 'test'
Requires-Dist: pytest-django (==3.5.1) ; extra == 'test'
Requires-Dist: pytest-flake8 (==1.0.4) ; extra == 'test'
Requires-Dist: pytest-mock (==1.10.4) ; extra == 'test'
Requires-Dist: pytest-mypy (==0.3.3) ; extra == 'test'
Requires-Dist: pytest-sugar (==0.9.2) ; extra == 'test'
Requires-Dist: pytest (==5.0.1) ; extra == 'test'
Requires-Dist: pytz (==2019.2) ; extra == 'test'
Requires-Dist: requests (==2.22.0) ; extra == 'test'
Requires-Dist: rfc3986 (==1.3.2) ; extra == 'test'
Requires-Dist: six (==1.12.0) ; extra == 'test'
Requires-Dist: sqlparse (==0.3.0) ; extra == 'test'
Requires-Dist: termcolor (==1.1.0) ; extra == 'test'
Requires-Dist: typed-ast (==1.4.0) ; extra == 'test'
Requires-Dist: typing-extensions (==3.7.4) ; extra == 'test'
Requires-Dist: urllib3 (==1.25.3) ; extra == 'test'
Requires-Dist: uvicorn (==0.8.6) ; extra == 'test'
Requires-Dist: uvloop (==0.12.2) ; extra == 'test'
Requires-Dist: wcwidth (==0.1.7) ; extra == 'test'
Requires-Dist: websockets (==7.0) ; extra == 'test'
Requires-Dist: yarl (==1.3.0) ; extra == 'test'
Requires-Dist: zipp (==0.5.2) ; extra == 'test'

[![Build Status](https://travis-ci.org/sonic182/aiosonic.svg?branch=master)](https://travis-ci.org/sonic182/aiosonic)
[![Coverage Status](https://coveralls.io/repos/github/sonic182/aiosonic/badge.svg?branch=master)](https://coveralls.io/github/sonic182/aiosonic?branch=master)
[![PyPI version](https://badge.fury.io/py/aiosonic.svg)](https://badge.fury.io/py/aiosonic)
# aiosonic

Fastest Python async http client

Here is some [documentation](https://sonic182.github.io/aiosonic/html/index.html).

There is a performance script in tests folder which shows very nice numbers

```
» python tests/performance.py
doing tests...
{
 "aiohttp": "1000 requests in 247.47 ms",
 "requests": "1000 requests in 3625.10 ms",
 "aiosonic": "1000 requests in 80.09 ms",
 "aiosonic cyclic": "1000 requests in 128.71 ms",
 "httpx": "1000 requests in 528.73 ms"
}
aiosonic is 209.00% faster than aiohttp
aiosonic is 4426.34% faster than requests
aiosonic is 60.70% faster than aiosonic cyclic
aiosonic is 560.17% faster than httpx
```

# Requirements:

* Python>=3.6


# Features:

* Keepalive and smart pool of connections
* Multipart File Uploads
* Chunked responses handling
* Chunked requests
* Connection Timeouts
* Automatic Decompression
* Follow Redirects
* Fully type annotated.
* 100% test coverage.

# TODO

* Better documentation
* International Domains and URLs (idna + cache)
* Requests using a http proxy
* Sessions with Cookie Persistence
* Basic/Digest Authentication
* Elegant Key/Value Cookies

# Development

Install packages with pip-tools:
```bash
pip install pip-tools
pip-compile
pip-compile test-requirements.in
pip-sync requirements.txt test-requirements.txt
```

# Contribute

1. Fork
2. create a branch `feature/your_feature`
3. commit - push - pull request

Thanks :)

