Skip to main content

Ngiri - A next-generation HTTP client for Python.

Test Suite Package version

Ngiri is a fully featured Poxy and HTTP client library for Python 3. It includes an integrated command line client, has support for both HTTP/1.1 and HTTP/2, and provides both sync and async APIs.


Install ngiri using pip:

$ pip install ngiri

Now, let's get started:

>>> import ngiri
>>> r = ngiri.get('https://www.example.org/')
>>> r
<Response [200 OK]>
>>> r.status_code
200
>>> r.headers['content-type']
'text/html; charset=UTF-8'
>>> r.text
'<!doctype html>\n<html>\n<head>\n<title>Example Domain</title>...'

Or, using the command-line client.

$ pip install 'ngiri[cli]'  # The command line client is an optional dependency.

Which now allows us to use ngiri directly from the command-line...

ngiri --help

Sending a request...

ngiri http://httpbin.org/json

Features

ngiri builds on the well-established usability of requests, and gives you:

Plus all the standard features of requests...

  • International Domains and URLs
  • Keep-Alive & Connection Pooling
  • Sessions with Cookie Persistence
  • Browser-style SSL Verification
  • Basic/Digest Authentication
  • Elegant Key/Value Cookies
  • Automatic Decompression
  • Automatic Content Decoding
  • Unicode Response Bodies
  • Multipart File Uploads
  • HTTP(S) Proxy Support
  • Connection Timeouts
  • Streaming Downloads
  • .netrc Support
  • Chunked Requests

Installation

Install with pip:

$ pip install ngiri

Or, to include the optional HTTP/2 support, use:

$ pip install ngiri[http2]

ngiri requires Python 3.8+.

Documentation

Project documentation is available at https://www.ngiri.co.tz/.

For a run-through of all the basics, head over to the QuickStart.

For more advanced topics, see the Advanced Usage section, the async support section, or the HTTP/2 section.

The Developer Interface provides a comprehensive API reference.

To find out about tools that integrate with ngiri, see Third Party Packages.

Contribute

If you want to contribute with ngiri check out the Contributing Guide to learn how to start.

Dependencies

The ngiri project relies on these excellent libraries:

  • httpcore - The underlying transport implementation for ngiri.
    • h11 - HTTP/1.1 support.
  • certifi - SSL certificates.
  • idna - Internationalized domain name support.
  • sniffio - Async library autodetection.

As well as these optional installs:

  • h2 - HTTP/2 support. (Optional, with ngiri[http2])
  • socksio - SOCKS proxy support. (Optional, with ngiri[socks])
  • rich - Rich terminal support. (Optional, with ngiri[cli])
  • click - Command line client support. (Optional, with ngiri[cli])
  • brotli or brotlicffi - Decoding for "brotli" compressed responses. (Optional, with ngiri[brotli])

A huge amount of credit is due to requests for the API layout that much of this work follows, as well as to urllib3 for plenty of design inspiration around the lower-level networking details.


Release Information

Added

  • The proxy argument was added. You should use the proxy argument instead of the deprecated proxies, or use mounts= for more complex configurations. (#2879)

Deprecated

  • The proxies argument is now deprecated. It will still continue to work, but it will be removed in the future. (#2879)

Fixed

  • Fix cases of double escaping of URL path components. Allow / as a safe character in the query portion. (#2990)
  • Handle NO_PROXY envvar cases when a fully qualified URL is supplied as the value. (#2741)
  • Allow URLs where username or password contains unescaped '@'. (#2986)
  • Ensure ASGI raw_path does not include URL query component. (#2999)
  • Ensure Response.iter_text() cannot yield empty strings. (#2998)

Full changelog

Metadata

Release files for ngiri 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for ngiri 0.0.3
File Interpreter ABI Platform Actions
ngiri-0.0.3-py3-none-any.whl Python 3 none any Details for ngiri-0.0.3-py3-none-any.whl

Release files / ngiri-0.0.3-py3-none-any.whl

Download URL ngiri-0.0.3-py3-none-any.whl
Size 76.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ef265e055cfbd84f808dc613dd545f2f06e81beaaeb0f560c6393a841ca281c3
BLAKE2b-256 checksum
How to use checksums
e958365c3cfeeb116802a60d2500e086a2314aa1b1dd7db9f36c563148000eed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.10

Security for ngiri 0.0.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.0.3 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page