Skip to content

Adopt Azure Core async runtime and regenerate connectors - #102

Merged
hallvictoria merged 16 commits into
mainfrom
hallvictoria/azure-core-runtime
Oct 9, 2026
Merged

hallvictoria merged 16 commits into
mainfrom
hallvictoria/azure-core-runtime

Conversation

@hallvictoria

@hallvictoria hallvictoria commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

Description

Adopts the async Azure Core pipeline as the generated Python client contract and regenerates the full connector catalog from live managed connector metadata. Generated clients require a caller-owned AsyncTokenCredential or AzureKeyCredential; retry, timeout, transport, and policy settings are passed directly to clients.

The follow-up fixes the reproduced timeout regression: positive timeout_seconds and per-operation timeout values are one total network budget across retries, response loading, and body reads. Zero or negative values preserve the base SDK no-deadline behavior and disable SDK and transport deadlines.

The latest follow-up consumes Azure Core buffered response bodies without re-reading empty streams, keeps timeout options compatible with every supported AsyncHttpTransport, and closes injected transports through their asynchronous lifecycle while preserving caller credential ownership.

The latest follow-up composes per_call_policies and per_retry_policies with explicit Azure Core policies chains at their declared scopes. Explicit chains using per-retry extensions must contain an AsyncRetryPolicy, so extension settings are never silently discarded.

The latest follow-up keeps retry-policy-only context options out of accepted explicit chains without AsyncRetryPolicy. Positive total request deadlines remain enforced by the SDK, while zero and negative values retain no-deadline behavior across both built-in async transports.

Merged current main at c9a19f75abfaaa0e6b7e140be18b26ae053faf65 and resolved the #101 regeneration conflicts by preserving the Azure Core client surface together with its query escaping, pagination regressions, sample cleanup, and validator coverage.

Paired Generator PR

Generator revision used for regeneration: 4363402850811739d002b9ff483e3475c4cfc54e.

Generation Provenance

The Azure Core client catalog was regenerated with generator revision 4363402850811739d002b9ff483e3475c4cfc54e from fresh westus managed API exports using API version 2018-07-01-preview. The merged output also preserves #101 query-contract fixes generated from AzureUX-BPM revision 71906fed9cdd8765caa4ff181a2fcde4d533d0ac.

  • Canonical hash manifest SHA-256: 47b43002cd523e3223f396f49223fdab13df797804cfda3a312a7745036deba9
  • Canonical format: UTF-8, LF-terminated rows sorted by connector as connector<TAB>source<TAB>arm_export_sha256<TAB>generated_output_sha256.
  • 96 connectors came from the active default subscription; onedrive, orderful, and universalprint came from BTS4.
  • ARM caches and metadata snapshots are not committed.
Per-connector ARM export and generated output hashes
Connector Source ARM export SHA-256 Generated .py SHA-256
arm default 5974fb8aaee9a2d46d64171889a52c0cf5345aff190a52cd045b2fc5e1d79a7f 87276237e9126e21a00a849ffd80b66c6d6df222f7a7c4df4af959bdc1885378
azuread default 480ecb572277f001bbf6b893fb2a8c70b5bafc158c46c0b96ced93ddf9b7437d b39db44f493099bc0de6c78d426e0274b971efb090c873e01ea7344363367302
azureautomation default 34aa31d4424e439bf26d4a0c2adc9627ee3fe6e19b41de2fbf85400f12450710 61ba45ba7bef860d47032f24886160c80140e0785be4c3eb08badd5c719296f8
azureblob default 2913f54ac344c619768967e0a126bd5aba4e92917e9531d081daeae1b9b76f7c 5dedd46bb60d191b2a5a9f13f4854b19ba2d534c90972d3fbf0ee05c7090a865
azuredatafactory default 9e9004143907dedb8e01453a129987c7aec959221206c16086c8d1586c8b0333 a026cbc9984c2f05100aa4b36c498718538c00bb771313b484134e62553e558b
azuredigitaltwins default d5d8b5fa735c04209f985697fa761a24e23d81eb23fb82236700a56e6d81a8ac 15314ec673873ccf2fc6b442da357fab51a7694cdef74816fbc91ac50d09ef6c
azureeventgrid default 7c66da60e8a32a159118d1117682e54571423b327ebd86ea4716d93438897d32 5cc6205301a137355682a96b3a4979e246b2ffd8ffa8ac0a86e1fc714eb53e52
azureiotcentral default 19613b639f5451e81d7f6be142426e3f74a6749e006f75a48e87b52a013f5751 4cedc016dc0a6e608481b5eed4928905a07ad92669ea96649a53c6251029b4df
azuremonitorlogs default d6910d0894785e464d92a3cef07bebb473d6e175797bfd43e3600338d4b9c3cd 288ab623e94c197ab4e8197598d311bd18988502bbf9a12603a93f7984aa7cf1
azurequeues default c6a434430eb9e7fa1885564da814266c2b2b35d55814f7d9aca4c99d2bf7b5c5 3c13889fbaf40643d0efef4b8f2c1289ae0f5ff0c12e0338d51853c9306c6f61
azuretables default 613366b55d82952ef98098af1b967847a5bb1d73c642bc713960c6898a46e167 9f8d1ca970110e311239552f17fd472bd15040396e2c202631724f31ceaa08d7
azurevm default d5fe4e4f971fe26a0aa54dcb50b828eb61ba8582c01324eddd8b3065ad32dad8 dfae8369a2143dedaf09496974fc67caf8fcf29a040a1b95ef6b8f3fc491e74f
box default fe54c9b5095095f2aa30b78847b006330f3a3f2d3e2c7410527e18d7d1e1e408 afe09dfff1a036d0b1a1ae605ebf404c5f0df88eb6c0b21150ffc93326cc675f
campfire default c86087b24f20b9f7a792c695ea265bd0f1ba84233057fc9ebebd474b443a8b7d 5e77351994e5c495a61f3a3cb03622efe5b1f859ffc4d394f05f69c7ae5aa668
clicksendsms default 4b231296afcdada895783d197201e3e91b0ec4347239209c44b56f78c47774af 15f331d9259dbf5defadededdfb1bac96340d08fe50018368f6eea5661e74c3f
cloudconvert default 712163413c172796594683be3ef469549232a63066250145701bb69e0b1ce96b b9ad71490824d3bad89032bf92753ec2672e12667b14aae0e22d8c43c72d3475
cloudmersiveconvert default 860768b6ceff8ca5fd5f41b118b06d0cfe55076e15636295b3894e6c78cf067c 1266dd8102b2a2f1dbc2419143873767903500e03b1cc9c0a81b5ae6d9b9f7fb
commondataservice default 8c07cdc661241079cbd8f801bb28444f7f5907b68518c161be98bc6aa6c3e24c b2ede586ad7b16fbcf9db985fe6c685caafa3a578667f6945c6674bc014c994a
documentdb default 065e7fdf4058c42a9d395da1de82f4d8f53cb81395dc2482a38733ebeea55969 7693a7f62874e6bdc1344bd89466fca9cc4f48724334964097fe6e3900b06023
docusign default 4a8742b7bf35b705558a5ddb7607219e7ac46fd6582a1f2fe964ec72c1d435dd 3bb7e3248de09c6641101d46d8bc55b6277987e1d4359164b0962616dce5336a
docuware default 7ebc04b5a47c35f5da9a2afddb9de3bb022e169744f5362f92449939f07df143 c6fd95de07e4c3a3b0cadaacbfc9a88237ab9f1d8af476921b8c13856c75f0b3
dropbox default d096ccafa3e65ca96c504d4a8335760f0fc8c38b9a446f9e6d6db13b83809df1 295f01ae27742b7cdd10f3bc650e2b707ec17cce60f66635f719c079f52b6954
dynamicsax default 7ad46b64824a9857eef0cd657182f571258f4e2e3127c5b5ed0f0313e80c6e55 8682ff869bb77c19ee618da3007af4d22f593608ce510d89ab96bf886e6d0981
elfsquaddata default 37bd441cdd9688a86afaefae7ea2671b42c6719b0d0774bc790c7bde7a684b82 1afedb3f8bd9d5cdcb5020458a528913d01dcc1bd234dc17be7dd58393e9d791
etsy default faf7a145d822258d612c7d1e9f6655e83e71d9a61f08f39e86909c6105a5916e 0835fdd8411adb8c8372ae6f45436682e493fdae1298217f7c5413020e48792f
eventbrite default 6f2b23b6c2db52ecc1cb09a5cfc52bcf00dd070c24bdbf1b025627e34397f475 5a68c21c949f8aebbb739b1e5bfda64c7525a13d0d1e3887e4473c3cc6a39614
eventhubs default 427949755cf4f8421886ce5165b3780d3a7bd167f3ac4e44c8f519dfe636a9ed 51f15ac3739f514a35c473a063740b91488c4ca26ecac830bb11399439bb13b1
excelonline default 55b95c5aa93a92f02f3258e0daecbb158cb3dbc27abc67aecbf20375c07f6489 77ca858064f90e78f7c5d54bf9bbede85d3e64234c67f9a50789bae80fb35c44
excelonlinebusiness default a42249a6891e01690904d16e5da956c70c742c7c9587de0738456540bda87538 d5c525d220c1e28f12c29d248abd410c368a731fac4ddf7e94c147df688dd327
formstackforms default bdecc6d0d2005bac25b31b874fe3ab9ce98c7209f4bdb069b10b4a1afaff902b 67eab255e68a06bfd65134e36ecc3a93c1f1e377a535f0f7e4ae299c55f79ebb
freshservice default 9f0d6655b631ee3c07f50be93d62fe02ac166573f2ee79bb8a3781bca96aaee3 3acbffa6ce501f8b5aaa45499b201e06af176b062e1ce7ae9f9d302ff2e20b5c
ftp default ae060ad49d55f2e651e8f04a3e5ab33454f6546a67af7cc67e724cecba63eaec af982db82a0e8172701d6b5756586876c6b171899fcd8f6f79350c2689ab262a
github default ab508ed2ea1f9c4cf3216d440e2d50cf86b3cc0f5312fa39ee036185d493c73e bd0f37f8386ffc7bb565195dcd247378bca03e5fef781b164514395c490543e5
googlecalendar default dd09f24015298cc95328572c4bfdb47c3be3ee1c56a7bd48cd2c0751b2d35e2c 2f3f0f65d4ef72e5cddb3208d0cd84227514695e8486c4c59d688a5d227249f3
googledrive default c77bf8e2a2b80669f82d97d0341ba332392b964afc962f07e78728a4421ad338 3aea11827009e37a64d22ad2036d73070042d6f6a363c95f95c78d7cedfaf21d
googletasks default 0c7f04201868f4f31b01a72191cf9c28617bf09cb07265ef1bab75723c20efb6 20c61db7b4013a7fc810b21601c398739995a9f58d147fa5e9489ebdffbb9807
impexium default cabec9c237eebcae532854cdb32766e502be672e6c404e86860bdbeaefaf6c7b 6c043b5a967847f225abaee9d3013cdad88415922c5ca5c878773b33a7a88763
infusionsoft default dbbb0d24f6d67dc9ae36c12ab2ee38d1b7daea90bef97af5b04677e8381b0482 2e36cb4b0834ae5c0afe5e6ddcd6b5b13742f6941246473be5273330f894b38e
insightly default f5ead046092417e8c47bada3c0f12cc07b7b2efe62d3a7d025d0205c7b9c7924 7c0701a74902cdf80353f0ce9b260a50a6058c622e93b618c0a81a91d5bda1b1
jedoxodatahub default c733673ea33c7babcae0570e83eeabbe3682ae71932fcfb8bee281b9954a2199 396511d8625b3a014442d7233ebd6c7498dc76a21acc6f714af8f62ca0397776
jira default 09c9e3b933be233c381c3c0f35a9ecdb493583bb655163e0d786c31be7754a5d 8a471c554b99523ef90b663248d503d9e6531c1d2d3fb5264f74e719277b8210
keyvault default 9e7662b7fecc4f526392bc16abd0815b002ebf5bf823546ce3d126c4ce594123 d75073335373ae174232d6d7483c96a5378efc7f16d7aaa6cdc3cb733c71e583
kusto default 2a087d76fd239a5f9abf80f4e9b4b57b8e8aca4cf7bf913d22aea1a32ca05cb7 9a96d653821b2207cecb00c8fa59663fcb83f38eeb220fcecbc65d709d92e0c8
mailchimp default 2cf5f68881a233e7f1c9850bc4d3649231bad35ac2d883b02b94c24962308fa6 b351818bc3fdfbdbb1ab4e064b01a1654b3a4340993c1c6447440074016469c5
meetingroommap default d78285d9fa59597e5e8f2ff0ef55db439c1e85ed565f2257231ea215a9246465 493843b320179a0a580e60caa1c22a7c13cabe1be576ad3430e93cc71bfae352
microsoftbookings default f5a9d2d540ba646436feb4e3f521eb4d6d84511d92612f8290e95625e2be5321 700ef8f3700644e08ee17192c61132d40f81cd380cf1ce1513cdeb23242a7fd7
microsoftforms default 41fe0302637470344eebd0ebc2837253a6501cdf708a5297d7002408f5f2d19d c5887ace7287830b9455d8b2d08e13159a65b7aa46a3e721f29738898ae62bc5
monday default c3510aa18fd7e2ce8349c28ab83e10598ffa2f25ff0dbaa6b9ccd4d2fe1e0797 47a2a15844f2a4a0da51e499853619912fc419635b1f493181b48462fcd54d22
mq default ffd294fd756815f011740d654360b95e5acdbbe9ee0de2d05b64c0edd158de18 f29e88106bcc3a401de7b6ec35e36003b2546954fbbd8733f75cf78484ce183f
msgraphgroupsanduser default cf7a73b0df7b3e26ab4c2c19a595f4c7eb3d3c935f47675735b074b00ea0af7b dcefa9ecbbdc88c18c068a16b5c497dc6fb2988667e3eb2cbc5aca70f4de9daf
office365 default b58a10baa9a5ca6914bd7dff75d050cba3949c1186ef962abc2365fabdc96f05 c82da5f5d3beb529eb9001b06d10d0ed4b40c2c58b66e4f0f97256bfbe7209ce
office365groups default 5366c4d90de5f3f401a174954ac76c08faba7561b670908243bf3874522aa1a2 4a7fa1e7717b8010b37e23fc9fe95e7df6bc19219ec6a522ecfb2af85cc96ca5
office365groupsmail default 37779afe93884a17244309536fe011b5482db7404f7e0f262961b8dc6b3f4760 bd979615f09c72d7d2fab87ff6a28149e6ddd53b2014547a656a5e68ead48f5f
office365users default 642b5779ef601327d0345f631c9a1182b27914815a854f536b84ee99f476e137 3d84a75dd1473fe1e3e4ad0c0da4ec3a1df94d1897132f6755850b282c1bd733
onedrive BTS4 c79f8ac32d5e272d7024ddb2962bd997c5d45acc28a93747a3b36e7ef606bb6e 916d49fa0d5c194799e07e3d4b15fda072474d457e2d764a59acfd01e8fb26eb
onedriveforbusiness default bb09c0baccb5c324d74f9cdefa979336f849fbe903204135095bbc3e04d1c568 d7aab03824a19950125dd523c661d8cd927f24d692b07a71f5c8a96cdd211f3e
onenote default f770e29ca5f26e51d7cc0e3ddbf54f56702ae2dfebd80dda40050b19c0414229 bbe6827e5cb2d9abacd83cad3bd22752a6a3f383fd32d929381e7e14159b05a2
orderful BTS4 b8382ee707badc592068578bcb292639aca3bbbaec050e877f343a95ea4a26ba 3aacf3c28a115bdb9a6bb2b906b26054f251c59d590638785915349c345b0f36
outlook default b83f03d06d6a13848a4d2d0419c6cfd6986578c167bad54d03637664083bb240 b7088962ceeadc8795a9a79008e002e53f3acd10123a5fbc19b228617d9dceb0
pdfco default c9fb18e541124ef0cd7d867173a4c61eabd2c7a0b0be95bcdf5d4b1c4ede3702 8d573e7100699f3c225be34647b9c0339b692d54c24a06bd381051a27b17ad2c
pipedrive default 0ad01a515fe55402fd96669a2b37c420dbad740db51520e52d7b1e187e174770 7a52f176c37df7c76cc75a313a53f3dab88e06c64e1a62f631ac18c6594e161c
planner default 4f3f2f751541664f9ff701b2e08d64f2be39f221546e11936ef222a96394b021 00bb70c7fb269cc6f5c6b6d62ecb72dec6d60d0dfe175ab412eecb9bba4beddb
plivo default 85071ba3c076fc92eef5af2272cb2a775b9fe1b04242fdc86a7cf1429d78790a 69c3222e37731f45e7214904f4936efef1dbc9bf3e01a95901e047d5a202645c
plumsail default 08a9a832487f5c1e414757a4dab88f6c3719aaf3bdb37d4fe72dce69e9f46adb fd802f2a7cc7d0eb5d90af45e08e8053af94f42451068c4b379e7dafb6e765c6
powerbi default 27efea205500f3a160a3c0ade08b31522cd6bb5b7601221c118c930f82efa24b 7420ea7d6b5b5b6b1f01bcce324fc182b4ee8e04c696516084b56cc637a7062b
projectplace default 2dadbee3dfee2d60eeac8df831bd8a7b51cbbcded8480cbb7a14180fe7e50c11 4c134ecaf1b9521650a8a97b47eea4bcda7b6d3f8a401de0211b7f8559867854
replicon default 8af777a66023a7ffd02c8e1ce5261119a529da8dc4fab07eebbe0c2454264b2c 8fc72de1bc75461bf1be92a0fc587fe9a3801cf48ba2fc97416344c4d959be01
revai default 0b0aa956275624c23f31a2c3c3315f49fb26d8559e80e6ec536f6364c04e1037 78e5968c37993933c3336089e57c6e8f45141cbabaee1efe30621250a2c60548
rss default e8470f461e7b966cc86b51733674510b7cc3a4f719611e1a337f8fad7fcf96d2 4b8a2439ce5d869461d6af741e008a372e3adffb73d093a5e3a58cad9f01fc2d
salesforce default 57ad15ab50d2d1796a1520b9a03d85dbabbf52b5ac722b05e390f1787926051f 5e397457e9c34785edc18847700be176c4f4b18c8f7a576bba77dd4e5c95ff3d
seismicplanner default adb321a0255847eab5f08294342cc59e9a12124b02b3676e5c43176fab460670 20987b9d1475d02197ec0c15e482bda517c57e67e73dd1ddbd829efa89fc6b23
sendgrid default a5d7caddb68834238831a5a808180c5f84c0c7075130fc09a0a2a998a0dc7fd6 2bfafd2bd692dc32e8ba1f2c8ccea853633395d816563cc66d653f4fa42ee1f7
servicebus default b772b0ee3a4cbaee6e5f35c5690397ca0676855555051164ac3bdfd809ccd44b 2e4822b51ea40f62cab6504a7c04fa34120a93837c5b8b7fb742b1cfbfa8fe7e
sharepointonline default ecc0784ebe0ff3a418073094c66b3ec52154b5809b7234e1e9336c917ce48fbf 95b87b1ace2ea975572975600e516ba5618af9cd6b09de74ca524f0725b5e120
shifts default db4ed2f1af41c20cf583de3ebf7351ffa12baae52abb565906c7e46ef7eb86b9 0e7f2fb30ebffad0d409566dd4d28406279918142dcc1d6c024f835bbdece5ad
signinghub default 209a58f4fa78b19845cd3d7b6f4e01d94f73ace0a9832c73f804449f68263404 4b6c47fc3869ac1db48f399c870e515d5046ce44e7818e9688e515ad6d782755
slack default 9628ffa4396b91d06a3ef246926c86beea3513602b8b8f5a1d6f22c38386c336 4046412db17b13b83cee520bd8c83a8ada0b61c8100f9b2613ed7d85e52393be
smtp default 095d7b6b4ccace265ee4df85f523c7af655711baf374293cb33bfc727ff35c7e 11370b9c348d675668036c50a7fa3d215e733bfccba10ad81421614f972fba85
sql default ce1b8d471f2a8ca04e7919434266694173a456b0af27710de3694cbf84f01972 e86a415bd64b799499fe2dee825e160a5051a1d9902e75e0ceb8ddc7c37f594e
starmind default 68e8f77b6ab9fe0b7b86784efb7e9f551dce53499940f4728db1f85809255340 e92c28aa45623e2a9ee4b9127d2dd046697be594c09ed68160ad12f831b306fa
starrezrestv1 default ec00ac764f396b41b9725414ad10f2b358ee583bbea760ae99a91799d48d0e73 b2c0c44ee863cad610b881e40540df5b773679c1a9fdeb7a4cdb5b9678d04532
tallyfy default fc196fdc54606cac820bcf67025b6505b9f6e4c5c74fad4d7da44533e5aad464 1b9ffceef9093317d9943747165d77370ecb1f913064306646984e35bbfbadf1
teams default 0116fc974e54ff4c9a69ef386b9f990f1d51d226f1666bbd705f53e720b955e8 2894c7b05afb6bdf54213450c862324d240b2ca6942a26642a0d8f2ff20ae337
textrequest default ae8e02fd550831232602aed510c23be86b8287c394d9b4ffdfc3f8657b9d7adb b924e52d8cfe8613402d303f89c6343a04b60594d076182c6f4c4159ecac87a4
ticketmaster default 70eb7108409c5e0a3010a6564300b595825e2e700e30f721c9f0bc2b16cf17ca 79a5fdc71b547dac6c5f50dac829e36d4065b7c6aaee33afdb35cd70929ef558
todo default d500a1028c6e81a051a849c6a6382082363f5bcc0c74d1c132d825210670ca6a bd0e585941eeb9c28d3d10d4900c9a8622362f1f069c6868a39ab18c6928af2e
trello default d916351d7242576f38bfa018f922ed49cd58e08e7e63bee4801d9e9dd5a8b97f 37c8bb1e73cd8d7fe4474cdc3f5a955abb4e67162888bf1fd99d25d0b9b23f6e
twitter default e617b4c93b41a36d2a645edd420063a56b17302a5c25c6d9f7725cb10c218abd 718c241f300ceb4932ae37cdd92a83d4203ed0fe3d9e59d4e05e9f765e3a1d5c
typeform default 9c6a2b915765e47cbe1416322f810908e82ef991cf124f9ec89569d149fa9625 f552457258db9274d4d1663299575914a6f33689e1facdb5b8ad5e25c8583b7e
universalprint BTS4 46eb75534617fffca747ab0a1a6ea03844d5e2f810f4488fcabac962ff9f3b13 4b32ee553c4ae7798b9d428cd36268ec52b1cc20aa8601f7e8898deef3b947e5
waywedo default 7f5fc1e2e00c11874a8c9bf6b2301ebfe325de3f70e4b786f316d11f3555d21a 186b29649535f7599d1ae9c7a0c66508b09d559a50d42f722918b7ba0e0e4345
wdatp default a0aa86e34831de1f7206b3d26ac89b7fa446b9f64b7555555ba5c96d70b8fa16 8491a9790675b0b683daff38f9fc0138615e189398d20da14cd9b4cc15471be0
webex default 171e92c116967fbfef49546c895cc4f1de3304102c7d45b6ed2ba371e9ad07dc a598a3167ddbd90885c4277662367fea0f4f89340664169bdc580280f50b3f6f
wordonlinebusiness default e7d1b48fc4ac9758220441a2ca0c3c77bc490f35a406df947c69b3cfb1d70358 5ee368109eeb266cda183e6bf736b4903aef6533617c7ab20a6d77bd498d04a2
wordpress default a9386247d5261e0746aa5d8ee445d014ec0151f26594837d95b7c3d9dd68cb06 1eb14b3d975c105611c9827d965c87af180385881963ea6f9ca6e7ff4508bfa5
yammer default 010c481c1a53c2dbda78c376fc5aa20deaafb6bce7d4dfaf72cc25b0d6bc92d1 8a8da9731732d9284fb30abc8a7dbbc71555c66894a88aedfba106efd16a9086
zendesk default f568516a726b1eb89d50c38c34582f20fd3bb315d29f5f139eb563ddf84b1f8a 96792ebcd031fd70b43b7642c217d1b95b93a103bc754aa29d20ccdb7612e465
zeptomail default 85dd833f593445f5fa135d342774d12f211707b1d0de6d2ef1695d985e5c4854 5cb2c5005d9f1f8e3373e95cbf4f95ea0edabf4d3c4ac8d76adf8be5f34cc5af
zohosign default ce62c4d774b291d1ccbf5a1f258613e938f894400c77cec02eefca0bbd9c8239 79e74907dec8db0653dd50dd9e97cd09e95a9ce7c37d364585537fa563fa3891

Changes

  • Replaces legacy token-provider/options abstractions with an async Azure Core pipeline, safe retry policy, immutable response snapshots, and caller-owned credentials.
  • Enforces timeout_seconds and per-operation timeout as one total network budget across retries, response loading, and body reads while preserving caller-supplied transport ownership.
  • Preserves per-operation headers and request IDs over client defaults and includes custom methods in explicit unsafe retry opt-in.
  • Migrates all samples to close caller-owned async credentials and consume pageable methods with async iteration; validation now rejects both regression classes.
  • Uses the collected Zendesk pageable list directly and behaviorally verifies that one yielded ticket is displayed as one item.
  • Adds keyword-only timeout, headers, client_request_id, and response_hook controls to generated operations, including collision-safe parameter renaming.
  • Regenerates exactly 99 clients from fresh live ARM metadata; Jira now exposes the live optional fields query parameter instead of hardcoding *all.
  • Does not add ARM caches, metadata snapshots, manifests, sync/aio namespace splitting, LRO support, or broader generation-pipeline work.

Testing

  • Unit tests added/updated
  • All existing tests pass (pytest): 4,466 passed
  • All 99 samples compile and validate with zero unscoped credentials or awaited async generators
  • Linting passes (flake8 src tests samples)
  • mypy src passes for 108 source files
  • python -m build produced wheel and sdist
  • Slow-response regressions pass on the declared minimum azure-core==1.30.0 and current 1.41.0
  • Paired generator tests pass: 823/823
  • Fresh live regeneration produced the exact 99-client catalog with no failures

Checklist

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

Generated with AzureUX-BPM 54004551cd07385a21dbe320ee514d90f0453975 from live ARM metadata (default subscription plus BTS4 fallback for onedrive, orderful, and universalprint).
@hallvictoria
hallvictoria requested a review from a team as a code owner October 4, 2026 19:32

@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] Requesting changes for one reproduced runtime regression: the new per-request timeout and default timeout_seconds do not bound response reads. The inline finding is owned by the SDK runtime, not generated output.

Validation at this head: 4,309 SDK tests passed; flake8, mypy and wheel packaging passed; the pinned BPM compiler built and all 823 generator tests passed. The two reviewer-owned timeout/configuration probes fail on both azure-core 1.30.0 and 1.41.0 while the 68 existing focused runtime/retry tests pass. Fresh ARM capture and offline replay generated all 99 Python and .NET clients with an unchanged 100-file cache; 98/99 captured Swagger hashes match the PR manifest and 98/99 Python outputs match canonical Git content after LF normalization. Jira must be validated against independently fetched live ARM definitions so the suggested client is current. The live /2/search definition exposes an optional fields parameter; assess and regenerate the client against that current contract. The hash difference is source metadata drift, not a request for historical Swagger and not a blocker by itself. All 99 parity reports were collected; their raw mismatch verdicts include the four Python-only request controls and named-type/alias matching limitations and are not a clean contract sign-off.

The paired BPM PR 17393024 remains active at 2da13650b403ea0176361a383f9cf0100f7c07c7, so upstream integration is pending. Observed GitHub checks are green (18 success, one skipped). A blind Grok 4.7 pass did not establish an additional blocking defect beyond the timeout area; its Cosmos continuation-token concern is unconfirmed against the explicit v5 nextLink paging annotation. Human ownership and repository policy review remain necessary.

Comment thread src/azure/connectors/sdk/http_client.py Outdated
Regenerated all 99 clients from live ARM metadata with AzureUX-BPM daafb3e546cb2c68419602f6ccfaf124f1483450 (default subscription plus BTS4 fallback for onedrive, orderful, and universalprint).

@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.

/azp run

@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] Latest-head review: the previously reported positive-timeout regression is fixed and its default/per-call slow-body regressions pass. Requesting changes for four newly reproduced root causes: per-operation headers/request IDs lose to client defaults; explicit retry opt-in excludes custom methods; sample consumers still await newly pageable operations; and samples do not close credentials they now own. All fixes are owned by this SDK PR; generated paging and caller-owned credential semantics should be retained.

Validation at d8a080b: SDK 4,311/4,311, focused existing runtime/retry tests 70/70, generator 823/823 after rebuilding daafb3e546cb2c68419602f6ccfaf124f1483450, flake8, mypy (108 source files), and wheel packaging passed. Reviewer-owned probes reproduced the new runtime/sample defects on azure-core 1.30.0 and 1.41.0. The actual ARM and Office 365 sample paths were also executed against the pinned base: ARM dispatched normally and both created credentials were closed; on this head ARM fails before dispatch and both credentials remain open. The sibling sweep identified 37 awaited async-generator calls in 20 sample files and 78 sample files with credential-lifetime candidates.

Fresh live ARM capture on 2026-10-06 regenerated all 99 Python clients, including Jira, matching the head after LF normalization. Offline Python and .NET replay retained all 100 cache hashes unchanged. All 99 cross-language reports ran; raw verdicts still contain request-control-count and named-alias/version/model matching limitations, so this is not full parity sign-off. BPM PR 17393024 remains active and upstream integration is pending. Observed GitHub checks: 18 successful, one skipped. No historical Swagger was requested.

Three independent passes were requested using GPT-6.1 Sol, Grok 4.7, and Gemini 3.8 Flash. Grok and Gemini reported the requested models; the Sol pass could not confirm its underlying model selection. Their candidates were independently adjudicated through focused checks, not accepted by model vote. Zero/nonpositive timeout semantics, first-retry backoff wording, and redirect compatibility remain advisory ownership questions, not additional automatically posted blockers. Human ownership and repository policy review remain necessary.

Comment thread src/azure/connectors/sdk/http_client.py
Comment thread src/azure/connectors/sdk/http_client.py Outdated
Comment thread src/azure/connectors/arm.py
Comment thread src/azure/connectors/sdk/http_client.py Outdated
Merged generator master and regenerated all 99 clients from live ARM metadata with AzureUX-BPM ba7c1c1332016c69790937892170c9890d7905dc (default subscription plus BTS4 fallback for onedrive, orderful, and universalprint); generated outputs were unchanged.

@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] Latest-head re-review: the prior timeout, per-operation header/request-ID precedence, custom-method retry opt-in, and credential/async-iteration migration fixes pass their focused checks. One sample migration defect remains: the Zendesk get-items example collects an async iterator into a list, then treats that list as a response envelope and reports zero items for nonempty results. The inline comment references the resolved migration thread and is owned by the SDK sample, not the generator.

Validation at this pinned head: 4,320 SDK tests passed; flake8, mypy, all 99 sample import/signature/lifecycle checks, and wheel packaging passed. The latest compiler was rebuilt from ba7c1c1332016c69790937892170c9890d7905dc; focused Python generator tests passed 116/116 and the full generator suite passed 823/823. Reviewer-owned focused runs on azure-core 1.41.0 and the compatible declared-minimum pair azure-core 1.30.0 / azure-identity 1.17.0 each produced 189 passes and the one nonempty Zendesk sample failure. An incompatible reviewer dependency overlay was corrected and is not attributed to this PR. Actual non-UTF-8 binary transport checks passed, disconfirming that candidate.

Fresh live ARM capture on 2026-10-06 reproduced all 99 Python clients, including Jira, after LF normalization. Offline Python/.NET replay kept all 100 cache hashes unchanged. All 99 parity reports ran with zero Python wire-name serialization mismatches; alias/version/request-control matching limitations still prevent a clean full cross-language parity verdict. BPM PR 17393024 remains active and upstream integration is pending. Observed GitHub checks are green; passing gates do not establish that every sample's displayed results are correct.

Independent GPT-6.1 Sol and Grok 4.7 selector requests completed; Gemini 3.8 Flash dispatch remained unavailable with HTTP400 invalid_request_body after a bounded retry. No different model was substituted, and backend identity was not independently attested. Candidate findings were accepted only after focused source/runtime adjudication. Human ownership and repository policy review remain necessary.

Comment thread samples/sample_connector_usage/sample_connector_usage_zendesk.py Outdated
Regenerated all 99 clients from live ARM metadata with AzureUX-BPM c9c8f621ecc34f6d595237b2e30331d6714ae997 (default subscription plus BTS4 fallback for onedrive, orderful, and universalprint); generated outputs were unchanged.

@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] Question regarding nonpositive timeout semantics.

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

@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] Morning re-review of Victoria's pinned SDK head: the documented nonpositive-timeout fix passes for default and per-call zero/negative values, and prior header/retry/sample fixes remain green. Requesting changes for three independently reproduced runtime defects: default-transport empty responses raise StreamConsumedError; AsyncioRequestsTransport cannot dispatch because read_timeout reaches requests; and SDK close incorrectly awaits that built-in transport's synchronous close. These are shared SDK-runtime fixes, not generated-client/BPM edits.

Focused reviewer runs on azure-core 1.41.0 and the compatible declared-minimum pair azure-core 1.30.0 / azure-identity 1.17.0 each produced 195 passes and nine failing cases: four empty-response variants, four requests-backed timeout variants, and close without a request. A real local HTTP base/head comparison confirms the empty-response failure is introduced: base handles GET204, HEAD200, empty GET200 and empty GET400; head fails all four while nonempty GET200 succeeds. Requests compatibility checks bind the actual requests.Session.request signature before any external network I/O. Caller-supplied transport closure itself matches Azure Core ownership conventions; the close finding is about the async lifecycle protocol, not a demand to stop closing injected transports.

Ordinary checks passed: 4,327 SDK tests, flake8, mypy, all 99 sample validations, and wheel packaging. The morning compiler was rebuilt from b8b6e2761812cfee5d2703793da5cdabc5c1f0fe; Python generator tests passed116/116 and the full generator suite passed823/823. Fresh live ARM capture on 2026-10-07 reproduced all99 clients after LF normalization, including Jira. Offline Python/.NET replay preserved all100 cache hashes; all99 parity reports ran with zero Python wire-name serialization mismatches, while existing alias/version/request-control matching limitations prevent full semantic parity sign-off. BPMPR17393024 remains active, so upstream integration is pending. Observed GitHub checks:18 successful, one skipped.

Requested GPT-6.1 Sol and Grok4.7 passes completed and their candidates were adjudicated with executable checks. Gemini3.8Flash dispatch failed with HTTP400 even through an alternate analysis-agent wrapper; no different model was substituted and backend identity was not independently attested. Redirect compatibility and changelog placement remain advisory, not automatically posted blockers. Human ownership and repository policy review remain necessary.

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

@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] Current-head review with independent Gemini 3.8 Flash, GPT-6.1 Sol, and Grok 4.7 selector requests completed. The three previously posted transport defects are fixed: real empty-response, requests-backed dispatch, requests-backed close, and disabled-timeout reviewer checks now pass (213/213 including the existing focused slice). One additional SDK configuration defect is reproduced: when an explicit policy chain is supplied, per_call_policies and per_retry_policies are silently discarded rather than composed with that chain. The inline finding is owned by the shared SDK runtime, not the generator.

Validated this configuration against the actual Azure Core AsyncPipelineClient using the same explicit [HeadersPolicy(), AsyncRetryPolicy(retry_total=0)] chain and marker extensions. Azure Core runs both markers; this SDK successfully sends the request but runs neither. The same mismatch reproduces on azure-core 1.41.0 and the compatible minimum pair azure-core 1.30.0 / azure-identity 1.17.0. The targeted comparison/warning suite has 202 passes and this one failure on both versions. Gemini's proposed unawaited-response warning did not reproduce for real empty/nonempty responses; inherited nullable-pagination and ordinary transport-ownership concerns were not promoted.

Full gates passed: SDK 4,336/4,336; rebuilt generator source 0b7c129906ff253669a2d5e1fc95e243d79c295a, focused Python generator 116/116 and full generator 823/823; flake8, mypy, all 99 sample validations, and wheel packaging. Fresh live ARM definitions reproduced all 99 clients after LF normalization, including Jira. Offline Python/.NET replay kept all 100 cache hashes unchanged; 99 parity reports ran with zero Python wire-name serialization mismatches. Existing alias/version/request-control matching limitations prevent full semantic parity sign-off. BPM PR 17393024 remains active, so upstream integration is pending. Observed GitHub checks: 18 successful, one skipped.

Candidate findings were checked against source and executable behavior rather than accepted by model vote. Model selectors were explicitly supplied; backend identity was not independently attested. Wholesale empty-policy requirements, redirect compatibility, and documentation/test-double cleanup remain advisory rather than additional automatically posted blockers. Human ownership and repository policy review remain necessary.

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

@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] Latest-head review with GPT-6.1 Sol, Grok 4.7, and Gemini 3.8 Flash selector requests completed. The previous explicit-chain extension defect is fixed: the actual Core/SDK marker comparison now passes. Requesting changes for one independently reproduced SDK-runtime configuration defect: an accepted, authenticated explicit policy chain without AsyncRetryPolicy cannot dispatch because the SDK injects a retry-policy-only timeout option that reaches the transport. This is not the earlier missing-extension finding, and no generated-client or BPM edit is needed for the root cause.

The reviewer comparison uses the identical HeadersPolicy, RequestIdPolicy, and AzureKeyCredentialPolicy chain with real local HTTP. Azure Core AsyncPipelineClient returns 200 and dispatches exactly once; ConnectorHttpClient raises a duplicate-timeout TypeError before dispatch with both AioHttpTransport and AsyncioRequestsTransport. This reproduces on azure-core 1.41.0 and the compatible declared-minimum pair azure-core 1.30.0 / azure-identity 1.17.0. Each edge run has 205 passing cases and the two SDK dispatch failures. The prior composition/response-warning comparison and existing focused slice pass 205/205.

Ordinary gates passed: SDK 4,338/4,338, flake8, mypy (108 source files), all 99 sample validations, and wheel packaging. The compiler was rebuilt from paired BPM source 22cd9948f518445a5917ae7890f3460df495fc3b; focused Python generator tests pass 116/116 and the complete generator suite passes 823/823. Fresh live ARM capture on 2026-10-08 reproduces all 99 clients, including Jira, after line-ending normalization. Offline Python/.NET replay preserves all 100 cache hashes; all 99 parity reports ran with zero Python serialization-wire mismatches. Raw alias/version/request-control comparisons do not establish full semantic cross-language parity. BPM PR 17393024 remains active, so upstream integration is pending. Current GitHub checks: 18 successful, one skipped.

Nested explicit retry behavior remains a caller-owned-chain contract question; inherited sample alias misuse, redirect compatibility, and executor cancellation are not promoted to additional blockers. Candidate findings were adjudicated against source and executable behavior, not accepted by model vote. Explicit model selectors were supplied; backend identity was not independently attested. Human ownership and repository policy review remain necessary.

Comment thread src/azure/connectors/sdk/http_client.py Outdated
…oria/azure-core-runtime

# Conflicts:
#	CHANGELOG.md
#	samples/sample_connector_usage/sample_connector_usage_arm.py
#	samples/sample_connector_usage/sample_connector_usage_azureblob.py
#	samples/sample_connector_usage/sample_connector_usage_azuredigitaltwins.py
#	samples/sample_connector_usage/sample_connector_usage_azureiotcentral.py
#	samples/sample_connector_usage/sample_connector_usage_azuremonitorlogs.py
#	samples/sample_connector_usage/sample_connector_usage_azuretables.py
#	samples/sample_connector_usage/sample_connector_usage_documentdb.py
#	samples/sample_connector_usage/sample_connector_usage_elfsquaddata.py
#	samples/sample_connector_usage/sample_connector_usage_excelonlinebusiness.py
#	samples/sample_connector_usage/sample_connector_usage_office365groups.py
#	samples/sample_connector_usage/sample_connector_usage_office365groupsmail.py
#	samples/sample_connector_usage/sample_connector_usage_office365users.py
#	samples/sample_connector_usage/sample_connector_usage_onedrive.py
#	samples/sample_connector_usage/sample_connector_usage_onenote.py
#	samples/sample_connector_usage/sample_connector_usage_planner.py
#	samples/sample_connector_usage/sample_connector_usage_salesforce.py
#	samples/sample_connector_usage/sample_connector_usage_sharepoint.py
#	samples/sample_connector_usage/sample_connector_usage_shifts.py
#	samples/sample_connector_usage/sample_connector_usage_slack.py
#	samples/sample_connector_usage/sample_connector_usage_sql.py
#	samples/sample_connector_usage/sample_connector_usage_wdatp.py
#	samples/sample_connector_usage/sample_connector_usage_yammer.py
#	samples/sample_connector_usage/sample_connector_usage_zendesk.py
#	src/azure/connectors/arm.py
#	src/azure/connectors/azuread.py
#	src/azure/connectors/azureautomation.py
#	src/azure/connectors/azureblob.py
#	src/azure/connectors/azuredatafactory.py
#	src/azure/connectors/azuredigitaltwins.py
#	src/azure/connectors/azureiotcentral.py
#	src/azure/connectors/azuremonitorlogs.py
#	src/azure/connectors/azuretables.py
#	src/azure/connectors/azurevm.py
#	src/azure/connectors/documentdb.py
#	src/azure/connectors/dynamicsax.py
#	src/azure/connectors/elfsquaddata.py
#	src/azure/connectors/excelonline.py
#	src/azure/connectors/excelonlinebusiness.py
#	src/azure/connectors/jira.py
#	src/azure/connectors/office365.py
#	src/azure/connectors/office365groups.py
#	src/azure/connectors/office365groupsmail.py
#	src/azure/connectors/office365users.py
#	src/azure/connectors/onedrive.py
#	src/azure/connectors/onedriveforbusiness.py
#	src/azure/connectors/onenote.py
#	src/azure/connectors/planner.py
#	src/azure/connectors/salesforce.py
#	src/azure/connectors/sharepointonline.py
#	src/azure/connectors/shifts.py
#	src/azure/connectors/slack.py
#	src/azure/connectors/sql.py
#	src/azure/connectors/teams.py
#	src/azure/connectors/wdatp.py
#	src/azure/connectors/yammer.py
#	src/azure/connectors/zendesk.py
#	tests/generated_connector_test_utils.py
#	tests/test_arm.py
#	tests/test_azuread.py
#	tests/test_azureblob.py
#	tests/test_azuredigitaltwins.py
#	tests/test_azureiotcentral.py
#	tests/test_azuremonitorlogs.py
#	tests/test_azuretables.py
#	tests/test_documentdb.py
#	tests/test_dynamicsax.py
#	tests/test_elfsquaddata.py
#	tests/test_excelonline.py
#	tests/test_excelonlinebusiness.py
#	tests/test_office365.py
#	tests/test_office365groups.py
#	tests/test_office365groupsmail.py
#	tests/test_office365users.py
#	tests/test_onedrive.py
#	tests/test_onedriveforbusiness.py
#	tests/test_onenote.py
#	tests/test_planner.py
#	tests/test_regenerated_connector_samples.py
#	tests/test_regenerated_operation_coverage.py
#	tests/test_salesforce.py
#	tests/test_sharepointonline.py
#	tests/test_shifts.py
#	tests/test_slack.py
#	tests/test_sql.py
#	tests/test_wdatp.py
#	tests/test_yammer.py
#	tests/test_zendesk.py
@hallvictoria
hallvictoria merged commit 3538e43 into main Oct 9, 2026
19 checks passed
@hallvictoria
hallvictoria deleted the hallvictoria/azure-core-runtime branch October 9, 2026 14:22
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