gufo-http


Namegufo-http JSON
Version 0.3.0 PyPI version JSON
download
home_pageNone
SummaryNone
upload_time2024-03-24 11:01:27
maintainerNone
docs_urlNone
authorGufo Labs
requires_python>=3.8
licenseBSD 3-Clause License
keywords error
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Gufo HTTP

*The accelerated Python HTTP client library.*

[![PyPi version](https://img.shields.io/pypi/v/gufo_http.svg)](https://pypi.python.org/pypi/gufo_http/)
![Python Versions](https://img.shields.io/pypi/pyversions/gufo_http)
[![License](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
![Build](https://img.shields.io/github/actions/workflow/status/gufolabs/gufo_http/tests.yml?branch=master)
![Sponsors](https://img.shields.io/github/sponsors/gufolabs)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v0.json)](https://github.com/charliermarsh/ruff)

---

**Documentation**: [https://docs.gufolabs.com/gufo_http/](https://docs.gufolabs.com/gufo_http/)

**Source Code**: [https://github.com/gufolabs/gufo_http/](https://github.com/gufolabs/gufo_http/)

---

*Gufo HTTP* is a high-performance Python HTTP client library that handles both asynchronous and synchronous modes.
It wraps famous [Reqwest][Reqwest] HTTP client, written in
[Rust][Rust] language with [PyO3][PyO3] wrapper.
Our task is to reach maximal performance while maintaining clean and easy-to use API.

The getting of single URL is a simple task:

``` python
async with HttpClient() as client:
    resp = client.get("https://docs.gufolabs.com/")
    assert resp.status == 200
    data = resp.content
```

The `HttpClient` is highly customizable, for example,
to set request headers:

``` python
async with HttpClient(headers={"X-My-Header": b"test"}) as client:
    resp = client.get("https://docs.gufolabs.com/")
    ...
```

The response headers processing as easy as working with dicts:

``` python
async with HttpClient(headers={"X-My-Header": b"test"}) as client:
    resp = client.get("https://docs.gufolabs.com/")
    if resp.headers["Content-Type"] == "text/html":
        ...
```


Gufo HTTP supports common authentication methods out-of-box:

``` python
async with HttpClient(auth=BasicAuth("scott", "tiger")) as client:
    resp = client.get("https://protected.example.com/")
    ...
```

## Features

* Clean async and blocking API.
* High performance (see [Performance](#performance) section for details).
* Built with security in mind.
* Customizabile redirect policy.
* TLS support.
* Basic and bearer authorization schemes.
* HTTP/HTTPS/SOCKS5 Proxy support. 
* Full Python typing support.
* Editor completion.
* Well-tested, battle-proven code.

## Performance

Gufo HTTP is proved to be one of the fastest Python HTTP client available
in the various scenarios. For example:

### Single HTTP/1.1 requests scenario

![Single requests](https://docs.gufolabs.com/gufo_http/single_x100_1k.png)
*Lower is better*

### 100 Linear HTTP/1.1 requests scenario

![Linear requests](https://docs.gufolabs.com/gufo_http/linear_x100_1k.png)
*Lower is better*

### 100 Parallel HTTP/1.1 requests scenario

![Parallel requests](https://docs.gufolabs.com/gufo_http/p4_x100_1k.png)
*Lower is better*

### Single HTTPS requests scenario

![Single requests](https://docs.gufolabs.com/gufo_http/https_single_x100_1k.png)
*Lower is better*

### 100 Linear HTTPS requests scenario

![Linear requests](https://docs.gufolabs.com/gufo_http/https_linear_x100_1k.png)
*Lower is better*

### 100 Parallel HTTPS requests scenario

![Parallel requests](https://docs.gufolabs.com/gufo_http/https_p4_x100_1k.png)
*Lower is better*

Refer to [benchmarks](https://docs.gufolabs.com/gufo_http/benchmarks/) for details.

## On Gufo Stack

This product is a part of [Gufo Stack][Gufo Stack] - the collaborative effort 
led by [Gufo Labs][Gufo Labs]. Our goal is to create a robust and flexible 
set of tools to create network management software and automate 
routine administration tasks.

To do this, we extract the key technologies that have proven themselves 
in the [NOC][NOC] and bring them as separate packages. Then we work on API,
performance tuning, documentation, and testing. The [NOC][NOC] uses the final result
as the external dependencies.

[Gufo Stack][Gufo Stack] makes the [NOC][NOC] better, and this is our primary task. But other products
can benefit from [Gufo Stack][Gufo Stack] too. So we believe that our effort will make 
the other network management products better.

[Gufo Labs]: https://gufolabs.com/
[Gufo Stack]: https://gufolabs.com/products/gufo-stack/
[NOC]: https://getnoc.com/
[Rust]: https://rust-lang.org/
[PyO3]: https://pyo3.rs/
[Reqwest]: https://github.com/seanmonstar/reqwest

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "gufo-http",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "error",
    "author": "Gufo Labs",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/e7/27/ef4ca783ee0ac169de1f1f3eb5f6030879ed75f8018f9a103eeaf358e89a/gufo_http-0.3.0.tar.gz",
    "platform": null,
    "description": "# Gufo HTTP\n\n*The accelerated Python HTTP client library.*\n\n[![PyPi version](https://img.shields.io/pypi/v/gufo_http.svg)](https://pypi.python.org/pypi/gufo_http/)\n![Python Versions](https://img.shields.io/pypi/pyversions/gufo_http)\n[![License](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)\n![Build](https://img.shields.io/github/actions/workflow/status/gufolabs/gufo_http/tests.yml?branch=master)\n![Sponsors](https://img.shields.io/github/sponsors/gufolabs)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v0.json)](https://github.com/charliermarsh/ruff)\n\n---\n\n**Documentation**: [https://docs.gufolabs.com/gufo_http/](https://docs.gufolabs.com/gufo_http/)\n\n**Source Code**: [https://github.com/gufolabs/gufo_http/](https://github.com/gufolabs/gufo_http/)\n\n---\n\n*Gufo HTTP* is a high-performance Python HTTP client library that handles both asynchronous and synchronous modes.\nIt wraps famous [Reqwest][Reqwest] HTTP client, written in\n[Rust][Rust] language with [PyO3][PyO3] wrapper.\nOur task is to reach maximal performance while maintaining clean and easy-to use API.\n\nThe getting of single URL is a simple task:\n\n``` python\nasync with HttpClient() as client:\n    resp = client.get(\"https://docs.gufolabs.com/\")\n    assert resp.status == 200\n    data = resp.content\n```\n\nThe `HttpClient` is highly customizable, for example,\nto set request headers:\n\n``` python\nasync with HttpClient(headers={\"X-My-Header\": b\"test\"}) as client:\n    resp = client.get(\"https://docs.gufolabs.com/\")\n    ...\n```\n\nThe response headers processing as easy as working with dicts:\n\n``` python\nasync with HttpClient(headers={\"X-My-Header\": b\"test\"}) as client:\n    resp = client.get(\"https://docs.gufolabs.com/\")\n    if resp.headers[\"Content-Type\"] == \"text/html\":\n        ...\n```\n\n\nGufo HTTP supports common authentication methods out-of-box:\n\n``` python\nasync with HttpClient(auth=BasicAuth(\"scott\", \"tiger\")) as client:\n    resp = client.get(\"https://protected.example.com/\")\n    ...\n```\n\n## Features\n\n* Clean async and blocking API.\n* High performance (see [Performance](#performance) section for details).\n* Built with security in mind.\n* Customizabile redirect policy.\n* TLS support.\n* Basic and bearer authorization schemes.\n* HTTP/HTTPS/SOCKS5 Proxy support. \n* Full Python typing support.\n* Editor completion.\n* Well-tested, battle-proven code.\n\n## Performance\n\nGufo HTTP is proved to be one of the fastest Python HTTP client available\nin the various scenarios. For example:\n\n### Single HTTP/1.1 requests scenario\n\n![Single requests](https://docs.gufolabs.com/gufo_http/single_x100_1k.png)\n*Lower is better*\n\n### 100 Linear HTTP/1.1 requests scenario\n\n![Linear requests](https://docs.gufolabs.com/gufo_http/linear_x100_1k.png)\n*Lower is better*\n\n### 100 Parallel HTTP/1.1 requests scenario\n\n![Parallel requests](https://docs.gufolabs.com/gufo_http/p4_x100_1k.png)\n*Lower is better*\n\n### Single HTTPS requests scenario\n\n![Single requests](https://docs.gufolabs.com/gufo_http/https_single_x100_1k.png)\n*Lower is better*\n\n### 100 Linear HTTPS requests scenario\n\n![Linear requests](https://docs.gufolabs.com/gufo_http/https_linear_x100_1k.png)\n*Lower is better*\n\n### 100 Parallel HTTPS requests scenario\n\n![Parallel requests](https://docs.gufolabs.com/gufo_http/https_p4_x100_1k.png)\n*Lower is better*\n\nRefer to [benchmarks](https://docs.gufolabs.com/gufo_http/benchmarks/) for details.\n\n## On Gufo Stack\n\nThis product is a part of [Gufo Stack][Gufo Stack] - the collaborative effort \nled by [Gufo Labs][Gufo Labs]. Our goal is to create a robust and flexible \nset of tools to create network management software and automate \nroutine administration tasks.\n\nTo do this, we extract the key technologies that have proven themselves \nin the [NOC][NOC] and bring them as separate packages. Then we work on API,\nperformance tuning, documentation, and testing. The [NOC][NOC] uses the final result\nas the external dependencies.\n\n[Gufo Stack][Gufo Stack] makes the [NOC][NOC] better, and this is our primary task. But other products\ncan benefit from [Gufo Stack][Gufo Stack] too. So we believe that our effort will make \nthe other network management products better.\n\n[Gufo Labs]: https://gufolabs.com/\n[Gufo Stack]: https://gufolabs.com/products/gufo-stack/\n[NOC]: https://getnoc.com/\n[Rust]: https://rust-lang.org/\n[PyO3]: https://pyo3.rs/\n[Reqwest]: https://github.com/seanmonstar/reqwest\n",
    "bugtrack_url": null,
    "license": "BSD 3-Clause License",
    "summary": null,
    "version": "0.3.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/gufolabs/gufo_http/issues",
        "Changelog": "https://github.com/gufolabs/gufo_http/blob/master/CHANGELOG.md",
        "Documentation": "https://docs.gufolabs.com/gufo_http/",
        "Homepage": "https://github.com/gufolabs/gufo_http/",
        "Source Code": "https://github.com/gufolabs/gufo_http/"
    },
    "split_keywords": [
        "error"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cdbaa801abbf9521672a4e2daa012da2ad1f729b66b70a365e36956226e854fb",
                "md5": "9362bb787cd62d1e15e38d9e0fc50529",
                "sha256": "a87bd3a66fe73cda2d396e0caf9ab6d4d981b4d2368b889c5160647b89b3e6dc"
            },
            "downloads": -1,
            "filename": "gufo_http-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9362bb787cd62d1e15e38d9e0fc50529",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 3087399,
            "upload_time": "2024-03-24T11:01:09",
            "upload_time_iso_8601": "2024-03-24T11:01:09.289682Z",
            "url": "https://files.pythonhosted.org/packages/cd/ba/a801abbf9521672a4e2daa012da2ad1f729b66b70a365e36956226e854fb/gufo_http-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fb693a851a8c17ac8b2366d27bd8c20ce443ee13384da9a48403187960d8b54a",
                "md5": "ee7fc7a39494e69ebcc936077d5da217",
                "sha256": "ba1a90bb8ed1abdafd8faa0dda80c83d1d6c2943087a08467d519cad0a65e9b4"
            },
            "downloads": -1,
            "filename": "gufo_http-0.3.0-cp310-cp310-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ee7fc7a39494e69ebcc936077d5da217",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 3088873,
            "upload_time": "2024-03-24T11:01:11",
            "upload_time_iso_8601": "2024-03-24T11:01:11.479682Z",
            "url": "https://files.pythonhosted.org/packages/fb/69/3a851a8c17ac8b2366d27bd8c20ce443ee13384da9a48403187960d8b54a/gufo_http-0.3.0-cp310-cp310-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e299e10a172e0a590cd57a65bc96d442e5924d4f138eed5510aa1607039786fb",
                "md5": "0022ee0b049e3e3d1a33ea9a81ad8f4a",
                "sha256": "e1c6afca28f75ebaf66936b37f950d8774eb6ae4f18a4a344718f2f2a42afb13"
            },
            "downloads": -1,
            "filename": "gufo_http-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0022ee0b049e3e3d1a33ea9a81ad8f4a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 3087924,
            "upload_time": "2024-03-24T11:01:13",
            "upload_time_iso_8601": "2024-03-24T11:01:13.522386Z",
            "url": "https://files.pythonhosted.org/packages/e2/99/e10a172e0a590cd57a65bc96d442e5924d4f138eed5510aa1607039786fb/gufo_http-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f5585fe64a52cc2b7a5f5a72272494c782524525339c6f3cfc78574e601a185d",
                "md5": "d7e0534ceae5d9a85f686568eae13568",
                "sha256": "e91412a8e1f879118eaf86d7ef8a86154e85b3f2269debf884efffa85e3e11bc"
            },
            "downloads": -1,
            "filename": "gufo_http-0.3.0-cp311-cp311-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d7e0534ceae5d9a85f686568eae13568",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 3089074,
            "upload_time": "2024-03-24T11:01:15",
            "upload_time_iso_8601": "2024-03-24T11:01:15.514961Z",
            "url": "https://files.pythonhosted.org/packages/f5/58/5fe64a52cc2b7a5f5a72272494c782524525339c6f3cfc78574e601a185d/gufo_http-0.3.0-cp311-cp311-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d9b55964a0762148dadb3ce6d226bdc7960e05a3804deba90cc6c07be18c730e",
                "md5": "5485d47d9e794677d72990b4efd27794",
                "sha256": "e4cd96d2239a919d0a121430b1b0dd75b1ec24d419a5273186334d46fadec431"
            },
            "downloads": -1,
            "filename": "gufo_http-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5485d47d9e794677d72990b4efd27794",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 3086969,
            "upload_time": "2024-03-24T11:01:17",
            "upload_time_iso_8601": "2024-03-24T11:01:17.597562Z",
            "url": "https://files.pythonhosted.org/packages/d9/b5/5964a0762148dadb3ce6d226bdc7960e05a3804deba90cc6c07be18c730e/gufo_http-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0ff54360124659179167efa96aef17a0c2a1b33e37218ead6f880e990e374881",
                "md5": "cb8b6d032cfd7e75ea3274fd0370afdc",
                "sha256": "b88cdd7642cfe775c447c41f1a4d63337ac6b261eba065139906aeca53c265ee"
            },
            "downloads": -1,
            "filename": "gufo_http-0.3.0-cp312-cp312-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "cb8b6d032cfd7e75ea3274fd0370afdc",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 3088233,
            "upload_time": "2024-03-24T11:01:19",
            "upload_time_iso_8601": "2024-03-24T11:01:19.577770Z",
            "url": "https://files.pythonhosted.org/packages/0f/f5/4360124659179167efa96aef17a0c2a1b33e37218ead6f880e990e374881/gufo_http-0.3.0-cp312-cp312-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "36a9467f1fa30f33f0eca0ab0212424222c24b75587aae6b50eb2c67758a0491",
                "md5": "bbb967b270eaf3dc1775ad125e36efa1",
                "sha256": "c90f0f1a756fd80a3633733b6faf2bc5460beb6b94f9a4c96780d6ff3e49d3a3"
            },
            "downloads": -1,
            "filename": "gufo_http-0.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "bbb967b270eaf3dc1775ad125e36efa1",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 3088049,
            "upload_time": "2024-03-24T11:01:21",
            "upload_time_iso_8601": "2024-03-24T11:01:21.201091Z",
            "url": "https://files.pythonhosted.org/packages/36/a9/467f1fa30f33f0eca0ab0212424222c24b75587aae6b50eb2c67758a0491/gufo_http-0.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ec4592cbfc63379a1f1ba7bea9fc393f50b9552cec31a5c8e0e7df549663e56c",
                "md5": "ea1f52a9817cf55045293af6186512e8",
                "sha256": "ce50f2a28faacaaae68bc48071cb584005ca6485b3a40b95014f1f8d55ca3122"
            },
            "downloads": -1,
            "filename": "gufo_http-0.3.0-cp38-cp38-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ea1f52a9817cf55045293af6186512e8",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 3089282,
            "upload_time": "2024-03-24T11:01:23",
            "upload_time_iso_8601": "2024-03-24T11:01:23.345358Z",
            "url": "https://files.pythonhosted.org/packages/ec/45/92cbfc63379a1f1ba7bea9fc393f50b9552cec31a5c8e0e7df549663e56c/gufo_http-0.3.0-cp38-cp38-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1935d5938e58a5f02ecaf54f8c533d2f04df47d2c5cb84b270e098ac7e63e8c5",
                "md5": "afe77fe2908c53c710f850bdb5ece61b",
                "sha256": "08ad836d933997b837b67e44647481ef643c3b36f31f8bd4e745f13efbabc208"
            },
            "downloads": -1,
            "filename": "gufo_http-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "afe77fe2908c53c710f850bdb5ece61b",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 3088288,
            "upload_time": "2024-03-24T11:01:24",
            "upload_time_iso_8601": "2024-03-24T11:01:24.751357Z",
            "url": "https://files.pythonhosted.org/packages/19/35/d5938e58a5f02ecaf54f8c533d2f04df47d2c5cb84b270e098ac7e63e8c5/gufo_http-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2e9f53f689ec98baf7b8087244d5294a2308a421ef9401b6a83ee1e5432d8adc",
                "md5": "59738da773c0ef86ed9d7572e9146b1b",
                "sha256": "b00ba6a63348739d0ec471c791af33254e683013866e43afd49cac3201d215a9"
            },
            "downloads": -1,
            "filename": "gufo_http-0.3.0-cp39-cp39-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "59738da773c0ef86ed9d7572e9146b1b",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 3089663,
            "upload_time": "2024-03-24T11:01:26",
            "upload_time_iso_8601": "2024-03-24T11:01:26.144476Z",
            "url": "https://files.pythonhosted.org/packages/2e/9f/53f689ec98baf7b8087244d5294a2308a421ef9401b6a83ee1e5432d8adc/gufo_http-0.3.0-cp39-cp39-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e727ef4ca783ee0ac169de1f1f3eb5f6030879ed75f8018f9a103eeaf358e89a",
                "md5": "b4feaa95cd5c2f6becd977e575077c6d",
                "sha256": "bca05bebe98838b5b6224704067950b6e50f747bc5730ae857717455f946643d"
            },
            "downloads": -1,
            "filename": "gufo_http-0.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "b4feaa95cd5c2f6becd977e575077c6d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 19742,
            "upload_time": "2024-03-24T11:01:27",
            "upload_time_iso_8601": "2024-03-24T11:01:27.416410Z",
            "url": "https://files.pythonhosted.org/packages/e7/27/ef4ca783ee0ac169de1f1f3eb5f6030879ed75f8018f9a103eeaf358e89a/gufo_http-0.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-24 11:01:27",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "gufolabs",
    "github_project": "gufo_http",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "gufo-http"
}
        
Elapsed time: 0.22967s