File: tox.ini

package info (click to toggle)
python-mitogen 0.3.34-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,696 kB
  • sloc: python: 24,298; sh: 198; makefile: 74; perl: 19; ansic: 18
file content (188 lines) | stat: -rw-r--r-- 7,520 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# This configuration drives both CI and local development.
# I use this locally on Ubuntu 22.04, with the following additions
#
#   sudo add-apt-repository ppa:deadsnakes/ppa
#   sudo apt install lib{ldap2,sasl2,ssl}-dev python{2,2.7,3}{,-dev} python3.{7..13}{,-dev,-venv} python-is-python3 sshpass tox

# Py   A cntrllr  A target   coverage   Django     Jinja2     pip        psutil     pytest     tox        virtualenv
# ==== ========== ========== ========== ========== ========== ========== ========== ========== ========== ==========
# 2.4             <= 2.3³    <= 3.7.1   <= 1.3.7              <= 1.1     <= 2.1.3              <= 1.4     <= 1.8
# 2.5             <= 2.3³    <= 3.7.1   <= 1.4.22             <= 1.3.1   <= 2.1.3   <= 2.8.7   <= 1.6.1   <= 1.9.1
# 2.6  <= 2.6.20  <= 2.12    <= 4.5.4   <= 1.6.11  <= 2.10.3  <= 9.0.3   <= 5.9.0   <= 3.2.5   <= 2.9.1   <= 15.2.0
# 2.7  <= 2.11    <= 2.16    <= 5.5     <= 1.11.29 <= 2.11.3  <= 20                 <= 4.6.11  <= 3.28    <= 20.15²
# 3.5  <= 2.11    <= 2.15    <= 5.5     <= 2.2.28  <= 2.11.3  <= 20      <= 5.9.5   <= 6.1.0   <= 3.28    <= 20.15²
# 3.6  <= 2.11    <= 2.16    <= 6.2     <= 3.2.20  <= 3.0.3   <= 21                 <= 7.0.1   <= 3.28    <= 20.17²
# 3.7  <= 2.12    <= 2.17    <= 7.2.7   <= 3.2.20                                   <= 7.4.4   <= 4.8.0   <= 20.26.6²
# 3.8  <= 2.12    <= 2.19
# 3.9  <= 2.15
# 3.10 <= 2.17
# 3.11 <= 2.19
# 3.12            >= 2.13¹
#
# Notes
# 1. Python 3.12 on a target requires Ansible >= 6 (ansible-core >= 2.13).
#    Python 3.12 removed support for find_module(), replaced by find_spec().
#    In Ansible <= 4.x ansible.module_utils.six lacks find_spec().
#    https://github.com/ansible/ansible/commit/d6e28e68599e703c153914610152cf4492851eb3
#    In Ansible <= 5.x ansible.utils.collection_loader._AnsibleCollectionFinder
#    lacks find_spec(). https://github.com/ansible/ansible/pull/76225
#
#    Python 3.12 + get_uri requires Ansible >= 8 (ansible-core >= 2.15).
#    Python 3.12 removed deprecated httplib.HTTPSConnection() arguments.
#    https://github.com/ansible/ansible/pull/80751
#
# 2. Higher Virtualenv versions do not support this Python as *host* Python.
#    Virtualenv <= 20.21.1 supports creating virtualenvs with any *target* Python.
#    Virtualenv >= 20.22 supports creating virtualenvs with target Python >= 3.7.
#    https://virtualenv.pypa.io/en/latest/#compatibility
#
# 3. https://docs.ansible.com/ansible/2.7/dev_guide/developing_python_3.html#minimum-version-of-python-3-x-and-python-2-x

# Ansible            Dependency
# ================== ======================
# ansible <= 2.9
# ansible == 2.10.*  ansible-base ~= 2.10.0
# ansible == 3.*     ansible-base ~= 2.10.0
# ansible == 4.*     ansible-core ~= 2.11.0
# ansible == 5.*     ansible-core ~= 2.12.0
# ansible == 6.*     ansible-core ~= 2.13.0
# ansible == 7.x     ansible-core ~= 2.14.0
# ansible == 8.x     ansible-core ~= 2.15.0
# ansible == 9.x     ansible-core ~= 2.16.0
# ansible == 10.x    ansible-core ~= 2.17.0
# ansible == 11.x    ansible-core ~= 2.18.0
# ansible == 12.x    ansible-core ~= 2.19.0
# ansible == 13.x    ansible-core ~= 2.20.0

# See also
# - https://docs.ansible.com/ansible/devel/reference_appendices/release_and_maintenance.html#ansible-core-support-matrix

[tox]
envlist =
    init,
    py{27,36}-m_ans-ans{2.10,3,4}
    py{311}-m_ans-ans{2.10,3-5}
    py{313}-m_ans-ans{6-9}
    py{314}-m_ans-ans{10-12}
    py{27,36,314}-m_mtg
    report,

[testenv]
basepython =
    py26: python2.6
    py27: python2.7
    py35: python3.5
    py36: python3.6
    py37: python3.7
    py38: python3.8
    py39: python3.9
    py310: python3.10
    py311: python3.11
    py312: python3.12
    py313: python3.13
    py314: python3.14
deps =
    -r{toxinidir}/tests/requirements.txt
    m_ans: -r{toxinidir}/tests/ansible/requirements.txt
    ans2.10: ansible~=2.10.0
    ans3: ansible~=3.0
    ans4: ansible~=4.0
    ans5: ansible~=5.0
    # From Ansible 6 PyPI distributions include a wheel
    ans6: ansible~=6.0
    ans7: ansible~=7.0
    ans8: ansible~=8.0
    ans9: ansible~=9.0
    ans10: ansible~=10.0
    ans11: ansible~=11.0
    ans12: ansible~=12.0
    ans13: ansible~=13.0
install_command =
    python -m pip --no-python-version-warning --disable-pip-version-check install {opts} {packages}
commands_pre =
    mode_debops_common: {toxinidir}/.ci/debops_common_install.py
commands =
    m_ans: {toxinidir}/.ci/ansible_tests.py
    mode_debops_common: {toxinidir}/.ci/debops_common_tests.py
    m_lcl: {toxinidir}/.ci/localhost_ansible_tests.py
    m_mtg: {toxinidir}/.ci/mitogen_tests.py
passenv =
    ANSIBLE_*
    HOME
    MITOGEN_*
setenv =
    ANSIBLE_ROLES_PATH = {toxinidir}/tests/image_prep/roles
    # See also azure-pipelines.yml
    ANSIBLE_STRATEGY = mitogen_linear
    NOCOVERAGE_ERASE = 1
    NOCOVERAGE_REPORT = 1
    PIP_CONSTRAINT={toxinidir}/tests/constraints.txt
    # Superceded in Ansible >= 6 (ansible-core >= 2.13) by result_format=yaml
    # Deprecated in Ansible 12 (ansible-core 2.19)
    # Removed in Ansible 13 (ansible-core 2.20)
    ans{2.10,3,4,5}: ANSIBLE_STDOUT_CALLBACK=yaml
    # Print warning on the first occurence at each module:linenno in Mitogen. Available Python 2.7, 3.2+.
    PYTHONWARNINGS=default:::ansible_mitogen,default:::mitogen
    ans{2.10,3,4,5}: MITOGEN_TEST_DISTRO_SPECS=alma9-py3 centos6 centos8-py3 debian9 debian12-py3 ubuntu1604 ubuntu2204-py3
    # Ansible 6 - 8 (ansible-core 2.13 - 2.15) require Python 2.7 or >= 3.5 on targets
    ans{6,7,8}: MITOGEN_TEST_DISTRO_SPECS=alma9-py3 centos7 centos8-py3 debian9 debian10 debian12-py3 ubuntu1604 ubuntu1804 ubuntu2404-py3
    # Ansible 9 (ansible-core 2.16) requires Python 2.7 or >= 3.6 on targets
    ans9: MITOGEN_TEST_DISTRO_SPECS=alma9-py3 centos7 centos8-py3 debian9 debian10 debian12-py3 ubuntu1804 ubuntu2404-py3
    # Ansible 10 (ansible-core 2.17) requires Python >= 3.7 on targets
    ans10: MITOGEN_TEST_DISTRO_SPECS=alma9-py3 debian10-py3 debian12-py3 ubuntu2404-py3
    # Ansible 11 (ansible-core 2.18) requires Python >= 3.8 on targets
    ans11: MITOGEN_TEST_DISTRO_SPECS=alma9-py3 debian12-py3 ubuntu2004-py3
    ans12: MITOGEN_TEST_DISTRO_SPECS=alma9-py3 debian12-py3 ubuntu2404-py3
    # Ansible 13 (ansible-core 2.20) requires Python >= 3.9 on targets
    ans13: MITOGEN_TEST_DISTRO_SPECS=alma9-py3 debian12-py3 ubuntu2404-py3
    m_ans: MODE=ansible
    m_ans: ANSIBLE_SKIP_TAGS=resource_intensive
    m_ans: ANSIBLE_CALLBACK_WHITELIST=profile_tasks
    m_ans: ANSIBLE_CALLBACKS_ENABLED=profile_tasks
    mode_debops_common: MODE=debops_common
    m_lcl: ANSIBLE_SKIP_TAGS=issue_776,resource_intensive
    m_mtg: MODE=mitogen
    s_lin: ANSIBLE_STRATEGY=linear
allowlist_externals =
    # Added: Tox 3.18: Tox 4.0+
    *_install.py
    *_tests.py
    docker
    docker-credential-secretservice
    echo
    gpg2
    pass
whitelist_externals =
    # Deprecated: Tox 3.18+; Removed: Tox 4.0
    *_install.py
    *_tests.py
    docker
    docker-credential-secretservice
    echo
    gpg2
    pass

[testenv:init]
basepython = python3
commands =
    coverage erase
deps =
    coverage==4.5.4

[testenv:report]
basepython = python3
commands =
    coverage html
    echo "coverage report is at file://{toxinidir}/htmlcov/index.html"
deps =
    coverage==4.5.4
whitelist_externals =
    echo

[testenv:docs]
basepython = python3.8
changedir = docs
commands =
    sphinx-build -W -b html -d {envtmpdir}/doctrees . {envtmpdir}/html
deps =
    -r docs/requirements.txt