Skip to content

Migrate checks away from tox, reflect in azsdkcli python tool #42601

@scbedd

Description

@scbedd

tox offers some very nice features that we rely upon heavily for our CI and local testing:

  • Bug-Free parallel invocation of tox environments within CI
  • Central, easily-understood config format that enables devs to easily add new environments for various tasks.

But that's about all of the features that we utilize at this time. The actual sets of commands being invoked are transferrable to another format. This issue will serve as the index for this effort. We will utilize uv for package management in this new world, but otherwise will not take an external dependency for the invocation framework.

Expected outcome experience

We have a fully documented and implemented check system that interacts properly with CI and local invocations.

A check invoked for a specific package:

/path/to/azure-sdk-for-python> uv pip install eng/tools/azure-sdk-tools
/path/to/azure-sdk-for-python> cd sdk/core/azure-core
/path/to/azure-sdk-for-python/sdk/core/azure-core> azpysdk sphinx
...<invoke equivalent of sphinx environment>

A check invoked for multiple packages:

/path/to/azure-sdk-for-python> uv pip install eng/tools/azure-sdk-tools
/path/to/azure-sdk-for-python> azsdk sphinx azure-storage*
...<invoke equivalent of sphinx environment on multiple packages below cwd matching glob>

Tasks

(In rough order of operations)

  • Create azpysdk entrypoint
  • Settle upon venv creation solution for CI (where applicable)
    • scbedd completed an original prototype of using uv-script (Prototype uv script tox replacement #41775), but we have decided not to take that dependency at this time. We are clear to utilize uv to install packages however.
    • We cannot take a hard dependency on uv, so we can only use it for package-management at this time. uv-script is out, we need to devise our own entrypoint.
    • Conglomerated changes to optimize venv usage in pipeline #42486 updated our core pipelines to utilize uv while installing requirements before invoking CI. We can fallback to pip at any time.
  • Based upon venv creation solution, modify or create a new dispatch_tox. Likely name this dispatch_check. It should be the entrypoint for any check that CI utilizes. It should support all required arguments + requirement replacement that CI currently does.
  • Reduce pip install requirement duplication present across template calls within analyze.yml.
  • Migrate initial 3 static dependency checks Table of initial tox checks #42616
  • Migrate static analysis tox checks to new script methodology each of these should have the actual. All new checks should utilize the logger from ci_tools.logging. An example migration will be shown in Bug :azure-ai-projects==1.2.0b1 will pointing to azure-ai-agents==1.1.0 latest version which is causing the Cannot import name "RequiredMcpToolCall" from "azure.ai.agents.models" #42381
    • pylint
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • mypy
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • sphinx
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • next-pylint
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • next-mypy
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • ruff
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • pyright
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • next-pyright
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • verifytypes
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • whl_no_aio
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • next-sphinx
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • depends
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • verifywhl
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • verifysdist
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • devtest
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • apistub
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • bandit
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • verify_keywords
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
      • Original sdk_verify_keywords entrypoint in azure-sdk-tools is removed
    • breaking
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • black
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • generate
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
  • Migrate checks that invoke tests (additional argument support, test result collection and publishing)
    • latestdependency
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • mindependency
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • samples
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • optional
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • whl
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • sdist
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
    • develop
      • Check migrated
      • Integrated in CI
      • Reflected in dev doc
  • Create centralized logging solution that all new checks + old code should migrate to depend upon
  • Verify test publishing after each environment is updated. Ensure we don't lose testResults.xml outputs.
  • Verify that all arguments that are currently used to dispatch_tox.py are supported by dispatch_checks.py. Identify any necessary missing support for test execution.
  • Verify nightly alpha versioning still works after the change of all test envs
  • Modify azsdkcli python language service to call into the new check style
  • Ensure dev-doc is updated Add Documentation on Tool Usage with UV #42858
  • Add copilot-instructions that reflect usage methodology for the new checks, venv utilization, requirements installation, etc.

Sub-issues

Metadata

Metadata

Assignees

Labels

EngSysThis issue is impacting the engineering system.

Projects

Status

🐝 Dev

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions