Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
adde17b
initial migration
scbedd Nov 16, 2025
7574af1
well it works locally lets see what melts uptop
scbedd Nov 16, 2025
0315a9a
fix parameter
scbedd Nov 16, 2025
6b4f79b
apply settings
scbedd Nov 18, 2025
9cc2330
apply formatting
scbedd Nov 18, 2025
9c7709f
utilize whl check for prs
scbedd Nov 19, 2025
97b39f6
fix the pipeline
scbedd Nov 20, 2025
4d35f37
command was bleeding forward
scbedd Nov 20, 2025
a6c4a6f
nicely format the printed results so that we can easily examine the o…
scbedd Nov 21, 2025
3c30e06
we actually fail when pytest fails
scbedd Nov 21, 2025
4358502
failures will actually fail this thing now
scbedd Nov 22, 2025
6da6464
how is this not failing the entire invocation? I don't get it
scbedd Nov 22, 2025
670aa5c
add pytest exit code
JennyPng Nov 25, 2025
ea62859
resolve conflict
scbedd Dec 3, 2025
6090b95
patch up the test invocation
scbedd Dec 4, 2025
aacd30c
manual migration of whl/sdist/whl_no_aio. copilot mindependency but I…
scbedd Dec 4, 2025
f709a23
enable a couple more envs
scbedd Dec 4, 2025
177efe0
updates to dependency checking
scbedd Dec 4, 2025
d3006bf
ensure that the local CWD being the package directory being added to …
scbedd Dec 5, 2025
8f48ce5
changes to import_all
scbedd Dec 5, 2025
a9b5bd9
mis-using ignore glob means we accidentally picked up at file from w…
scbedd Dec 10, 2025
8f48ac6
small upgrades
scbedd Dec 11, 2025
526a5f5
force re-init of logger from subprocess
scbedd Dec 11, 2025
af16ff4
we should use the wheel dir to fix the parallelism issues
scbedd Dec 12, 2025
1ef77ce
fix the failing test
scbedd Dec 12, 2025
fd740fd
save progress
scbedd Dec 12, 2025
099d79f
apply black format. add buildid to the build run
scbedd Dec 12, 2025
f853d82
fix reference
scbedd Dec 12, 2025
bef35eb
Merge branch 'main' into cutover-test-runs
JennyPng Dec 17, 2025
d985c3b
use InstallAndTest in devtest
JennyPng Dec 17, 2025
0c96ec3
remove unused imports from devtest
JennyPng Dec 17, 2025
70cf394
Merge branch 'main' into cutover-test-runs
JennyPng Dec 18, 2025
10a6d15
refactor install and test (#44482)
JennyPng Dec 20, 2025
f1494ac
undo dev chnages now that all necessary checks have migrated
scbedd Dec 20, 2025
99b3c63
Merge branch 'main' into cutover-test-runs
scbedd Jan 12, 2026
bc66875
Apply suggestion from @Copilot
scbedd Jan 16, 2026
eb778b0
Merge branch 'main' into cutover-test-runs
scbedd Jan 16, 2026
92e9848
fix typoed function name
scbedd Jan 16, 2026
376a368
remove build config from azure-sdk-tools and make it the default. it'…
scbedd Jan 16, 2026
59f013b
simplify installation of azure/azure-sdk-tools. build is pretty much …
scbedd Jan 16, 2026
e1cb7dd
undo changes to ml dev_reqs. that's not the issue. fix the failing tests
scbedd Jan 16, 2026
fd43d5b
apply black
scbedd Jan 16, 2026
cf70e04
adjustments to PYTHONPYCACHEPREFIX
scbedd Jan 21, 2026
f9402f9
Merge branch 'main' into cutover-test-runs
scbedd Jan 21, 2026
fe8f583
Merge branch 'main' into cutover-test-runs
scbedd Jan 21, 2026
3baf644
changes to freeze
scbedd Jan 21, 2026
a145ef2
fix the double newline outputting on windows
scbedd Jan 21, 2026
586e888
lets see if we can address these packaging issues
scbedd Jan 22, 2026
ead9394
solve port issues hopefully?
scbedd Jan 22, 2026
e9f6f66
fix the issue with variables not overridding, so proxy_port wasn't ge…
scbedd Jan 23, 2026
f392ee0
ensure that proxies _should_ be properly targeted. on windows we're u…
scbedd Jan 23, 2026
55863a5
simpler class errors
scbedd Jan 23, 2026
80e32fc
Use Python's flask
mccoyp Jan 26, 2026
c35c7ce
fix the filewatch issue plaguing windows
scbedd Jan 28, 2026
dfdc6b2
when files change under the default root of the proxy, we don't want …
scbedd Jan 28, 2026
a7f4a6a
we are now sensitive to which proxy is which now. this _should_ repai…
scbedd Jan 28, 2026
ba87dac
let them start
scbedd Jan 28, 2026
9687468
further simplification of the proxyy startup code
scbedd Jan 28, 2026
39f30a3
fix formatting. fix error with azure-template attempting to restore a…
scbedd Jan 28, 2026
881f1ab
a'zure-sdk-tools' doesn't have a build config yet
scbedd Jan 28, 2026
272b61b
azure-template wasn't being excluded from restore properly
scbedd Jan 28, 2026
577eeac
lets try this
scbedd Jan 29, 2026
141aa3a
changes to proxy startup
scbedd Jan 29, 2026
9e2dcfb
opportunity for precache, but it's not technically necessary
scbedd Jan 30, 2026
c47086a
actually write to different ports. this should eliminate the conflicts
scbedd Jan 31, 2026
9decc41
the port we're passing into the process is not being honored
scbedd Jan 31, 2026
933d227
locally we're honoring all the port settings now
scbedd Jan 31, 2026
689705f
remove wonky PROXY_ASSETS_FOLDER hack that was workaround-addressing …
scbedd Feb 2, 2026
6dd64b8
now that we've moved the pycache directory out, we shouldn't run into…
scbedd Feb 2, 2026
73c0f1c
add dep that is missing from dev_reqs
scbedd Feb 2, 2026
39a6e0c
once a check has exited, the process will just _end_, we will no long…
scbedd Feb 4, 2026
10ff352
we were not forwarding the check value properly. THATS why we were ex…
scbedd Feb 4, 2026
bec9ad8
save the logging of the executing command
scbedd Feb 4, 2026
4fd3467
fix mindependency!
scbedd Feb 5, 2026
e1ba28b
remove mark argument from analyze, where it doesn't make sense
scbedd Feb 5, 2026
99870da
swapping over to set_checks instead of set_tox_environment. moved tha…
scbedd Feb 5, 2026
769512f
skip env
scbedd Feb 5, 2026
ce57329
finally resolve the wonky import errors that we were seeing. this SHO…
scbedd Feb 6, 2026
db3a769
apply the same fix to apply_depend_packages so we can can simply take…
scbedd Feb 6, 2026
5f8ffd0
Merge branch 'main' into cutover-test-runs
scbedd Feb 6, 2026
d25aeb1
Merge branch 'main' into cutover-test-runs
scbedd Feb 6, 2026
87327b5
save the progress on this thing.
scbedd Feb 6, 2026
7fc171e
lots of doc updates as well.
scbedd Feb 7, 2026
0632f9d
Run.ToxCustomEnvs -> ChecksOverride
scbedd Feb 7, 2026
e0c30ed
remove any and all references to the build extra on azure-sdk-tools
scbedd Feb 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions .github/workflows/azure-sdk-tools.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:

- name: Install azure-sdk-tools
run: |
python -m pip install -e eng/tools/azure-sdk-tools[build,ghtools,conda]
python -m pip install -e eng/tools/azure-sdk-tools[ghtools,conda]
python -m pip freeze
shell: bash

Expand All @@ -43,7 +43,7 @@ jobs:

- name: Install azure-sdk-tools
run: |
python -m pip install -e eng/tools/azure-sdk-tools[build,ghtools,conda]
python -m pip install -e eng/tools/azure-sdk-tools[ghtools,conda]
python -m pip install black==24.4.0
python -m pip freeze
shell: bash
Expand All @@ -70,7 +70,7 @@ jobs:

- name: Install azure-sdk-tools on in global uv, discover azpysdk checks
run: |
uv pip install --system eng/tools/azure-sdk-tools[build,ghtools,conda]
uv pip install --system eng/tools/azure-sdk-tools[ghtools,conda,systemperf]

# Discover available azpysdk commands from the {command1,command2,...} line in help output
CHECKS=$(azpysdk -h 2>&1 | \
Expand All @@ -92,19 +92,20 @@ jobs:

- name: Run all discovered checks against azure-template using uv as package manager
run: |
python eng/scripts/dispatch_checks.py --checks "$AZPYSDK_CHECKS" azure-template
sdk_build azure-template -d $(pwd)/wheels --build_id 20250101.1
python eng/scripts/dispatch_checks.py --checks "$AZPYSDK_CHECKS" --wheel_dir $(pwd)/wheels azure-template
shell: bash
env:
TOX_PIP_IMPL: "uv"

- name: Install azure-sdk-tools on global pip env
run: |
python -m pip install -e eng/tools/azure-sdk-tools[build,ghtools,conda]
python -m pip install -e eng/tools/azure-sdk-tools[ghtools,conda]
shell: bash

- name: Run all discovered checks against azure-template using pip as package manager
run: |
python eng/scripts/dispatch_checks.py --checks "$AZPYSDK_CHECKS" azure-template
python eng/scripts/dispatch_checks.py --checks "$AZPYSDK_CHECKS" --wheel_dir $(pwd)/wheels azure-template
shell: bash

dev-setup-and-import:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Default Assets restore directory
.assets
.assets_distributed

# Python cache
__pycache__/
Expand Down
153 changes: 38 additions & 115 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@ If you want to contribute to a file that is generated (header contains `Code gen

We utilize a variety of tools to ensure smooth development, testing, and code quality for the Azure Python SDK. Below is a list of key tools and their purpose in the workflow:

- Tox: [Tox](https://tox.wiki/en/latest/) is our primary tool for managing test environments. It allows us to distribute tests to virtual environments, install dependencies, and maintain consistency between local and CI builds. Tox is configured to handle various testing scenarios, including linting, type checks, and running unit tests.

- Virtualenv: [Virtualenv](https://virtualenv.pypa.io/en/latest/) is leveraged by Tox to create isolated environments for each test suite, ensuring consistent dependencies and reducing conflicts.
- azpysdk: The `azpysdk` CLI is our primary tool for running checks locally and in CI. It is an entrypoint provided by the `eng/tools/azure-sdk-tools` package and abstracts all checks (linting, type checking, tests, doc generation, etc.) behind a single command. See the [Tool Usage Guide](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/tool_usage_guide.md) for full details.

- UV: [UV](https://docs.astral.sh/uv/) is a fast package manager that can manage Python versions, run and install Python packages, and be used instead of pip, virtualenv, and more.

Expand All @@ -31,140 +29,65 @@ We utilize a variety of tools to ensure smooth development, testing, and code qu

## Building and Testing

The Azure SDK team's Python CI leverages the tool `tox` to distribute tests to virtual environments, handle test dependency installation, and coordinate tooling reporting during PR/CI builds. This means that a dev working locally can reproduce _exactly_ what the build machine is doing.

[A Brief Overview of Tox](https://tox.wiki/en/latest/)

#### A Monorepo and Tox in Harmony

Traditionally, the `tox.ini` file for a package sits _alongside the setup.py_ in source code. The `azure-sdk-for-python` necessarily does not adhere to this policy. There are over one-hundred packages contained here-in. That's a lot of `tox.ini` files to maintain!

Instead, the CI system leverages the `--root` argument which is new to `tox4`. The `--root` argument allows `tox` to act as if the `tox.ini` is located in whatever directory you specify!

#### Tox Environments

A given `tox.ini` works on the concept of `test environments`. A given test environment is a combination of:

1. An identifier (or identifiers)
2. A targeted Python version
1. `tox` will default to base python executing the `tox` command if no Python environment is specified
3. (optionally) an OS platform

Internally `tox` leverages `virtualenv` to create each test environment's virtual environment.
The Azure SDK team's Python CI leverages the `azpysdk` CLI tool to run checks, tests, and linters during PR/CI builds. This means that a dev working locally can reproduce _exactly_ what the build machine is doing.

This means that once the `tox` workflow is in place, all tests will be executed _within a virtual environment._
The `azpysdk` entrypoint is provided by the `eng/tools/azure-sdk-tools` package. For full setup instructions and the list of available checks, see the [Tool Usage Guide](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/tool_usage_guide.md).

You can use the command `tox list` to list all the environments provided by a `tox.ini` file. You can either use that command in the
same directory as the file itself, or use the `--conf` argument to specify the path to it directly.
### Quick Setup


Sample output of `tox list`:
From the root of your target package:

```
sdk-for-python/eng/tox> tox list
default environments:
whl -> Builds a wheel and runs tests
sdist -> Builds a source distribution and runs tests

additional environments:
pylint -> Lints a package with a pinned version of pylint
next-pylint -> Lints a package with pylint (version 2.15.8)
mypy -> Typechecks a package with mypy (version 1.9.0)
next-mypy -> Typechecks a package with the latest version of mypy
pyright -> Typechecks a package with pyright (version 1.1.287)
next-pyright -> Typechecks a package with the latest version of static type-checker pyright
verifytypes -> Verifies the "type completeness" of a package with pyright
whl_no_aio -> Builds a wheel without aio and runs tests
develop -> Tests a package
sphinx -> Builds a package's documentation with sphinx
depends -> Ensures all modules in a target package can be successfully imported
verifywhl -> Verify directories included in whl and contents in manifest file
verifysdist -> Verify directories included in sdist and contents in manifest file. Also ensures that py.typed configuration is correct within the setup.py
devtest -> Tests a package against dependencies installed from a dev index
latestdependency -> Tests a package against the released, upper-bound versions of its azure dependencies
mindependency -> Tests a package against the released, lower-bound versions of its azure dependencies
apistub -> Generate an api stub of a package ( for https://apiview.dev )
bandit -> Runs bandit, a tool to find common security issues, against a package
samples -> Runs a package's samples
breaking -> Runs the breaking changes checker against a package
pip install -r dev_requirements.txt
```

### Example Usage of the common Azure SDK For Python `tox.ini`

Basic usage of `tox` within this monorepo is:

1. `pip install "tox<5"`
2. Run `tox run -e ENV_NAME -c path/to/tox.ini --root path/to/python_package`
* **Note**: You can use environment variables to provide defaults for tox config values
* With `TOX_CONFIG_FILE` set to the absolute path of `tox.ini`, you can avoid needing `-c path/to/tox.ini` in your tox invocations
* With `TOX_ROOT_DIR` set to the absolute path to your python package, you can avoid needing `--root path/to/python_package`

The common `tox.ini` location is `eng/tox/tox.ini` within the repository.

If at any time you want to blow away the tox created virtual environments and start over, simply append `-r` to any tox invocation!

#### Example `azure-core` mypy

1. Run `tox run -e mypy -c ./eng/tox/tox.ini --root sdk/core/azure-core`
This installs `azure-sdk-tools` (which provides `azpysdk`) along with the package's dev dependencies.

#### Example `azure-storage-blob` tests
### Available Checks

2. Execute `tox run -c ./eng/tox/tox.ini --root sdk/storage/azure-storage-blob`

Note that we didn't provide an `environment` argument for this example. Reason here is that the _default_ environment selected by our common `tox.ini` file is one that runs `pytest`.

#### `whl` environment
Used for test execution across the spectrum of all the platforms we want to support. Maintained at a `platform specific` level just in case we run into platform-specific bugs.

* Installs the wheel, runs tests using the wheel
You can discover all available checks by running `azpysdk --help`. Some common checks:

```
\> tox run -e whl -c <path to tox.ini> --root <path to python package>

azpysdk pylint . # Lint with pylint
azpysdk mypy . # Type check with mypy
azpysdk pyright . # Type check with pyright
azpysdk verifytypes . # Verify type completeness
azpysdk sphinx . # Build documentation
azpysdk bandit . # Security analysis
azpysdk black . # Code formatting
azpysdk verifywhl . # Verify wheel contents
azpysdk verifysdist . # Verify sdist contents
azpysdk import_all . # Verify all imports resolve
azpysdk apistub . # Generate API stub
azpysdk samples . # Run samples
azpysdk breaking . # Check for breaking changes
azpysdk devtest . # Test against dev feed dependencies
```

#### `sdist` environment
Used for the local dev loop.
### Running from the repo root

* Installs package in editable mode
* Runs tests using the editable mode installation, not the wheel
`azpysdk` also supports globbing and comma-separated package names when invoked from the repo root:

```

\> tox run -e sdist -c <path to tox.ini> --root <path to python package>

azure-sdk-for-python> azpysdk import_all azure-storage*
azure-sdk-for-python> azpysdk pylint azure-storage-blob,azure-core
```

#### `pylint` environment
Pylint install and run.

```
\> tox run -e pylint -c <path to tox.ini> --root <path to python package>
```
### Isolated environments


#### `mypy` environment
Mypy install and run.

```
\> tox run -e mypy -c <path to tox.ini> --root <path to python package>
```

#### `sphinx` environment
Generate sphinx doc for this package.
To run a check in a completely fresh virtual environment, add `--isolate`:

```
\> tox run -e sphinx -c <path to tox.ini> --root <path to python package>
azpysdk pylint . --isolate
```

### Custom Pytest Arguments

`tox` supports custom arguments, and the defined pytest environments within the common `tox.ini` also allow these. Essentially, separate the arguments you want passed to `pytest` by a `--` in your tox invocation.

[Tox Documentation on Positional Arguments](https://tox.wiki/en/latest/config.html#substitutions-for-positional-arguments-in-commands)
When running test-related checks, you can pass additional arguments to `pytest` after `--`:

**Example: Invoke tox, breaking into the debugger on failure**
`tox run -e whl -c <path to tox.ini> --root <path to python package> -- --pdb`
```
azpysdk devtest . -- --pdb
```

### Performance Testing

Expand All @@ -175,7 +98,7 @@ SDK performance testing is supported via the custom `perfstress` framework. For
We maintain an [additional document](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/eng_sys_checks.md) that has a ton of detail as to what is actually _happening_ in these executions.

### Dev Feed
Daily dev build version of Azure sdk packages for python are available and are uploaded to Azure devops feed daily. We have also created a tox environment to test a package against dev built version of dependent packages. Below is the link to Azure devops feed.
Daily dev build version of Azure sdk packages for python are available and are uploaded to Azure devops feed daily. Below is the link to Azure devops feed.
[`https://dev.azure.com/azure-sdk/public/_packaging?_a=feed&feed=azure-sdk-for-python`](https://dev.azure.com/azure-sdk/public/_packaging?_a=feed&feed=azure-sdk-for-python)

##### To install latest dev build version of a package
Expand All @@ -191,13 +114,13 @@ pip install azure-appconfiguration==1.0.0b6.dev20191205001 --extra-index-url htt

To test a package being developed against latest dev build version of dependent packages:
a. cd to package root folder
b. run tox environment devtest
b. run `azpysdk devtest`

```
\> tox run -e devtest -c <path to tox.ini> --root <path to python package>
azpysdk devtest .
```

This tox test( devtest) will fail if installed dependent packages are not dev build version.
This check will fail if installed dependent packages are not dev build version.

## Samples

Expand Down
2 changes: 1 addition & 1 deletion doc/dev/conda-builds.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Follow the instructions [here](https://docs.conda.io/projects/conda-build/en/lat

```bash
# cd <repo root>
pip install "eng/tools/azure-sdk-tools[build,conda]"
pip install "eng/tools/azure-sdk-tools[conda]"
```

### Get the configuration blob
Expand Down
4 changes: 1 addition & 3 deletions doc/dev/dev_setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,10 @@ or execute the various commands available in the toolbox.

4. Setup your development environment

Install the development requirements for a specific library (located in the `dev_requirements.txt` file at the root of the library), [Tox][tox] and an editable install of your library. For example, to install requirements for `azure-ai-formrecognizer`:
Install the development requirements for a specific library (located in the `dev_requirements.txt` file at the root of the library) and an editable install of your library. This will also install `azure-sdk-tools` which provides the `azpysdk` CLI for running checks. For example, to install requirements for `azure-ai-formrecognizer`:
```
azure-sdk-for-python> cd sdk/formrecognizer/azure-ai-formrecognizer
azure-sdk-for-python/sdk/formrecognizer/azure-ai-formrecognizer> pip install -r dev_requirements.txt
azure-sdk-for-python/sdk/formrecognizer/azure-ai-formrecognizer> pip install "tox<5"
azure-sdk-for-python/sdk/formrecognizer/azure-ai-formrecognizer> pip install -e .
```

Expand All @@ -54,5 +53,4 @@ After following the steps above, you'll be able to run recorded SDK tests with `
[python_website]: https://www.python.org/downloads/
[python_312]: https://apps.microsoft.com/detail/9ncvdn91xzqp
[tests]: https://github.com/Azure/azure-sdk-for-python/blob/main/doc/dev/tests.md
[tox]: https://tox.wiki/en/latest/
[virtual_environment]: https://docs.python.org/3/tutorial/venv.html
2 changes: 1 addition & 1 deletion doc/dev/engineering_assumptions.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ universal=1
Build CI for `azure-sdk-for-python` essentially builds and tests packages in one of two methodologies.

### Individual Packages
1. Leverage `tox` to create wheel, install, and execute tests against newly installed wheel
1. Leverage `azpysdk` to create wheel, install, and execute tests against newly installed wheel
2. Tests each package in isolation (outside of dev_requirements.txt dependencies + necessary `pylint` and `mypy`)

### Global Method
Expand Down
15 changes: 7 additions & 8 deletions doc/dev/pylint_checking.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ In the Azure SDK for Python repository, in addition to the standard pylint libra

## How to run Pylint?

One way to run pylint is to run at the package level with tox:
The recommended way to run pylint is with `azpysdk` at the package level:

.../azure-sdk-for-python/sdk/eventgrid/azure-eventgrid>tox run -e pylint -c ../../../eng/tox/tox.ini --root .
.../azure-sdk-for-python/sdk/eventgrid/azure-eventgrid> azpysdk pylint .

If you don't want to use tox, you can also install and run pylint on its own:
If you don't want to use `azpysdk`, you can also install and run pylint on its own:

- If taking this approach, in order to run with the pylintrc formatting and the custom pylint checkers you must also install the custom checkers and `SET` the pylintrc path.

Expand All @@ -36,8 +36,7 @@ If you don't want to use tox, you can also install and run pylint on its own:
.../azure-sdk-for-python>SET PYLINTRC="./pylintrc"
.../azure-sdk-for-python>pylint ./sdk/eventgrid/azure-eventgrid

Note that you may see different errors if running a different [version of pylint or azure-pylint-guidelines-checker](https://github.com/Azure/azure-sdk-for-python/blob/fdf7c49ea760b1e1698ebbbac48794e8382d8de5/eng/tox/tox.ini#L90) than the one in CI.

Note that you may see different errors if running a different version of [pylint](https://github.com/Azure/azure-sdk-for-python/blob/main/eng/tools/azure-sdk-tools/azpysdk/pylint.py#L17) or [azure-pylint-guidelines-checker](https://github.com/Azure/azure-sdk-for-python/blob/main/eng/tools/azure-sdk-tools/azpysdk/pylint.py#L61) than the one in CI.

# Ignoring Pylint Checkers

Expand All @@ -58,12 +57,12 @@ In addition to being a part of the CI, the custom pylint checkers are also integ

There is now a new step on the CI pipeline called `Run Pylint Next`. This is merely a duplicate of the `Run Pylint` step with the exception that `Run Pylint Next` uses the latest version of pylint and the latest version of the custom pylint checkers.

This next-pylint environment can also be run locally through tox:
This next-pylint check can also be run locally:

tox run -e next-pylint -c ../../../eng/tox/tox.ini --root <path to python package>
azpysdk pylint --next=True <path to python package>

The errors generated by the `Run Pylint Next` step will not break your weekly test pipelines, but make sure to fix the warnings so that your client library is up to date for the next pylint release.

# How to prepare your SDK for a new pylint update?

Check each client library's `Run Pylint Next` output in the [test-weekly CI pipeline](https://dev.azure.com/azure-sdk/internal/_build?pipelineNameFilter=python%20*%20tests-weekly). If there is no corresponding test-weekly pipeline, run `next-pylint` locally with `tox` as described in [How to run Pylint?](#how-to-run-pylint). In order to ensure that the SDK pipeline will not break when pylint is updated, make sure to address all pylint warnings present.
Check each client library's `Run Pylint Next` output in the [test-weekly CI pipeline](https://dev.azure.com/azure-sdk/internal/_build?pipelineNameFilter=python%20*%20tests-weekly). If there is no corresponding test-weekly pipeline, run `next-pylint` locally with `azpysdk pylint --next=True .` as described in [How to run Pylint?](#how-to-run-pylint). In order to ensure that the SDK pipeline will not break when pylint is updated, make sure to address all pylint warnings present.
Loading
Loading