updated setup.py and changelog.rst for cli v2 release#9943
Open
Chakradhar886 wants to merge 6 commits into
Open
updated setup.py and changelog.rst for cli v2 release#9943Chakradhar886 wants to merge 6 commits into
Chakradhar886 wants to merge 6 commits into
Conversation
Add _sdk_compat.py with test-scoped monkey-patches applied only in MLBaseScenarioTest.setUp; production code paths are unchanged. The shims bridge gaps between azure-ai-ml 1.34's TSP-generated REST clients and the existing VCR cassettes: - SdkJSONEncoder msrest fallback: serialize legacy msrest.Model instances via .serialize(keep_readonly=True) when the new encoder raises TypeError. - DeploymentTemplate from_rest compat: wrap dict-style name/version with an attribute shim and skip the post-create get() refetch that has no recording. - Deployment settings from_rest compat: gracefully return None when OnlineRequestSettings/ProbeSettings/BatchRetrySettings receive non-object inputs from older cassettes. - Workspace outbound-rule begin_create/begin_update: route through _rule_operation.begin_create_or_update with ARMPolling(final-state-via=location) and reconstruct OutboundRule from properties, avoiding the new final GET on a URL the cassette does not contain. - ARM/LRO _sleep no-op: eliminate the 30s inter-poll delay so synchronous polling completes immediately on playback. - LROPoller deferred-thread patch: prevent LROPoller.__init__ from auto-starting a daemon polling thread for --no-wait commands. The thread is now started lazily on the first wait()/result() call. Eliminates cross-test cassette pollution where leaked background polls from earlier tests caused real-Azure SubscriptionNotFound 404s in later tests. Also broaden cassette replay (discovery + any GET) with a replay-only LRO status short-circuit (InProgress->Succeeded) and tighten URL rewriters in util.py. Loosen two assertions in test_deployment_template_scenarios.py for new-SDK tag normalization. Full suite: 95 passed, 119 skipped, 0 failed (azdev test --discover azext_mlv2).
️✔️Azure CLI Extensions Breaking Change Test
|
|
Hi @Chakradhar886, |
Member
|
/azp run |
|
Azure Pipelines successfully started running 2 pipeline(s). |
Contributor
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Updates the Azure ML CLI (v2) test infrastructure to remain compatible with azure-ai-ml==1.34.0 during VCR cassette playback, while bumping the CLI version to 2.44.0.
Changes:
- Bump CLI version to
2.44.0and update changelog. - Update manual test requirements to
azure-ai-ml==1.34.0. - Add multiple cassette-playback compatibility shims (SDK monkey-patches + URL/response rewriting) to keep existing recordings replayable.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| src/machinelearningservices/setup.py | Bumps package version to 2.44.0. |
| src/machinelearningservices/CHANGELOG.rst | Adds 2.44.0 changelog header/date. |
| src/machinelearningservices/azext_mlv2/manual/requirements.txt | Pins azure-ai-ml to 1.34.0. |
| src/machinelearningservices/azext_mlv2/tests/util.py | Adds a VCR request/response processor to normalize deployment-template URLs to existing cassettes. |
| src/machinelearningservices/azext_mlv2/tests/scenario_test_helper.py | Applies SDK/VCR playback shims in setUp() and adds the new recording processor. |
| src/machinelearningservices/azext_mlv2/tests/_sdk_compat.py | Introduces SDK compatibility monkey-patches for serialization, template entity conversion, and LRO behavior during playback. |
| src/machinelearningservices/azext_mlv2/tests/latest/test_deployment_template_scenarios.py | Loosens tag assertion to tolerate string/boolean encoding differences. |
Comment on lines
+410
to
+414
| if u.netloc.endswith(".api.azureml.ms"): | ||
| port_suffix = "" | ||
| if ":" in u.netloc: | ||
| port_suffix = ":" + u.netloc.split(":", 1)[1] | ||
| new_netloc = self._RECORDED_HOST + port_suffix |
Comment on lines
+265
to
+272
| new_body["string"] = rewritten.encode("utf-8") if isinstance(string, (bytes, bytearray)) else rewritten | ||
| # Update Content-Length so downstream consumers don't trip. | ||
| headers = new_response.get("headers") or {} | ||
| if isinstance(headers, dict) and "content-length" in {k.lower() for k in headers}: | ||
| for key in list(headers.keys()): | ||
| if key.lower() == "content-length": | ||
| headers[key] = [str(len(new_body["string"]))] | ||
| return new_response |
Comment on lines
+292
to
+293
| cassette.can_play_response_for = _can_play | ||
| cassette.play_response = _play_response |
Comment on lines
+299
to
+306
| self._service_client.deployment_templates.begin_create( | ||
| registry_name=self._operation_scope.registry_name, | ||
| name=deployment_template.name, | ||
| version=deployment_template.version, | ||
| body=rest_object, | ||
| polling=False, | ||
| **kwargs, | ||
| ) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This checklist is used to make sure that common guidelines for a pull request are followed.
Related command
General Guidelines
azdev style <YOUR_EXT>locally? (pip install azdevrequired)python scripts/ci/test_index.py -qlocally? (pip install wheel==0.30.0required)For new extensions:
About Extension Publish
There is a pipeline to automatically build, upload and publish extension wheels.
Once your pull request is merged into main branch, a new pull request will be created to update
src/index.jsonautomatically.You only need to update the version information in file setup.py and historical information in file HISTORY.rst in your PR but do not modify
src/index.json.