azdev 0.2.8__tar.gz → 0.2.10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. {azdev-0.2.8 → azdev-0.2.10}/HISTORY.rst +10 -1
  2. {azdev-0.2.8/azdev.egg-info → azdev-0.2.10}/PKG-INFO +57 -5
  3. {azdev-0.2.8 → azdev-0.2.10}/README.md +19 -0
  4. {azdev-0.2.8 → azdev-0.2.10}/README.rst +43 -0
  5. {azdev-0.2.8 → azdev-0.2.10}/azdev/__init__.py +1 -1
  6. {azdev-0.2.8 → azdev-0.2.10}/azdev/commands.py +4 -0
  7. {azdev-0.2.8 → azdev-0.2.10}/azdev/help.py +28 -0
  8. azdev-0.2.10/azdev/operations/latest_index.py +71 -0
  9. {azdev-0.2.8 → azdev-0.2.10}/azdev/params.py +8 -0
  10. {azdev-0.2.8 → azdev-0.2.10/azdev.egg-info}/PKG-INFO +57 -5
  11. {azdev-0.2.8 → azdev-0.2.10}/azdev.egg-info/SOURCES.txt +1 -0
  12. {azdev-0.2.8 → azdev-0.2.10}/azdev.egg-info/requires.txt +1 -1
  13. {azdev-0.2.8 → azdev-0.2.10}/setup.py +4 -4
  14. {azdev-0.2.8 → azdev-0.2.10}/LICENSE +0 -0
  15. {azdev-0.2.8 → azdev-0.2.10}/MANIFEST.in +0 -0
  16. {azdev-0.2.8 → azdev-0.2.10}/azdev/__main__.py +0 -0
  17. {azdev-0.2.8 → azdev-0.2.10}/azdev/completer.py +0 -0
  18. {azdev-0.2.8 → azdev-0.2.10}/azdev/config/__init__.py +0 -0
  19. {azdev-0.2.8 → azdev-0.2.10}/azdev/config/cli.flake8 +0 -0
  20. {azdev-0.2.8 → azdev-0.2.10}/azdev/config/cli_pylintrc +0 -0
  21. {azdev-0.2.8 → azdev-0.2.10}/azdev/config/ext.flake8 +0 -0
  22. {azdev-0.2.8 → azdev-0.2.10}/azdev/config/ext_pylintrc +0 -0
  23. {azdev-0.2.8 → azdev-0.2.10}/azdev/mod_templates/HISTORY.rst +0 -0
  24. {azdev-0.2.8 → azdev-0.2.10}/azdev/mod_templates/README.rst +0 -0
  25. {azdev-0.2.8 → azdev-0.2.10}/azdev/mod_templates/_client_factory.py +0 -0
  26. {azdev-0.2.8 → azdev-0.2.10}/azdev/mod_templates/_help.py +0 -0
  27. {azdev-0.2.8 → azdev-0.2.10}/azdev/mod_templates/_params.py +0 -0
  28. {azdev-0.2.8 → azdev-0.2.10}/azdev/mod_templates/_validators.py +0 -0
  29. {azdev-0.2.8 → azdev-0.2.10}/azdev/mod_templates/azext_metadata.json +0 -0
  30. {azdev-0.2.8 → azdev-0.2.10}/azdev/mod_templates/blank__init__.py +0 -0
  31. {azdev-0.2.8 → azdev-0.2.10}/azdev/mod_templates/commands.py +0 -0
  32. {azdev-0.2.8 → azdev-0.2.10}/azdev/mod_templates/custom.py +0 -0
  33. {azdev-0.2.8 → azdev-0.2.10}/azdev/mod_templates/module__init__.py +0 -0
  34. {azdev-0.2.8 → azdev-0.2.10}/azdev/mod_templates/pkg_declare__init__.py +0 -0
  35. {azdev-0.2.8 → azdev-0.2.10}/azdev/mod_templates/setup.cfg +0 -0
  36. {azdev-0.2.8 → azdev-0.2.10}/azdev/mod_templates/setup.py +0 -0
  37. {azdev-0.2.8 → azdev-0.2.10}/azdev/mod_templates/test_service_scenario.py +0 -0
  38. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/__init__.py +0 -0
  39. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/breaking_change/__init__.py +0 -0
  40. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/breaking_change/markdown_template.jinja2 +0 -0
  41. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/cmdcov/__init__.py +0 -0
  42. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/cmdcov/_macros.j2 +0 -0
  43. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/cmdcov/cmdcov.py +0 -0
  44. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/cmdcov/component.css +0 -0
  45. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/cmdcov/component.js +0 -0
  46. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/cmdcov/favicon.ico +0 -0
  47. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/cmdcov/index.j2 +0 -0
  48. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/cmdcov/index2.j2 +0 -0
  49. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/cmdcov/module.j2 +0 -0
  50. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/code_gen.py +0 -0
  51. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/command_change/__init__.py +0 -0
  52. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/command_change/custom.py +0 -0
  53. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/command_change/util.py +0 -0
  54. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/constant.py +0 -0
  55. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/extensions/__init__.py +0 -0
  56. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/extensions/util.py +0 -0
  57. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/extensions/version_upgrade.py +0 -0
  58. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/help/__init__.py +0 -0
  59. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/help/refdoc/__init__.py +0 -0
  60. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/help/refdoc/conf.py +0 -0
  61. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/legal.py +0 -0
  62. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/linter/__init__.py +0 -0
  63. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/linter/data/cmd_example_config.json +0 -0
  64. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/linter/linter.py +0 -0
  65. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/linter/pylint_checkers/__init__.py +0 -0
  66. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/linter/pylint_checkers/show_command.py +0 -0
  67. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/linter/rule_decorators.py +0 -0
  68. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/linter/rules/__init__.py +0 -0
  69. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/linter/rules/ci_exclusions.yml +0 -0
  70. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/linter/rules/command_coverage_rules.py +0 -0
  71. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/linter/rules/command_group_rules.py +0 -0
  72. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/linter/rules/command_rules.py +0 -0
  73. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/linter/rules/help_rules.py +0 -0
  74. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/linter/rules/linter_exclusions.yml +0 -0
  75. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/linter/rules/parameter_rules.py +0 -0
  76. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/linter/util.py +0 -0
  77. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/performance.py +0 -0
  78. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/pypi.py +0 -0
  79. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/python_sdk.py +0 -0
  80. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/regex.py +0 -0
  81. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/resource.py +0 -0
  82. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/secret.py +0 -0
  83. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/setup.py +0 -0
  84. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/statistics/__init__.py +0 -0
  85. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/statistics/util.py +0 -0
  86. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/style.py +0 -0
  87. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/testtool/__init__.py +0 -0
  88. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/testtool/incremental_strategy.py +0 -0
  89. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/testtool/profile_context.py +0 -0
  90. {azdev-0.2.8 → azdev-0.2.10}/azdev/operations/testtool/pytest_runner.py +0 -0
  91. {azdev-0.2.8 → azdev-0.2.10}/azdev/transformers.py +0 -0
  92. {azdev-0.2.8 → azdev-0.2.10}/azdev/utilities/__init__.py +0 -0
  93. {azdev-0.2.8 → azdev-0.2.10}/azdev/utilities/command.py +0 -0
  94. {azdev-0.2.8 → azdev-0.2.10}/azdev/utilities/config.py +0 -0
  95. {azdev-0.2.8 → azdev-0.2.10}/azdev/utilities/const.py +0 -0
  96. {azdev-0.2.8 → azdev-0.2.10}/azdev/utilities/display.py +0 -0
  97. {azdev-0.2.8 → azdev-0.2.10}/azdev/utilities/git_util.py +0 -0
  98. {azdev-0.2.8 → azdev-0.2.10}/azdev/utilities/path.py +0 -0
  99. {azdev-0.2.8 → azdev-0.2.10}/azdev/utilities/pypi.py +0 -0
  100. {azdev-0.2.8 → azdev-0.2.10}/azdev/utilities/testing.py +0 -0
  101. {azdev-0.2.8 → azdev-0.2.10}/azdev/utilities/tools.py +0 -0
  102. {azdev-0.2.8 → azdev-0.2.10}/azdev.egg-info/dependency_links.txt +0 -0
  103. {azdev-0.2.8 → azdev-0.2.10}/azdev.egg-info/entry_points.txt +0 -0
  104. {azdev-0.2.8 → azdev-0.2.10}/azdev.egg-info/top_level.txt +0 -0
  105. {azdev-0.2.8 → azdev-0.2.10}/pyproject.toml +0 -0
  106. {azdev-0.2.8 → azdev-0.2.10}/setup.cfg +0 -0
@@ -2,8 +2,17 @@
2
2
 
3
3
  Release History
4
4
  ===============
5
- 0.2.8
5
+ 0.2.10
6
6
  ++++++
7
+ * Add support for Python 3.14 and drop support for Python 3.9
8
+ * Bump pylint constraint to >=4,<5 for Python 3.14 and style compatibility
9
+
10
+ 0.2.9
11
+ +++++
12
+ * `azdev latest-index`: Add `generate` and `verify` commands to manage Azure CLI packaged latest indices (`commandIndex.latest.json`, `helpIndex.latest.json`) with CI-friendly verify exit behavior.
13
+
14
+ 0.2.8
15
+ +++++
7
16
  * Pin pip to 25.2 as pip 25.3 remove support for the legacy setup.py develop editable method in setuptools editable installs; setuptools >= 64 is now required. (#11457)
8
17
 
9
18
  0.2.7
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: azdev
3
- Version: 0.2.8
3
+ Version: 0.2.10
4
4
  Summary: Microsoft Azure CLI Developer Tools
5
5
  Home-page: https://github.com/Azure/azure-cli-dev-tools
6
6
  Author: Microsoft Corporation
@@ -13,12 +13,12 @@ Classifier: Topic :: Software Development :: Build Tools
13
13
  Classifier: Environment :: Console
14
14
  Classifier: License :: OSI Approved :: MIT License
15
15
  Classifier: Natural Language :: English
16
- Classifier: Programming Language :: Python :: 3.9
17
16
  Classifier: Programming Language :: Python :: 3.10
18
17
  Classifier: Programming Language :: Python :: 3.11
19
18
  Classifier: Programming Language :: Python :: 3.12
20
19
  Classifier: Programming Language :: Python :: 3.13
21
- Requires-Python: >=3.9
20
+ Classifier: Programming Language :: Python :: 3.14
21
+ Requires-Python: >=3.10
22
22
  License-File: LICENSE
23
23
  Requires-Dist: azure-multiapi-storage
24
24
  Requires-Dist: docutils
@@ -26,7 +26,7 @@ Requires-Dist: flake8
26
26
  Requires-Dist: gitpython
27
27
  Requires-Dist: jinja2
28
28
  Requires-Dist: knack
29
- Requires-Dist: pylint<4
29
+ Requires-Dist: pylint<5,>=4
30
30
  Requires-Dist: pytest-xdist
31
31
  Requires-Dist: pytest-forked
32
32
  Requires-Dist: pytest>=5.0.0
@@ -122,6 +122,49 @@ Setting up your development environment
122
122
 
123
123
  This will launch the interactive setup process. To see non-interactive options run `azdev setup -h`.
124
124
 
125
+ Latest packaged indices
126
+ +++++++++++++++++++++++
127
+
128
+ Use azdev wrappers around Azure CLI's latest index generation script:
129
+
130
+ ::
131
+
132
+ azdev latest-index generate
133
+ azdev latest-index verify
134
+
135
+ You can pass an explicit Azure CLI checkout path when needed:
136
+
137
+ ::
138
+
139
+ azdev latest-index generate --cli /path/to/azure-cli
140
+ azdev latest-index verify --repo /path/to/azure-cli
141
+
142
+ ``azdev latest-index verify`` exits non-zero when generated output differs from checked-in
143
+ ``commandIndex.latest.json`` or ``helpIndex.latest.json``.
144
+
145
+ Common azdev commands
146
+ +++++++++++++++++++++++++++++
147
+
148
+ This README is not an exhaustive command reference. For the complete command surface, use:
149
+
150
+ ::
151
+
152
+ azdev --help
153
+ azdev <group> --help
154
+
155
+ Frequently used commands include:
156
+
157
+ ::
158
+
159
+ azdev setup
160
+ azdev style <module-or-extension>
161
+ azdev linter <module-or-extension>
162
+ azdev test <module-or-extension>
163
+ azdev extension add <extension-name>
164
+ azdev extension build <extension-name>
165
+ azdev latest-index generate
166
+ azdev latest-index verify
167
+
125
168
  Reporting issues and feedback
126
169
  +++++++++++++++++++++++++++++
127
170
 
@@ -160,8 +203,17 @@ License
160
203
 
161
204
  Release History
162
205
  ===============
163
- 0.2.8
206
+ 0.2.10
164
207
  ++++++
208
+ * Add support for Python 3.14 and drop support for Python 3.9
209
+ * Bump pylint constraint to >=4,<5 for Python 3.14 and style compatibility
210
+
211
+ 0.2.9
212
+ +++++
213
+ * `azdev latest-index`: Add `generate` and `verify` commands to manage Azure CLI packaged latest indices (`commandIndex.latest.json`, `helpIndex.latest.json`) with CI-friendly verify exit behavior.
214
+
215
+ 0.2.8
216
+ +++++
165
217
  * Pin pip to 25.2 as pip 25.3 remove support for the legacy setup.py develop editable method in setuptools editable installs; setuptools >= 64 is now required. (#11457)
166
218
 
167
219
  0.2.7
@@ -148,6 +148,25 @@ For instructions on manually writing the commands and tests, see more in
148
148
 
149
149
  By default, test is running in `once` mode. If there are no corresponding recording files (in yaml format), it will run live tests and generate recording files. If recording files are found, the tests will be run in `playback` mode against the recording files. You can use `--live` to force a test run in `live` mode and regenerate the recording files.
150
150
 
151
+ ## Latest packaged indices
152
+
153
+ Use azdev wrappers around Azure CLI's latest index generation script:
154
+
155
+ ```
156
+ azdev latest-index generate
157
+ azdev latest-index verify
158
+ ```
159
+
160
+ You can pass an explicit Azure CLI checkout path when needed:
161
+
162
+ ```
163
+ azdev latest-index generate --cli /path/to/azure-cli
164
+ azdev latest-index verify --repo /path/to/azure-cli
165
+ ```
166
+
167
+ `azdev latest-index verify` exits non-zero when generated output differs from the checked-in
168
+ `commandIndex.latest.json` or `helpIndex.latest.json`, making it CI-friendly.
169
+
151
170
  ## Submitting a pull request to merge the code
152
171
 
153
172
  1. After committing your code locally, push it to your forked repository:
@@ -66,6 +66,49 @@ Setting up your development environment
66
66
 
67
67
  This will launch the interactive setup process. To see non-interactive options run `azdev setup -h`.
68
68
 
69
+ Latest packaged indices
70
+ +++++++++++++++++++++++
71
+
72
+ Use azdev wrappers around Azure CLI's latest index generation script:
73
+
74
+ ::
75
+
76
+ azdev latest-index generate
77
+ azdev latest-index verify
78
+
79
+ You can pass an explicit Azure CLI checkout path when needed:
80
+
81
+ ::
82
+
83
+ azdev latest-index generate --cli /path/to/azure-cli
84
+ azdev latest-index verify --repo /path/to/azure-cli
85
+
86
+ ``azdev latest-index verify`` exits non-zero when generated output differs from checked-in
87
+ ``commandIndex.latest.json`` or ``helpIndex.latest.json``.
88
+
89
+ Common azdev commands
90
+ +++++++++++++++++++++++++++++
91
+
92
+ This README is not an exhaustive command reference. For the complete command surface, use:
93
+
94
+ ::
95
+
96
+ azdev --help
97
+ azdev <group> --help
98
+
99
+ Frequently used commands include:
100
+
101
+ ::
102
+
103
+ azdev setup
104
+ azdev style <module-or-extension>
105
+ azdev linter <module-or-extension>
106
+ azdev test <module-or-extension>
107
+ azdev extension add <extension-name>
108
+ azdev extension build <extension-name>
109
+ azdev latest-index generate
110
+ azdev latest-index verify
111
+
69
112
  Reporting issues and feedback
70
113
  +++++++++++++++++++++++++++++
71
114
 
@@ -4,4 +4,4 @@
4
4
  # license information.
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __VERSION__ = '0.2.8'
7
+ __VERSION__ = '0.2.10'
@@ -82,6 +82,10 @@ def load_command_table(self, _):
82
82
  with CommandGroup(self, 'cli', operation_group('help')) as g:
83
83
  g.command('generate-docs', 'generate_cli_ref_docs')
84
84
 
85
+ with CommandGroup(self, 'latest-index', operation_group('latest_index')) as g:
86
+ g.command('generate', 'generate_latest_index')
87
+ g.command('verify', 'verify_latest_index')
88
+
85
89
  with CommandGroup(self, 'extension', operation_group('help')) as g:
86
90
  g.command('generate-docs', 'generate_extension_ref_docs')
87
91
 
@@ -99,6 +99,34 @@ helps['verify history'] = """
99
99
  short-summary: Verify the README and HISTORY files for each module so they format correctly on PyPI.
100
100
  """
101
101
 
102
+ helps['latest-index'] = """
103
+ short-summary: Generate or verify Azure CLI packaged latest index files.
104
+ long-summary: >
105
+ Wraps azure-cli's scripts/generate_latest_indices.py for deterministic, CI-friendly
106
+ generation and verification of commandIndex.latest.json and helpIndex.latest.json.
107
+ """
108
+
109
+ helps['latest-index generate'] = """
110
+ short-summary: Generate commandIndex.latest.json and helpIndex.latest.json in an Azure CLI repo.
111
+ examples:
112
+ - name: Generate latest index files using the configured Azure CLI repo.
113
+ text: azdev latest-index generate
114
+
115
+ - name: Generate latest index files for an explicit repo checkout.
116
+ text: azdev latest-index generate --cli /path/to/azure-cli
117
+ """
118
+
119
+ helps['latest-index verify'] = """
120
+ short-summary: Verify latest index files are up-to-date.
121
+ long-summary: Returns a non-zero exit code when generated content differs from checked-in files.
122
+ examples:
123
+ - name: Verify latest index files in CI.
124
+ text: azdev latest-index verify
125
+
126
+ - name: Verify latest index files for an explicit repo checkout.
127
+ text: azdev latest-index verify --repo /path/to/azure-cli
128
+ """
129
+
102
130
 
103
131
  helps['style'] = """
104
132
  short-summary: Check code style (pylint and PEP8).
@@ -0,0 +1,71 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Copyright (c) Microsoft Corporation. All rights reserved.
3
+ # Licensed under the MIT License. See License.txt in the project root for
4
+ # license information.
5
+ # -----------------------------------------------------------------------------
6
+
7
+ import os
8
+ import sys
9
+
10
+ from knack.util import CLIError
11
+
12
+ from azdev.utilities import display, heading, py_cmd
13
+ from azdev.utilities.path import get_cli_repo_path
14
+
15
+
16
+ _LATEST_INDEX_SCRIPT = os.path.join('scripts', 'generate_latest_indices.py')
17
+
18
+
19
+ def _resolve_cli_repo_path(cli_path):
20
+ if cli_path:
21
+ resolved = os.path.abspath(os.path.expanduser(cli_path))
22
+ else:
23
+ resolved = get_cli_repo_path()
24
+
25
+ if not resolved or resolved == '_NONE_':
26
+ raise CLIError('Azure CLI repo path is not configured. Specify `--cli` or run `azdev setup`.')
27
+
28
+ if not os.path.isdir(resolved):
29
+ raise CLIError('Azure CLI repo path does not exist: {}'.format(resolved))
30
+
31
+ return resolved
32
+
33
+
34
+ def _run_latest_index(mode, cli_path=None, profile='latest', all_profiles=False):
35
+ if all_profiles:
36
+ raise CLIError('`--all-profiles` is not supported yet. Use `--profile latest`.')
37
+
38
+ if profile != 'latest':
39
+ raise CLIError("Unsupported profile '{}'. Only `latest` is currently supported.".format(profile))
40
+
41
+ repo_path = _resolve_cli_repo_path(cli_path)
42
+ script_path = os.path.join(repo_path, _LATEST_INDEX_SCRIPT)
43
+ if not os.path.isfile(script_path):
44
+ raise CLIError('Unable to find azure-cli script: {}'.format(script_path))
45
+
46
+ heading('Latest Index: {}'.format(mode.capitalize()))
47
+ display('Azure CLI repo: {}'.format(repo_path))
48
+
49
+ command = '{} {}'.format(_LATEST_INDEX_SCRIPT, mode)
50
+ result = py_cmd(command, is_module=False, cwd=repo_path)
51
+
52
+ output = result.result
53
+ if isinstance(output, bytes):
54
+ output = output.decode('utf-8', errors='replace')
55
+ if output:
56
+ output = output.replace(
57
+ 'python scripts/generate_latest_indices.py generate',
58
+ 'azdev latest-index generate'
59
+ )
60
+ display(output)
61
+
62
+ if result.exit_code:
63
+ sys.exit(result.exit_code)
64
+
65
+
66
+ def generate_latest_index(cli_path=None, profile='latest', all_profiles=False):
67
+ _run_latest_index('generate', cli_path=cli_path, profile=profile, all_profiles=all_profiles)
68
+
69
+
70
+ def verify_latest_index(cli_path=None, profile='latest', all_profiles=False):
71
+ _run_latest_index('verify', cli_path=cli_path, profile=profile, all_profiles=all_profiles)
@@ -282,3 +282,11 @@ def load_arguments(self, _):
282
282
  c.argument('no_tail', action='store_true', help='Skip tail when displaying as markdown.')
283
283
  c.argument('include_whl_extensions', action='store_true',
284
284
  help="Allow scanning on extensions installed by `az extension add --source xxx.whl`.")
285
+
286
+ with ArgumentsContext(self, 'latest-index') as c:
287
+ c.argument('cli_path', options_list=['--cli', '--repo'],
288
+ help='Path to an Azure CLI repo checkout. If omitted, use the path configured by `azdev setup`.')
289
+ c.argument('profile', choices=['latest'], default='latest',
290
+ help='Cloud profile to process. Only `latest` is currently supported.')
291
+ c.argument('all_profiles', action='store_true',
292
+ help='Not supported yet. Reserved for future multi-profile support.')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: azdev
3
- Version: 0.2.8
3
+ Version: 0.2.10
4
4
  Summary: Microsoft Azure CLI Developer Tools
5
5
  Home-page: https://github.com/Azure/azure-cli-dev-tools
6
6
  Author: Microsoft Corporation
@@ -13,12 +13,12 @@ Classifier: Topic :: Software Development :: Build Tools
13
13
  Classifier: Environment :: Console
14
14
  Classifier: License :: OSI Approved :: MIT License
15
15
  Classifier: Natural Language :: English
16
- Classifier: Programming Language :: Python :: 3.9
17
16
  Classifier: Programming Language :: Python :: 3.10
18
17
  Classifier: Programming Language :: Python :: 3.11
19
18
  Classifier: Programming Language :: Python :: 3.12
20
19
  Classifier: Programming Language :: Python :: 3.13
21
- Requires-Python: >=3.9
20
+ Classifier: Programming Language :: Python :: 3.14
21
+ Requires-Python: >=3.10
22
22
  License-File: LICENSE
23
23
  Requires-Dist: azure-multiapi-storage
24
24
  Requires-Dist: docutils
@@ -26,7 +26,7 @@ Requires-Dist: flake8
26
26
  Requires-Dist: gitpython
27
27
  Requires-Dist: jinja2
28
28
  Requires-Dist: knack
29
- Requires-Dist: pylint<4
29
+ Requires-Dist: pylint<5,>=4
30
30
  Requires-Dist: pytest-xdist
31
31
  Requires-Dist: pytest-forked
32
32
  Requires-Dist: pytest>=5.0.0
@@ -122,6 +122,49 @@ Setting up your development environment
122
122
 
123
123
  This will launch the interactive setup process. To see non-interactive options run `azdev setup -h`.
124
124
 
125
+ Latest packaged indices
126
+ +++++++++++++++++++++++
127
+
128
+ Use azdev wrappers around Azure CLI's latest index generation script:
129
+
130
+ ::
131
+
132
+ azdev latest-index generate
133
+ azdev latest-index verify
134
+
135
+ You can pass an explicit Azure CLI checkout path when needed:
136
+
137
+ ::
138
+
139
+ azdev latest-index generate --cli /path/to/azure-cli
140
+ azdev latest-index verify --repo /path/to/azure-cli
141
+
142
+ ``azdev latest-index verify`` exits non-zero when generated output differs from checked-in
143
+ ``commandIndex.latest.json`` or ``helpIndex.latest.json``.
144
+
145
+ Common azdev commands
146
+ +++++++++++++++++++++++++++++
147
+
148
+ This README is not an exhaustive command reference. For the complete command surface, use:
149
+
150
+ ::
151
+
152
+ azdev --help
153
+ azdev <group> --help
154
+
155
+ Frequently used commands include:
156
+
157
+ ::
158
+
159
+ azdev setup
160
+ azdev style <module-or-extension>
161
+ azdev linter <module-or-extension>
162
+ azdev test <module-or-extension>
163
+ azdev extension add <extension-name>
164
+ azdev extension build <extension-name>
165
+ azdev latest-index generate
166
+ azdev latest-index verify
167
+
125
168
  Reporting issues and feedback
126
169
  +++++++++++++++++++++++++++++
127
170
 
@@ -160,8 +203,17 @@ License
160
203
 
161
204
  Release History
162
205
  ===============
163
- 0.2.8
206
+ 0.2.10
164
207
  ++++++
208
+ * Add support for Python 3.14 and drop support for Python 3.9
209
+ * Bump pylint constraint to >=4,<5 for Python 3.14 and style compatibility
210
+
211
+ 0.2.9
212
+ +++++
213
+ * `azdev latest-index`: Add `generate` and `verify` commands to manage Azure CLI packaged latest indices (`commandIndex.latest.json`, `helpIndex.latest.json`) with CI-friendly verify exit behavior.
214
+
215
+ 0.2.8
216
+ +++++
165
217
  * Pin pip to 25.2 as pip 25.3 remove support for the legacy setup.py develop editable method in setuptools editable installs; setuptools >= 64 is now required. (#11457)
166
218
 
167
219
  0.2.7
@@ -42,6 +42,7 @@ azdev/mod_templates/test_service_scenario.py
42
42
  azdev/operations/__init__.py
43
43
  azdev/operations/code_gen.py
44
44
  azdev/operations/constant.py
45
+ azdev/operations/latest_index.py
45
46
  azdev/operations/legal.py
46
47
  azdev/operations/performance.py
47
48
  azdev/operations/pypi.py
@@ -4,7 +4,7 @@ flake8
4
4
  gitpython
5
5
  jinja2
6
6
  knack
7
- pylint<4
7
+ pylint<5,>=4
8
8
  pytest-xdist
9
9
  pytest-forked
10
10
  pytest>=5.0.0
@@ -40,14 +40,14 @@ setup(
40
40
  'Environment :: Console',
41
41
  'License :: OSI Approved :: MIT License',
42
42
  'Natural Language :: English',
43
- 'Programming Language :: Python :: 3.9',
44
43
  'Programming Language :: Python :: 3.10',
45
44
  'Programming Language :: Python :: 3.11',
46
45
  'Programming Language :: Python :: 3.12',
47
- 'Programming Language :: Python :: 3.13'
46
+ 'Programming Language :: Python :: 3.13',
47
+ 'Programming Language :: Python :: 3.14'
48
48
  ],
49
49
  keywords='azure',
50
- python_requires='>=3.9',
50
+ python_requires='>=3.10',
51
51
  packages=[
52
52
  'azdev',
53
53
  'azdev.config',
@@ -73,7 +73,7 @@ setup(
73
73
  'gitpython',
74
74
  'jinja2',
75
75
  'knack',
76
- 'pylint<4',
76
+ 'pylint>=4,<5',
77
77
  'pytest-xdist', # depends on pytest-forked
78
78
  'pytest-forked',
79
79
  'pytest>=5.0.0',
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes