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 2023-02-07 18:49:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ansible-compat (Old)
and /work/SRC/openSUSE:Factory/.python-ansible-compat.new.4462 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ansible-compat"
Tue Feb 7 18:49:10 2023 rev:13 rq:1063493 version:3.0.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-ansible-compat/python-ansible-compat.changes
2022-12-19 14:08:00.894586851 +0100
+++
/work/SRC/openSUSE:Factory/.python-ansible-compat.new.4462/python-ansible-compat.changes
2023-02-07 18:49:19.155207188 +0100
@@ -1,0 +2,15 @@
+Tue Jan 31 15:05:36 UTC 2023 - Johannes Kastl <[email protected]>
+
+- update to 3.0.0:
+ * Major Changes
+ - Require ansible-core 2.12 or newer (#215) @ssbarnea
+ * Minor Changes
+ - Address ansible 2.15 compatibility related to AnsibleCollectionConfig
(#213) @ssbarnea
+ * Bugfixes
+ - Required subprocess-tee>=0.4.1 (#211) @ssbarnea
+- update to 3.0.1:
+ * Bugfixes
+ - Avoid double initialization of ansible runtime (#218) @ssbarnea
+ - Update README.md for 3.0.0 release (#217) @ianw
+
+-------------------------------------------------------------------
Old:
----
ansible-compat-2.2.7.tar.gz
New:
----
ansible-compat-3.0.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-ansible-compat.spec ++++++
--- /var/tmp/diff_new_pack.0NwkJy/_old 2023-02-07 18:49:19.779210542 +0100
+++ /var/tmp/diff_new_pack.0NwkJy/_new 2023-02-07 18:49:19.783210563 +0100
@@ -26,7 +26,7 @@
%endif
Name: python-ansible-compat
-Version: 2.2.7
+Version: 3.0.1
Release: 0
Summary: Compatibility shim for Ansible 2.9 and newer
License: MIT
@@ -44,13 +44,13 @@
BuildRequires: %{python_module flaky}
BuildRequires: %{python_module jsonschema >= 4.5.1}
BuildRequires: %{python_module pytest-mock}
-BuildRequires: %{python_module subprocess-tee}
+BuildRequires: %{python_module subprocess-tee >= 0.4.1}
BuildRequires: ansible
# /SECTION
BuildRequires: fdupes
BuildRequires: python-rpm-generators
%{?python_enable_dependency_generator}
-Requires: python-subprocess-tee
+Requires: python-subprocess-tee >= 0.4.1
BuildArch: noarch
%python_subpackages
++++++ ansible-compat-2.2.7.tar.gz -> ansible-compat-3.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/.github/workflows/tox.yml
new/ansible-compat-3.0.1/.github/workflows/tox.yml
--- old/ansible-compat-2.2.7/.github/workflows/tox.yml 2022-12-09
23:51:06.000000000 +0100
+++ new/ansible-compat-3.0.1/.github/workflows/tox.yml 2023-02-01
13:13:27.000000000 +0100
@@ -12,59 +12,34 @@
workflow_call:
jobs:
+ pre:
+ name: pre
+ runs-on: ubuntu-22.04
+ outputs:
+ matrix: ${{ steps.generate_matrix.outputs.matrix }}
+ steps:
+ - name: Determine matrix
+ id: generate_matrix
+ uses: coactions/dynamic-matrix@v1
+ with:
+ max_python: "3.11"
+ other_names: |
+ lint
+ docs
+ pkg
+ py38-ansible212
+ py38-ansible213
+ py39-ansible214
+ py311-devel
+ platforms: linux,macos
+ macos: minmax
build:
- name: ${{ matrix.name || matrix.tox_env }}
+ name: ${{ matrix.name }}
runs-on: ${{ matrix.os || 'ubuntu-22.04' }}
+ needs: pre
strategy:
fail-fast: false
- matrix:
- python-version:
- - 3.9
- os:
- - ubuntu-22.04
- tox_env:
- - lint
- - docs
- - pkg
- include:
- # keep list sorted as it determines UI order too
- # linux (py38 comes from matrix):
- - name: py38-ansible29
- tox_env: py38-ansible29
- python-version: 3.8
- - name: py38-ansible210
- tox_env: py38-ansible210
- python-version: 3.8
- - name: py38-ansible211
- tox_env: py38-ansible211
- python-version: 3.8
- - name: py38-ansible212
- tox_env: py38-ansible212
- python-version: 3.8
- - name: py38-ansible213
- tox_env: py38-ansible213
- python-version: 3.8
- - name: py39-ansible214
- tox_env: py39-ansible214
- python-version: 3.9
- - name: py39
- tox_env: py39,py39-devel
- python-version: 3.9
- - name: py310
- tox_env: py310,py310-devel
- python-version: "3.10"
- - name: py311
- tox_env: py311,py311-devel
- python-version: "3.11"
- # macos
- - name: py38@macos
- tox_env: py38,py38-ansible29 # 2.14(devel) does not support 3.8
- os: macos-12
- python-version: 3.8
- - name: py311@macos
- tox_env: py311,py311-devel
- os: macos-12
- python-version: "3.11"
+ matrix: ${{ fromJson(needs.pre.outputs.matrix) }}
env:
FORCE_COLOR: 1
@@ -74,10 +49,10 @@
with:
fetch-depth: 0 # needed by setuptools-scm
- - name: Set up Python ${{ matrix.python-version }}
+ - name: Set up Python ${{ matrix.python_version }}
uses: actions/setup-python@v4
with:
- python-version: ${{ matrix.python-version }}
+ python-version: ${{ matrix.python_version }}
- name: Pre-commit cache
uses: actions/cache@v3
@@ -95,10 +70,10 @@
run: python3 -m pip install --upgrade 'tox>=4.0.3'
- name: Initialize tox envs
- run: python -m tox --notest --skip-missing-interpreters false -vv -e
${{ matrix.tox_env }}
+ run: python -m tox --notest --skip-missing-interpreters false -vv -e
${{ matrix.passed_name }}
- name: Test with tox
- run: python -m tox -e ${{ matrix.tox_env }}
+ run: python -m tox -e ${{ matrix.passed_name }}
- name: Archive logs
uses: actions/upload-artifact@v3
@@ -107,10 +82,10 @@
path: .tox/**/log/
- name: Upload coverage data
- if: ${{ startsWith(matrix.tox_env, 'py') }}
+ if: ${{ startsWith(matrix.passed_name, 'py') }}
uses: codecov/codecov-action@v3
with:
- name: ${{ matrix.tox_env }}
+ name: ${{ matrix.passed_name }}
fail_ci_if_error: false # see
https://github.com/codecov/codecov-action/issues/598
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true # optional (default = false)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/.pre-commit-config.yaml
new/ansible-compat-3.0.1/.pre-commit-config.yaml
--- old/ansible-compat-2.2.7/.pre-commit-config.yaml 2022-12-09
23:51:06.000000000 +0100
+++ new/ansible-compat-3.0.1/.pre-commit-config.yaml 2023-02-01
13:13:27.000000000 +0100
@@ -42,19 +42,15 @@
rev: v2.2.2
hooks:
- id: codespell
- - repo: https://github.com/PyCQA/doc8
- rev: v1.0.0
- hooks:
- - id: doc8
- repo: https://github.com/adrienverge/yamllint.git
- rev: v1.28.0
+ rev: v1.29.0
hooks:
- id: yamllint
files: \.(yaml|yml)$
types: [file, yaml]
entry: yamllint --strict
- repo: https://github.com/PyCQA/isort
- rev: 5.10.1
+ rev: 5.12.0
hooks:
- id: isort
args:
@@ -83,16 +79,17 @@
# empty args needed in order to match mypy cli behavior
args: ["--strict"]
additional_dependencies:
+ - ansible-core
- cached_property
- packaging
- pytest
- pytest-mock
- - subprocess-tee>=0.3.5
+ - subprocess-tee>=0.4.1
- types-PyYAML
- types-pkg_resources
- types-jsonschema>=4.4.9
- repo: https://github.com/pycqa/pylint
- rev: v2.15.8
+ rev: v2.16.0b1
hooks:
- id: pylint
additional_dependencies:
@@ -107,7 +104,7 @@
name: Upgrade constraints files and requirements
files: ^(pyproject\.toml|requirements\.txt)$
language: python
- entry: python -m piptools compile --resolver=backtracking --upgrade -q
--extra docs --extra test --output-file=requirements.txt pyproject.toml
+ entry: python -m piptools compile --resolver=backtracking --upgrade -q
--extra docs --extra test --output-file=requirements.txt pyproject.toml
--unsafe-package ansible-core
pass_filenames: false
stages:
- manual
@@ -117,7 +114,7 @@
name: Check constraints files and requirements
files: ^(pyproject\.toml|requirements\.txt)$
language: python
- entry: python -m piptools compile --resolver=backtracking -q --extra
docs --extra test --output-file=requirements.txt pyproject.toml
+ entry: python -m piptools compile --resolver=backtracking -q --extra
docs --extra test --output-file=requirements.txt pyproject.toml
--unsafe-package ansible-core
pass_filenames: false
additional_dependencies:
- pip-tools>=6.11.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/PKG-INFO
new/ansible-compat-3.0.1/PKG-INFO
--- old/ansible-compat-2.2.7/PKG-INFO 2022-12-09 23:51:26.114431600 +0100
+++ new/ansible-compat-3.0.1/PKG-INFO 2023-02-01 13:13:45.635363300 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: ansible-compat
-Version: 2.2.7
+Version: 3.0.1
Summary: Ansible compatibility goodies
Author-email: Sorin Sbarnea <[email protected]>
Maintainer-email: Sorin Sbarnea <[email protected]>
@@ -42,6 +42,6 @@
[](https://codecov.io/github/ansible/ansible-compat?branch=main)
A python package contains functions that facilitate working with various
-versions of Ansible 2.9 and newer.
+versions of Ansible 2.12 and newer.
Documentation is available at
[ansible-compat.readthedocs.io](https://ansible-compat.readthedocs.io/en/latest/).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/README.md
new/ansible-compat-3.0.1/README.md
--- old/ansible-compat-2.2.7/README.md 2022-12-09 23:51:06.000000000 +0100
+++ new/ansible-compat-3.0.1/README.md 2023-02-01 13:13:27.000000000 +0100
@@ -6,6 +6,6 @@
[](https://codecov.io/github/ansible/ansible-compat?branch=main)
A python package contains functions that facilitate working with various
-versions of Ansible 2.9 and newer.
+versions of Ansible 2.12 and newer.
Documentation is available at
[ansible-compat.readthedocs.io](https://ansible-compat.readthedocs.io/en/latest/).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/docs/api.md
new/ansible-compat-3.0.1/docs/api.md
--- old/ansible-compat-2.2.7/docs/api.md 1970-01-01 01:00:00.000000000
+0100
+++ new/ansible-compat-3.0.1/docs/api.md 2023-02-01 13:13:27.000000000
+0100
@@ -0,0 +1,8 @@
+# API
+
+::: ansible_compat.config
+::: ansible_compat.errors
+::: ansible_compat.loaders
+::: ansible_compat.prerun
+::: ansible_compat.runtime
+::: ansible_compat.schema
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/docs/conf.py
new/ansible-compat-3.0.1/docs/conf.py
--- old/ansible-compat-2.2.7/docs/conf.py 2022-12-09 23:51:06.000000000
+0100
+++ new/ansible-compat-3.0.1/docs/conf.py 1970-01-01 01:00:00.000000000
+0100
@@ -1,80 +0,0 @@
-"""Configuration file for the Sphinx documentation builder."""
-# pylint: disable=invalid-name,redefined-builtin
-
-# http://www.sphinx-doc.org/en/master/config
-
-
-# -- Project information -----------------------------------------------------
-project = "ansible-compat"
-copyright = "2021, Red Hat Ansible"
-author = "Red Hat Ansible"
-
-# -- General configuration ---------------------------------------------------
-
-# If your documentation needs a minimal Sphinx version, state it here.
-#
-# needs_sphinx = '1.0'
-
-# Add any Sphinx extension module names here, as strings. They can be
-# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
-# ones.
-extensions = [
- "sphinx.ext.autodoc",
- "sphinx.ext.doctest",
- "sphinx.ext.intersphinx",
- "sphinx.ext.todo",
- "sphinx.ext.viewcode",
- "myst_parser",
-]
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ["_templates"]
-
-# The suffix(es) of source filenames.
-# You can specify multiple suffix as a list of string:
-#
-source_suffix = [".rst", ".md"]
-
-# The master toctree document.
-master_doc = "index"
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#
-# This is also used if you do content translation via gettext catalogs.
-# Usually you set "language" from the command line for these cases.
-language = "en"
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-# This pattern also affects html_static_path and html_extra_path .
-exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = "ansible"
-
-
-# -- Options for HTML output -------------------------------------------------
-
-# The theme to use for HTML and HTML Help pages. See the documentation for
-# a list of builtin themes.
-#
-html_theme = "sphinx_ansible_theme"
-
-
-# -- Options for HTMLHelp output ---------------------------------------------
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = "ansible-compat"
-
-
-intersphinx_mapping = {
- "python": ("https://docs.python.org/3", None),
- "packaging": ("https://packaging.pypa.io/en/latest/", None),
-}
-
-
-# -- Options for todo extension ----------------------------------------------
-
-# If true, `todo` and `todoList` produce output, else they produce nothing.
-todo_include_todos = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/docs/examples.md
new/ansible-compat-3.0.1/docs/examples.md
--- old/ansible-compat-2.2.7/docs/examples.md 2022-12-09 23:51:06.000000000
+0100
+++ new/ansible-compat-3.0.1/docs/examples.md 1970-01-01 01:00:00.000000000
+0100
@@ -1,17 +0,0 @@
-# Examples
-
-## Using Ansible runtime
-
-```{literalinclude} ../test/test_runtime_example.py
-:language: python
-```
-
-## Access to Ansible configuration
-
-As you may not want to parse `ansible-config dump` yourself, you
-can make use of a simple python class that facilitates access to
-it, using python data types.
-
-```{literalinclude} ../test/test_configuration_example.py
-:language: python
-```
Binary files old/ansible-compat-2.2.7/docs/images/favicon.ico and
new/ansible-compat-3.0.1/docs/images/favicon.ico differ
Binary files old/ansible-compat-2.2.7/docs/images/logo.png and
new/ansible-compat-3.0.1/docs/images/logo.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/docs/images/logo.svg
new/ansible-compat-3.0.1/docs/images/logo.svg
--- old/ansible-compat-2.2.7/docs/images/logo.svg 1970-01-01
01:00:00.000000000 +0100
+++ new/ansible-compat-3.0.1/docs/images/logo.svg 2023-02-01
13:13:27.000000000 +0100
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="100%" height="100%" viewBox="0 0 256 256" version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
xml:space="preserve" xmlns:serif="http://www.serif.com/"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
+ <g id="ansible-aap">
+ <path d="M128,0C198.645,0 256,57.355 256,128C256,198.645 198.645,256
128,256C57.355,256 0,198.645 0,128C0,57.355 57.355,0
128,0ZM189.094,178.686L138.002,55.958C136.786,52.714 133.677,50.416
130.163,50.551C126.513,50.416 123.269,52.714
122.053,55.958L66.23,190.446L85.423,190.446L107.455,135.029L173.55,188.418C175.442,190.31
178.011,191.392 180.579,191.527C185.58,191.662 189.77,187.742
189.905,182.606L189.905,182.336C189.77,181.119 189.499,179.903
189.094,178.686ZM130.298,78.125L163.413,159.899L113.402,120.431L130.298,78.125Z"
style="fill:white;"/>
+ </g>
+</svg>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/docs/index.md
new/ansible-compat-3.0.1/docs/index.md
--- old/ansible-compat-2.2.7/docs/index.md 2022-12-09 23:51:06.000000000
+0100
+++ new/ansible-compat-3.0.1/docs/index.md 2023-02-01 13:13:27.000000000
+0100
@@ -1,18 +1,17 @@
-# ansible-compat
+# Examples
-```{include} examples.md
+## Using Ansible runtime
+```python title="example.py"
+--8<-- "test/test_runtime_example.py"
```
-## API
+## Access to Ansible configuration
-```{eval-rst}
-.. toctree::
- :maxdepth: 2
- :caption: Contents:
+As you may not want to parse `ansible-config dump` yourself, you
+can make use of a simple python class that facilitates access to
+it, using python data types.
-.. automodule:: ansible_compat.runtime
-.. autoclass:: Runtime
- :members:
- :special-members: __init__
+```python
+--8<-- "test/test_configuration_example.py"
```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/mkdocs.yml
new/ansible-compat-3.0.1/mkdocs.yml
--- old/ansible-compat-2.2.7/mkdocs.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/ansible-compat-3.0.1/mkdocs.yml 2023-02-01 13:13:27.000000000 +0100
@@ -0,0 +1,103 @@
+site_name: Ansible Compat Library
+site_url: https://ansible-compat.readthedocs.io/
+repo_url: https://github.com/ansible/ansible-compat
+edit_uri: blob/main/docs/
+copyright: Copyright © 2023 Red Hat, Inc.
+
+strict: true
+watch:
+ - mkdocs.yml
+ - src
+ - docs
+
+theme:
+ name: "material"
+ logo: images/logo.svg
+ favicon: images/favicon.ico
+ features:
+ - content.code.copy
+ - content.action.edit
+ # - navigation.expand
+ - navigation.instant
+ - navigation.tracking
+ - navigation.sections
+ - navigation.indexes
+ - toc.integrate
+ palette:
+ - media: "(prefers-color-scheme: light)"
+ primary: teal
+ accent: blue
+ scheme: default
+ toggle:
+ icon: material/brightness-7
+ name: Switch to dark mode
+ - media: "(prefers-color-scheme: dark)"
+ scheme: slate
+ primary: teal
+ accent: blue
+ toggle:
+ icon: material/brightness-4
+ name: Switch to light mode
+extra:
+ social:
+ - icon: fontawesome/brands/github-alt
+ link: https://github.com/ansible/ansible-compat
+nav:
+ - examples: index.md
+ - api: api.md
+plugins:
+ - autorefs
+ - search
+ - social
+ - mkdocstrings:
+ handlers:
+ python:
+ import:
+ - https://docs.python.org/3/objects.inv
+ options:
+ # heading_level: 2
+ docstring_style: sphinx
+ docstring_options:
+ ignore_init_summary: yes
+ show_submodules: no
+ docstring_section_style: list
+ members_order: alphabetical
+ show_category_heading: no
+ # cannot merge init into class due to parse error...
+ # merge_init_into_class: yes
+ # separate_signature: yes
+ show_root_heading: yes
+ show_signature_annotations: yes
+ separate_signature: yes
+ # show_bases: false
+ # options:
+ # show_root_heading: true
+ # docstring_style: sphinx
+
+markdown_extensions:
+ - admonition
+ - def_list
+ - footnotes
+ - pymdownx.highlight:
+ anchor_linenums: true
+ - pymdownx.inlinehilite
+ - pymdownx.snippets:
+ check_paths: true
+ - pymdownx.superfences
+ - pymdownx.magiclink:
+ repo_url_shortener: true
+ repo_url_shorthand: true
+ social_url_shorthand: true
+ social_url_shortener: true
+ user: facelessuser
+ repo: pymdown-extensions
+ normalize_issue_symbols: true
+ - pymdownx.tabbed:
+ alternate_style: true
+ - toc:
+ permalink: true
+ - pymdownx.superfences:
+ custom_fences:
+ - name: mermaid
+ class: mermaid
+ format: !!python/name:pymdownx.superfences.fence_code_format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/pyproject.toml
new/ansible-compat-3.0.1/pyproject.toml
--- old/ansible-compat-2.2.7/pyproject.toml 2022-12-09 23:51:06.000000000
+0100
+++ new/ansible-compat-3.0.1/pyproject.toml 2023-02-01 13:13:27.000000000
+0100
@@ -37,9 +37,11 @@
]
keywords = ["ansible"]
dependencies = [
+ #
https://docs.ansible.com/ansible/latest/reference_appendices/release_and_maintenance.html
+ "ansible-core>=2.12",
"packaging",
"PyYAML",
- "subprocess-tee>=0.3.5",
+ "subprocess-tee>=0.4.1",
"jsonschema>=4.6.0",
]
@@ -51,10 +53,19 @@
[project.optional-dependencies]
docs = [
- "sphinx-autobuild>=2021.3.14",
- "sphinx>=5.3.0",
- "sphinx_ansible_theme",
- "myst_parser",
+ "argparse-manpage",
+ "black",
+ "cairosvg",
+ "markdown-include",
+ "mkdocs",
+ "mkdocs-exclude",
+ "mkdocs-material",
+ "mkdocs-material-extensions",
+ "mkdocstrings",
+ "mkdocstrings-python",
+ "pillow",
+ "pymdown-extensions",
+ "slugify",
]
test = ["coverage", "pip-tools", "pytest>=7.2.0", "pytest-mock", "pytest-plus"]
@@ -64,7 +75,9 @@
[tool.coverage.report]
exclude_lines = ["pragma: no cover", "if TYPE_CHECKING:"]
+fail_under = 93
skip_covered = true
+show_missing = true
[tool.mypy]
python_version = 3.8
@@ -79,6 +92,10 @@
# warn_unused_configs = True
exclude = "test/local-content"
+[[tool.mypy.overrides]]
+module = "ansible.*"
+ignore_missing_imports = true
+
[tool.isort]
profile = "black"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/readthedocs.yml
new/ansible-compat-3.0.1/readthedocs.yml
--- old/ansible-compat-2.2.7/readthedocs.yml 1970-01-01 01:00:00.000000000
+0100
+++ new/ansible-compat-3.0.1/readthedocs.yml 2023-02-01 13:13:27.000000000
+0100
@@ -0,0 +1,21 @@
+version: 2
+
+submodules:
+ include: all
+ recursive: true
+
+mkdocs:
+ fail_on_warning: true
+
+build:
+ os: ubuntu-22.04
+ tools:
+ python: "3.11"
+
+python:
+ system_packages: false
+ install:
+ - method: pip
+ path: .
+ extra_requirements:
+ - docs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/requirements.txt
new/ansible-compat-3.0.1/requirements.txt
--- old/ansible-compat-2.2.7/requirements.txt 2022-12-09 23:51:06.000000000
+0100
+++ new/ansible-compat-3.0.1/requirements.txt 2023-02-01 13:13:27.000000000
+0100
@@ -2,83 +2,142 @@
# This file is autogenerated by pip-compile with Python 3.9
# by the following command:
#
-# pip-compile --extra=docs --extra=test --output-file=requirements.txt
--resolver=backtracking pyproject.toml
+# pip-compile --extra=docs --extra=test --output-file=requirements.txt
--resolver=backtracking --unsafe-package=ansible-core pyproject.toml
#
-alabaster==0.7.12
- # via sphinx
-ansible-pygments==0.1.1
- # via sphinx-ansible-theme
+argparse-manpage==4
+ # via ansible-compat (pyproject.toml)
attrs==22.1.0
# via
# jsonschema
# pytest
-babel==2.11.0
- # via sphinx
+black==22.12.0
+ # via ansible-compat (pyproject.toml)
build==0.9.0
# via pip-tools
+cairocffi==1.4.0
+ # via cairosvg
+cairosvg==2.6.0
+ # via ansible-compat (pyproject.toml)
certifi==2022.12.7
# via requests
+cffi==1.15.1
+ # via
+ # cairocffi
+ # cryptography
charset-normalizer==2.1.1
# via requests
click==8.1.3
- # via pip-tools
+ # via
+ # black
+ # mkdocs
+ # pip-tools
colorama==0.4.6
- # via sphinx-autobuild
+ # via griffe
coverage==6.5.0
# via ansible-compat (pyproject.toml)
-docutils==0.17.1
- # via
- # myst-parser
- # sphinx
- # sphinx-rtd-theme
+cryptography==39.0.0
+ # via ansible-core
+cssselect2==0.7.0
+ # via cairosvg
+defusedxml==0.7.1
+ # via cairosvg
exceptiongroup==1.0.4
# via pytest
+ghp-import==2.1.0
+ # via mkdocs
+griffe==0.25.4
+ # via mkdocstrings-python
idna==3.4
# via requests
-imagesize==1.4.1
- # via sphinx
importlib-metadata==5.1.0
- # via sphinx
+ # via
+ # markdown
+ # mkdocs
iniconfig==1.1.1
# via pytest
jinja2==3.1.2
# via
- # myst-parser
- # sphinx
+ # ansible-core
+ # mkdocs
+ # mkdocs-material
+ # mkdocstrings
jsonschema==4.17.3
# via ansible-compat (pyproject.toml)
-livereload==2.6.3
- # via sphinx-autobuild
-markdown-it-py==2.1.0
+markdown==3.3.7
# via
- # mdit-py-plugins
- # myst-parser
+ # markdown-include
+ # mkdocs
+ # mkdocs-autorefs
+ # mkdocs-material
+ # mkdocstrings
+ # pymdown-extensions
+markdown-include==0.8.0
+ # via ansible-compat (pyproject.toml)
markupsafe==2.1.1
- # via jinja2
-mdit-py-plugins==0.3.3
- # via myst-parser
-mdurl==0.1.2
- # via markdown-it-py
+ # via
+ # jinja2
+ # mkdocstrings
+mergedeep==1.3.4
+ # via mkdocs
+mkdocs==1.4.2
+ # via
+ # ansible-compat (pyproject.toml)
+ # mkdocs-autorefs
+ # mkdocs-exclude
+ # mkdocs-material
+ # mkdocstrings
+mkdocs-autorefs==0.4.1
+ # via mkdocstrings
+mkdocs-exclude==1.0.2
+ # via ansible-compat (pyproject.toml)
+mkdocs-material==8.5.11
+ # via ansible-compat (pyproject.toml)
+mkdocs-material-extensions==1.1.1
+ # via
+ # ansible-compat (pyproject.toml)
+ # mkdocs-material
+mkdocstrings==0.20.0
+ # via
+ # ansible-compat (pyproject.toml)
+ # mkdocstrings-python
+mkdocstrings-python==0.8.3
+ # via ansible-compat (pyproject.toml)
more-itertools==9.0.0
# via pytest-plus
-myst-parser==0.18.1
- # via ansible-compat (pyproject.toml)
+mypy-extensions==0.4.3
+ # via black
packaging==22.0
# via
# ansible-compat (pyproject.toml)
+ # ansible-core
# build
+ # mkdocs
# pytest
- # sphinx
+pathspec==0.10.3
+ # via black
pep517==0.13.0
# via build
+pillow==9.4.0
+ # via
+ # ansible-compat (pyproject.toml)
+ # cairosvg
+pip==23.0
+ # via pip-tools
pip-tools==6.11.0
# via ansible-compat (pyproject.toml)
+platformdirs==2.6.2
+ # via black
pluggy==1.0.0
# via pytest
+pycparser==2.21
+ # via cffi
pygments==2.13.0
+ # via mkdocs-material
+pymdown-extensions==9.9.2
# via
- # ansible-pygments
- # sphinx
+ # ansible-compat (pyproject.toml)
+ # mkdocs-material
+ # mkdocstrings
pyrsistent==0.19.2
# via jsonschema
pytest==7.2.0
@@ -90,61 +149,52 @@
# via ansible-compat (pyproject.toml)
pytest-plus==0.2
# via ansible-compat (pyproject.toml)
-pytz==2022.6
- # via babel
+python-dateutil==2.8.2
+ # via ghp-import
pyyaml==6.0
# via
# ansible-compat (pyproject.toml)
- # myst-parser
+ # ansible-core
+ # mkdocs
+ # pyyaml-env-tag
+pyyaml-env-tag==0.1
+ # via mkdocs
requests==2.28.1
- # via sphinx
+ # via mkdocs-material
+resolvelib==0.8.1
+ # via ansible-core
+setuptools==67.0.0
+ # via pip-tools
six==1.16.0
- # via livereload
-snowballstemmer==2.2.0
- # via sphinx
-sphinx==5.3.0
- # via
- # ansible-compat (pyproject.toml)
- # myst-parser
- # sphinx-ansible-theme
- # sphinx-autobuild
- # sphinx-rtd-theme
-sphinx-ansible-theme==0.10.1
- # via ansible-compat (pyproject.toml)
-sphinx-autobuild==2021.3.14
- # via ansible-compat (pyproject.toml)
-sphinx-rtd-theme==1.1.1
- # via sphinx-ansible-theme
-sphinxcontrib-applehelp==1.0.2
- # via sphinx
-sphinxcontrib-devhelp==1.0.2
- # via sphinx
-sphinxcontrib-htmlhelp==2.0.0
- # via sphinx
-sphinxcontrib-jsmath==1.0.1
- # via sphinx
-sphinxcontrib-qthelp==1.0.3
- # via sphinx
-sphinxcontrib-serializinghtml==1.1.5
- # via sphinx
-subprocess-tee==0.4.0
+ # via python-dateutil
+slugify==0.0.1
# via ansible-compat (pyproject.toml)
+subprocess-tee==0.4.1
+ # via ansible-compat (pyproject.toml)
+tinycss2==1.2.1
+ # via
+ # cairosvg
+ # cssselect2
tomli==2.0.1
# via
+ # black
# build
# pep517
# pytest
-tornado==6.2
- # via livereload
typing-extensions==4.4.0
- # via myst-parser
+ # via black
urllib3==1.26.13
# via requests
+watchdog==2.2.1
+ # via mkdocs
+webencodings==0.5.1
+ # via
+ # cssselect2
+ # tinycss2
wheel==0.38.4
# via pip-tools
zipp==3.11.0
# via importlib-metadata
# The following packages are considered to be unsafe in a requirements file:
-# pip
-# setuptools
+# ansible-core
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/src/ansible_compat/__init__.py
new/ansible-compat-3.0.1/src/ansible_compat/__init__.py
--- old/ansible-compat-2.2.7/src/ansible_compat/__init__.py 2022-12-09
23:51:06.000000000 +0100
+++ new/ansible-compat-3.0.1/src/ansible_compat/__init__.py 2023-02-01
13:13:27.000000000 +0100
@@ -3,7 +3,7 @@
try:
__version__ = version("ansible-compat")
-except PackageNotFoundError: # pragma: no branch
+except PackageNotFoundError: # pragma: no cover
__version__ = "0.1.dev1"
__all__ = ["__version__"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/src/ansible_compat/config.py
new/ansible-compat-3.0.1/src/ansible_compat/config.py
--- old/ansible-compat-2.2.7/src/ansible_compat/config.py 2022-12-09
23:51:06.000000000 +0100
+++ new/ansible-compat-3.0.1/src/ansible_compat/config.py 2023-02-01
13:13:27.000000000 +0100
@@ -9,6 +9,7 @@
from packaging.version import Version
+from ansible_compat.constants import ANSIBLE_MIN_VERSION
from ansible_compat.errors import InvalidPrerequisiteError, MissingAnsibleError
from ansible_compat.ports import cache
@@ -22,15 +23,7 @@
# do not use lru_cache here, as environment can change between calls
def ansible_collections_path() -> str:
"""Return collection path variable for current version of Ansible."""
- # respect Ansible behavior, which is to load old name if present
- for env_var in ["ANSIBLE_COLLECTIONS_PATHS", "ANSIBLE_COLLECTIONS_PATH"]:
- if env_var in os.environ:
- return env_var
-
- # https://github.com/ansible/ansible/pull/70007
- if ansible_version() >= ansible_version("2.10.0.dev0"):
- return "ANSIBLE_COLLECTIONS_PATH"
- return "ANSIBLE_COLLECTIONS_PATHS"
+ return "ANSIBLE_COLLECTIONS_PATH"
def parse_ansible_version(stdout: str) -> Version:
@@ -43,11 +36,9 @@
)
if match:
return Version(match.group("version"))
- # ansible-base 2.10 and Ansible 2.9: 'ansible 2.x.y'
- match = re.search(r"^ansible (?P<version>[^\s]+)", stdout, re.MULTILINE)
- if match:
- return Version(match.group("version"))
- raise InvalidPrerequisiteError(f"Unable to parse ansible cli version:
{stdout}")
+ raise InvalidPrerequisiteError(
+ f"Unable to parse ansible cli version: {stdout}\nKeep in mind that
only {ANSIBLE_MIN_VERSION } or newer are supported."
+ )
@cache
@@ -440,7 +431,7 @@
return _dict[attr_name]
data = super().__getattribute__("data")
- if attr_name == "data":
+ if attr_name == "data": # pragma: no cover
return data
name = attr_name.upper()
@@ -469,3 +460,11 @@
name = item.lower()
kind = self.data[item].__class__.__name__
print(f"{name}: {kind}")
+
+
+__all__ = [
+ "ansible_collections_path",
+ "parse_ansible_version",
+ "ansible_version",
+ "AnsibleConfig",
+]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/src/ansible_compat/constants.py
new/ansible-compat-3.0.1/src/ansible_compat/constants.py
--- old/ansible-compat-2.2.7/src/ansible_compat/constants.py 2022-12-09
23:51:06.000000000 +0100
+++ new/ansible-compat-3.0.1/src/ansible_compat/constants.py 2023-02-01
13:13:27.000000000 +0100
@@ -2,7 +2,7 @@
# Minimal version of Ansible we support for runtime
-ANSIBLE_MIN_VERSION = "2.9"
+ANSIBLE_MIN_VERSION = "2.12"
# Based on
https://docs.ansible.com/ansible/latest/reference_appendices/config.html
ANSIBLE_DEFAULT_ROLES_PATH = (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/src/ansible_compat/ports.py
new/ansible-compat-3.0.1/src/ansible_compat/ports.py
--- old/ansible-compat-2.2.7/src/ansible_compat/ports.py 2022-12-09
23:51:06.000000000 +0100
+++ new/ansible-compat-3.0.1/src/ansible_compat/ports.py 2023-02-01
13:13:27.000000000 +0100
@@ -1,15 +1,10 @@
"""Portability helpers."""
import sys
-
-# Based on workarounds seen on https://github.com/python/mypy/issues/1362
-if sys.version_info >= (3, 8):
- from functools import cached_property
-else:
- from cached_property import cached_property
+from functools import cached_property
if sys.version_info >= (3, 9):
from functools import cache # pylint: disable=no-name-in-module
-else:
+else: # pragma: no cover
from functools import lru_cache
cache = lru_cache(maxsize=None)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/src/ansible_compat/runtime.py
new/ansible-compat-3.0.1/src/ansible_compat/runtime.py
--- old/ansible-compat-2.2.7/src/ansible_compat/runtime.py 2022-12-09
23:51:06.000000000 +0100
+++ new/ansible-compat-3.0.1/src/ansible_compat/runtime.py 2023-02-01
13:13:27.000000000 +0100
@@ -46,6 +46,9 @@
_version: Optional[packaging.version.Version] = None
cache_dir: Optional[str] = None
+ # Used to track if we have already initialized the Ansible runtime as
attempts
+ # to do it multiple tilmes will cause runtime warnings from within
ansible-core
+ initialized: bool = False
# pylint: disable=too-many-arguments
def __init__(
@@ -68,11 +71,11 @@
:param min_required_version: Minimal version of Ansible required. If
not found, a :class:`RuntimeError`
exception is raised.
- :param: require_module: If set, instantiation will fail if Ansible
- Python module is missing or is not matching
- the same version as the Ansible command line.
- That is useful for consumers that expect to
- also perform Python imports from Ansible.
+ :param require_module: If set, instantiation will fail if Ansible
+ Python module is missing or is not matching
+ the same version as the Ansible command line.
+ That is useful for consumers that expect to
+ also perform Python imports from Ansible.
:param max_retries: Number of times it should retry network operations.
Default is 0, no retries.
:param environ: Environment dictionary to use, if undefined
@@ -88,7 +91,7 @@
# As CryptographyDeprecationWarning is not a builtin, we cannot use
# PYTHONWARNINGS to ignore it using category but we can use message.
# https://stackoverflow.com/q/68251969/99834
- if "PYTHONWARNINGS" not in self.environ:
+ if "PYTHONWARNINGS" not in self.environ: # pragma: no cover
self.environ["PYTHONWARNINGS"] = "ignore:Blowfish has been
deprecated"
if isolated:
@@ -123,6 +126,29 @@
"indicates a broken execution environment."
)
+ # For ansible 2.15+ we need to initialize the plugin loader
+ # https://github.com/ansible/ansible-lint/issues/2945
+ if not Runtime.initialized: # noqa: F823
+ if self.version >= Version("2.15.0.dev0"):
+ # pylint: disable=import-outside-toplevel,no-name-in-module
+ from ansible.plugins.loader import init_plugin_loader
+
+ init_plugin_loader([])
+ else:
+ # noinspection PyProtectedMember
+ from ansible.utils.collection_loader._collection_finder import
( # pylint: disable=import-outside-toplevel
+ _AnsibleCollectionFinder,
+ )
+
+ # noinspection PyProtectedMember
+ # pylint: disable=protected-access
+ _AnsibleCollectionFinder(
+ paths=[
+
os.path.dirname(os.environ.get(ansible_collections_path(), "."))
+ ]
+ )._install() # pylint: disable=protected-access
+ Runtime.initialized = True
+
def clean(self) -> None:
"""Remove content of cache_dir."""
if self.cache_dir:
@@ -214,10 +240,7 @@
"install",
"-vvv", # this is needed to make ansible display important info
in case of failures
]
-
- # ansible-galaxy before 2.11 fails to upgrade collection unless --force
- # is present, newer versions do not need it
- if force or self.version_in_range(upper="2.11"):
+ if force:
cmd.append("--force")
# As ansible-galaxy install is not able to automatically determine
@@ -275,7 +298,9 @@
) -> None:
"""Install dependencies from a requirements.yml.
- param: offline: bypass installation, may fail if requirements are not
met
+ :param requirement: path to requirements.yml file
+ :param retry: retry network operations on failures
+ :param offline: bypass installation, may fail if requirements are not
met.
"""
if not os.path.exists(requirement):
return
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ansible-compat-2.2.7/src/ansible_compat.egg-info/PKG-INFO
new/ansible-compat-3.0.1/src/ansible_compat.egg-info/PKG-INFO
--- old/ansible-compat-2.2.7/src/ansible_compat.egg-info/PKG-INFO
2022-12-09 23:51:26.000000000 +0100
+++ new/ansible-compat-3.0.1/src/ansible_compat.egg-info/PKG-INFO
2023-02-01 13:13:45.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: ansible-compat
-Version: 2.2.7
+Version: 3.0.1
Summary: Ansible compatibility goodies
Author-email: Sorin Sbarnea <[email protected]>
Maintainer-email: Sorin Sbarnea <[email protected]>
@@ -42,6 +42,6 @@
[](https://codecov.io/github/ansible/ansible-compat?branch=main)
A python package contains functions that facilitate working with various
-versions of Ansible 2.9 and newer.
+versions of Ansible 2.12 and newer.
Documentation is available at
[ansible-compat.readthedocs.io](https://ansible-compat.readthedocs.io/en/latest/).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ansible-compat-2.2.7/src/ansible_compat.egg-info/SOURCES.txt
new/ansible-compat-3.0.1/src/ansible_compat.egg-info/SOURCES.txt
--- old/ansible-compat-2.2.7/src/ansible_compat.egg-info/SOURCES.txt
2022-12-09 23:51:26.000000000 +0100
+++ new/ansible-compat-3.0.1/src/ansible_compat.egg-info/SOURCES.txt
2023-02-01 13:13:45.000000000 +0100
@@ -6,7 +6,9 @@
LICENSE
README.md
codecov.yml
+mkdocs.yml
pyproject.toml
+readthedocs.yml
requirements.txt
tox.ini
.github/CODEOWNERS
@@ -17,9 +19,11 @@
.github/workflows/push.yml
.github/workflows/release.yml
.github/workflows/tox.yml
-docs/conf.py
-docs/examples.md
+docs/api.md
docs/index.md
+docs/images/favicon.ico
+docs/images/logo.png
+docs/images/logo.svg
examples/reqs_v1/requirements.yml
examples/reqs_v2/community-molecule-0.1.0.tar.gz
examples/reqs_v2/requirements.yml
@@ -43,6 +47,7 @@
test/test_api.py
test/test_config.py
test/test_configuration_example.py
+test/test_loaders.py
test/test_prerun.py
test/test_runtime.py
test/test_runtime_example.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ansible-compat-2.2.7/src/ansible_compat.egg-info/requires.txt
new/ansible-compat-3.0.1/src/ansible_compat.egg-info/requires.txt
--- old/ansible-compat-2.2.7/src/ansible_compat.egg-info/requires.txt
2022-12-09 23:51:26.000000000 +0100
+++ new/ansible-compat-3.0.1/src/ansible_compat.egg-info/requires.txt
2023-02-01 13:13:45.000000000 +0100
@@ -1,13 +1,23 @@
+ansible-core>=2.12
packaging
PyYAML
-subprocess-tee>=0.3.5
+subprocess-tee>=0.4.1
jsonschema>=4.6.0
[docs]
-sphinx-autobuild>=2021.3.14
-sphinx>=5.3.0
-sphinx_ansible_theme
-myst_parser
+argparse-manpage
+black
+cairosvg
+markdown-include
+mkdocs
+mkdocs-exclude
+mkdocs-material
+mkdocs-material-extensions
+mkdocstrings
+mkdocstrings-python
+pillow
+pymdown-extensions
+slugify
[test]
coverage
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/test/test_config.py
new/ansible-compat-3.0.1/test/test_config.py
--- old/ansible-compat-2.2.7/test/test_config.py 2022-12-09
23:51:06.000000000 +0100
+++ new/ansible-compat-3.0.1/test/test_config.py 2023-02-01
13:13:27.000000000 +0100
@@ -6,12 +6,7 @@
from _pytest.monkeypatch import MonkeyPatch
from packaging.version import Version
-from ansible_compat.config import (
- AnsibleConfig,
- ansible_collections_path,
- ansible_version,
- parse_ansible_version,
-)
+from ansible_compat.config import AnsibleConfig, ansible_version,
parse_ansible_version
from ansible_compat.errors import InvalidPrerequisiteError, MissingAnsibleError
@@ -30,6 +25,9 @@
assert isinstance(config.collections_path, list)
assert config.collections_paths == config.collections_path
+ # check if we can access the special data member
+ assert config.ACTION_WARNINGS == config.data["ACTION_WARNINGS"]
+
with pytest.raises(AttributeError):
print(config.THIS_DOES_NOT_EXIST)
@@ -52,30 +50,6 @@
assert new_config is not config
-def test_ansible_collections_path_210(monkeypatch: MonkeyPatch) -> None:
- """Checks that ansible_collections_path works as expected correctly."""
- monkeypatch.setenv("ANSIBLE_COLLECTIONS_PATHS", "foo")
- monkeypatch.delenv("ANSIBLE_COLLECTIONS_PATH", False)
- assert ansible_collections_path() == "ANSIBLE_COLLECTIONS_PATHS"
- monkeypatch.delenv("ANSIBLE_COLLECTIONS_PATHS", False)
- monkeypatch.setattr(
- "ansible_compat.config.ansible_version", lambda x="2.10.0": Version(x)
- )
- assert ansible_collections_path() == "ANSIBLE_COLLECTIONS_PATH"
-
-
-def test_ansible_collections_path_29(monkeypatch: MonkeyPatch) -> None:
- """Checks that ansible_collections_path works as expected correctly."""
- monkeypatch.delenv("ANSIBLE_COLLECTIONS_PATHS", False)
- monkeypatch.setenv("ANSIBLE_COLLECTIONS_PATH", "foo")
- assert ansible_collections_path() == "ANSIBLE_COLLECTIONS_PATH"
- monkeypatch.delenv("ANSIBLE_COLLECTIONS_PATH", False)
- monkeypatch.setattr(
- "ansible_compat.config.ansible_version", lambda x="2.9.0": Version(x)
- )
- assert ansible_collections_path() == "ANSIBLE_COLLECTIONS_PATHS"
-
-
def test_parse_ansible_version_fail() -> None:
"""Checks that parse_ansible_version raises an error on invalid input."""
with pytest.raises(
@@ -96,3 +70,13 @@
):
# bypassing lru cache
ansible_version.__wrapped__()
+
+
+def test_ansible_version() -> None:
+ """Validate ansible_version behavior."""
+ assert ansible_version() >= Version("1.0")
+
+
+def test_ansible_version_arg() -> None:
+ """Validate ansible_version behavior."""
+ assert ansible_version("2.0") >= Version("1.0")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/test/test_loaders.py
new/ansible-compat-3.0.1/test/test_loaders.py
--- old/ansible-compat-2.2.7/test/test_loaders.py 1970-01-01
01:00:00.000000000 +0100
+++ new/ansible-compat-3.0.1/test/test_loaders.py 2023-02-01
13:13:27.000000000 +0100
@@ -0,0 +1,7 @@
+"""Test for ansible_compat.loaders module."""
+from ansible_compat.loaders import colpath_from_path
+
+
+def test_colpath_from_path() -> None:
+ """Test colpath_from_path non existing path."""
+ assert colpath_from_path("/foo/bar/") is None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/test/test_runtime.py
new/ansible-compat-3.0.1/test/test_runtime.py
--- old/ansible-compat-2.2.7/test/test_runtime.py 2022-12-09
23:51:06.000000000 +0100
+++ new/ansible-compat-3.0.1/test/test_runtime.py 2023-02-01
13:13:27.000000000 +0100
@@ -66,6 +66,17 @@
def test_runtime_require_module() -> None:
"""Check that require_module successful pass."""
Runtime(require_module=True)
+ # Now we try to set the collection path, something to check if that is
+ # causing an exception, as 2.15 introduced new init code.
+ from ansible.utils.collection_loader import ( # pylint:
disable=import-outside-toplevel
+ AnsibleCollectionConfig,
+ )
+
+ AnsibleCollectionConfig.playbook_paths = "."
+ # Calling it again in order to see that it does not produce UserWarning:
AnsibleCollectionFinder has already been configured
+ # which is done by Ansible core 2.15+. We added special code inside Runtime
+ # that should avoid initializing twice and raise that warning.
+ Runtime(require_module=True)
def test_runtime_version_fail_module(mocker: MockerFixture) -> None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/test/test_schema.py
new/ansible-compat-3.0.1/test/test_schema.py
--- old/ansible-compat-2.2.7/test/test_schema.py 2022-12-09
23:51:06.000000000 +0100
+++ new/ansible-compat-3.0.1/test/test_schema.py 2023-02-01
13:13:27.000000000 +0100
@@ -5,7 +5,7 @@
import pytest
-from ansible_compat.schema import JsonSchemaError, validate
+from ansible_compat.schema import JsonSchemaError, json_path, validate
expected_results = [
JsonSchemaError(
@@ -61,3 +61,8 @@
assert (
found_errors_json == expected
), f"inconsistent returns: {found_errors_json}"
+
+
+def test_json_path() -> None:
+ """Test json_path function."""
+ assert json_path(["a", 1, "b"]) == "$.a[1].b"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ansible-compat-2.2.7/tox.ini
new/ansible-compat-3.0.1/tox.ini
--- old/ansible-compat-2.2.7/tox.ini 2022-12-09 23:51:06.000000000 +0100
+++ new/ansible-compat-3.0.1/tox.ini 2023-02-01 13:13:27.000000000 +0100
@@ -1,11 +1,11 @@
[tox]
-minversion = 4.0.0rc1
+minversion = 4.0.0
envlist =
lint
pkg
docs
# matrix assumed current (implicit) is 2.13:
- py38{,-ansible29}
+ py38-ansible212
py39{,-devel}
py310{,-devel}
py311{,-devel}
@@ -17,24 +17,18 @@
description =
Run the tests with {basepython}
devel: ansible devel branch
- ansible29: ansible 2.9
- ansible210: ansible-base 2.10
- ansible211: ansible-base 2.11
ansible212: ansible-core 2.12
ansible213: ansible-core 2.13
ansible214: ansible-core 2.14
deps =
- ansible29: ansible>=2.9,<2.10
- ansible210: ansible-base>=2.10,<2.11
- ansible211: ansible-core>=2.11,<2.12
ansible212: ansible-core>=2.12,<2.13
ansible213: ansible-core>=2.13,<2.14
- ansible214: ansible-core>=2.14.0b1,<2.15
+ ansible214: ansible-core>=2.14,<2.15
devel: ansible-core @ git+https://github.com/ansible/ansible.git # GPLv3+
- # avoid installing ansible-core on -devel, ansible29 and ansible210 envs:
- !devel-!ansible29-!ansible210: ansible-core
+ # avoid installing ansible-core on -devel envs:
+ !devel: ansible-core
--editable .[test]
commands =
@@ -59,12 +53,13 @@
LC_ALL
LC_CTYPE
setenv =
+ ANSIBLE_DEVEL_WARNING='false'
COVERAGE_FILE = {env:COVERAGE_FILE:{toxworkdir}/.coverage.{envname}}
PIP_DISABLE_PIP_VERSION_CHECK = 1
PIP_CONSTRAINT = {toxinidir}/requirements.txt
py38: PIP_CONSTRAINT = /dev/null
PRE_COMMIT_COLOR = always
- PYTEST_REQPASS = 78
+ PYTEST_REQPASS = 80
FORCE_COLOR = 1
allowlist_externals =
ansible
@@ -125,20 +120,15 @@
pip uninstall -y ansible-compat
[testenv:py{39,38,37,36}]
-description = Run the tests with {basepython} ansible-core 2.11+
+description = Run the tests with {basepython} ansible-core 2.12+
deps =
{[testenv]deps}
- ansible-core>=2.11
+ ansible-core>=2.12
[testenv:docs]
description = Build docs
commands =
- python -m sphinx \
- -a -n -W \
- --keep-going \
- -b html {tty:--color} \
- -d "{toxworkdir}/doctree" \
- docs/ "{toxworkdir}/html"
+ mkdocs {posargs:build} --strict
deps =
--editable .[docs]
passenv = *