File: tox.ini

package info (click to toggle)
python-mitogen 0.3.26-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 6,456 kB
  • sloc: python: 22,134; sh: 183; makefile: 74; perl: 19; ansic: 18
file content (189 lines) | stat: -rw-r--r-- 7,475 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
189
# 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                        <= 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
# 3.8  <= 2.12
# 3.9  <= 2.15
# 3.10 <= 2.17
# 3.11
# 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 cannot run under this Python version. They can
#    still generate virtual environments for it.

# 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

# 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-12}
    py{27,36,313}-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
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.0b2
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)
    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
    # 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=centos7 centos8 debian9 debian10 debian11 ubuntu1604 ubuntu1804 ubuntu2004
    # Ansible 9 (ansible-core 2.16) requires Python 2.7 or >= 3.6 on targets
    ans9: MITOGEN_TEST_DISTRO_SPECS=centos7 centos8 debian9 debian10 debian11 ubuntu1804 ubuntu2004
    # Ansible 10 (ansible-core 2.17) requires Python >= 3.7 on targets
    ans10: MITOGEN_TEST_DISTRO_SPECS=debian10-py3 debian11-py3 ubuntu2004-py3
    # Ansible 11 (ansible-core 2.18) requires Python >= 3.8 on targets
    ans11: MITOGEN_TEST_DISTRO_SPECS=debian11-py3 ubuntu2004-py3
    ans12: MITOGEN_TEST_DISTRO_SPECS=debian11-py3 ubuntu2004-py3
    distros_centos: MITOGEN_TEST_DISTRO_SPECS=centos6 centos7 centos8
    distros_centos5: MITOGEN_TEST_DISTRO_SPECS=centos5
    distros_centos6: MITOGEN_TEST_DISTRO_SPECS=centos6
    distros_centos7: MITOGEN_TEST_DISTRO_SPECS=centos7
    distros_centos8: MITOGEN_TEST_DISTRO_SPECS=centos8
    distros_debian: MITOGEN_TEST_DISTRO_SPECS=debian9 debian10 debian11
    distros_debian9: MITOGEN_TEST_DISTRO_SPECS=debian9
    distros_debian10: MITOGEN_TEST_DISTRO_SPECS=debian10
    distros_debian11: MITOGEN_TEST_DISTRO_SPECS=debian11
    distros_ubuntu: MITOGEN_TEST_DISTRO_SPECS=ubuntu1604 ubuntu1804 ubuntu2004
    distros_ubuntu1604: MITOGEN_TEST_DISTRO_SPECS=ubuntu1604
    distros_ubuntu1804: MITOGEN_TEST_DISTRO_SPECS=ubuntu1804
    distros_ubuntu2004: MITOGEN_TEST_DISTRO_SPECS=ubuntu2004
    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