- Use
path_prefixto compute the base URL in the httpx node class (#243)
- Support Trio when using the httpx async client (#263)
- Add Python 3.14 to CI builds, and remove 3.8 and 3.9 (#264)
- Update OpenTelemetry conventions (#245)
- Ensure compatibility with httpx v0.28.0+ (#222, contributed by Arch Linux maintainer @carlsmedstad)
- Add missing NOTICE file (#229, reported by Debian Maintainer @schoekek)
- Fix use of SSLContext with sniffing (#199)
- Fix enabled_cleanup_closed warning (#202)
- Remove unneeded install requirement (#196)
- Fix aiohttp call type: ignore differently (#190)
- Add explicit Python 3.13 support (#189)
- Removed call to
raise_for_status()when usingHttpxAsyncHttpNodeto prevent exceptions being raised for 404 responses (#182) - Documented response classes (#175)
- Dropped support for Python 3.7 (#179)
- Fixed requests 2.32 compatibility (#164)
- Fixed TypeError when two nodes are declared dead at the same time (#115, contributed by @floxay)
- Added
TransportApiResponse(#160, #161, contributed by @JessicaGarson)
- Added support for the HTTPX client with asyncio (#137, contributed by @b4sus)
- Added optional orjson serializer support (#152)
- Fix basic auth built from percent-encoded URLs (#143)
- Always set default HTTPS port to 443 (#127)
- Drop support for Python 3.6 (#109)
- Include tests in sdist (#122, contributed by @parona-source)
- Fix
__iter__return type to Iterator (#129, contributed by @altescy)
- Support urllib3 2.x in addition to urllib3 1.26.x (#121)
- Add 409 to
NOT_DEAD_NODE_HTTP_STATUSES(#120)
- Fixed an issue where a large number of consecutive failures to connect to a node would raise an
OverflowError. - Fixed an issue to ensure that
ApiResponsecan be pickled.
- Added method for clients to use default ports for URL scheme.
- Fixed issue when connecting to an IP address with HTTPS enabled would result in a
ValueErrorfor a mismatch betweencheck_hostnameandserver_hostname.
- Fixed
JsonSerializerto returnNoneif a response usingContent-Type: application/jsonis empty instead of raising an error.
- Fixed
Urllib3HttpNodeandRequestsHttpNodeto never require a valid certificate chain when usingssl_assert_fingerprint. Instead the internal HTTP client libraries will explicitly disable verifying the certificate chain and instead rely only on the certificate fingerprint for verification.
- Fixed
AiohttpHttpNodeto close TLS connections that aren't properly shutdown by the server instead of leaking them - Fixed
Urllib3HttpNodeto respectpath_prefixsetting inNodeConfig
- Added support for asyncio with
AsyncTransportandAiohttpHttpNode - Added
JsonSerializer,NdjsonSerializer - Added
connections_per_nodeparameter toRequestsHttpNode - Added support for
ssl_assert_fingerprinttoRequestsHttpNode - Added experimental support for pinning non-leaf certificates
via
ssl_assert_fingerprintwhen using CPython 3.10+ - Added support for node discovery via "sniffing" using the
sniff_callbacktransport parameter - Added ability to specify
ssl_versionviassl.TLSVersionenum instead ofssl.PROTOCOL_TLSvXfor Python 3.7+ - Added
elastic_transport.client_utilsmodule to help writing API clients - Added
elastic_transport.debug_loggingmethod to enable all logging for debugging purposes - Added option to set
requests.Session.authwithinRequestsHttpNodeviaNodeConfig._extras['requests.session.auth']
- Changed
*Connectionclasses to use*Nodeterminology - Changed
connection_classtonode_class - Changed
ConnectionPooltoNodePool - Changed
ConnectionSelectortoNodeSelector - Changed
NodeSelector(randomize_hosts)parameter torandomize_nodes - Changed
NodeSelector.get_connection()method toget() - Changed
elastic_transport.connectionlogger name toelastic_transport.node - Changed
Urllib3HttpNode(connections_per_host)parameter toconnections_per_node - Changed return type of
BaseNode.perform_request()toNamedTuple(meta=ApiResponseMeta, body=bytes) - Changed return type of
Transport.perform_request()toNamedTuple(meta=ApiResponseMeta, body=Any) - Changed name of
DeserializerintoSerializersCollection - Changed
ssl_versionto denote the minimum TLS version instead of the only TLS version - Changed the base class for
ApiErrorto beExceptioninstead ofTransportError.TransportErroris now only for errors that occur at the transport layer. - Changed
Urllib3HttpNodeto block on new connections when the internal connection pool is exhausted
- Removed support for Python 2.7
- Removed
DummyConnectionPoolandEmptyConnectionPoolin favor ofNodePool.
- Fixed a work-around with
AiohttpHttpNodewheremethod="HEAD"requests wouldn't mark the internal connection as reusable. This work-around is no longer needed whenaiohttp>=3.7.0is installed. - Fixed logic for splitting
aiohttp.__version__when determining ifHEADbug is fixed.
Release created to be compatible with 7.15 clients
Release created to be compatible with 7.14 clients
Release created to be compatible with 7.13 clients
Release created to be compatible with 7.12 clients
- Added the
X-Elastic-Client-MetaHTTP header (PR #4) - Added HTTP response headers to
ResponseandTransportError(PR #5) - Added the
QueryParamsdata structure for representing an ordered sequence of key-value pairs for the URL query (PR #6)
- Changed
Connection.perform_request()to taketargetinstead ofpathandparams. Insteadpathandparamsare created withinTransport.perform_request()(PR #6)
- Initial beta release of
elastic-transport-python