Skip to main content

next-version-update

Automate promoting next-* tool versions (pylint, mypy, pyright) to become the current pinned versions in azure-sdk-for-python. Use this skill when the weekly next-* CI checks are passing and you want to update the pinned tool versions for all packages.

Informations de source

Dépôt
Azure/azure-sdk-for-python
Dernière activité de la source
10 avril 2026 à 22:10
Langue détectée de SKILL.md
anglais
Étoiles
5 587
Forks
3 348

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
next-version-update
description
Automate promoting next-* tool versions (pylint, mypy, pyright) to become the current pinned versions in azure-sdk-for-python. Use this skill when the weekly next-* CI checks are passing and you want to update the pinned tool versions for all packages.
<!-- cspell:words pylintrc vnext --> # Next Version Update Promote `next-*` tool versions (pylint, mypy, pyright) to become the current pinned versions, update all relevant configuration files, and set new next-* targets for tracking upcoming releases. ## Overview The repository pins specific versions of pylint, mypy, and pyright and runs weekly `next-*` jobs to proactively detect compatibility issues with upcoming versions. When CI confirms the next-* versions are clean, this skill promotes them to become the current pinned versions. > **Required cross-repo check (do not skip):** After updating `azure-sdk-for-python`, you must also check whether matching updates are required in **both** [azure-sdk-tools](https://github.com/Azure/azure-sdk-tools) and [Microsoft/TypeSpec](https://github.com/microsoft/typespec). Treat the version bump as complete only after those repositories are reviewed and, when needed, PRs are opened. Files updated in **azure-sdk-for-python**: - `eng/tools/azure-sdk-tools/azpysdk/pylint.py` – `PYLINT_VERSION` constant - `eng/tools/azure-sdk-tools/azpysdk/mypy.py` – `MYPY_VERSION` constant - `eng/tools/azure-sdk-tools/azpysdk/pyright.py` – `PYRIGHT_VERSION` constant - `pylintrc` – root pylintrc used by the current pylint version - `eng/pylintrc` – pylintrc used by the `next-pylint` job (update for new next version) - `doc/analyze_check_versions.md` – version table documentation Files updated in **azure-sdk-tools** (separate PR): - `tools/apiview/parsers/python/apistubgen/pylintrc` – pylintrc for apiview stub generator - `tools/apiview/parsers/python/apistubgen/requirements.txt` – pylint version pin for apiview stub generator Files updated in **Microsoft/TypeSpec** (separate PR, for any pylint/mypy/pyright version update): - `packages/compiler/package.json` or emitter-specific `package.json` – pyright version pin used by the TypeSpec compiler and emitters - Any Python-based tooling configuration files that reference pylint or mypy versions ## Prerequisites Verify the following before running: ```bash # Check Python is available python --version # Check pip is available pip --version # Check GitHub CLI gh --version ``` ## Workflow ### 1. Verify Next-Version CI Is Passing Before promoting, confirm the next-* weekly analyze jobs have passed for the `http-client-python` (in Microsoft/TypeSpec repo) service and other core (azure-sdk-for-python azure-core/corehttp/azure-mgmt-core) packages. Check the Azure DevOps pipeline named **"python - corehttp - tests-weekly"** or similar weekly analyze pipelines. All three of the following jobs must pass (or only have pre-existing failures that are tracked): - **Run Pylint Next** (uses `azpysdk next-pylint`) - **Run MyPy Next** (uses `azpysdk next-mypy`) - **Run Pyright Next** (uses `azpysdk next-pyright`) Also verify via GitHub issues: the vnext issue creator creates/closes issues per-package. Check that there are no open `next-pylint`, `next-mypy`, or `next-pyright` issues for the core packages. ### 2. Read Current Next Versions Read the current next-* versions from `doc/analyze_check_versions.md`: ```bash grep -E "VERSION" eng/tools/azure-sdk-tools/azpysdk/pylint.py eng/tools/azure-sdk-tools/azpysdk/mypy.py eng/tools/azure-sdk-tools/azpysdk/pyright.py ``` Note the **Next Version** values for pylint, mypy, and pyright. These are the versions being promoted to current. ### 3. Determine New Next Versions Look up the latest available versions on PyPI to set as the new next-* targets: ```bash # Get latest pylint version pip index versions pylint 2>/dev/null | head -1 # Get latest mypy version pip index versions mypy 2>/dev/null | head -1 # Get latest pyright version pip index versions pyright 2>/dev/null | head -1 ``` If `pip index` is unavailable, use: ```bash pip install pylint== 2>&1 | grep "from versions" pip install mypy== 2>&1 | grep "from versions" pip install pyright== 2>&1 | grep "from versions" ``` ### 4. Prepare Repository Reset and sync the SDK repo to a clean state: ```bash git reset HEAD && git checkout . && git clean -fd && git checkout origin/main && git pull origin main ``` ### 5. Create Feature Branch ```bash git checkout -b bump-next-versions-{YYYYMMDD} ``` Replace `{YYYYMMDD}` with today's date (e.g., `bump-next-versions-20260420`). ### 6. Update `azpysdk` Python Constants Update the version constants used by the azpysdk CLI: In `eng/tools/azure-sdk-tools/azpysdk/pylint.py`: ```python PYLINT_VERSION = "{OLD_NEXT_PYLINT_VERSION}" ``` In `eng/tools/azure-sdk-tools/azpysdk/mypy.py`: ```python MYPY_VERSION = "{OLD_NEXT_MYPY_VERSION}" ``` In `eng/tools/azure-sdk-tools/azpysdk/pyright.py`: ```python PYRIGHT_VERSION = "{OLD_NEXT_PYRIGHT_VERSION}" ``` ### 7. Update `pylintrc` Files When pylint's **version** changes, the root `pylintrc` and `eng/pylintrc` may need to be updated to disable new warnings or enable newly-available rules. **For a major version bump:** 1. Check the pylint changelog for new/renamed rules that affect the codebase. 2. Update `pylintrc` (root) by copying the content from `eng/pylintrc`: ```bash cp eng/pylintrc pylintrc ``` 3. Update `eng/pylintrc` for the new next-pylint version: - Add any new rules that need to be disabled for the next version. - Refer to pylint's changelog: `https://pylint.readthedocs.io/en/stable/whatsnew/` **For a minor/patch version bump:** Typically no pylintrc changes are needed, but verify by running: ```bash cd sdk/core/corehttp azpysdk next-pylint . ``` ### 8. Update `doc/analyze_check_versions.md` Update the version table to reflect the new pinned versions and next targets: ```markdown | Tool | Current Version | Next Version | Next Version Merge Date | |------|-----------------|--------------|-------------------------| Pylint | {OLD_NEXT_PYLINT_VERSION} | {NEW_NEXT_PYLINT_VERSION} | {TARGET_DATE} | MyPy | {OLD_NEXT_MYPY_VERSION} | {NEW_NEXT_MYPY_VERSION} | {TARGET_DATE} | Pyright | {OLD_NEXT_PYRIGHT_VERSION} | {NEW_NEXT_PYRIGHT_VERSION} | {TARGET_DATE} | ``` The `{TARGET_DATE}` should be approximately 12 weeks from today (the date when the next-* versions would be merged if CI passes). If there is no newer version available yet, use `N/A` for both **Next Version** and **Next Version Merge Date**. ### 9. Update `eng/apiview_reqs.txt` Update the pylint version used by the apiview stub generator: ``` pylint=={OLD_NEXT_PYLINT_VERSION} ``` > **Note:** The `astroid` and related packages may also need version updates to be compatible with the new pylint version. Run the apistub check locally to verify: > ```bash > cd sdk/core/azure-core > azpysdk apistub . > ``` ### 10. Commit Changes in azure-sdk-for-python ```bash git add pylintrc eng/pylintrc \ eng/tools/azure-sdk-tools/azpysdk/pylint.py \ eng/tools/azure-sdk-tools/azpysdk/mypy.py \ eng/tools/azure-sdk-tools/azpysdk/pyright.py \ doc/analyze_check_versions.md \ eng/apiview_reqs.txt git commit -m "Promote next-* tool versions: pylint {OLD_NEXT_PYLINT_VERSION}, mypy {OLD_NEXT_MYPY_VERSION}, pyright {OLD_NEXT_PYRIGHT_VERSION}" ``` ### 11. Create Pull Request in azure-sdk-for-python Push branch and create PR: ```bash git push -u origin bump-next-versions-{YYYYMMDD} gh pr create \ --title "Promote next-* tool versions: pylint {OLD_NEXT_PYLINT_VERSION}, mypy {OLD_NEXT_MYPY_VERSION}, pyright {OLD_NEXT_PYRIGHT_VERSION}" \ --body "Promotes the next-* versions of pylint, mypy, and pyright to the current pinned versions after verifying the weekly CI jobs pass. ## Changes - pylint: {OLD_PYLINT_VERSION} → {OLD_NEXT_PYLINT_VERSION} (next: {NEW_NEXT_PYLINT_VERSION}) - mypy: {OLD_MYPY_VERSION} → {OLD_NEXT_MYPY_VERSION} (next: {NEW_NEXT_MYPY_VERSION}) - pyright: {OLD_PYRIGHT_VERSION} → {OLD_NEXT_PYRIGHT_VERSION} (next: {NEW_NEXT_PYRIGHT_VERSION}) ## Verification - [ ] Weekly next-pylint CI passes for http-client-python - [ ] Weekly next-mypy CI passes for http-client-python - [ ] Weekly next-pyright CI passes for http-client-python - [ ] Checked **azure-sdk-tools** for matching tool-version updates; opened PR if needed - [ ] Checked **Microsoft/TypeSpec** for matching tool-version updates; opened PR if needed" ``` ### 12. Update azure-sdk-tools Repository (Separate PR) > **Required review:** Always review this repo for every run of this skill. A PR is required whenever the version bump affects apiview parser dependencies/config. For a pylint **version** bump, create a separate PR in the [azure-sdk-tools](https://github.com/Azure/azure-sdk-tools) repository: 1. Clone azure-sdk-tools and create a feature branch: ```bash cd /path/to/azure-sdk-tools git checkout -b bump-apiview-pylint-{OLD_NEXT_PYLINT_VERSION} ``` 2. Update the pylint version in the apiview stub generator requirements: - File: `tools/apiview/parsers/python/apistubgen/requirements.txt` - Change `pylint=={OLD_PYLINT_VERSION}` → `pylint=={OLD_NEXT_PYLINT_VERSION}` 3. Update the pylintrc for the apiview stub generator if needed: - File: `tools/apiview/parsers/python/apistubgen/pylintrc` - Add any new disable entries needed for the new pylint major version. 4. Run the apiview tests to verify: ```bash cd tools/apiview/parsers/python pip install -e . && pytest tests/ ``` 5. Commit and create PR: ```bash git add tools/apiview/parsers/python/apistubgen/ git commit -m "bump apiview pylint to {OLD_NEXT_PYLINT_VERSION}" git push -u origin bump-apiview-pylint-{OLD_NEXT_PYLINT_VERSION} gh pr create --title "bump apiview pylint to {OLD_NEXT_PYLINT_VERSION}" \ --body "Updates the pylint version used by the apiview stub generator from {OLD_PYLINT_VERSION} to {OLD_NEXT_PYLINT_VERSION}." ``` ### 13. Update Microsoft/TypeSpec Repository (Separate PR) > **Required review:** Always review this repo for every run of this skill. A PR is required whenever TypeSpec pins or tooling references the bumped versions. For **any** next-* version update (pylint, mypy, or pyright), create a separate PR in the [Microsoft/TypeSpec](https://github.com/microsoft/typespec) repository to keep the tool versions aligned. TypeSpec uses pyright for type-checking its TypeScript packages and may reference pylint/mypy in Python-based tooling. > **Before starting:** Read the TypeSpec contribution guidelines at https://github.com/microsoft/typespec/blob/main/CONTRIBUTING.md. Key requirements include signing the Microsoft CLA, running `rush update` after dependency changes, and ensuring `rush build` passes. 1. Fork and clone the TypeSpec repository (if not already done): ```bash gh repo fork microsoft/typespec --clone cd typespec ``` 2. Install Rush (TypeSpec uses Rush for monorepo management): ```bash npm install -g @microsoft/rush ``` 3. Create a feature branch that names all tools being updated: ```bash # Example for all three tools: git checkout -b bump-tool-versions-pylint-{OLD_NEXT_PYLINT_VERSION}-mypy-{OLD_NEXT_MYPY_VERSION}-pyright-{OLD_NEXT_PYRIGHT_VERSION} ``` 4. Find all files that reference the tool versions and update them: **For pyright** (used across the TypeScript monorepo): ```bash # Find package.json files that pin pyright grep -r "\"pyright\"" --include="package.json" . | grep -v node_modules ``` Update each occurrence from `{OLD_PYRIGHT_VERSION}` → `{OLD_NEXT_PYRIGHT_VERSION}`. **For pylint** (used in any Python tooling): ```bash # Find requirements files or pyproject.toml files that pin pylint grep -r "pylint==" --include="*.txt" --include="*.toml" --include="*.cfg" . | grep -v node_modules ``` Update each occurrence from `{OLD_PYLINT_VERSION}` → `{OLD_NEXT_PYLINT_VERSION}`. **For mypy** (used in any Python tooling): ```bash # Find requirements files or pyproject.toml files that pin mypy grep -r "mypy==" --include="*.txt" --include="*.toml" --include="*.cfg" . | grep -v node_modules ``` Update each occurrence from `{OLD_MYPY_VERSION}` → `{OLD_NEXT_MYPY_VERSION}`. 5. Run Rush update to regenerate the lockfile: ```bash rush update ``` 6. Run Rush build to verify the update doesn't break anything: ```bash rush build ``` 7. Run the type-checking and lint checks to confirm there are no new errors: ```bash rush check-format rush lint ``` 8. Commit and push the changes: ```bash git add . git commit -m "bump tool versions: pylint {OLD_NEXT_PYLINT_VERSION}, mypy {OLD_NEXT_MYPY_VERSION}, pyright {OLD_NEXT_PYRIGHT_VERSION}" git push -u origin bump-tool-versions-pylint-{OLD_NEXT_PYLINT_VERSION}-mypy-{OLD_NEXT_MYPY_VERSION}-pyright-{OLD_NEXT_PYRIGHT_VERSION} ``` 9. Create the pull request, following the TypeSpec PR template: ```bash gh pr create \ --repo microsoft/typespec \ --title "bump tool versions: pylint {OLD_NEXT_PYLINT_VERSION}, mypy {OLD_NEXT_MYPY_VERSION}, pyright {OLD_NEXT_PYRIGHT_VERSION}" \ --body "Updates the pinned tool versions across the repo: - pylint: {OLD_PYLINT_VERSION} → {OLD_NEXT_PYLINT_VERSION}
Voir sur GitHub
Ce SKILL.md est tres volumineux, SkillsMP affiche donc ici seulement la premiere section. Voir sur GitHub