From 474f6bc507dd40217c536c2d5b9e8b0a18ceacd8 Mon Sep 17 00:00:00 2001 From: jennypng <63012604+JennyPng@users.noreply.github.com> Date: Tue, 10 Mar 2026 16:29:26 -0700 Subject: [PATCH 1/6] explanation --- doc/eng_sys_checks.md | 19 +++++++++++++++++++ sdk/template/azure-template/pyproject.toml | 3 +++ 2 files changed, 22 insertions(+) diff --git a/doc/eng_sys_checks.md b/doc/eng_sys_checks.md index 2c852817e3dc..b7dafce6b4a2 100644 --- a/doc/eng_sys_checks.md +++ b/doc/eng_sys_checks.md @@ -140,6 +140,25 @@ black = false If a package does not yet have a `pyproject.toml`, creating one with just the section `[tool.azure-sdk-build]` will do no harm to the release of the package in question. +### Required Metadata + +Packages with a stable GA release must have a `[tool.azure-sdk-conda]` section in their `pyproject.toml`. +- This section defines if the package is released individually to Conda, or grouped with other packages in one release bundle (see [conda-release.md](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/conda-release.md)). +- This is enforced by the `verifywhl` CI check. + +Here's an example: + +```toml +# Package is released to Conda individually +[tool.azure-sdk-conda] +in_bundle = false + +# Package is released within the `azure-communication` bundle +[tool.azure-sdk-conda] +in_bundle = true +bundle_name = "azure-communication" +``` + ### Coverage Enforcement This repository supports enforcement of an absolute coverage % per package. Set: diff --git a/sdk/template/azure-template/pyproject.toml b/sdk/template/azure-template/pyproject.toml index c86003ed32b3..74a5f10037ff 100644 --- a/sdk/template/azure-template/pyproject.toml +++ b/sdk/template/azure-template/pyproject.toml @@ -50,3 +50,6 @@ pylint = true black = true generate = false apistub = false + +[tool.azure-sdk-conda] +in_bundle = false From 811d8b16ca9366956b2fda7f7a2e375a0a85d5a1 Mon Sep 17 00:00:00 2001 From: jennypng <63012604+JennyPng@users.noreply.github.com> Date: Tue, 10 Mar 2026 16:30:28 -0700 Subject: [PATCH 2/6] toc --- doc/eng_sys_checks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/eng_sys_checks.md b/doc/eng_sys_checks.md index b7dafce6b4a2..a598123ffcea 100644 --- a/doc/eng_sys_checks.md +++ b/doc/eng_sys_checks.md @@ -5,6 +5,7 @@ - [Skipping a check at build queue time](#skipping-a-check-at-build-queue-time) - [Skipping entire sections of builds](#skipping-entire-sections-of-builds) - [The pyproject.toml](#the-pyprojecttoml) + - [Required Metadata](#required-metadata) - [Coverage Enforcement](#coverage-enforcement) - [Environment variables important to CI](#environment-variables-important-to-ci) - [Atomic Overrides](#atomic-overrides) From 1caeebef28f3e631b2e19f056505f895f66ec9d6 Mon Sep 17 00:00:00 2001 From: jennypng <63012604+JennyPng@users.noreply.github.com> Date: Tue, 10 Mar 2026 16:32:28 -0700 Subject: [PATCH 3/6] minor --- doc/eng_sys_checks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/eng_sys_checks.md b/doc/eng_sys_checks.md index a598123ffcea..14708e4c87f2 100644 --- a/doc/eng_sys_checks.md +++ b/doc/eng_sys_checks.md @@ -145,7 +145,7 @@ If a package does not yet have a `pyproject.toml`, creating one with just the se Packages with a stable GA release must have a `[tool.azure-sdk-conda]` section in their `pyproject.toml`. - This section defines if the package is released individually to Conda, or grouped with other packages in one release bundle (see [conda-release.md](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/conda-release.md)). -- This is enforced by the `verifywhl` CI check. +- This is enforced by the `verifywhl` CI check. Service teams are responsible for updating this metadata. Here's an example: From c6c2f8cfe767dd972bf9e37a7be8f72a93a850f5 Mon Sep 17 00:00:00 2001 From: jenny <63012604+JennyPng@users.noreply.github.com> Date: Tue, 10 Mar 2026 16:41:43 -0700 Subject: [PATCH 4/6] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- doc/eng_sys_checks.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/eng_sys_checks.md b/doc/eng_sys_checks.md index 14708e4c87f2..16cf5ec9e8d1 100644 --- a/doc/eng_sys_checks.md +++ b/doc/eng_sys_checks.md @@ -143,9 +143,10 @@ If a package does not yet have a `pyproject.toml`, creating one with just the se ### Required Metadata -Packages with a stable GA release must have a `[tool.azure-sdk-conda]` section in their `pyproject.toml`. -- This section defines if the package is released individually to Conda, or grouped with other packages in one release bundle (see [conda-release.md](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/conda-release.md)). -- This is enforced by the `verifywhl` CI check. Service teams are responsible for updating this metadata. +Packages with a stable GA release must have a `[tool.azure-sdk-conda]` section in their `pyproject.toml`. +- This section defines if the package is released individually to Conda, or grouped with other packages in one release bundle (see [conda-release.md](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/conda-release.md)). +- The `[tool.azure-sdk-conda]` table **must** include an `in_bundle` key (boolean) indicating whether the package is part of a bundle. When `in_bundle = true`, a `bundle_name` key is also **required** so the conda tooling can map the package into the correct bundle. +- The presence and correctness of these keys is enforced by the `verifywhl` CI check. Service teams are responsible for updating this metadata. Here's an example: From fdce6604922597ee30206338a6c7f68ef278d865 Mon Sep 17 00:00:00 2001 From: jennypng <63012604+JennyPng@users.noreply.github.com> Date: Tue, 10 Mar 2026 16:42:32 -0700 Subject: [PATCH 5/6] split code block --- doc/eng_sys_checks.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/eng_sys_checks.md b/doc/eng_sys_checks.md index 16cf5ec9e8d1..2d21c062ee29 100644 --- a/doc/eng_sys_checks.md +++ b/doc/eng_sys_checks.md @@ -148,13 +148,15 @@ Packages with a stable GA release must have a `[tool.azure-sdk-conda]` section i - The `[tool.azure-sdk-conda]` table **must** include an `in_bundle` key (boolean) indicating whether the package is part of a bundle. When `in_bundle = true`, a `bundle_name` key is also **required** so the conda tooling can map the package into the correct bundle. - The presence and correctness of these keys is enforced by the `verifywhl` CI check. Service teams are responsible for updating this metadata. -Here's an example: +Here are examples: ```toml # Package is released to Conda individually [tool.azure-sdk-conda] in_bundle = false +``` +```toml # Package is released within the `azure-communication` bundle [tool.azure-sdk-conda] in_bundle = true From c138f687f2691f02755ad3c6d2f8c54bf1eab03d Mon Sep 17 00:00:00 2001 From: jennypng <63012604+JennyPng@users.noreply.github.com> Date: Wed, 11 Mar 2026 10:00:08 -0700 Subject: [PATCH 6/6] add aka link --- eng/tools/azure-sdk-tools/azpysdk/verify_whl.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/eng/tools/azure-sdk-tools/azpysdk/verify_whl.py b/eng/tools/azure-sdk-tools/azpysdk/verify_whl.py index 005d0493790e..e328ad8a8f08 100644 --- a/eng/tools/azure-sdk-tools/azpysdk/verify_whl.py +++ b/eng/tools/azure-sdk-tools/azpysdk/verify_whl.py @@ -127,13 +127,14 @@ def verify_conda_section( config = parsed_pkg.get_conda_config() if not config: logger.error( - f"Package {package_name} has a stable version on PyPI but is missing " - "[tool.azure-sdk-conda] section in pyproject.toml. This section is required to " - "specify if the package should be released individually or bundled to Conda." + f"Package {package_name} has a stable version on PyPI but is missing required" + "[tool.azure-sdk-conda] section in pyproject.toml. See https://aka.ms/azsdk/python/conda/pyproject for instructions." ) return False elif "in_bundle" not in config: - logger.error(f"[tool.azure-sdk-conda] section in pyproject.toml is missing required field `in_bundle`.") + logger.error( + f"[tool.azure-sdk-conda] section in pyproject.toml is missing required field `in_bundle`. See https://aka.ms/azsdk/python/conda/pyproject for instructions." + ) return False logger.info(f"Verified conda section for package {package_name}") return True