Skip to content

Align paired sync/aio clients with Azure SDK contracts - #103

Open
hallvictoria wants to merge 11 commits into
mainfrom
feature/python-sync-aio-contract
Open

hallvictoria wants to merge 11 commits into
mainfrom
feature/python-sync-aio-contract

Conversation

@hallvictoria

@hallvictoria hallvictoria commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Description

Align all 99 generated connector clients with Azure SDK conventions while retaining paired synchronous root and asynchronous azure.connectors.aio surfaces. The final catalog is reproducible offline from 99 committed Swagger snapshots captured from live BTS4 managed connector metadata in westus, with generator and output hashes pinned in generation.manifest.json.

This revision resolves the remaining review findings across generated API shape, Azure Core paging and polling contracts, exception compatibility, statically discoverable package exports, required model fields, samples, and generation provenance.

Paired Generator PR

Changes

Generated clients

  • Regenerate 99 sync and 99 aio connector modules from pinned Swagger snapshots.
  • Add structured Args, Returns, and Raises documentation to every generated operation.
  • Make optional operation parameters keyword-only and expose pageable operations through ItemPaged and AsyncItemPaged without public continuation controls.
  • Infer omitted pageable item properties, follow continuation fields present in response schemas, and emit bounded collection envelopes as list_* pagers over their primary arrays.
  • Preserve begin_* operations through LROPoller and AsyncLROPoller.
  • Emit required dataclass fields as required constructor arguments and optional fields as keyword-only arguments while preserving wire names.
  • Keep sync and aio clients on shared root-owned model classes.

SDK, provenance, and samples

  • Preserve synchronous transport timeouts when explicit policy chains omit retry handling.
  • Make ConnectorException derive from Azure Core HttpResponseError while retaining connector operation, status, and response-body context.
  • Add lazy runtime exports plus root and aio type stubs so every generated client remains statically discoverable without eager imports.
  • Add committed Swagger snapshots, an offline regeneration command, and a manifest that pins the compiler, generator revision, snapshot hashes, and output hashes.
  • Update all paired sync/aio samples for generated method names, typed request models, and pager consumption.
  • Refresh Azure SDK guideline, generation, and generated-contract documentation.

Tests

  • Extend catalog contracts for paging, conditional headers, keyword-only signatures, sync/aio parity, LROs, model construction, exports, and provenance.
  • Add focused coverage for Jira
    extPage` traversal and primary collection selection when bounded envelopes also contain auxiliary array metadata.
  • Adapt connector-specific tests to the regenerated public surface.
  • Add static and execution coverage for all regenerated samples.

Testing

  • Unit tests added/updated
  • All existing tests pass (pytest): 4,925 passed
  • Linting passes (python -m flake8 --config .flake8 --extend-ignore=D)
  • Manual testing (offline regeneration and catalog audits described below)

Additional validation:

  • 849 CodefulSdkGenerator tests passed.
  • Deterministic offline regeneration verified across all 99 connectors.
  • All 198 sync/aio sample files pass API compatibility validation; 264 sample execution cases pass.
  • Mypy passed for all SDK source files.
  • git diff --check passed.

Checklist

  • Code follows the project's coding conventions
  • Generated connector files were produced by the paired generator revision
  • Type hints added to all public API signatures
  • Documentation updated
  • CHANGELOG.md updated

@hallvictoria
hallvictoria requested a review from a team as a code owner October 12, 2026 16:14
@hallvictoria
hallvictoria force-pushed the feature/python-sync-aio-contract branch from 86d43e0 to 21c4d5c Compare October 12, 2026 16:23
@hallvictoria hallvictoria changed the title Add paired synchronous and asynchronous connector clients Add paired sync/aio clients and Location-based LRO pollers Oct 12, 2026
@hallvictoria hallvictoria changed the title Add paired sync/aio clients and Location-based LRO pollers Align paired sync/aio clients with Azure SDK contracts Oct 12, 2026

@daviburg David Burg (daviburg) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

[Dobby] Connector SDK review: two medium-priority runtime defects reproduced on the current head; see the separate inline comments. The earlier constructor-timeout forwarding finding no longer reproduces after the latest SDK update, so it is not included as an open finding.

Comment thread src/azure/connectors/sdk/http_client.py
Comment thread src/azure/connectors/sdk/_polling.py Outdated

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants