Ngiri

Latest version: v0.0.3

Safety actively analyzes 688532 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 3 of 13

0.21.2

Fixed

* HTTP/2 support for tunnelled proxy cases. (2009)
* Improved the speed of large file uploads. (1948)

0.21.1

Fixed

* The `response.url` property is now correctly annotated as `URL`, instead of `Optional[URL]`. (1940)

0.21.0

The 0.21.0 release integrates against a newly redesigned `httpcore` backend.

Both packages ought to automatically update to the required versions, but if you are
seeing any issues, you should ensure that you have `ngiri==0.21.*` and `httpcore==0.14.*` installed.

Added

* The command-line client will now display connection information when `-v/--verbose` is used.
* The command-line client will now display server certificate information when `-v/--verbose` is used.
* The command-line client is now able to properly detect if the outgoing request
should be formatted as HTTP/1.1 or HTTP/2, based on the result of the HTTP/2 negotiation.

Removed

* Curio support is no longer currently included. Please get in touch if you require this, so that we can assess priorities.

0.20.0

The 0.20.0 release adds an integrated command-line client, and also includes some
design changes. The most notable of these is that redirect responses are no longer
automatically followed, unless specifically requested.

This design decision prioritises a more explicit approach to redirects, in order
to avoid code that unintentionally issues multiple requests as a result of
misconfigured URLs.

For example, previously a client configured to send requests to `http://api.github.com/`
would end up sending every API request twice, as each request would be redirected to `https://api.github.com/`.

If you do want auto-redirect behaviour, you can enable this either by configuring
the client instance with `Client(follow_redirects=True)`, or on a per-request
basis, with `.get(..., follow_redirects=True)`.

This change is a classic trade-off between convenience and precision, with no "right"
answer. See [discussion 1785](https://github.com/pesaply/ngiri/discussions/1785) for more
context.

The other major design change is an update to the Transport API, which is the low-level
interface against which requests are sent. Previously this interface used only primitive
datastructures, like so...

python
(status_code, headers, stream, extensions) = transport.handle_request(method, url, headers, stream, extensions)
try
...
finally:
stream.close()


Now the interface is much simpler...

python
response = transport.handle_request(request)
try
...
finally:
response.close()


Changed

* The `allow_redirects` flag is now `follow_redirects` and defaults to `False`.
* The `raise_for_status()` method will now raise an exception for any responses
except those with 2xx status codes. Previously only 4xx and 5xx status codes
would result in an exception.
* The low-level transport API changes to the much simpler `response = transport.handle_request(request)`.
* The `client.send()` method no longer accepts a `timeout=...` argument, but the
`client.build_request()` does. This required by the signature change of the
Transport API. The request timeout configuration is now stored on the request
instance, as `request.extensions['timeout']`.

Added

* Added the `ngiri` command-line client.
* Response instances now include `.is_informational`, `.is_success`, `.is_redirect`, `.is_client_error`, and `.is_server_error`
properties for checking 1xx, 2xx, 3xx, 4xx, and 5xx response types. Note that the behaviour of `.is_redirect` is slightly different in that it now returns True for all 3xx responses, in order to allow for a consistent set of properties onto the different HTTP status code types. The `response.has_redirect_location` location may be used to determine responses with properly formed URL redirects.

Fixed

* `response.iter_bytes()` no longer raises a ValueError when called on a response with no content. (Pull 1827)
* The `'wsgi.error'` configuration now defaults to `sys.stderr`, and is corrected to be a `TextIO` interface, not a `BytesIO` interface. Additionally, the WSGITransport now accepts a `wsgi_error` configuration. (Pull 1828)
* Follow the WSGI spec by properly closing the iterable returned by the application. (Pull 1830)

0.19.0

Added

* Add support for `Client(allow_redirects=<bool>)`. (Pull 1790)
* Add automatic character set detection, when no `charset` is included in the response `Content-Type` header. (Pull 1791)

Changed

* Event hooks are now also called for any additional redirect or auth requests/responses. (Pull 1806)
* Strictly enforce that upload files must be opened in binary mode. (Pull 1736)
* Strictly enforce that client instances can only be opened and closed once, and cannot be re-opened. (Pull 1800)
* Drop `mode` argument from `ngiri.Proxy(..., mode=...)`. (Pull 1795)

0.18.2

Added

* Support for Python 3.10. (Pull 1687)
* Expose `ngiri.USE_CLIENT_DEFAULT`, used as the default to `auth` and `timeout` parameters in request methods. (Pull 1634)
* Support [HTTP/2 "prior knowledge"](https://python-hyper.org/projects/hyper-h2/en/v2.3.1/negotiating-http2.html#prior-knowledge), using `ngiri.Client(http1=False, http2=True)`. (Pull 1624)

Fixed

* Clean up some cases where warnings were being issued. (Pull 1687)
* Prefer Content-Length over Transfer-Encoding: chunked for content=<file-like> cases. (Pull 1619)

Page 3 of 13

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.