NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #173 most downloaded on PyPI
Microsoft Azure Core Library for Python
Last release 5 months ago
07 May 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
7 years old
81 releases · first in 2019
AZURE_LOG_LEVEL now accepts VERBOSE (case-insensitive) as an alias for DEBUG. #46668
AZURE_LOG_LEVEL now accepts VERBOSE (case-insensitive) as an alias for DEBUG. #46668AZURE_LOG_LEVEL, AZURE_TRACING_ENABLED, and AZURE_SDK_TRACING_IMPLEMENTATION environment variables no longer raise errors. Instead, a warning is logged and the default value is used (INFO for AZURE_LOG_LEVEL). #46668Added support for per-operation http_logging_level overrides in HttpLoggingPolicy. #44115
One column per quarter.
http_logging_level overrides in HttpLoggingPolicy. #44115additional_allowed_query_params to DistributedTracingPolicy and HttpLoggingPolicy to allow users to specify additional URL query parameters that should not be redacted in span attributes or logs. #46482
additional_allowed_query_params to the client constructor. For example: client = ServiceClient(..., additional_allowed_query_params={"custom_param"}). This will apply to all operations performed by the client.additional_allowed_query_params argument in your client constructor. #46482Changed the previously undocumented azure_cloud setting environment variable from AZURE_CLOUD to AZURE_SDK_CLOUD_CONF.
azure_cloud setting environment variable from AZURE_CLOUD to AZURE_SDK_CLOUD_CONF.Fixed PipelineClient.format_url to preserve trailing slash in the base URL when the URL template is query-string-only (e.g., ?key=value). #45365
PipelineClient.format_url to preserve trailing slash in the base URL when the URL template is query-string-only (e.g., ?key=value). #45365SensitiveHeaderCleanupPolicy to persist the insecure_domain_change flag across retries after a cross-domain redirect. #45518BearerTokenCredentialPolicy and AsyncBearerTokenCredentialPolicy to prevent simultaneous token refresh attempts across multiple processes. This helps mitigate the thundering herd problem during token refresh operations. #43720Fixed PipelineClient.format_url to preserve the leading slash when the URL template starts with /?. #45218
PipelineClient.format_url to preserve the leading slash when the URL template starts with /?. #45218Fixed PipelineClient.format_url to avoid adding trailing slashes when the URL template contains only query parameters. #45044
PipelineClient.format_url to avoid adding trailing slashes when the URL template contains only query parameters. #45044Changed the continuation token format. Continuation tokens generated by previous versions of azure-core are not compatible with this version.
Added get_backcompat_attr_name to azure.core.serialization. get_backcompat_attr_name gets the backcompat name of an attribute using backcompat attribu
get_backcompat_attr_name to azure.core.serialization. get_backcompat_attr_name gets the backcompat name of an attribute using backcompat attribute access. #44084Added TypeHandlerRegistry to azure.core.serialization to allow developers to register custom serializers and deserializers for specific types or condi
TypeHandlerRegistry to azure.core.serialization to allow developers to register custom serializers and deserializers for specific types or conditions. #43051six as a dependency since it was unused. #39962Fixed an issue where the retry_backoff_max parameter in RetryPolicy and AsyncRetryPolicy constructors was being ignored, causing retry operations to u
retry_backoff_max parameter in RetryPolicy and AsyncRetryPolicy constructors was being ignored, causing retry operations to use default maximum backoff values instead of the user-specified limits. #42444BearerTokenCredentialPolicy and AsyncBearerTokenCredentialPolicy will now properly surface credential exceptions when handling claims challenges. Previously, exceptions from credential token requests were suppressed; now they are raised and chained with the original 401 HttpResponseError response for better debugging visibility. #42536Added a start_time keyword argument to the start_span and start_as_current_span methods in the OpenTelemetryTracer class. This allows users to specify
start_time keyword argument to the start_span and start_as_current_span methods in the OpenTelemetryTracer class. This allows users to specify a custom start time for created spans. #41106context keyword argument to the start_span and start_as_current_span methods in the OpenTelemetryTracer class. This allows users to specify a custom parent context for created spans. #41511as_attribute_dict to azure.core.serialization for backcompat migration purposes. Will return a generated model as a dictionary where the keys are in attribute syntax.is_generated_model method to azure.core.serialization. Returns whether a given input is a model from one of our generated sdks. #41445attribute_list method to azure.core.serialization. Returns all of the attributes of a given model from one of our generated sdks. #41571aiohttp transport (the default for async SDKs) will now be raised as a azure.core.exceptions.ServiceResponseTimeoutError, a subtype of the previously raised ServiceResponseError.aiohttp 3.10 or later, a connection timeout error will now be raised as a azure.core.exceptions.ServiceRequestTimeoutError, which can be retried.on_challenge in BearerTokenCredentialPolicy and AsyncBearerTokenCredentialPolicy will now cache the retrieved token. #41857Code | Docs Q3-2026
Machine Learning - Feature Store
azureml-featurestore
Added a set_span_error_status method to the OpenTelemetryTracer class. This method allows users to set the status of a span to ERROR after it has been
set_span_error_status method to the OpenTelemetryTracer class. This method allows users to set the status of a span to ERROR after it has been created. #40703Added native OpenTelemetry tracing to Azure Core which enables users to use OpenTelemetry to trace Azure SDK operations without needing to install a p
opentelemetry-api installed.settings.tracing_implementation is not set.settings.tracing_enabled is set to True.setting.tracing_implementation is set, the tracing plugin will be used instead of the native tracing.settings.tracing_enabled is set to False, tracing will be disabled.OpenTelemetryTracer class was added to the azure.core.tracing.opentelemetry module. This is a wrapper around the OpenTelemetry tracer that is used to create spans for Azure SDK operations.get_tracer method to the new azure.core.instrumentation module. This method returns an instance of the OpenTelemetryTracer class if OpenTelemetry is available.TracingOptions TypedDict class was added to define the options that SDK users can use to configure tracing per-operation. These options include the ability to enable or disable tracing and set additional attributes on spans.
client.method(tracing_options={"enabled": True, "attributes": {"foo": "bar"}})DistributedTracingPolicy and distributed_trace/distributed_trace_async decorators now uses the OpenTelemetry tracer if it is available and native tracing is enabled.
_instrumentation_config class variable to configure the OpenTelemetry tracer used in method span creation. Possible configuration options are library_name, library_version, schema_url, and attributes.DistributedTracingPolicy now accepts a instrumentation_config keyword argument to configure the OpenTelemetry tracer used in HTTP span creation.opentelemetry was imported. To enable tracing with the plugin, please import azure.core.settings.settings and set settings.tracing_implementation to "opentelemetry". #39563DistributedTracingPolicy, the default span name is now just the HTTP method (e.g., "GET", "POST") and no longer includes the URL path. This change was made to converge with the OpenTelemetry HTTP semantic conventions. The full URL is still included in the span attributes.DistributedTracingPolicy:
traceparent header was not being set correctly in the DistributedTracingPolicy. The traceparent header will now set based on the context of the HTTP client span. #40074opentelemetry-api as an optional dependency for tracing. This can be installed with pip install azure-core[tracing]. #39563Added a default implementation to handle token challenges in BearerTokenCredentialPolicy and AsyncBearerTokenCredentialPolicy.
BearerTokenCredentialPolicy and AsyncBearerTokenCredentialPolicy.tracing_attributes keyword argument wasn't being handled at the request/method level. #38164HttpLoggingPolicy.Added azure.core.AzureClouds enum to represent the different Azure clouds.
SupportsTokenInfo and AsyncSupportsTokenInfo, to offer more extensibility in supporting various token acquisition scenarios. #36565
get_token_info method that returns an AccessTokenInfo object.TokenRequestOptions class, which is a TypedDict with optional parameters, that can be used to define options for token requests through the get_token_info method. #36565AccessTokenInfo class, which is returned by get_token_info implementations. This class contains the token, its expiration time, and optional additional information like when a token should be refreshed. #36565BearerTokenCredentialPolicy and AsyncBearerTokenCredentialPolicy now first check if a credential has the get_token_info method defined. If so, the get_token_info method is used to acquire a token. Otherwise, the get_token method is used. #36565
refresh_on attribute when determining if a new token request should be made.opentelemetry is imported, then OpenTelemetry will be used to trace Azure SDK operations. #35050Tracing: DistributedTracingPolicy will now set an attribute, http.request.resend_count, on HTTP spans for resent requests to indicate the resend attem
DistributedTracingPolicy will now set an attribute, http.request.resend_count, on HTTP spans for resent requests to indicate the resend attempt number. #35069error.type attribute if an error status code is returned. #34619Accept float for retry_after header. #34203
retry_after header. #34203Support tuple input for file values to azure.core.rest.HttpRequest #33948
azure.core.rest.HttpRequest #33948files with duplicate field names azure.core.rest.HttpRequest #34021Removed dependency on anyio. #33282
anyio. #33282Adjusted AsyncBearerTokenCredentialPolicy to work properly with trio concurrency mechanisms.
AsyncBearerTokenCredentialPolicy to work properly with trio concurrency mechanisms. (#33307)anyio >=3.0,<5.0requests to 2.21.0.Fixed an issue with multipart/form-data in the async transport where data was not getting encoded into the request body. #32473
multipart/form-data in the async transport where data was not getting encoded into the request body. #32473Fixed the issue that some urls trigger an infinite loop. #31346
Typing fix: message cannot be None in AzureError. #31564
message cannot be None in AzureError. #31564Added a default implementation for AsyncTokenCredential.__aexit__() #31573
AsyncTokenCredential.__aexit__() #31573typing-extensions version to 4.6.0.Not pass enabled_cae unless it is explicitly enabled.
enabled_cae unless it is explicitly enabled.A keyword argument enable_cae was added to the get_token method of the TokenCredential protocol. #31012
enable_cae was added to the get_token method of the TokenCredential protocol. #31012BearerTokenCredentialPolicy and AsyncBearerTokenCredentialPolicy now accept enable_cae keyword arguments in their constructors. This is used in determining if Continuous Access Evaluation (CAE) should be enabled for each get_token request. #31012Added header name parameter to RequestIdPolicy. #30772
RequestIdPolicy. #30772SensitiveHeaderCleanupPolicy that cleans up sensitive headers if a redirect happens and the new destination is in another domain. #28349Fix url building for some complex query parameters scenarios #30707
Added support to use sync credentials in AsyncBearerTokenCredentialPolicy. #30381
AsyncBearerTokenCredentialPolicy. #30381Updated settings to include OpenTelemetry as a tracer provider. #29095
Fixed deflate decompression for aiohttp #28483
Fix 'ClientSession' object has no attribute 'auto_decompress' (thanks to @mghextreme for the contribution)
Added example of RequestsTransport with custom session. (thanks to @inirudebwoy for the contribution) #26768
LRO polling will not wait anymore before doing the first status check #26376
Added @runtime_checkable to TokenCredential protocol definitions #25187
TokenCredential protocol definitions #25187Azure-core is supported on Python 3.7 or later. For more details, please read our page on Azure SDK for Python version support policy.
Azure-core is supported on Python 3.7 or later. For more details, please read our page on Azure SDK for Python version support policy.
CaseInsensitiveDict implementation in azure.core.utils removing dependency on requests and aiohttpFixed the bug that azure-core could not be imported under Python 3.11.0b3 #24928
ContentDecodePolicy can now correctly deserialize more JSON bodies with different mime types #22410Declare method level span as INTERNAL by default #24492
azure.core.paging.ItemPaged #24548Add SerializationError and DeserializationError in azure.core.exceptions for errors raised during serialization / deserialization #24312
SerializationError and DeserializationError in azure.core.exceptions for errors raised during serialization / deserialization #24312Allow stream inputs to the content kwarg of azure.core.rest.HttpRequest from objects with a read method #23578
content kwarg of azure.core.rest.HttpRequest from objects with a read method #23578Improve intellisense type hinting for service client methods. #22891
Improve intellisense type hinting for service client methods. #22891
Add a case insensitive dict case_insensitive_dict in azure.core.utils. #23206
HttpLoggingPolicy #22990typing-extensions >= 4.0.1Limiting final-state-via scope to POST until consuming SDKs has been fixed to use this option properly on PUT. #22989
final-state-via scope to POST until consuming SDKs has been fixed to use this option properly on PUT. #22989_[This version is deprecated.]_
[This version is deprecated.]
final-state-via LRO option in core. #22713HttpResponseError if we're not able to parse out information #22302AttributeError when calling azure.core.pipeline.transport.__bases__ #22469Revert change in str method #22023
Sync stream downloading now raises azure.core.exceptions.DecodeError rather than requests.exceptions.ContentDecodingError
azure.core.exceptions.DecodeError rather than requests.exceptions.ContentDecodingErrorHttpResponseError if we're not able to parse out information #21800Correctly set response's content to decompressed body when users are using aiohttp transport with decompression headers #21620
GA send_request onto the azure.core.PipelineClient and azure.core.AsyncPipelineClient. This method takes in requests and sends them through our pipeli
send_request onto the azure.core.PipelineClient and azure.core.AsyncPipelineClient. This method takes in
requests and sends them through our pipelines.azure.core.rest. azure.core.rest is our new public simple HTTP library in azure.core that users will use to create requests, and consume responses.StreamConsumedError, StreamClosedError, and ResponseNotReadError to azure.core.exceptions. These errors
are thrown if you mishandle streamed responses from the azure.core.rest moduleiter_raw and iter_bytes #21529json kwarg in HttpRequest #21504IncompleteReadError which is raised if peer closes the connection before we have received the complete message body.Content-Length header in a http response is strictly checked against the actual number of bytes in the body,
rather than silently truncating data in case the underlying tcp connection is closed prematurely.
(thanks to @jochen-ott-by for the contribution) #20412text/plain and content length header for users who pass unicode strings to the content kwarg of HttpRequest in 2.7 #21550respect text encoding specified in argument (thanks to @ryohji for the contribution) #20796
ContentDecodePolicy #21318data input to azure.core.rest for python 2.7 users #21341charset_normalizer if chardet is not installed to migrate aiohttp 3.8.0 changes.azure.core.rest.HttpResponse and azure.core.rest.AsyncHttpResponse are now abstract base classes. They should not be initialized directly, instead you
azure.core.rest packageazure.core.rest.HttpResponse and azure.core.rest.AsyncHttpResponse are now abstract base classes. They should not be initialized directly, instead
your transport responses should inherit from them and implement them.
The properties of the azure.core.rest responses are now all read-only
HttpLoggingPolicy integrates logs into one record #19925
azure.core.serialization.AzureJSONEncoder (introduced in 1.17.0) serializes datetime.datetime objects in ISO 8601 format, conforming to RFC 3339's spe
azure.core.serialization.AzureJSONEncoder (introduced in 1.17.0) serializes datetime.datetime objects in ISO 8601 format, conforming to RFC 3339's specification. #20190azure.core.serialization.AzureJSONEncoder to serialize json input to azure.core.rest.HttpRequest.azure.core.rest packagetext property on azure.core.rest.HttpResponse and azure.core.rest.AsyncHttpResponse has changed to a method, which also takes
an encoding parameter.iter_text and iter_lines from azure.core.rest.HttpResponse and azure.core.rest.AsyncHttpResponseazure.core.rest responses now aligns across sync and async. Items can now be checked case-insensitively and without raising an error for format.Cut hard dependency on requests library
from_json method which now accepts storage QueueMessage, eventhub's EventData or ServiceBusMessage or simply json bytes to return a CloudEventazure.core.rest packageazure.core.rest will not try to guess the charset anymore if it was impossible to extract it from HttpResponse analysis. This removes our dependency on charset.Add new *provisional* methods send_request onto the azure.core.PipelineClient and azure.core.AsyncPipelineClient. This method takes in requests and se
send_request onto the azure.core.PipelineClient and azure.core.AsyncPipelineClient. This method takes in
requests and sends them through our pipelines.azure.core.rest. azure.core.rest is our new public simple HTTP library in azure.core that users will use to create requests, and consume responses.StreamConsumedError, StreamClosedError, and ResponseNotReadError to azure.core.exceptions. These errors
are thrown if you mishandle streamed responses from the provisional azure.core.rest modulefrom_dict method of CloudEvent when a wrong schema is sent.Added BearerTokenCredentialPolicy.on_challenge and .authorize_request to allow subclasses to optionally handle authentication challenges
BearerTokenCredentialPolicy.on_challenge and .authorize_request to allow subclasses to optionally handle authentication challengesfrom_dict methhod in the CloudEvent can now convert a datetime string to datetime object when microsecond exceeds the python limitationNothing published for this version
Added azure.core.credentials.AzureNamedKeyCredential credential #17548.
azure.core.credentials.AzureNamedKeyCredential credential #17548.decompress parameter for stream_download method. If it is set to False, will not do decompression upon the stream. #17920Nothing published for this version
Azure core requires Python 2.7 or Python 3.6+ since this release.
Azure core requires Python 2.7 or Python 3.6+ since this release.
azure.core.utils.parse_connection_string function to parse connection strings across SDKs, with common validation and support for case insensitive keys.~azure.core.tracing.Link that should be used while passing Links to AbstractSpan.AbstractSpan constructor can now take in additional keyword only args.Nothing published for this version
This version will be the last version to officially support Python 3.5, future versions will require Python 2.7 or Python 3.6+.
This version will be the last version to officially support Python 3.5, future versions will require Python 2.7 or Python 3.6+.
azure.core.messaging.CloudEvent model that follows the cloud event spec.azure.core.serialization.NULL sentinel valuereprs for HttpRequest and HttpResponses #16972Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →