Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-ansible-compat for
openSUSE:Factory checked in at 2024-01-14 19:02:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ansible-compat (Old)
and /work/SRC/openSUSE:Factory/.python-ansible-compat.new.21961 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ansible-compat"
Sun Jan 14 19:02:54 2024 rev:21 rq:1138453 version:4.1.11
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-ansible-compat/python-ansible-compat.changes
2023-11-24 23:35:48.537685593 +0100
+++
/work/SRC/openSUSE:Factory/.python-ansible-compat.new.21961/python-ansible-compat.changes
2024-01-14 19:03:27.099326317 +0100
@@ -1,0 +2,11 @@
+Wed Jan 10 19:27:59 UTC 2024 - Johannes Kastl
<[email protected]>
+
+- update to 4.1.11:
+ * Bugfixes
+ - Allow more control over verbosity when calling ansible-galaxy (#278)
@ziegenberg
+ - Fix collection installation with custom project_dir (#343) @ssbarnea
+ - Fix collection installation bug when having custom config (#344)
@ssbarnea
+ - Add support for python 3.12 (#336) @ssbarnea
+ - Remove isolated option while adding sys.path (#335) @shatakshiiii
+
+-------------------------------------------------------------------
Old:
----
ansible-compat-4.1.10.tar.gz
New:
----
ansible-compat-4.1.11.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-ansible-compat.spec ++++++
--- /var/tmp/diff_new_pack.Zc1WqX/_old 2024-01-14 19:03:27.719348904 +0100
+++ /var/tmp/diff_new_pack.Zc1WqX/_new 2024-01-14 19:03:27.719348904 +0100
@@ -24,7 +24,7 @@
%endif
Name: python-ansible-compat
-Version: 4.1.10
+Version: 4.1.11
Release: 0
Summary: Compatibility shim for Ansible 2.9 and newer
License: MIT
@@ -86,6 +86,8 @@
IGNORED_CHECKS="${IGNORED_CHECKS} or
test_scan_sys_path[isolatedF-scanT-raises_not_foundF]"
IGNORED_CHECKS="${IGNORED_CHECKS} or
test_scan_sys_path[isolatedT-scanF-raises_not_foundT]"
IGNORED_CHECKS="${IGNORED_CHECKS} or
test_scan_sys_path[isolatedT-scanT-raises_not_foundT]"
+IGNORED_CHECKS="${IGNORED_CHECKS} or
test_scan_sys_path[scanF-raises_not_foundT]"
+IGNORED_CHECKS="${IGNORED_CHECKS} or
test_scan_sys_path[scanT-raises_not_foundF]"
IGNORED_CHECKS="${IGNORED_CHECKS} or test_upgrade_collection"
# Disable checks on test names:
https://github.com/pytest-dev/pytest-plus#user-content-avoiding-problematic-test-identifiers
https://github.com/ansible/ansible-compat/issues/340
export PYTEST_CHECK_TEST_ID_REGEX=0
++++++ ansible-compat-4.1.10.tar.gz -> ansible-compat-4.1.11.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-4.1.10/.github/release-drafter.yml
new/ansible-compat-4.1.11/.github/release-drafter.yml
--- old/ansible-compat-4.1.10/.github/release-drafter.yml 2023-09-06
14:55:41.000000000 +0200
+++ new/ansible-compat-4.1.11/.github/release-drafter.yml 2024-01-10
13:52:49.000000000 +0100
@@ -1,2 +1,3 @@
-# see https://github.com/ansible/devtools
-_extends: ansible/devtools
+---
+# see https://github.com/ansible/team-devtools
+_extends: ansible/team-devtools
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-4.1.10/.github/workflows/release.yml
new/ansible-compat-4.1.11/.github/workflows/release.yml
--- old/ansible-compat-4.1.10/.github/workflows/release.yml 2023-09-06
14:55:41.000000000 +0200
+++ new/ansible-compat-4.1.11/.github/workflows/release.yml 2024-01-10
13:52:49.000000000 +0100
@@ -23,10 +23,10 @@
TOX_PARALLEL_NO_SPINNER: 1
steps:
- - name: Switch to using Python 3.9 by default
- uses: actions/setup-python@v4
+ - name: Switch to using Python 3.12 by default
+ uses: actions/setup-python@v5
with:
- python-version: 3.9
+ python-version: "3.12"
- name: Install tox
run: python3 -m pip install --user "tox>=4.0.0"
- name: Check out src from Git
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-4.1.10/.github/workflows/tox.yml
new/ansible-compat-4.1.11/.github/workflows/tox.yml
--- old/ansible-compat-4.1.10/.github/workflows/tox.yml 2023-09-06
14:55:41.000000000 +0200
+++ new/ansible-compat-4.1.11/.github/workflows/tox.yml 2024-01-10
13:52:49.000000000 +0100
@@ -23,7 +23,8 @@
uses: coactions/dynamic-matrix@v1
with:
min_python: "3.9"
- max_python: "3.11"
+ max_python: "3.12"
+ default_python: "3.10"
other_names: |
lint
docs
@@ -32,7 +33,10 @@
py39-ansible213
py39-ansible214
py39-ansible215
- py311-devel
+ py310-ansible215
+ py311-ansible215
+ py312-ansible216
+ py312-devel
smoke
platforms: linux,macos
macos: minmax
@@ -53,7 +57,7 @@
fetch-depth: 0 # needed by setuptools-scm
- name: Set up Python ${{ matrix.python_version }}
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python_version }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-4.1.10/.pre-commit-config.yaml
new/ansible-compat-4.1.11/.pre-commit-config.yaml
--- old/ansible-compat-4.1.10/.pre-commit-config.yaml 2023-09-06
14:55:41.000000000 +0200
+++ new/ansible-compat-4.1.11/.pre-commit-config.yaml 2024-01-10
13:52:49.000000000 +0100
@@ -9,22 +9,27 @@
for more information, see https://pre-commit.ci
skip:
# https://github.com/pre-commit-ci/issues/issues/55
+ - ccv
- pip-compile
# No docker on pre-commit.ci
- validate-config-in-container
default_language_version:
# Needed in order to make pip-compile output predictable.
- python: python3.9
+ python: python3.10
exclude: |
(?x)^(
test/assets/.*
)$
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
- rev: "v0.0.287"
+ rev: "v0.1.9"
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
+ - repo: https://github.com/pappasam/toml-sort
+ rev: v0.23.1
+ hooks:
+ - id: toml-sort-fix
- repo: https://github.com/pre-commit/mirrors-prettier
# keep it before yamllint
rev: "v3.0.3"
@@ -35,7 +40,7 @@
- prettier-plugin-toml
- prettier-plugin-sort-json
- repo: https://github.com/pre-commit/pre-commit-hooks.git
- rev: v4.4.0
+ rev: v4.5.0
hooks:
- id: end-of-file-fixer
- id: trailing-whitespace
@@ -51,23 +56,23 @@
- id: debug-statements
language_version: python3
- repo: https://github.com/codespell-project/codespell
- rev: v2.2.5
+ rev: v2.2.6
hooks:
- id: codespell
- repo: https://github.com/adrienverge/yamllint.git
- rev: v1.32.0
+ rev: v1.33.0
hooks:
- id: yamllint
files: \.(yaml|yml)$
types: [file, yaml]
entry: yamllint --strict
- repo: https://github.com/psf/black
- rev: 23.7.0
+ rev: 23.12.1
hooks:
- id: black
language_version: python3
- repo: https://github.com/pre-commit/mirrors-mypy
- rev: v1.5.1
+ rev: v1.8.0
hooks:
- id: mypy
# empty args needed in order to match mypy cli behavior
@@ -84,7 +89,7 @@
- types-pkg_resources
- types-jsonschema>=4.4.9
- repo: https://github.com/pycqa/pylint
- rev: v3.0.0a7
+ rev: v3.0.3
hooks:
- id: pylint
additional_dependencies:
@@ -117,4 +122,10 @@
rev: v1.2.0
hooks:
- id: validate-config-in-container
+ name: packit
alias: packit
+ - repo: https://github.com/mashi/codecov-validator
+ rev: "1.0.1"
+ hooks:
+ - id: ccv
+ name: codecov
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-4.1.10/.vscode/settings.json
new/ansible-compat-4.1.11/.vscode/settings.json
--- old/ansible-compat-4.1.10/.vscode/settings.json 2023-09-06
14:55:41.000000000 +0200
+++ new/ansible-compat-4.1.11/.vscode/settings.json 2024-01-10
13:52:49.000000000 +0100
@@ -4,9 +4,9 @@
},
"[python]": {
"editor.codeActionsOnSave": {
- "source.fixAll": true,
- "source.fixAll.ruff": false,
- "source.organizeImports": false
+ "source.fixAll": "explicit",
+ "source.fixAll.ruff": "never",
+ "source.organizeImports": "never"
}
},
"editor.formatOnSave": true,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-4.1.10/PKG-INFO
new/ansible-compat-4.1.11/PKG-INFO
--- old/ansible-compat-4.1.10/PKG-INFO 2023-09-06 14:56:06.785466000 +0200
+++ new/ansible-compat-4.1.11/PKG-INFO 2024-01-10 13:53:09.517272000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: ansible-compat
-Version: 4.1.10
+Version: 4.1.11
Summary: Ansible compatibility goodies
Author-email: Sorin Sbarnea <[email protected]>
Maintainer-email: Sorin Sbarnea <[email protected]>
@@ -21,6 +21,7 @@
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: Software Development :: Bug Tracking
@@ -29,9 +30,23 @@
Classifier: Topic :: Utilities
Requires-Python: >=3.9
Description-Content-Type: text/markdown
+License-File: LICENSE
+Requires-Dist: ansible-core>=2.12
+Requires-Dist: packaging
+Requires-Dist: PyYAML
+Requires-Dist: subprocess-tee>=0.4.1
+Requires-Dist: jsonschema>=4.6.0
+Requires-Dist: typing-extensions>=4.5.0; python_version < "3.10"
Provides-Extra: docs
+Requires-Dist: argparse-manpage; extra == "docs"
+Requires-Dist: black; extra == "docs"
+Requires-Dist: mkdocs-ansible[lock]>=0.1.2; extra == "docs"
Provides-Extra: test
-License-File: LICENSE
+Requires-Dist: coverage; extra == "test"
+Requires-Dist: pip-tools; extra == "test"
+Requires-Dist: pytest>=7.2.0; extra == "test"
+Requires-Dist: pytest-mock; extra == "test"
+Requires-Dist: pytest-plus>=0.6.1; extra == "test"
# ansible-compat
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-4.1.10/codecov.yml
new/ansible-compat-4.1.11/codecov.yml
--- old/ansible-compat-4.1.10/codecov.yml 2023-09-06 14:55:41.000000000
+0200
+++ new/ansible-compat-4.1.11/codecov.yml 2024-01-10 13:52:49.000000000
+0100
@@ -3,6 +3,4 @@
comment: false
coverage:
status:
- patch: false
- project:
- threshold: 0.5%
+ patch: true # we want github annotations
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-4.1.10/pyproject.toml
new/ansible-compat-4.1.11/pyproject.toml
--- old/ansible-compat-4.1.10/pyproject.toml 2023-09-06 14:55:41.000000000
+0200
+++ new/ansible-compat-4.1.11/pyproject.toml 2024-01-10 13:52:49.000000000
+0100
@@ -1,7 +1,7 @@
[build-system]
requires = [
"setuptools >= 65.3.0", # required by pyproject+setuptools_scm integration
and editable installs
- "setuptools_scm[toml] >= 7.0.5", # required for "no-local-version" scheme
+ "setuptools_scm[toml] >= 7.0.5" # required for "no-local-version" scheme
]
build-backend = "setuptools.build_meta"
@@ -12,9 +12,9 @@
name = "ansible-compat"
description = "Ansible compatibility goodies"
readme = "README.md"
-authors = [{ "name" = "Sorin Sbarnea", "email" = "[email protected]" }]
-maintainers = [{ "name" = "Sorin Sbarnea", "email" = "[email protected]" }]
-license = { text = "MIT" }
+authors = [{"name" = "Sorin Sbarnea", "email" = "[email protected]"}]
+maintainers = [{"name" = "Sorin Sbarnea", "email" = "[email protected]"}]
+license = {text = "MIT"}
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
@@ -27,12 +27,13 @@
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: 3.12",
"Programming Language :: Python",
"Topic :: System :: Systems Administration",
"Topic :: Software Development :: Bug Tracking",
"Topic :: Software Development :: Quality Assurance",
"Topic :: Software Development :: Testing",
- "Topic :: Utilities",
+ "Topic :: Utilities"
]
keywords = ["ansible"]
dependencies = [
@@ -42,18 +43,24 @@
"PyYAML",
"subprocess-tee>=0.4.1",
"jsonschema>=4.6.0",
- "typing-extensions>=4.5.0;python_version<'3.10'",
+ "typing-extensions>=4.5.0;python_version<'3.10'"
]
+[project.optional-dependencies]
+docs = ["argparse-manpage", "black", "mkdocs-ansible[lock]>=0.1.2"]
+test = ["coverage", "pip-tools", "pytest>=7.2.0", "pytest-mock",
"pytest-plus>=0.6.1"]
+
[project.urls]
homepage = "https://github.com/ansible/ansible-compat"
documentation = "https://ansible-compat.readthedocs.io/"
repository = "https://github.com/ansible/ansible-compat"
changelog = "https://github.com/ansible/ansible-compat/releases"
-[project.optional-dependencies]
-docs = ["argparse-manpage", "black", "mkdocs-ansible[lock]>=0.1.2"]
-test = ["coverage", "pip-tools", "pytest>=7.2.0", "pytest-mock", "pytest-plus"]
+[tool.coverage.report]
+exclude_lines = ["pragma: no cover", "if TYPE_CHECKING:"]
+fail_under = 92
+skip_covered = true
+show_missing = true
[tool.coverage.run]
source = ["src"]
@@ -63,11 +70,8 @@
parallel = true
concurrency = ["multiprocessing", "thread"]
-[tool.coverage.report]
-exclude_lines = ["pragma: no cover", "if TYPE_CHECKING:"]
-fail_under = 93
-skip_covered = true
-show_missing = true
+[tool.isort]
+profile = "black"
[tool.mypy]
python_version = 3.9
@@ -77,7 +81,7 @@
disallow_untyped_defs = true
disallow_any_generics = true
# disallow_any_unimported = True
-#; warn_redundant_casts = True
+# ; warn_redundant_casts = True
# warn_return_any = True
# warn_unused_configs = True
exclude = "test/local-content"
@@ -86,9 +90,6 @@
module = "ansible.*"
ignore_missing_imports = true
-[tool.isort]
-profile = "black"
-
[tool.pylint.BASIC]
good-names = [
"f", # filename
@@ -98,7 +99,7 @@
"ns", # namespace
"ex",
"Run",
- "_",
+ "_"
]
[tool.pylint.IMPORTS]
@@ -114,12 +115,17 @@
"too-many-arguments", # PLR0913
"raise-missing-from",
# Temporary disable duplicate detection we remove old code from prerun
- "duplicate-code",
+ "duplicate-code"
]
[tool.pytest.ini_options]
# ensure we treat warnings as error
-filterwarnings = ["error"]
+filterwarnings = [
+ "error",
+ # py312 ansible-core
+ # https://github.com/ansible/ansible/issues/81906
+ "ignore:'importlib.abc.TraversableResources' is deprecated and slated for
removal in Python 3.14:DeprecationWarning"
+]
testpaths = ["test"]
[tool.ruff]
@@ -137,13 +143,10 @@
"PLR0912", # Bug https://github.com/charliermarsh/ruff/issues/4244
"PLR0913", # Bug https://github.com/charliermarsh/ruff/issues/4244
"RUF012",
- "PERF203",
+ "PERF203"
]
target-version = "py39"
-[tool.ruff.pydocstyle]
-convention = "pep257"
-
[tool.ruff.flake8-pytest-style]
parametrize-values-type = "tuple"
@@ -154,6 +157,9 @@
[tool.ruff.per-file-ignores]
"test/**/*.py" = ["SLF001", "S101", "FBT001"]
+[tool.ruff.pydocstyle]
+convention = "pep257"
+
[tool.setuptools_scm]
local_scheme = "no-local-version"
write_to = "src/ansible_compat/_version.py"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-4.1.10/requirements.txt
new/ansible-compat-4.1.11/requirements.txt
--- old/ansible-compat-4.1.10/requirements.txt 2023-09-06 14:55:41.000000000
+0200
+++ new/ansible-compat-4.1.11/requirements.txt 2024-01-10 13:52:49.000000000
+0100
@@ -1,56 +1,62 @@
#
-# This file is autogenerated by pip-compile with Python 3.9
+# This file is autogenerated by pip-compile with Python 3.10
# by the following command:
#
# pip-compile --extra=docs --extra=test --output-file=requirements.txt
--strip-extras --unsafe-package=ansible-core --unsafe-package=resolvelib
--unsafe-package=typing_extensions pyproject.toml
#
-argparse-manpage==4.3
+argparse-manpage==4.5
# via ansible-compat (pyproject.toml)
-attrs==23.1.0
+attrs==23.2.0
# via
# jsonschema
# referencing
+babel==2.13.1
+ # via
+ # mkdocs-ansible
+ # mkdocs-material
beautifulsoup4==4.12.2
# via
+ # linkchecker
# mkdocs-ansible
# mkdocs-htmlproofer-plugin
-black==23.7.0
+black==23.12.1
# via ansible-compat (pyproject.toml)
-build==0.10.0
+build==1.0.3
# via pip-tools
-cairocffi==1.5.1
+cairocffi==1.6.1
# via
# cairosvg
# mkdocs-ansible
-cairosvg==2.7.0
+cairosvg==2.7.1
# via mkdocs-ansible
-certifi==2023.5.7
+certifi==2023.11.17
# via
# mkdocs-ansible
# requests
-cffi==1.15.1
+cffi==1.16.0
# via
# cairocffi
# cryptography
# mkdocs-ansible
-charset-normalizer==3.1.0
+charset-normalizer==3.3.2
# via
# mkdocs-ansible
# requests
-click==8.1.3
+click==8.1.7
# via
# black
# mkdocs
# mkdocs-ansible
+ # mkdocstrings
# pip-tools
colorama==0.4.6
# via
# griffe
# mkdocs-ansible
# mkdocs-material
-coverage==7.3.0
+coverage==7.4.0
# via ansible-compat (pyproject.toml)
-cryptography==41.0.3
+cryptography==41.0.7
# via ansible-core
csscompressor==0.9.5
# via
@@ -64,13 +70,17 @@
# via
# cairosvg
# mkdocs-ansible
-exceptiongroup==1.1.3
+dnspython==2.4.2
+ # via
+ # linkchecker
+ # mkdocs-ansible
+exceptiongroup==1.2.0
# via pytest
ghp-import==2.1.0
# via
# mkdocs
# mkdocs-ansible
-griffe==0.29.0
+griffe==0.38.0
# via
# mkdocs-ansible
# mkdocstrings-python
@@ -82,14 +92,8 @@
# via
# mkdocs-ansible
# requests
-importlib-metadata==6.6.0
- # via
- # markdown
- # mkdocs
- # mkdocs-ansible
- # mkdocstrings
-importlib-resources==5.0.7
- # via ansible-core
+importlib-metadata==6.8.0
+ # via mkdocs-ansible
iniconfig==2.0.0
# via pytest
jinja2==3.1.2
@@ -103,11 +107,13 @@
# via
# mkdocs-ansible
# mkdocs-minify-plugin
-jsonschema==4.19.0
+jsonschema==4.20.0
# via ansible-compat (pyproject.toml)
-jsonschema-specifications==2023.7.1
+jsonschema-specifications==2023.12.1
# via jsonschema
-markdown==3.3.7
+linkchecker==10.3.0
+ # via mkdocs-ansible
+markdown==3.5.1
# via
# markdown-include
# mkdocs
@@ -117,20 +123,21 @@
# mkdocs-material
# mkdocstrings
# pymdown-extensions
-markdown-exec==1.6.0
+markdown-exec==1.8.0
# via mkdocs-ansible
markdown-include==0.8.1
# via mkdocs-ansible
-markupsafe==2.1.2
+markupsafe==2.1.3
# via
# jinja2
+ # mkdocs
# mkdocs-ansible
# mkdocstrings
mergedeep==1.3.4
# via
# mkdocs
# mkdocs-ansible
-mkdocs==1.4.3
+mkdocs==1.5.3
# via
# mkdocs-ansible
# mkdocs-autorefs
@@ -140,35 +147,37 @@
# mkdocs-minify-plugin
# mkdocs-monorepo-plugin
# mkdocstrings
-mkdocs-ansible==0.1.6
- # via ansible-compat (pyproject.toml)
-mkdocs-autorefs==0.4.1
+mkdocs-ansible==0.2.1
+ # via
+ # ansible-compat (pyproject.toml)
+ # mkdocs-ansible
+mkdocs-autorefs==0.5.0
# via
# mkdocs-ansible
# mkdocstrings
mkdocs-gen-files==0.5.0
# via mkdocs-ansible
-mkdocs-htmlproofer-plugin==0.13.1
+mkdocs-htmlproofer-plugin==1.0.0
# via mkdocs-ansible
-mkdocs-material==9.1.15
+mkdocs-material==9.5.3
# via mkdocs-ansible
-mkdocs-material-extensions==1.1.1
+mkdocs-material-extensions==1.3.1
# via
# mkdocs-ansible
# mkdocs-material
-mkdocs-minify-plugin==0.6.4
+mkdocs-minify-plugin==0.7.2
# via mkdocs-ansible
-mkdocs-monorepo-plugin==1.0.5
+mkdocs-monorepo-plugin==1.1.0
# via mkdocs-ansible
-mkdocstrings==0.22.0
+mkdocstrings==0.24.0
# via
# mkdocs-ansible
# mkdocstrings-python
-mkdocstrings-python==1.1.0
+mkdocstrings-python==1.7.5
# via mkdocs-ansible
mypy-extensions==1.0.0
# via black
-packaging==23.1
+packaging==23.2
# via
# ansible-compat (pyproject.toml)
# ansible-core
@@ -177,31 +186,42 @@
# mkdocs
# mkdocs-ansible
# pytest
+paginate==0.5.6
+ # via
+ # mkdocs-ansible
+ # mkdocs-material
pathspec==0.11.2
- # via black
-pillow==9.5.0
+ # via
+ # black
+ # mkdocs
+ # mkdocs-ansible
+pillow==10.2.0
# via
# cairosvg
# mkdocs-ansible
-pip==23.2.1
+pip==23.3.2
# via pip-tools
pip-tools==7.3.0
# via ansible-compat (pyproject.toml)
-pipdeptree==2.7.1
+pipdeptree==2.13.1
# via mkdocs-ansible
-platformdirs==3.10.0
- # via black
-pluggy==1.2.0
+platformdirs==4.0.0
+ # via
+ # black
+ # mkdocs
+ # mkdocs-ansible
+ # mkdocstrings
+pluggy==1.3.0
# via pytest
pycparser==2.21
# via
# cffi
# mkdocs-ansible
-pygments==2.15.1
+pygments==2.17.1
# via
# mkdocs-ansible
# mkdocs-material
-pymdown-extensions==10.0.1
+pymdown-extensions==10.7
# via
# markdown-exec
# mkdocs-ansible
@@ -209,14 +229,14 @@
# mkdocstrings
pyproject-hooks==1.0.0
# via build
-pytest==7.4.0
+pytest==7.4.4
# via
# ansible-compat (pyproject.toml)
# pytest-mock
# pytest-plus
-pytest-mock==3.11.1
+pytest-mock==3.12.0
# via ansible-compat (pyproject.toml)
-pytest-plus==0.4.0
+pytest-plus==0.6.1
# via ansible-compat (pyproject.toml)
python-dateutil==2.8.2
# via
@@ -226,7 +246,7 @@
# via
# mkdocs-ansible
# mkdocs-monorepo-plugin
-pyyaml==6.0
+pyyaml==6.0.1
# via
# ansible-compat (pyproject.toml)
# ansible-core
@@ -238,30 +258,31 @@
# via
# mkdocs
# mkdocs-ansible
-referencing==0.30.2
+referencing==0.32.1
# via
# jsonschema
# jsonschema-specifications
-regex==2023.5.5
+regex==2023.10.3
# via
# mkdocs-ansible
# mkdocs-material
requests==2.31.0
# via
+ # linkchecker
# mkdocs-ansible
# mkdocs-htmlproofer-plugin
# mkdocs-material
-rpds-py==0.9.2
+rpds-py==0.16.2
# via
# jsonschema
# referencing
-setuptools==68.1.2
+setuptools==69.0.3
# via pip-tools
six==1.16.0
# via
# mkdocs-ansible
# python-dateutil
-soupsieve==2.4.1
+soupsieve==2.5
# via
# beautifulsoup4
# mkdocs-ansible
@@ -284,13 +305,11 @@
# pip-tools
# pyproject-hooks
# pytest
-typing-extensions==4.6.2 ; python_version < "3.10"
+typing-extensions==4.8.0
# via
- # ansible-compat (pyproject.toml)
# black
# mkdocs-ansible
- # mkdocstrings
-urllib3==2.0.2
+urllib3==2.1.0
# via
# mkdocs-ansible
# requests
@@ -303,9 +322,9 @@
# cssselect2
# mkdocs-ansible
# tinycss2
-wheel==0.41.1
+wheel==0.42.0
# via pip-tools
-zipp==3.15.0
+zipp==3.17.0
# via
# importlib-metadata
# mkdocs-ansible
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-4.1.10/src/ansible_compat/_version.py
new/ansible-compat-4.1.11/src/ansible_compat/_version.py
--- old/ansible-compat-4.1.10/src/ansible_compat/_version.py 2023-09-06
14:56:06.000000000 +0200
+++ new/ansible-compat-4.1.11/src/ansible_compat/_version.py 2024-01-10
13:53:09.000000000 +0100
@@ -1,4 +1,16 @@
# file generated by setuptools_scm
# don't change, don't track in version control
-__version__ = version = '4.1.10'
-__version_tuple__ = version_tuple = (4, 1, 10)
+TYPE_CHECKING = False
+if TYPE_CHECKING:
+ from typing import Tuple, Union
+ VERSION_TUPLE = Tuple[Union[int, str], ...]
+else:
+ VERSION_TUPLE = object
+
+version: str
+__version__: str
+__version_tuple__: VERSION_TUPLE
+version_tuple: VERSION_TUPLE
+
+__version__ = version = '4.1.11'
+__version_tuple__ = version_tuple = (4, 1, 11)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-4.1.10/src/ansible_compat/config.py
new/ansible-compat-4.1.11/src/ansible_compat/config.py
--- old/ansible-compat-4.1.10/src/ansible_compat/config.py 2023-09-06
14:55:41.000000000 +0200
+++ new/ansible-compat-4.1.11/src/ansible_compat/config.py 2024-01-10
13:52:49.000000000 +0100
@@ -216,6 +216,11 @@
default_private_role_vars: bool = False
default_remote_port: str | None = None
default_remote_user: str | None = None
+ #
https://docs.ansible.com/ansible/latest/reference_appendices/config.html#collections-paths
+ default_collections_path: list[str] = [
+ "~/.ansible/collections",
+ "/usr/share/ansible/collections",
+ ]
default_roles_path: list[str] = [
"~/.ansible/roles",
"/usr/share/ansible/roles",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-4.1.10/src/ansible_compat/runtime.py
new/ansible-compat-4.1.11/src/ansible_compat/runtime.py
--- old/ansible-compat-4.1.10/src/ansible_compat/runtime.py 2023-09-06
14:55:41.000000000 +0200
+++ new/ansible-compat-4.1.11/src/ansible_compat/runtime.py 2024-01-10
13:52:49.000000000 +0100
@@ -10,7 +10,6 @@
import shutil
import subprocess
import sys
-import tempfile
import warnings
from collections import OrderedDict
from dataclasses import dataclass, field
@@ -166,6 +165,7 @@
require_module: bool = False,
max_retries: int = 0,
environ: dict[str, str] | None = None,
+ verbosity: int = 0,
) -> None:
"""Initialize Ansible runtime environment.
@@ -187,12 +187,17 @@
Default is 0, no retries.
:param environ: Environment dictionary to use, if undefined
``os.environ`` will be copied and used.
+ :param verbosity: Verbosity level to use.
"""
self.project_dir = project_dir or Path.cwd()
self.isolated = isolated
self.max_retries = max_retries
self.environ = environ or os.environ.copy()
self.plugins = Plugins(runtime=self)
+ self.verbosity = verbosity
+
+ self.initialize_logger(level=self.verbosity)
+
# Reduce noise from paramiko, unless user already defined
PYTHONWARNINGS
# paramiko/transport.py:236: CryptographyDeprecationWarning: Blowfish
has been deprecated
# https://github.com/paramiko/paramiko/issues/2038
@@ -236,9 +241,24 @@
# Monkey patch ansible warning in order to use warnings module.
Display.warning = warning
+ def initialize_logger(self, level: int = 0) -> None:
+ """Set up the global logging level based on the verbosity number."""
+ verbosity_map = {
+ -2: logging.CRITICAL,
+ -1: logging.ERROR,
+ 0: logging.WARNING,
+ 1: logging.INFO,
+ 2: logging.DEBUG,
+ }
+ # Unknown logging level is treated as DEBUG
+ logging_level = verbosity_map.get(level, logging.DEBUG)
+ _logger.setLevel(logging_level)
+ # Use module-level _logger instance to validate it
+ _logger.debug("Logging initialized to level %s", logging_level)
+
def _add_sys_path_to_collection_paths(self) -> None:
"""Add the sys.path to the collection paths."""
- if not self.isolated and self.config.collections_scan_sys_path:
+ if self.config.collections_scan_sys_path:
for path in sys.path:
if (
path not in self.config.collections_paths
@@ -436,7 +456,7 @@
if isinstance(collection, Path):
collection = str(collection)
# As ansible-galaxy install is not able to automatically determine
- # if the range requires a pre-release, we need to manuall add the --pre
+ # if the range requires a pre-release, we need to manually add the
--pre
# flag when needed.
matches = version_re.search(collection)
@@ -456,13 +476,13 @@
cmd.append(f"{collection}")
_logger.info("Running from %s : %s", Path.cwd(), " ".join(cmd))
- run = self.run(
+ process = self.run(
cmd,
retry=True,
env={**self.environ, ansible_collections_path(): ":".join(cpaths)},
)
- if run.returncode != 0:
- msg = f"Command returned {run.returncode}
code:\n{run.stdout}\n{run.stderr}"
+ if process.returncode != 0:
+ msg = f"Command returned {process.returncode}
code:\n{process.stdout}\n{process.stderr}"
_logger.error(msg)
raise InvalidPrerequisiteError(msg)
@@ -472,30 +492,7 @@
destination: Path | None = None,
) -> None:
"""Build and install collection from a given disk path."""
- if not self.version_in_range(upper="2.11"):
- self.install_collection(path, destination=destination, force=True)
- return
- # older versions of ansible able unable to install without building
- with tempfile.TemporaryDirectory() as tmp_dir:
- cmd = [
- "ansible-galaxy",
- "collection",
- "build",
- "--output-path",
- str(tmp_dir),
- str(path),
- ]
- _logger.info("Running %s", " ".join(cmd))
- run = self.run(cmd, retry=False)
- if run.returncode != 0:
- _logger.error(run.stdout)
- raise AnsibleCommandError(run)
- for archive_file in os.listdir(tmp_dir):
- self.install_collection(
- str(Path(tmp_dir) / archive_file),
- destination=destination,
- force=True,
- )
+ self.install_collection(path, destination=destination, force=True)
# pylint: disable=too-many-branches
def install_requirements( # noqa: C901
@@ -529,9 +526,11 @@
"ansible-galaxy",
"role",
"install",
- "-vr",
+ "-r",
f"{requirement}",
]
+ if self.verbosity > 0:
+ cmd.extend(["-" + ("v" * self.verbosity)])
if self.cache_dir:
cmd.extend(["--roles-path", f"{self.cache_dir}/roles"])
@@ -543,8 +542,9 @@
_logger.info("Running %s", " ".join(cmd))
result = self.run(cmd, retry=retry)
+ _logger.debug(result.stdout)
if result.returncode != 0:
- _logger.error(result.stdout)
+ _logger.error(result.stderr)
raise AnsibleCommandError(result)
# Run galaxy collection install works on v2 requirements.yml
@@ -553,8 +553,10 @@
"ansible-galaxy",
"collection",
"install",
- "-v",
]
+ if self.verbosity > 0:
+ cmd.extend(["-" + ("v" * self.verbosity)])
+
for collection in reqs_yaml["collections"]:
if isinstance(collection, dict) and collection.get("type", "")
== "git":
_logger.info(
@@ -582,8 +584,8 @@
retry=retry,
env={**os.environ, "ANSIBLE_COLLECTIONS_PATH":
":".join(cpaths)},
)
+ _logger.debug(result.stdout)
if result.returncode != 0:
- _logger.error(result.stdout)
_logger.error(result.stderr)
raise AnsibleCommandError(result)
@@ -638,14 +640,14 @@
destination=destination,
)
- if Path("galaxy.yml").exists():
+ if (self.project_dir / "galaxy.yml").exists():
if destination:
# while function can return None, that would not break the
logic
colpath = Path(
-
f"{destination}/ansible_collections/{colpath_from_path(Path.cwd())}",
+
f"{destination}/ansible_collections/{colpath_from_path(self.project_dir)}",
)
if colpath.is_symlink():
- if os.path.realpath(colpath) == Path.cwd():
+ if os.path.realpath(colpath) == str(Path.cwd()):
_logger.warning(
"Found symlinked collection, skipping its
installation.",
)
@@ -765,7 +767,7 @@
msg = "Unexpected ansible configuration"
raise RuntimeError(msg) from exc
- alterations_list = [
+ alterations_list: list[tuple[list[str], str, bool]] = [
(library_paths, "plugins/modules", True),
(roles_path, "roles", True),
]
@@ -786,12 +788,12 @@
if must_be_present:
continue
path.mkdir(parents=True, exist_ok=True)
- if path not in path_list:
+ if str(path) not in path_list:
path_list.insert(0, str(path))
if library_paths != self.config.DEFAULT_MODULE_PATH:
self._update_env("ANSIBLE_LIBRARY", library_paths)
- if collections_path != self.config.collections_paths:
+ if collections_path != self.config.default_collections_path:
self._update_env(ansible_collections_path(), collections_path)
if roles_path != self.config.default_roles_path:
self._update_env("ANSIBLE_ROLES_PATH", roles_path)
@@ -934,7 +936,10 @@
def _get_galaxy_role_name(galaxy_infos: dict[str, Any]) -> str:
"""Compute role name from meta/main.yml."""
- return galaxy_infos.get("role_name", "")
+ result = galaxy_infos.get("role_name", "")
+ if not isinstance(result, str):
+ return ""
+ return result
def search_galaxy_paths(search_dir: Path) -> list[str]:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ansible-compat-4.1.10/src/ansible_compat.egg-info/PKG-INFO
new/ansible-compat-4.1.11/src/ansible_compat.egg-info/PKG-INFO
--- old/ansible-compat-4.1.10/src/ansible_compat.egg-info/PKG-INFO
2023-09-06 14:56:06.000000000 +0200
+++ new/ansible-compat-4.1.11/src/ansible_compat.egg-info/PKG-INFO
2024-01-10 13:53:09.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: ansible-compat
-Version: 4.1.10
+Version: 4.1.11
Summary: Ansible compatibility goodies
Author-email: Sorin Sbarnea <[email protected]>
Maintainer-email: Sorin Sbarnea <[email protected]>
@@ -21,6 +21,7 @@
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: Software Development :: Bug Tracking
@@ -29,9 +30,23 @@
Classifier: Topic :: Utilities
Requires-Python: >=3.9
Description-Content-Type: text/markdown
+License-File: LICENSE
+Requires-Dist: ansible-core>=2.12
+Requires-Dist: packaging
+Requires-Dist: PyYAML
+Requires-Dist: subprocess-tee>=0.4.1
+Requires-Dist: jsonschema>=4.6.0
+Requires-Dist: typing-extensions>=4.5.0; python_version < "3.10"
Provides-Extra: docs
+Requires-Dist: argparse-manpage; extra == "docs"
+Requires-Dist: black; extra == "docs"
+Requires-Dist: mkdocs-ansible[lock]>=0.1.2; extra == "docs"
Provides-Extra: test
-License-File: LICENSE
+Requires-Dist: coverage; extra == "test"
+Requires-Dist: pip-tools; extra == "test"
+Requires-Dist: pytest>=7.2.0; extra == "test"
+Requires-Dist: pytest-mock; extra == "test"
+Requires-Dist: pytest-plus>=0.6.1; extra == "test"
# ansible-compat
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ansible-compat-4.1.10/src/ansible_compat.egg-info/SOURCES.txt
new/ansible-compat-4.1.11/src/ansible_compat.egg-info/SOURCES.txt
--- old/ansible-compat-4.1.10/src/ansible_compat.egg-info/SOURCES.txt
2023-09-06 14:56:06.000000000 +0200
+++ new/ansible-compat-4.1.11/src/ansible_compat.egg-info/SOURCES.txt
2024-01-10 13:53:09.000000000 +0100
@@ -78,6 +78,7 @@
test/collections/acme.goodies/roles/baz/molecule/deep_scenario/molecule.yml
test/collections/acme.goodies/roles/baz/tasks/main.yml
test/collections/acme.goodies/tests/requirements.yml
+test/collections/acme.minimal/galaxy.yml
test/roles/acme.missing_deps/requirements.yml
test/roles/acme.missing_deps/meta/main.yml
test/roles/acme.sample2/meta/main.yml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ansible-compat-4.1.10/src/ansible_compat.egg-info/requires.txt
new/ansible-compat-4.1.11/src/ansible_compat.egg-info/requires.txt
--- old/ansible-compat-4.1.10/src/ansible_compat.egg-info/requires.txt
2023-09-06 14:56:06.000000000 +0200
+++ new/ansible-compat-4.1.11/src/ansible_compat.egg-info/requires.txt
2024-01-10 13:53:09.000000000 +0100
@@ -17,4 +17,4 @@
pip-tools
pytest>=7.2.0
pytest-mock
-pytest-plus
+pytest-plus>=0.6.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ansible-compat-4.1.10/test/collections/acme.minimal/galaxy.yml
new/ansible-compat-4.1.11/test/collections/acme.minimal/galaxy.yml
--- old/ansible-compat-4.1.10/test/collections/acme.minimal/galaxy.yml
1970-01-01 01:00:00.000000000 +0100
+++ new/ansible-compat-4.1.11/test/collections/acme.minimal/galaxy.yml
2024-01-10 13:52:49.000000000 +0100
@@ -0,0 +1,30 @@
+name: minimal
+namespace: acme
+version: 1.0.0
+readme: README.md
+authors:
+ - Red Hat
+description: Sample collection to use with molecule
+build_ignore:
+ - "*.egg-info"
+ - .DS_Store
+ - .eggs
+ - .gitignore
+ - .mypy_cache
+ - .pytest_cache
+ - .stestr
+ - .stestr.conf
+ - .tox
+ - .vscode
+ - MANIFEST.in
+ - build
+ - dist
+ - doc
+ - report.html
+ - setup.cfg
+ - setup.py
+ - "tests/unit/*.*"
+ - README.rst
+ - tox.ini
+
+license_file: LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-4.1.10/test/test_runtime.py
new/ansible-compat-4.1.11/test/test_runtime.py
--- old/ansible-compat-4.1.10/test/test_runtime.py 2023-09-06
14:55:41.000000000 +0200
+++ new/ansible-compat-4.1.11/test/test_runtime.py 2024-01-10
13:52:49.000000000 +0100
@@ -24,6 +24,7 @@
from ansible_compat.runtime import (
CompletedProcess,
Runtime,
+ _get_galaxy_role_name,
is_url,
search_galaxy_paths,
)
@@ -239,10 +240,11 @@
os.chdir(old_pwd)
-def test_prerun_reqs_v1(caplog: pytest.LogCaptureFixture, runtime: Runtime) ->
None:
+def test_prerun_reqs_v1(caplog: pytest.LogCaptureFixture) -> None:
"""Checks that the linter can auto-install requirements v1 when found."""
+ runtime = Runtime(verbosity=1)
path = Path(__file__).parent.parent / "examples" / "reqs_v1"
- with cwd(path), caplog.at_level(logging.INFO):
+ with cwd(path):
runtime.prepare_environment()
assert any(
msg.startswith("Running ansible-galaxy role install") for msg in
caplog.messages
@@ -253,12 +255,12 @@
)
-def test_prerun_reqs_v2(caplog: pytest.LogCaptureFixture, runtime: Runtime) ->
None:
+def test_prerun_reqs_v2(caplog: pytest.LogCaptureFixture) -> None:
"""Checks that the linter can auto-install requirements v2 when found."""
+ runtime = Runtime(verbosity=1)
path = (Path(__file__).parent.parent / "examples" / "reqs_v2").resolve()
with cwd(path):
- with caplog.at_level(logging.INFO):
- runtime.prepare_environment()
+ runtime.prepare_environment()
assert any(
msg.startswith("Running ansible-galaxy role install")
for msg in caplog.messages
@@ -525,11 +527,10 @@
def test_install_galaxy_role_unlink(
- runtime_tmp: Runtime,
caplog: pytest.LogCaptureFixture,
) -> None:
"""Test ability to unlink incorrect symlinked roles."""
- caplog.set_level(logging.INFO)
+ runtime_tmp = Runtime(verbosity=1)
runtime_tmp.prepare_environment()
pathlib.Path(f"{runtime_tmp.cache_dir}/roles").mkdir(parents=True,
exist_ok=True)
pathlib.Path(f"{runtime_tmp.cache_dir}/roles/acme.get_rich").symlink_to("/dev/null")
@@ -861,3 +862,32 @@
def test_is_url(name: str, result: bool) -> None:
"""Checks functionality of is_url."""
assert is_url(name) == result
+
+
+def test_prepare_environment_repair_broken_symlink(
+ caplog: pytest.LogCaptureFixture,
+) -> None:
+ """Ensure we can deal with broken symlinks in collections."""
+ caplog.set_level(logging.INFO)
+ project_dir = Path(__file__).parent / "collections" / "acme.minimal"
+ runtime = Runtime(isolated=True, project_dir=project_dir)
+ assert runtime.cache_dir
+ acme = runtime.cache_dir / "collections" / "ansible_collections" / "acme"
+ acme.mkdir(parents=True, exist_ok=True)
+ goodies = acme / "minimal"
+ rmtree(goodies, ignore_errors=True)
+ goodies.unlink(missing_ok=True)
+ goodies.symlink_to("/invalid/destination")
+ runtime.prepare_environment(install_local=True)
+ assert any(
+ msg.startswith("Collection is symlinked, but not pointing to")
+ for msg in caplog.messages
+ )
+
+
+def test_get_galaxy_role_name_invalid() -> None:
+ """Verifies that function returns empty string on invalid input."""
+ galaxy_infos = {
+ "role_name": False, # <-- invalid data, should be string
+ }
+ assert _get_galaxy_role_name(galaxy_infos) == ""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-4.1.10/test/test_runtime_scan_path.py
new/ansible-compat-4.1.11/test/test_runtime_scan_path.py
--- old/ansible-compat-4.1.10/test/test_runtime_scan_path.py 2023-09-06
14:55:41.000000000 +0200
+++ new/ansible-compat-4.1.11/test/test_runtime_scan_path.py 2024-01-10
13:52:49.000000000 +0100
@@ -23,7 +23,6 @@
class ScanSysPath:
"""Parameters for scan tests."""
- isolated: bool
scan: bool
raises_not_found: bool
@@ -38,10 +37,8 @@
@pytest.mark.parametrize(
("param"),
(
- ScanSysPath(isolated=True, scan=True, raises_not_found=True),
- ScanSysPath(isolated=True, scan=False, raises_not_found=True),
- ScanSysPath(isolated=False, scan=True, raises_not_found=False),
- ScanSysPath(isolated=False, scan=False, raises_not_found=True),
+ ScanSysPath(scan=False, raises_not_found=True),
+ ScanSysPath(scan=True, raises_not_found=False),
),
ids=str,
)
@@ -87,7 +84,7 @@
f"""
import json;
from ansible_compat.runtime import Runtime;
- r = Runtime(isolated={param.isolated});
+ r = Runtime();
fv, cp = r.require_collection(name="{V2_COLLECTION_FULL_NAME}",
version="{V2_COLLECTION_VERSION}", install=False);
print(json.dumps({{"found_version": str(fv), "collection_path":
str(cp)}}));
""",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-4.1.10/tox.ini
new/ansible-compat-4.1.11/tox.ini
--- old/ansible-compat-4.1.10/tox.ini 2023-09-06 14:55:41.000000000 +0200
+++ new/ansible-compat-4.1.11/tox.ini 2024-01-10 13:52:49.000000000 +0100
@@ -4,8 +4,22 @@
lint
pkg
docs
- # matrix assumed current (implicit) is 2.13:
- py{39,310,311}{,-devel,-ansible212,-ansible213,-ansible214,-ansible215}
+ py
+ py-devel
+ py39-ansible212
+ py39-ansible213
+ py39-ansible214
+ py39-ansible215
+ py310-ansible212
+ py310-ansible213
+ py310-ansible214
+ py310-ansible215
+ py311-ansible212
+ py311-ansible213
+ py311-ansible214
+ py311-ansible215
+ py312-ansible216
+
isolated_build = true
skip_missing_interpreters = True
requires =
@@ -14,18 +28,20 @@
[testenv]
description =
- Run the tests with {basepython}
+ Run the tests
devel: ansible devel branch
ansible212: ansible-core 2.12
ansible213: ansible-core 2.13
ansible214: ansible-core 2.14
ansible215: ansible-core 2.15
+ ansible216: ansible-core 2.16
deps =
ansible212: ansible-core>=2.12,<2.13
ansible213: ansible-core>=2.13,<2.14
ansible214: ansible-core>=2.14,<2.15
ansible215: ansible-core>=2.15,<2.16
+ ansible216: ansible-core>=2.16,<2.17
devel: ansible-core @
git+https://github.com/ansible/ansible.git@c5d18c39d81e2b3b10856b2fb76747230e4fac4a
# GPLv3+
# avoid installing ansible-core on -devel envs:
@@ -83,7 +99,7 @@
[testenv:lint]
description = Run all linters
# locked basepython is needed because to keep constrains.txt predictable
-basepython = python3.9
+basepython = python3.10
deps =
pre-commit>=2.6.0
skip_install = true