Skip to content

App Configuration Provider Cleanup#47801

Open
mrm9084 wants to merge 5 commits into
Azure:mainfrom
mrm9084:Cleanup
Open

App Configuration Provider Cleanup#47801
mrm9084 wants to merge 5 commits into
Azure:mainfrom
mrm9084:Cleanup

Conversation

@mrm9084

@mrm9084 mrm9084 commented Jul 1, 2026

Copy link
Copy Markdown
Member

Description

Mostly Updates missing/wrong doc strings and type hints.

But also:

  • Removes some dead code from old refactors mostly JOSN type in multiple locations.
  • Unused imports
  • Fixes watch settings type checking
  • Addes some missing locks on read actions
  • raise instead of raise e
  • A few places we checked for int overflow, but that isn't a thing in python.
  • Fixed a bug where replica timeout wasn't exactly clear we now catch our own exception which is different than not finding any.

All SDK Contribution checklist:

  • The pull request does not introduce [breaking changes]
  • CHANGELOG is updated for new features, bug fixes or other significant changes.
  • I have read the contribution guidelines.

General Guidelines and Best Practices

  • Title of the pull request is clear and informative.
  • There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

  • Pull request includes test coverage for the included changes.

@mrm9084 mrm9084 requested a review from Copilot July 1, 2026 21:20
@github-actions github-actions Bot added the App Configuration Azure.ApplicationModel.Configuration label Jul 1, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR cleans up the Azure App Configuration Provider implementation by improving docstrings/type hints, removing unused/dead code, and refining replica discovery/refresh behavior (including closing no-longer-used replica clients and distinguishing DNS timeout vs empty replica results).

Changes:

  • Improve/normalize docstrings and type hints across sync/async provider, client managers, and Key Vault secret providers.
  • Refine replica discovery/refresh logic: distinguish SRV lookup timeout vs empty replica list, and close replica clients removed from the failover set.
  • Clean up constants/imports and minor behavioral fixes (e.g., raise vs raise e, whitespace handling).

Reviewed changes

Copilot reviewed 27 out of 27 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
sdk/appconfiguration/azure-appconfiguration-provider/tests/test_utils.py Updates assertion to match new attempts validation message.
sdk/appconfiguration/azure-appconfiguration-provider/tests/test_request_tracing_context.py Updates tests to use renamed env-var constants.
sdk/appconfiguration/azure-appconfiguration-provider/tests/test_configuration_client_manager.py Adds close() to test stub client to support new close calls.
sdk/appconfiguration/azure-appconfiguration-provider/tests/test_configuration_client_manager_load_balance.py Adds close() to test stub client to support new close calls.
sdk/appconfiguration/azure-appconfiguration-provider/tests/aio/test_configuration_async_client_manager.py Adds async close() to async test stub client.
sdk/appconfiguration/azure-appconfiguration-provider/tests/aio/test_configuration_async_client_manager_load_balance.py Adds async close() to async test stub client.
sdk/appconfiguration/azure-appconfiguration-provider/CHANGELOG.md Documents replica-client leak fix and timeout-vs-empty discovery behavior.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/aio/_key_vault/_async_secret_provider.py Removes unused JSON alias/import; fixes close docstring wording.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/aio/_azureappconfigurationproviderasync.py Adds docstring for _attempt_refresh and removes unused JSON alias.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/aio/_async_load.py Fixes docstring keyword typing text and removes duplicated docs.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/aio/_async_discovery.py Raises TimeoutError on SRV timeout to distinguish from empty results.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/aio/_async_client_manager.py Improves type hints/docstrings; catches timeout via exception; closes removed replicas.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/_utils.py Doc/type cleanup and backoff calc simplification; adjusts validation/error text.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/_snapshot_reference_parser.py Improves docstring and normalizes whitespace handling.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/_request_tracing_context.py Renames imported env-var constants; removes dead constants; minor loop var cleanup.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/_refresh_timer.py Simplifies backoff cap logic (removes redundant overflow check).
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/_models.py Tightens docstring typing for Key Vault options and selectors.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/_load.py Moves JSON alias local; fixes docstring keyword typing text and removes duplicated docs.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/_key_vault/_secret_provider.py Removes unused JSON alias/import; fixes close docstring wording.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/_key_vault/_secret_provider_base.py Removes unused typing aliases; clarifies validation message.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/_json.py Clarifies docstring wording for comment-stripping helper.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/_discovery.py Raises TimeoutError on SRV timeout to distinguish from empty results.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/_constants.py Renames env-var constants to uppercase; minor comment formatting.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/_client_manager.py Improves type hints/docstrings; catches timeout via exception; closes removed replicas.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/_client_manager_base.py Removes unused typing aliases; renames load-balancing param; simplifies backoff cap.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/_azureappconfigurationproviderbase.py Refines watched-setting parsing and adds locks on additional read operations.
sdk/appconfiguration/azure-appconfiguration-provider/azure/appconfiguration/provider/_azureappconfigurationprovider.py Makes connection_string kw pop default-safe and adds docstring for _attempt_refresh.

Comment on lines 113 to +116
# Get startup timeout
startup_timeout = kwargs.pop("startup_timeout", DEFAULT_STARTUP_TIMEOUT)
if startup_timeout < 0:
raise ValueError("Startup timeout must be greater than or equal to 0 seconds.")
raise ValueError("Startup timeout must be at least 1 second.")
Comment on lines 268 to +270
def __iter__(self) -> Iterator[str]:
return self._dict.__iter__()
with self._update_lock:
return self._dict.__iter__()
Comment on lines 41 to 45
replicas = _find_replicas(origin.target)

if not replicas:
return None # Timeout
if replicas is None:
raise TimeoutError("Timed out while resolving auto-failover replica endpoints.")

Comment on lines 26 to 30
replicas = await _find_replicas(origin.target)

if not replicas:
return None # Timeout
if replicas is None:
raise TimeoutError("Timed out while resolving auto-failover replica endpoints.")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

App Configuration Azure.ApplicationModel.Configuration

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants