Skip to content

[AutoPR azure-iot-deviceregistrysoftwareupdate]-generated-from-SDK Generation - Python-6715906 - #48623

Open
azure-sdk-automation[bot] wants to merge 2 commits into
mainfrom
sdkauto/azure-iot-deviceregistrysoftwareupdate-6715277
Open

[AutoPR azure-iot-deviceregistrysoftwareupdate]-generated-from-SDK Generation - Python-6715906#48623
azure-sdk-automation[bot] wants to merge 2 commits into
mainfrom
sdkauto/azure-iot-deviceregistrysoftwareupdate-6715277

Conversation

@azure-sdk-automation

@azure-sdk-automation azure-sdk-automation Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Configurations: 'specification/deviceupdate/data-plane/sudeviceregistry/tspconfig.yaml', SDK Release Type: beta, and CommitSHA: 'be4f14d4492f9f60eb6cabf3a93cce8a7cef803c' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6715906 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release. Release plan link: https://azsdk-releaseplan-dashboard-hveph5aqhhcfhtgu.westus-01.azurewebsites.net/?releaseplan=36134 Submitted by: wuaustin@microsoft.com

Copilot AI balanced review requested due to automatic review settings August 18, 2026 17:23
@azure-sdk-automation azure-sdk-automation Bot added the auto-release When merged to main, release pipelines for this PR's changed packages trigger automatically. label Aug 18, 2026
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).
9 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

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

Note

Copilot could not run the full agentic suite for this review because it was automatically requested on a bot-authored pull request. Request a review from Copilot under Reviewers to retry with the full agentic suite. Improved support for bot-authored pull requests is coming soon.

Adds a new generated Python client library package for “Software Update for Device Registry” and wires it into the deviceregistry CI artifact set.

Changes:

  • Registered azure-iot-deviceregistrysoftwareupdate as a CI artifact.
  • Added generated sync + async client, operations, models/enums, and typed-dict request/response shapes.
  • Added packaging/metadata files (pyproject, manifest/license/changelog, apiview + metadata, README).

Reviewed changes

Copilot reviewed 39 out of 39 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
sdk/deviceregistry/ci.yml Adds the new package as a build artifact in CI.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/tsp-location.yaml Tracks the swagger/typespec input location for generation.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/pyproject.toml Defines build system and packaging metadata/dependencies.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/dev_requirements.txt Adds local dev dependencies for building/testing the package.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/types.py Introduces public TypedDict request/metadata shapes.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/py.typed Marks the package as typed (PEP 561).
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/operations/_patch.py Provides customization hook for generated sync operations.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/operations/init.py Exposes sync operation groups and applies patches.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/models/_patch.py Provides customization hook for generated models.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/models/_models.py Adds generated model classes used by the client/operations.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/models/_enums.py Adds public enums used by models/operations.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/models/init.py Exposes model types/enums and applies patches.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/aio/operations/_patch.py Provides customization hook for generated async operations.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/aio/operations/_operations.py Adds generated async operation implementations.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/aio/operations/init.py Exposes async operation groups and applies patches.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/aio/_patch.py Provides customization hook for generated async client surface.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/aio/_configuration.py Adds async client configuration (policies, auth, API version).
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/aio/_client.py Adds async client entrypoint and request sending.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/aio/init.py Exposes async client and applies async patches.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/_version.py Defines the package version constant.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/_utils/utils.py Adds helper utilities (etag quoting + match headers).
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/_utils/model_base.py Adds shared generated model base + serialization/deserialization helpers.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/_utils/init.py Marks utils module with generator header.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/_patch.py Provides customization hook for generated sync client surface.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/_configuration.py Adds sync client configuration (policies, auth, API version).
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/_client.py Adds sync client entrypoint and request sending.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/init.py Exposes sync client + version and applies patches.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/init.py Declares azure.iot namespace package behavior.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/init.py Declares azure namespace package behavior.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/apiview-properties.json Adds APIView cross-language mappings for the new package.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/api.metadata.yml Records generation tool versions/hashes used for the API surface.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/api.md Adds the generated API surface documentation snapshot.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/_metadata.json Records generation metadata (apiVersion, repo commit, emitter versions).
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/README.md Adds package README and getting-started content.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/MANIFEST.in Defines files included in sdist/wheel.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/LICENSE Adds the MIT license text for the package distribution.
sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/CHANGELOG.md Adds initial release notes for 1.0.0b1.
Suppressed comments (3)

sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/tsp-location.yaml:1

  • additionalDirectories: is present but has no value. If the tooling expects a sequence, this will deserialize as null and can cause downstream failures. Consider either removing the key or making it an explicit empty list (e.g., additionalDirectories: []).
    sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/pyproject.toml:1
  • PEP 621 expects license to be specified as a table (e.g., { text = \"MIT\" } or { file = \"LICENSE\" }), not a bare string. Using the structured form improves compatibility across build backends and metadata consumers.
    sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/pyproject.toml:1
  • The package contains azure/__init__.py and azure/iot/__init__.py, but packages.find excludes azure and azure.iot. This can produce different behavior between editable installs (where those __init__.py exist on disk) and wheels (where those packages won’t be installed), potentially breaking namespace/package resolution. Either (a) remove the azure/__init__.py + azure/iot/__init__.py files and switch to namespace package discovery, or (b) stop excluding azure and azure.iot so those namespace packages are consistently shipped.

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

python -m pip install azure-iot-deviceregistrysoftwareupdate
```

#### Prequisites
```

## Examples

Comment on lines +101 to +117
@overload
async def begin_import_update(
self,
import_update_request: ImportUpdateRequest,
*,
content_type: str = "application/json",
**kwargs: Any
) -> AsyncLROPoller[None]: ...

@overload
async def begin_import_update(
self,
import_update_request: ImportUpdateRequest,
*,
content_type: str = "application/json",
**kwargs: Any
) -> AsyncLROPoller[None]: ...
@github-actions

This comment has been minimized.

Copilot AI review requested due to automatic review settings August 18, 2026 18:59
@azure-sdk-automation azure-sdk-automation Bot changed the title [AutoPR azure-iot-deviceregistrysoftwareupdate]-generated-from-SDK Generation - Python-6715277 [AutoPR azure-iot-deviceregistrysoftwareupdate]-generated-from-SDK Generation - Python-6715906 Aug 18, 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

Copilot reviewed 39 out of 39 changed files in this pull request and generated no new comments.

Suppressed comments (8)

sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/tsp-location.yaml:1

  • additionalDirectories: is currently parsed as null (and includes trailing whitespace). If the tooling expects a list, this can break generation/validation. Set it explicitly to an empty list (e.g., additionalDirectories: []) or remove the key entirely if unused.
    sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/README.md:12
  • Correct typo: Prequisites -> Prerequisites.
#### Prequisites

sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/README.md:2

  • The README still contains placeholder HTML comments, and the placeholder inside the Python example will render the snippet invalid if copied verbatim. Replace placeholders with a minimal working example (or remove the example block until one is available) so the README is immediately usable.
<!-- write necessary description of service -->

sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/README.md:52

  • The README still contains placeholder HTML comments, and the placeholder inside the Python example will render the snippet invalid if copied verbatim. Replace placeholders with a minimal working example (or remove the example block until one is available) so the README is immediately usable.
        <!-- write test code here -->

sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/api.md:121

  • There are duplicate overload entries for begin_import_update with identical signatures. This creates noise in API docs and can confuse readers. Remove the duplicate overload so each overload documents a distinct input type.
        @overload
        async def begin_import_update(
                self, 
                import_update_request: ImportUpdateRequest, 
                *, 
                content_type: str = "application/json", 
                **kwargs: Any
            ) -> AsyncLROPoller[None]: ...

        @overload
        async def begin_import_update(
                self, 
                import_update_request: ImportUpdateRequest, 
                *, 
                content_type: str = "application/json", 
                **kwargs: Any
            ) -> AsyncLROPoller[None]: ...

sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/_utils/model_base.py:1778

  • Parsing XML with xml.etree.ElementTree.fromstring on potentially untrusted input can expose the client to XML-related DoS vectors (and the # nosec suppresses static analysis). Consider switching to defusedxml for parsing, or (at minimum) add a clear comment documenting the trust boundary and why suppression is safe here.
def _deserialize_xml(
    deserializer: typing.Any,
    value: str,
) -> typing.Any:
    element = ET.fromstring(value)  # nosec

sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/_client.py:30

  • This PR introduces a new client library with a large surface area but does not add any tests under this package (e.g., sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/tests). Since this repo typically has automated testing for Python SDKs, add at least a basic smoke test that constructs the client and exercises one operation using a mocked transport (sync + async) to catch breaking changes early.
class DeviceRegistrySoftwareUpdateClient:  # pylint: disable=docstring-keyword-should-match-keyword-only

sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/_client.py:58

  • This PR introduces a new client library with a large surface area but does not add any tests under this package (e.g., sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/tests). Since this repo typically has automated testing for Python SDKs, add at least a basic smoke test that constructs the client and exercises one operation using a mocked transport (sync + async) to catch breaking changes early.
    def __init__(self, endpoint: str, credential: "TokenCredential", **kwargs: Any) -> None:

Copilot AI review requested due to automatic review settings August 18, 2026 19:01

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

Copilot reviewed 39 out of 39 changed files in this pull request and generated no new comments.

Suppressed comments (7)

sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/tsp-location.yaml:1

  • additionalDirectories is present but has no value. If downstream tooling expects this to be a sequence (common for tsp-location.yaml), this can break parsing/iteration. Prefer setting an explicit empty list (additionalDirectories: []) or removing the key entirely when unused.
    sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/py.typed:1
  • py.typed is conventionally an empty marker file. While comments usually won't break packaging, some tooling expects the file to be empty. Consider removing the comment and leaving a zero-length file.
    sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/README.md:12
  • Correct the spelling of 'Prequisites' to 'Prerequisites'.
#### Prequisites

sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/README.md:2

  • The README still contains template placeholders (HTML comments) and uses inconsistent product naming/casing (e.g., Iot vs IoT, and the service name appears unformatted/run-together). Please replace placeholders with real content and ensure the sample code block contains valid Python (remove <!-- write test code here --> and provide a minimal working example or omit the example section until it's ready).
# Azure Iot Deviceregistrysoftwareupdate client library for Python
<!-- write necessary description of service -->

sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/README.md:16

  • The README still contains template placeholders (HTML comments) and uses inconsistent product naming/casing (e.g., Iot vs IoT, and the service name appears unformatted/run-together). Please replace placeholders with real content and ensure the sample code block contains valid Python (remove <!-- write test code here --> and provide a minimal working example or omit the example section until it's ready).
- An existing Azure Iot Deviceregistrysoftwareupdate instance.

sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/README.md:52

  • The README still contains template placeholders (HTML comments) and uses inconsistent product naming/casing (e.g., Iot vs IoT, and the service name appears unformatted/run-together). Please replace placeholders with real content and ensure the sample code block contains valid Python (remove <!-- write test code here --> and provide a minimal working example or omit the example section until it's ready).
        <!-- write test code here -->

sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/api.md:117

  • The generated API surface doc shows two identical overloads for begin_import_update (same displayed parameter type). This is confusing for reviewers/consumers, and likely stems from the two distinct Python types (models.ImportUpdateRequest vs types.ImportUpdateRequest) being rendered with the same short name. Prefer disambiguating the types in the doc output (fully-qualify at least one) so the overloads are meaningfully distinct.
        @overload
        async def begin_import_update(
                self, 
                import_update_request: ImportUpdateRequest, 
                *, 
                content_type: str = "application/json", 
                **kwargs: Any
            ) -> AsyncLROPoller[None]: ...

        @overload
        async def begin_import_update(
                self, 
                import_update_request: ImportUpdateRequest, 
                *, 
                content_type: str = "application/json", 
                **kwargs: Any
            ) -> AsyncLROPoller[None]: ...

@github-actions

Copy link
Copy Markdown
Contributor
[Pilot] PR Pipeline Failure Analysis

A CI pipeline failed on this pull request. Here is an automated analysis of what went wrong and how to get the build green.

What failed

Three distinct validation failures were found for sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate in build 6715977:

  1. Spell check (validation) — CSpell flagged 7 issues in 3 files:

    • _metadata.json and tsp-location.yaml: unknown word sudeviceregistry
    • _utils/model_base.py (lines 651, 657, 663, 669, 682): unknown word deser
  2. README validation (validation)doc-warden reports that sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/README.md is missing three required top-level sections:

    • Key concepts
    • Troubleshooting
    • Next steps
  3. No tests collected (test) — pytest exits with code 5 (no tests ran) for both the whl and sdist checks of azure-iot-deviceregistrysoftwareupdate. The package appears to have no test files.

azure-mgmt-deviceregistry passed all checks.

Recommended next steps

  • Spell check — sudeviceregistry: Add sudeviceregistry to the repository's CSpell custom word list (typically eng/.cspell/python-word-list.txt or similar), or rename the identifier to something spelled correctly if it is a typo.
  • Spell check — deser: Similarly, add deser to the custom word list or replace the abbreviation with deserialize/deserialized where feasible in _utils/model_base.py.
  • README: Add the three missing sections (## Key concepts, ## Troubleshooting, ## Next steps) to sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/README.md. See aka.ms/azure-sdk-analyze-failed for guidance.
  • Tests: Add at least one test file under sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/tests/ so pytest can collect items and exit cleanly.
  • See the CI troubleshooting guide: https://aka.ms/ci-fix
  • Push new commits to address the failures; this comment updates automatically on the next failing run.
Raw pipeline analysis (azsdk ci analyze)
Analyzing pipeline https://github.com/Azure/azure-sdk-for-python/pull/48623...
Getting failed workflow runs for commit bf22c124080a219c6dd4c74edc7992e5668d92da in Azure/azure-sdk-for-python
Build: 6715977 Project: public PipelineUrl: https://dev.azure.com/azure-sdk/public/_build/results?buildId=6715977

Failed Tasks:

### Spell check errors:
##[error]sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/_metadata.json:8:58 - Unknown word (sudeviceregistry)
##[error]sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/_utils/model_base.py:651:10 - Unknown word (deser)
##[error]sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/_utils/model_base.py:657:10 - Unknown word (deser)
##[error]sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/_utils/model_base.py:663:10 - Unknown word (deser)
##[error]sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/_utils/model_base.py:669:10 - Unknown word (deser)
##[error]sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/azure/iot/deviceregistrysoftwareupdate/_utils/model_base.py:682:10 - Unknown word (deser)
##[error]sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/tsp-location.yaml:1:50 - Unknown word (sudeviceregistry)
##[error]Spelling errors detected. To correct false positives or learn about spell checking see: https://aka.ms/azsdk/engsys/spellcheck

### README validation errors:
/sdk/deviceregistry/azure-iot-deviceregistrysoftwareupdate/README.md is missing headers with patterns:
 * ^Key concepts$
 * ^Troubleshooting$
 * ^Next steps$
For a rundown on what you need to do to resolve this breaking issue ASAP, check out aka.ms/azure-sdk-analyze-failed
##[error]There were README verification failures, scroll up to see the issue(s)

### Test collection (whl + sdist):
azure-iot-deviceregistrysoftwareupdate whl  FAIL(5) - collected 0 items, no tests ran
azure-iot-deviceregistrysoftwareupdate sdist FAIL(5) - collected 0 items, no tests ran
azure-mgmt-deviceregistry              whl  OK
azure-mgmt-deviceregistry              sdist OK

Copilot detected the failing pipeline and generated the analysis above. To have it attempt a fix automatically, reply with @copilot please fix the failing pipeline on this PR.

Generated by Pipeline Analysis - Next Steps · 33.1 AIC · ⌖ 6.51 AIC · ⊞ 6.6K ·

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

Labels

auto-release When merged to main, release pipelines for this PR's changed packages trigger automatically.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants