ansible-core 2.16.0b1__py3-none-any.whl → 2.16.0b2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ansible-core might be problematic. Click here for more details.
- ansible/cli/galaxy.py +3 -0
- ansible/galaxy/role.py +29 -23
- ansible/module_utils/ansible_release.py +1 -1
- ansible/module_utils/urls.py +20 -3
- ansible/playbook/role_include.py +1 -1
- ansible/plugins/connection/winrm.py +40 -2
- ansible/release.py +1 -1
- ansible/vars/manager.py +12 -8
- {ansible_core-2.16.0b1.dist-info → ansible_core-2.16.0b2.dist-info}/METADATA +1 -1
- {ansible_core-2.16.0b1.dist-info → ansible_core-2.16.0b2.dist-info}/RECORD +27 -27
- ansible_test/_data/completion/docker.txt +9 -9
- ansible_test/_data/requirements/ansible-test.txt +1 -1
- ansible_test/_data/requirements/sanity.ansible-doc.txt +1 -1
- ansible_test/_data/requirements/sanity.changelog.txt +2 -2
- ansible_test/_data/requirements/sanity.mypy.txt +7 -7
- ansible_test/_data/requirements/sanity.pylint.txt +3 -7
- ansible_test/_internal/commands/sanity/pylint.py +0 -6
- ansible_test/_internal/coverage_util.py +1 -1
- ansible_test/_internal/host_profiles.py +2 -1
- ansible_test/_util/controller/sanity/pylint/plugins/deprecated.py +18 -5
- ansible_test/_util/controller/sanity/pylint/plugins/string_format.py +13 -2
- ansible_test/_util/controller/sanity/pylint/plugins/unwanted.py +7 -1
- {ansible_core-2.16.0b1.data → ansible_core-2.16.0b2.data}/scripts/ansible-test +0 -0
- {ansible_core-2.16.0b1.dist-info → ansible_core-2.16.0b2.dist-info}/COPYING +0 -0
- {ansible_core-2.16.0b1.dist-info → ansible_core-2.16.0b2.dist-info}/WHEEL +0 -0
- {ansible_core-2.16.0b1.dist-info → ansible_core-2.16.0b2.dist-info}/entry_points.txt +0 -0
- {ansible_core-2.16.0b1.dist-info → ansible_core-2.16.0b2.dist-info}/top_level.txt +0 -0
ansible/cli/galaxy.py
CHANGED
|
@@ -1265,6 +1265,9 @@ class GalaxyCLI(CLI):
|
|
|
1265
1265
|
|
|
1266
1266
|
if remote_data:
|
|
1267
1267
|
role_info.update(remote_data)
|
|
1268
|
+
else:
|
|
1269
|
+
data = u"- the role %s was not found" % role
|
|
1270
|
+
break
|
|
1268
1271
|
|
|
1269
1272
|
elif context.CLIARGS['offline'] and not gr._exists:
|
|
1270
1273
|
data = u"- the role %s was not found" % role
|
ansible/galaxy/role.py
CHANGED
|
@@ -394,30 +394,36 @@ class GalaxyRole(object):
|
|
|
394
394
|
# bits that might be in the file for security purposes
|
|
395
395
|
# and drop any containing directory, as mentioned above
|
|
396
396
|
if member.isreg() or member.issym():
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
n_final_parts = []
|
|
401
|
-
for n_part in n_parts:
|
|
402
|
-
# TODO if the condition triggers it produces a broken installation.
|
|
403
|
-
# It will create the parent directory as an empty file and will
|
|
404
|
-
# explode if the directory contains valid files.
|
|
405
|
-
# Leaving this as is since the whole module needs a rewrite.
|
|
406
|
-
#
|
|
407
|
-
# Check if we have any files with illegal names,
|
|
408
|
-
# and display a warning if so. This could help users
|
|
409
|
-
# to debug a broken installation.
|
|
410
|
-
if n_part == '..':
|
|
411
|
-
display.warning(f"Illegal filename '{n_part}': '..' is not allowed")
|
|
397
|
+
for attr in ('name', 'linkname'):
|
|
398
|
+
attr_value = getattr(member, attr, None)
|
|
399
|
+
if not attr_value:
|
|
412
400
|
continue
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
401
|
+
n_attr_value = to_native(attr_value)
|
|
402
|
+
n_archive_parent_dir = to_native(archive_parent_dir)
|
|
403
|
+
n_parts = n_attr_value.replace(n_archive_parent_dir, "", 1).split(os.sep)
|
|
404
|
+
n_final_parts = []
|
|
405
|
+
for n_part in n_parts:
|
|
406
|
+
# TODO if the condition triggers it produces a broken installation.
|
|
407
|
+
# It will create the parent directory as an empty file and will
|
|
408
|
+
# explode if the directory contains valid files.
|
|
409
|
+
# Leaving this as is since the whole module needs a rewrite.
|
|
410
|
+
#
|
|
411
|
+
# Check if we have any files with illegal names,
|
|
412
|
+
# and display a warning if so. This could help users
|
|
413
|
+
# to debug a broken installation.
|
|
414
|
+
if not n_part:
|
|
415
|
+
continue
|
|
416
|
+
if n_part == '..':
|
|
417
|
+
display.warning(f"Illegal filename '{n_part}': '..' is not allowed")
|
|
418
|
+
continue
|
|
419
|
+
if n_part.startswith('~'):
|
|
420
|
+
display.warning(f"Illegal filename '{n_part}': names cannot start with '~'")
|
|
421
|
+
continue
|
|
422
|
+
if '$' in n_part:
|
|
423
|
+
display.warning(f"Illegal filename '{n_part}': names cannot contain '$'")
|
|
424
|
+
continue
|
|
425
|
+
n_final_parts.append(n_part)
|
|
426
|
+
setattr(member, attr, os.path.join(*n_final_parts))
|
|
421
427
|
|
|
422
428
|
if _check_working_data_filter():
|
|
423
429
|
# deprecated: description='extract fallback without filter' python_version='3.11'
|
ansible/module_utils/urls.py
CHANGED
|
@@ -129,13 +129,13 @@ if not HAS_SSLCONTEXT:
|
|
|
129
129
|
try:
|
|
130
130
|
from urllib3.contrib.pyopenssl import PyOpenSSLContext
|
|
131
131
|
except Exception:
|
|
132
|
-
from requests.packages.urllib3.contrib.pyopenssl import PyOpenSSLContext
|
|
132
|
+
from requests.packages.urllib3.contrib.pyopenssl import PyOpenSSLContext # type: ignore[no-redef]
|
|
133
133
|
HAS_URLLIB3_PYOPENSSLCONTEXT = True
|
|
134
134
|
except Exception:
|
|
135
135
|
# urllib3<1.15,>=1.6
|
|
136
136
|
try:
|
|
137
137
|
try:
|
|
138
|
-
from urllib3.contrib.pyopenssl import ssl_wrap_socket
|
|
138
|
+
from urllib3.contrib.pyopenssl import ssl_wrap_socket # type: ignore[attr-defined]
|
|
139
139
|
except Exception:
|
|
140
140
|
from requests.packages.urllib3.contrib.pyopenssl import ssl_wrap_socket
|
|
141
141
|
HAS_URLLIB3_SSL_WRAP_SOCKET = True
|
|
@@ -771,6 +771,18 @@ def extract_pem_certs(b_data):
|
|
|
771
771
|
yield match.group(0)
|
|
772
772
|
|
|
773
773
|
|
|
774
|
+
def _py2_get_param(headers, param, header='content-type'):
|
|
775
|
+
m = httplib.HTTPMessage(io.StringIO())
|
|
776
|
+
cd = headers.getheader(header) or ''
|
|
777
|
+
try:
|
|
778
|
+
m.plisttext = cd[cd.index(';'):]
|
|
779
|
+
m.parseplist()
|
|
780
|
+
except ValueError:
|
|
781
|
+
return None
|
|
782
|
+
|
|
783
|
+
return m.getparam(param)
|
|
784
|
+
|
|
785
|
+
|
|
774
786
|
def get_response_filename(response):
|
|
775
787
|
url = response.geturl()
|
|
776
788
|
path = urlparse(url)[2]
|
|
@@ -778,7 +790,12 @@ def get_response_filename(response):
|
|
|
778
790
|
if filename:
|
|
779
791
|
filename = unquote(filename)
|
|
780
792
|
|
|
781
|
-
|
|
793
|
+
if PY2:
|
|
794
|
+
get_param = functools.partial(_py2_get_param, response.headers)
|
|
795
|
+
else:
|
|
796
|
+
get_param = response.headers.get_param
|
|
797
|
+
|
|
798
|
+
return get_param('filename', header='content-disposition') or filename
|
|
782
799
|
|
|
783
800
|
|
|
784
801
|
def parse_content_type(response):
|
ansible/playbook/role_include.py
CHANGED
|
@@ -49,10 +49,10 @@ class IncludeRole(TaskInclude):
|
|
|
49
49
|
|
|
50
50
|
# =================================================================================
|
|
51
51
|
# ATTRIBUTES
|
|
52
|
+
public = NonInheritableFieldAttribute(isa='bool', default=None, private=False, always_post_validate=True)
|
|
52
53
|
|
|
53
54
|
# private as this is a 'module options' vs a task property
|
|
54
55
|
allow_duplicates = NonInheritableFieldAttribute(isa='bool', default=True, private=True, always_post_validate=True)
|
|
55
|
-
public = NonInheritableFieldAttribute(isa='bool', default=False, private=True, always_post_validate=True)
|
|
56
56
|
rolespec_validate = NonInheritableFieldAttribute(isa='bool', default=True, private=True, always_post_validate=True)
|
|
57
57
|
|
|
58
58
|
def __init__(self, block=None, role=None, task_include=None):
|
|
@@ -170,6 +170,7 @@ import json
|
|
|
170
170
|
import tempfile
|
|
171
171
|
import shlex
|
|
172
172
|
import subprocess
|
|
173
|
+
import time
|
|
173
174
|
import typing as t
|
|
174
175
|
|
|
175
176
|
from inspect import getfullargspec
|
|
@@ -199,6 +200,7 @@ from ansible.utils.display import Display
|
|
|
199
200
|
try:
|
|
200
201
|
import winrm
|
|
201
202
|
from winrm import Response
|
|
203
|
+
from winrm.exceptions import WinRMError, WinRMOperationTimeoutError
|
|
202
204
|
from winrm.protocol import Protocol
|
|
203
205
|
import requests.exceptions
|
|
204
206
|
HAS_WINRM = True
|
|
@@ -494,6 +496,43 @@ class Connection(ConnectionBase):
|
|
|
494
496
|
else:
|
|
495
497
|
raise AnsibleError('No transport found for WinRM connection')
|
|
496
498
|
|
|
499
|
+
def _winrm_write_stdin(self, command_id: str, stdin_iterator: t.Iterable[tuple[bytes, bool]]) -> None:
|
|
500
|
+
for (data, is_last) in stdin_iterator:
|
|
501
|
+
for attempt in range(1, 4):
|
|
502
|
+
try:
|
|
503
|
+
self._winrm_send_input(self.protocol, self.shell_id, command_id, data, eof=is_last)
|
|
504
|
+
|
|
505
|
+
except WinRMOperationTimeoutError:
|
|
506
|
+
# A WSMan OperationTimeout can be received for a Send
|
|
507
|
+
# operation when the server is under severe load. On manual
|
|
508
|
+
# testing the input is still processed and it's safe to
|
|
509
|
+
# continue. As the calling method still tries to wait for
|
|
510
|
+
# the proc to end if this failed it shouldn't hurt to just
|
|
511
|
+
# treat this as a warning.
|
|
512
|
+
display.warning(
|
|
513
|
+
"WSMan OperationTimeout during send input, attempting to continue. "
|
|
514
|
+
"If this continues to occur, try increasing the connection_timeout "
|
|
515
|
+
"value for this host."
|
|
516
|
+
)
|
|
517
|
+
if not is_last:
|
|
518
|
+
time.sleep(5)
|
|
519
|
+
|
|
520
|
+
except WinRMError as e:
|
|
521
|
+
# Error 170 == ERROR_BUSY. This could be the result of a
|
|
522
|
+
# timed out Send from above still being processed on the
|
|
523
|
+
# server. Add a 5 second delay and try up to 3 times before
|
|
524
|
+
# fully giving up.
|
|
525
|
+
# pywinrm does not expose the internal WSMan fault details
|
|
526
|
+
# through an actual object but embeds it as a repr.
|
|
527
|
+
if attempt == 3 or "'wsmanfault_code': '170'" not in str(e):
|
|
528
|
+
raise
|
|
529
|
+
|
|
530
|
+
display.warning(f"WSMan send failed on attempt {attempt} as the command is busy, trying to send data again")
|
|
531
|
+
time.sleep(5)
|
|
532
|
+
continue
|
|
533
|
+
|
|
534
|
+
break
|
|
535
|
+
|
|
497
536
|
def _winrm_send_input(self, protocol: winrm.Protocol, shell_id: str, command_id: str, stdin: bytes, eof: bool = False) -> None:
|
|
498
537
|
rq = {'env:Envelope': protocol._get_soap_header(
|
|
499
538
|
resource_uri='http://schemas.microsoft.com/wbem/wsman/1/windows/shell/cmd',
|
|
@@ -529,8 +568,7 @@ class Connection(ConnectionBase):
|
|
|
529
568
|
|
|
530
569
|
try:
|
|
531
570
|
if stdin_iterator:
|
|
532
|
-
|
|
533
|
-
self._winrm_send_input(self.protocol, self.shell_id, command_id, data, eof=is_last)
|
|
571
|
+
self._winrm_write_stdin(command_id, stdin_iterator)
|
|
534
572
|
|
|
535
573
|
except Exception as ex:
|
|
536
574
|
display.warning("ERROR DURING WINRM SEND INPUT - attempting to recover: %s %s"
|
ansible/release.py
CHANGED
ansible/vars/manager.py
CHANGED
|
@@ -197,13 +197,13 @@ class VariableManager:
|
|
|
197
197
|
|
|
198
198
|
if play:
|
|
199
199
|
if not C.DEFAULT_PRIVATE_ROLE_VARS:
|
|
200
|
-
# first we compile any vars specified in defaults/main.yml
|
|
201
|
-
# for all roles within the specified play
|
|
202
200
|
for role in play.get_roles():
|
|
203
|
-
# role
|
|
204
|
-
|
|
201
|
+
# role is public and
|
|
202
|
+
# either static or dynamic and completed
|
|
203
|
+
# role is not set
|
|
204
|
+
# use config option as default
|
|
205
|
+
if role.static or role.public and role._completed.get(host.name, False):
|
|
205
206
|
all_vars = _combine_and_track(all_vars, role.get_default_vars(), "role '%s' defaults" % role.name)
|
|
206
|
-
|
|
207
207
|
if task:
|
|
208
208
|
# set basedirs
|
|
209
209
|
if C.PLAYBOOK_VARS_ROOT == 'all': # should be default
|
|
@@ -386,11 +386,15 @@ class VariableManager:
|
|
|
386
386
|
raise AnsibleParserError("Error while reading vars files - please supply a list of file names. "
|
|
387
387
|
"Got '%s' of type %s" % (vars_files, type(vars_files)))
|
|
388
388
|
|
|
389
|
-
#
|
|
390
|
-
# unless the user has disabled this
|
|
389
|
+
# We now merge in all exported vars from all roles in the play,
|
|
390
|
+
# unless the user has disabled this
|
|
391
|
+
# role is public and
|
|
392
|
+
# either static or dynamic and completed
|
|
393
|
+
# role is not set
|
|
394
|
+
# use config option as default
|
|
391
395
|
if not C.DEFAULT_PRIVATE_ROLE_VARS:
|
|
392
396
|
for role in play.get_roles():
|
|
393
|
-
if
|
|
397
|
+
if role.static or role.public and role._completed.get(host.name, False):
|
|
394
398
|
all_vars = _combine_and_track(all_vars, role.get_vars(include_params=False, only_exports=True), "role '%s' exported vars" % role.name)
|
|
395
399
|
|
|
396
400
|
# next, we merge in the vars from the role, which will specifically
|
|
@@ -3,14 +3,14 @@ ansible/__main__.py,sha256=IvyRvY64pT0on94qCLibxgDJ0-7_2CRoaZ5kfGOl54Q,1395
|
|
|
3
3
|
ansible/constants.py,sha256=guPiQ4Iqm5M9zPArRR9rT5CTzDbEhIBEgqCvVLqYecs,8154
|
|
4
4
|
ansible/context.py,sha256=OzSlaA_GgGRyyf5I209sy19_eGOX6HXn441W9w_FcvU,2018
|
|
5
5
|
ansible/keyword_desc.yml,sha256=FYY0Ld1Xc3AxJ_Tefz78kRSYzIKGS8qcPtVk370J118,7367
|
|
6
|
-
ansible/release.py,sha256=
|
|
6
|
+
ansible/release.py,sha256=E6iry-iqZJmBZsQtRfjp7ohkP6-mxyEI0s28EgJhcQ0,917
|
|
7
7
|
ansible/_vendor/__init__.py,sha256=wJRKH7kI9OzYVY9hgSchOsTNTmTnugpPLGYj9Y5akX0,2086
|
|
8
8
|
ansible/cli/__init__.py,sha256=6jaX6SS-UBM7pjiUlDsC0y07k3klUjxTR5ZEnDiCmP8,28706
|
|
9
9
|
ansible/cli/adhoc.py,sha256=suzo4QnsaMjJBk5JlAUd-cpQLs8Ckj6A55CiG9Y8Gns,8247
|
|
10
10
|
ansible/cli/config.py,sha256=oN_pPQhWoBpNAfNLodncAVUd6-U8N4-ZTk83t5RoHFU,22165
|
|
11
11
|
ansible/cli/console.py,sha256=Y3KVFNSEwHLeTJ2aBXv-sDAlg8PY9A-LnqyvrJuLPpI,22040
|
|
12
12
|
ansible/cli/doc.py,sha256=t4KfhTv96R0bVLGm7FZE6cyiTSYxNfGqjh9aKLP4XQY,64080
|
|
13
|
-
ansible/cli/galaxy.py,sha256=
|
|
13
|
+
ansible/cli/galaxy.py,sha256=qgR-BEaixaxFkPN8bsHl0FCgCwIHsil33ZciGab4FFw,94843
|
|
14
14
|
ansible/cli/inventory.py,sha256=tUwrybYErE1eQxJTPU7nWokKgB6z1Mb-FYdSq8fRykU,17708
|
|
15
15
|
ansible/cli/playbook.py,sha256=1CmwCE3K1eH_UFebIp0M59r4LPDJ5KMzCLxxM41lst0,10918
|
|
16
16
|
ansible/cli/pull.py,sha256=0u-irsK2E4VGxV5F44W9Bk3IUHxHPabvcqoBAm8-7e8,17023
|
|
@@ -57,7 +57,7 @@ ansible/executor/process/__init__.py,sha256=1lMXN1i2fFqslda4BmeI5tpYMFP95D5Wpr1A
|
|
|
57
57
|
ansible/executor/process/worker.py,sha256=rTLNZeKhW91zlx9izZlPkAn6afsSj6rdKm1xIj78LGI,10125
|
|
58
58
|
ansible/galaxy/__init__.py,sha256=E80kenF78N0K9cKZybnGMMjgG_kFlITuhxFf8gyBfAU,2550
|
|
59
59
|
ansible/galaxy/api.py,sha256=toG5c23r2kLy2MuR41BpMF7f0ObEnTOgwOIJYEraSus,39922
|
|
60
|
-
ansible/galaxy/role.py,sha256=
|
|
60
|
+
ansible/galaxy/role.py,sha256=xhY4fXkgQ9cb4REE2eaRPT51GZ9DO-Mw_rMAdkIw6qY,21658
|
|
61
61
|
ansible/galaxy/token.py,sha256=X21edFoqAq4DyA6Xm8MaVu-PNYhVjw-yWkFRxRdWZOw,6184
|
|
62
62
|
ansible/galaxy/user_agent.py,sha256=x7cJzzpnTngHcwqSUd2hg0i28Dv0tbAyBdke5CSiNhM,813
|
|
63
63
|
ansible/galaxy/collection/__init__.py,sha256=4tljAb0RxxglfHDbQpWZfHkYc__KsogyETCDTCW3BdI,78192
|
|
@@ -140,7 +140,7 @@ ansible/inventory/host.py,sha256=wXJp6kpSaZtDr4JNsgdAuhi5MzQ9LTQzaAH10zoVbIA,505
|
|
|
140
140
|
ansible/inventory/manager.py,sha256=ZwmEF3E2BKOJi9SMVQNz83A2f3raQn6Nyo-rfSNMn2k,29507
|
|
141
141
|
ansible/module_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
142
142
|
ansible/module_utils/_text.py,sha256=F_YfeaxhwmTI16HICAzQS9ZmlKgBDdQ4mqR-Kh--okg,597
|
|
143
|
-
ansible/module_utils/ansible_release.py,sha256=
|
|
143
|
+
ansible/module_utils/ansible_release.py,sha256=E6iry-iqZJmBZsQtRfjp7ohkP6-mxyEI0s28EgJhcQ0,917
|
|
144
144
|
ansible/module_utils/api.py,sha256=BTo7stVOANbtd-ngZslaqx70r9t5gfvo44cKyu5SFjU,5837
|
|
145
145
|
ansible/module_utils/basic.py,sha256=dGDLkVYbvdWqGJv0avFqvA8Q3HalJtDMvunYy-X8zTs,87138
|
|
146
146
|
ansible/module_utils/connection.py,sha256=9Us-d-y1bhC3zNnziQxvYNT4umIaN0OYv8zPaUSdEf0,8447
|
|
@@ -149,7 +149,7 @@ ansible/module_utils/json_utils.py,sha256=IR_bSwrYK1Ie36dCQSHyN4mahkrZkzIIkH3Ddw
|
|
|
149
149
|
ansible/module_utils/pycompat24.py,sha256=o0rCcuNi6H5_n926Meo7MIW2HBYCd9-v7GL5FRmbDhs,2269
|
|
150
150
|
ansible/module_utils/service.py,sha256=ZhY36fHaGwaPLSbuZnOIwaKIpPVbaOMq6xzqweW_Jsw,9304
|
|
151
151
|
ansible/module_utils/splitter.py,sha256=XdRIlHGnD45f85HK3CNWlDCkdULKcP-lHtcmKbSfnmI,9522
|
|
152
|
-
ansible/module_utils/urls.py,sha256=
|
|
152
|
+
ansible/module_utils/urls.py,sha256=0-PZLY9RBMZDciYouFCYZGIa9OgiUhIHreIqMhOa_TA,86168
|
|
153
153
|
ansible/module_utils/yumdnf.py,sha256=Itgdq7CSIyAOKQVJEspJA9iKtDnBxZOFQm8JJ4a3KOY,7713
|
|
154
154
|
ansible/module_utils/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
155
155
|
ansible/module_utils/common/_collections_compat.py,sha256=BcWZGbHoKICMJWrj7aqXlTYM7cH5sNXnLqqRQw6hOL8,981
|
|
@@ -381,7 +381,7 @@ ansible/playbook/notifiable.py,sha256=V6cvqy4H1Ti_kmTEw1YOgZOAulI9WgAAnfHeLOGyB5
|
|
|
381
381
|
ansible/playbook/play.py,sha256=5kz2BvfCbnopMnATTbqjFP4NDMhbYXZ8loxc6iuq6Aw,16343
|
|
382
382
|
ansible/playbook/play_context.py,sha256=iJEssstLelnwaki3nY9AiCGrd7D6dFfpWVeGQbQOGPE,14591
|
|
383
383
|
ansible/playbook/playbook_include.py,sha256=M0CZ7nGCvCNQuZQXwNHSXi9IhKXJLV74Bd9YvcarrZ4,7577
|
|
384
|
-
ansible/playbook/role_include.py,sha256=
|
|
384
|
+
ansible/playbook/role_include.py,sha256=zdEtObpYpm303eS6iGabgSGE8heI3QbsNXIbP61vGDI,8067
|
|
385
385
|
ansible/playbook/taggable.py,sha256=7pCyNHhAs2TBTV6h4LT9gd9v2syY_gJZqg5x6p0w9C4,3169
|
|
386
386
|
ansible/playbook/task.py,sha256=Tc3VaNGYtrOhF1NdVhqO1wy3gmdATCCjFvMWx1oZpv8,20185
|
|
387
387
|
ansible/playbook/task_include.py,sha256=C3x_tTzbRLTMsXCGonzp3SAzE7VuslvcAlwN4WqF-KM,5318
|
|
@@ -443,7 +443,7 @@ ansible/plugins/connection/local.py,sha256=RFIZEyZjXQ_AcynPiYfmgZbHDNpgV6GiKb9qe
|
|
|
443
443
|
ansible/plugins/connection/paramiko_ssh.py,sha256=gMaVa1GqhymC7EHdtvp_rBN7MilHGDLYAgxs-l1_AAc,30111
|
|
444
444
|
ansible/plugins/connection/psrp.py,sha256=MmhZ2aDpB4eT5BfHXguuNhO-7-9wDXNbxgg27-5wLuQ,36798
|
|
445
445
|
ansible/plugins/connection/ssh.py,sha256=ISeEuEPTxkgZEChz562155tDNk6A3d9kUnbvrzZITWU,64393
|
|
446
|
-
ansible/plugins/connection/winrm.py,sha256=
|
|
446
|
+
ansible/plugins/connection/winrm.py,sha256=yXUydHq80ALIbAupQu6PzhSPlBrl4DuwHIZetHjVMGE,37963
|
|
447
447
|
ansible/plugins/doc_fragments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
448
448
|
ansible/plugins/doc_fragments/action_common_attributes.py,sha256=ouV8CMIP0TkfkxN4p_pLbPvRSC5wu6w0Y6ScONOg-c4,2449
|
|
449
449
|
ansible/plugins/doc_fragments/action_core.py,sha256=f4UV5QBnmtiecabxbXbTlxZtcPGQH2PNN9gNGVnYPh4,2908
|
|
@@ -679,14 +679,14 @@ ansible/vars/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
679
679
|
ansible/vars/clean.py,sha256=TeNDx7skJFqR0K1ok_cQuvKDjzTrCc7u2qGWTNambQo,6083
|
|
680
680
|
ansible/vars/fact_cache.py,sha256=4lxkYru1qucTDQ0aSmtc5UDWP-gm3edPmDSuTZ2GCmE,1956
|
|
681
681
|
ansible/vars/hostvars.py,sha256=8Gs8lcVT6U8hJISEjKIyohIyaTrpnVWo5Tq8VMHDOL0,5134
|
|
682
|
-
ansible/vars/manager.py,sha256=
|
|
682
|
+
ansible/vars/manager.py,sha256=yveaNbsSlsk3rr-w4W7V7Gp3EOYFHyfStU2facyhxXE,38345
|
|
683
683
|
ansible/vars/plugins.py,sha256=-xJNMvrcQPCqXyKxGNS7jfnpaCsZborTjK6mXQdSo4U,4714
|
|
684
684
|
ansible/vars/reserved.py,sha256=FBD7n2dnA0CW4I0J1LtWwk2hQqvGW0KTRPcxaRtMKWo,2615
|
|
685
|
-
ansible_core-2.16.
|
|
685
|
+
ansible_core-2.16.0b2.data/scripts/ansible-test,sha256=CYIYL99IxWdVTtDIj3avilIJXhGAmtjuKPPWNuLWuc8,1690
|
|
686
686
|
ansible_test/__init__.py,sha256=6e721yAyyyocRKzbCKtQXloAfFP7Aqv0L3zG70uh-4A,190
|
|
687
687
|
ansible_test/_data/ansible.cfg,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
688
688
|
ansible_test/_data/coveragerc,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
689
|
-
ansible_test/_data/completion/docker.txt,sha256=
|
|
689
|
+
ansible_test/_data/completion/docker.txt,sha256=ORKxvSabTWpf-dZ0UtWNVh73lmcSJaT6Gq4KVEJbDcU,825
|
|
690
690
|
ansible_test/_data/completion/network.txt,sha256=_-mi013-JeufshKMUmykkOmZPw1cVbakIMaAuweHet8,198
|
|
691
691
|
ansible_test/_data/completion/remote.txt,sha256=3R8M_uU5SMNTNvMKYCr60qGjsBPpy_eC9D4JNHWR9PE,883
|
|
692
692
|
ansible_test/_data/completion/windows.txt,sha256=LunFLE7xMeoS9TVDuE58nUBVzsz-Wh-9wfL80mGiUmo,147
|
|
@@ -704,13 +704,13 @@ ansible_test/_data/playbooks/windows_hosts_restore.ps1,sha256=uFtxU7p2fIDt0uEEGW
|
|
|
704
704
|
ansible_test/_data/playbooks/windows_hosts_restore.yml,sha256=fVSgEeJeNgeVAqlKw7DLTZwVLA96WUqDhSrOD1JDPpc,252
|
|
705
705
|
ansible_test/_data/pytest/config/default.ini,sha256=3f5D0MA9l2RafBBriLaG2eH3ePHPLb43NpN7wZPB_u4,151
|
|
706
706
|
ansible_test/_data/pytest/config/legacy.ini,sha256=WBpVsIeHL2szv5oFznM2WXYizBgYhBrivpvQliYUKTw,85
|
|
707
|
-
ansible_test/_data/requirements/ansible-test.txt,sha256=
|
|
707
|
+
ansible_test/_data/requirements/ansible-test.txt,sha256=7lUJeoB76W4kmFa6P7G-cyJouIYrKWUtY-uIjXrEGkE,377
|
|
708
708
|
ansible_test/_data/requirements/ansible.txt,sha256=SoGhVAYgDYWYKwMSH0g8WsCQczVft6Obb5ePPMQPRTU,838
|
|
709
709
|
ansible_test/_data/requirements/constraints.txt,sha256=PiFo21efTtdKHwfhzmNIPA6B5H3_OUh_boakiWlWUDU,1327
|
|
710
710
|
ansible_test/_data/requirements/sanity.ansible-doc.in,sha256=9KRJJ-n37IMHpLJLv_VmFOhYF8Y3Vnk6eRyhwVKzC8A,108
|
|
711
|
-
ansible_test/_data/requirements/sanity.ansible-doc.txt,sha256=
|
|
711
|
+
ansible_test/_data/requirements/sanity.ansible-doc.txt,sha256=cEdRsJvYL6u2C-dsZinArt_5cYHhwmFl5PReUuRPfcw,169
|
|
712
712
|
ansible_test/_data/requirements/sanity.changelog.in,sha256=gWVsUch6Jxrq55MEutB-b9GB6Pp2PL-FqM84v-aI4Ng,78
|
|
713
|
-
ansible_test/_data/requirements/sanity.changelog.txt,sha256=
|
|
713
|
+
ansible_test/_data/requirements/sanity.changelog.txt,sha256=eVMtphCQfV3q7pxdS3t911kqw-6BTKVA8Lxa5DKtcMw,267
|
|
714
714
|
ansible_test/_data/requirements/sanity.import.in,sha256=dL2716R_VoxiYHZxXNa_offbX8YNF0TI5K_cLTCIte8,37
|
|
715
715
|
ansible_test/_data/requirements/sanity.import.plugin.in,sha256=7D0HGyPvCG8D1BMuBYP2IMJ__OgCP8So2hzEVTVxvDg,70
|
|
716
716
|
ansible_test/_data/requirements/sanity.import.plugin.txt,sha256=1763N86RopirIzZjQTxvlyK8Z8YsGqLDeub7ZG4MJ14,157
|
|
@@ -718,12 +718,12 @@ ansible_test/_data/requirements/sanity.import.txt,sha256=ZDWT8cSK_rClm8rcp0yLKOM
|
|
|
718
718
|
ansible_test/_data/requirements/sanity.integration-aliases.in,sha256=NMkWvYDYr5-OnrCqjdCkfHbP9dFqncYTIUrKwA628dE,7
|
|
719
719
|
ansible_test/_data/requirements/sanity.integration-aliases.txt,sha256=3KjRK2VsFeLvzbyBX4gAp9rjdP9YsnwCeE4i0Z0BUZU,137
|
|
720
720
|
ansible_test/_data/requirements/sanity.mypy.in,sha256=7TvFAsO1M6tYke9A576pJq3d8GQOl2PVR5ni3jXxjl8,239
|
|
721
|
-
ansible_test/_data/requirements/sanity.mypy.txt,sha256=
|
|
721
|
+
ansible_test/_data/requirements/sanity.mypy.txt,sha256=MiEm2UEi1TSWvyv7zitEVGg3k-YoPJTSN87X0ae4LC4,423
|
|
722
722
|
ansible_test/_data/requirements/sanity.pep8.in,sha256=rHbIEiXmvsJ016mFcLVcF_d-dKgP3VdfOB6CWbivZug,12
|
|
723
723
|
ansible_test/_data/requirements/sanity.pep8.txt,sha256=1gOV4sAnqMxWPbAimO31STSr706DbpqObAr2ESpSw84,113
|
|
724
724
|
ansible_test/_data/requirements/sanity.pslint.ps1,sha256=JoDUUNLXQ4xDXUB5_W00q9o-gZ1oW1oShLp--f5OEIE,1624
|
|
725
725
|
ansible_test/_data/requirements/sanity.pylint.in,sha256=CqgyF_s4K3o41RSc6KZVicBlhrb4twRm9zbp-HBwFeE,49
|
|
726
|
-
ansible_test/_data/requirements/sanity.pylint.txt,sha256=
|
|
726
|
+
ansible_test/_data/requirements/sanity.pylint.txt,sha256=l4NTRlH144rypkHOIhtjKhRkhRrHJ7z3n8ZSeoLrXBQ,217
|
|
727
727
|
ansible_test/_data/requirements/sanity.runtime-metadata.in,sha256=QzOCB5QxVHYuXHXQvkUsa5MwRQzPhI-ZDD-M2htj36s,18
|
|
728
728
|
ansible_test/_data/requirements/sanity.runtime-metadata.txt,sha256=S5ilnGu2MIk0yt4KOKY3ntQkbvvCF0tstFOmmJZes7k,150
|
|
729
729
|
ansible_test/_data/requirements/sanity.validate-modules.in,sha256=OVQi9h1QurdF-wa3-TkBuztXIs-QnyY2g8iYtOpo2cw,117
|
|
@@ -745,7 +745,7 @@ ansible_test/_internal/constants.py,sha256=djMgWI_xR1Yg6M9Au8dEtao6yTYIzeLA-Ctxb
|
|
|
745
745
|
ansible_test/_internal/containers.py,sha256=8uRbrDtQKJznPYHbrCDuxZI0teyhcL8qT3mAO2M_DU8,33905
|
|
746
746
|
ansible_test/_internal/content_config.py,sha256=pkhIu5lg-o8oWc7RBzuniYE-mBPyjnf400vpaO0gr08,5778
|
|
747
747
|
ansible_test/_internal/core_ci.py,sha256=pyiwFG_TgDSQw34qW-PG8T2VYS6XxiF0zOEWGYXRRek,17309
|
|
748
|
-
ansible_test/_internal/coverage_util.py,sha256=
|
|
748
|
+
ansible_test/_internal/coverage_util.py,sha256=VscejjrRQ0m0XTQRtqNYpYwkji8CbqHQTqMxdd4fQNY,9381
|
|
749
749
|
ansible_test/_internal/data.py,sha256=OFDpRa47yqBqQO1aSvTZVQQpScHvBHsr861586MQEUI,11184
|
|
750
750
|
ansible_test/_internal/delegation.py,sha256=D8hluDQf_YN3DtVG_8HW0iumRBY3gjp_zP-rlc3VNY4,13418
|
|
751
751
|
ansible_test/_internal/diff.py,sha256=qfzSL7BtoW7bLLgzF0-m--jthVDpUQSr9aBw1fCMIHk,7310
|
|
@@ -754,7 +754,7 @@ ansible_test/_internal/encoding.py,sha256=E61EfXbQw0uQoFhbN3SYx3Oy_1tAMCPAAvY9hk
|
|
|
754
754
|
ansible_test/_internal/executor.py,sha256=KW5yI-f-giErQ077MTj707fTtFkf_Kr8IV_Nr36NNmc,2959
|
|
755
755
|
ansible_test/_internal/git.py,sha256=njtciWq2DlzZ1DAkQi08HRRP-TgH0mgeGZsWcsJGctI,4366
|
|
756
756
|
ansible_test/_internal/host_configs.py,sha256=0S6EfSE2QMkOi4-ySxM6A4hlGxfb3aSjJKUHOC4wiwM,18283
|
|
757
|
-
ansible_test/_internal/host_profiles.py,sha256=
|
|
757
|
+
ansible_test/_internal/host_profiles.py,sha256=Ib8rgcUwT4sBzDcQQbKZxjqQbTqBAz8znA1LFT1QDrw,65318
|
|
758
758
|
ansible_test/_internal/http.py,sha256=27EGOIWupvFXPo8abJ-3DScE2V2fyMMwAJ_3g0eL7O4,4123
|
|
759
759
|
ansible_test/_internal/init.py,sha256=f2ZN7F-FyjMgN73SUgxwbVtWNhkJv7BIlZ-q4ALHyjM,505
|
|
760
760
|
ansible_test/_internal/inventory.py,sha256=c79s-xc1uv2nD7rPISv0JKkKspY-X2-kHoozF2R4e1Q,5408
|
|
@@ -869,7 +869,7 @@ ansible_test/_internal/commands/sanity/integration_aliases.py,sha256=sGN5ATjW3_X
|
|
|
869
869
|
ansible_test/_internal/commands/sanity/mypy.py,sha256=4Vp5PVBSNMmWgSKxd2TjRQoeugCN8DRXscRNeKJwaLY,10982
|
|
870
870
|
ansible_test/_internal/commands/sanity/pep8.py,sha256=SSulTIljaSu_exl93ZklKyuhbKS-zf18SKu23k3VJhA,3125
|
|
871
871
|
ansible_test/_internal/commands/sanity/pslint.py,sha256=lVgL6RrDolRgIOJ2NRr04k2KVwMddZz1M7I-6h57vII,3210
|
|
872
|
-
ansible_test/_internal/commands/sanity/pylint.py,sha256=
|
|
872
|
+
ansible_test/_internal/commands/sanity/pylint.py,sha256=lkuVpbxu0o0RRk3uPnZcYI5dQL-1Y_P6en4d3l1pdeg,12152
|
|
873
873
|
ansible_test/_internal/commands/sanity/shellcheck.py,sha256=CZHNN_2iNVE3iqf5SIDSH9b2hwF6aXtJ0H6MPCEJX4s,3070
|
|
874
874
|
ansible_test/_internal/commands/sanity/validate_modules.py,sha256=-NFR5xbp4DPaD-lW-JAwpI0dpGTQuMGnqjt4bxRERvU,8186
|
|
875
875
|
ansible_test/_internal/commands/sanity/yamllint.py,sha256=rF_L-QVWLfQ5HiOf_Q-6AMdk7orOJN_Bu8XyMfobRQ8,3423
|
|
@@ -949,9 +949,9 @@ ansible_test/_util/controller/sanity/pylint/config/ansible-test.cfg,sha256=Q2hIW
|
|
|
949
949
|
ansible_test/_util/controller/sanity/pylint/config/code-smell.cfg,sha256=yZd1BKFApRrZrUKvj3Iips8aDRR9mXS5cUfKXO9Oc8w,1621
|
|
950
950
|
ansible_test/_util/controller/sanity/pylint/config/collection.cfg,sha256=VU7PJ2G0sxdcMxmCHMebFvi1Avy3fELFDzvaQkU0p3s,4400
|
|
951
951
|
ansible_test/_util/controller/sanity/pylint/config/default.cfg,sha256=hRFKTA4wt2UVdiUapm6d-fAIGmiDMdrJU3Op3xhwz2E,3906
|
|
952
|
-
ansible_test/_util/controller/sanity/pylint/plugins/deprecated.py,sha256=
|
|
953
|
-
ansible_test/_util/controller/sanity/pylint/plugins/string_format.py,sha256=
|
|
954
|
-
ansible_test/_util/controller/sanity/pylint/plugins/unwanted.py,sha256=
|
|
952
|
+
ansible_test/_util/controller/sanity/pylint/plugins/deprecated.py,sha256=WZdwUwc6Jyxf25VI8z34JH7Itw1XFunRYoXuEXUXaZg,18674
|
|
953
|
+
ansible_test/_util/controller/sanity/pylint/plugins/string_format.py,sha256=hAX_9P0VR5ngilRKxN5NOgS4vJmoeGCgLJ2mMI8IliA,2626
|
|
954
|
+
ansible_test/_util/controller/sanity/pylint/plugins/unwanted.py,sha256=9ZS9CiTARriKsHw807pO4Wp9FGg01xQqWJXwD9MeiJ8,9061
|
|
955
955
|
ansible_test/_util/controller/sanity/shellcheck/exclude.txt,sha256=-idybvpZeOHVfR8usoyCNdNLD5WpaKQeP9mgzganMpQ,21
|
|
956
956
|
ansible_test/_util/controller/sanity/validate-modules/validate.py,sha256=jpNOhA5qJ5LdlWlSOJoJyTUh9H1tepjcSYZXeHdhJRY,114
|
|
957
957
|
ansible_test/_util/controller/sanity/validate-modules/validate_modules/__init__.py,sha256=CRUAj-k-zJye4RAGZ8eR9HvP6weM6VKTwGmFYpI_0Bw,816
|
|
@@ -1000,9 +1000,9 @@ ansible_test/config/cloud-config-vultr.ini.template,sha256=XLKHk3lg_8ReQMdWfZzhh
|
|
|
1000
1000
|
ansible_test/config/config.yml,sha256=wb3knoBmZewG3GWOMnRHoVPQWW4vPixKLPMNS6vJmTc,2620
|
|
1001
1001
|
ansible_test/config/inventory.networking.template,sha256=bFNSk8zNQOaZ_twaflrY0XZ9mLwUbRLuNT0BdIFwvn4,1335
|
|
1002
1002
|
ansible_test/config/inventory.winrm.template,sha256=1QU8W-GFLnYEw8yY9bVIvUAVvJYPM3hyoijf6-M7T00,1098
|
|
1003
|
-
ansible_core-2.16.
|
|
1004
|
-
ansible_core-2.16.
|
|
1005
|
-
ansible_core-2.16.
|
|
1006
|
-
ansible_core-2.16.
|
|
1007
|
-
ansible_core-2.16.
|
|
1008
|
-
ansible_core-2.16.
|
|
1003
|
+
ansible_core-2.16.0b2.dist-info/COPYING,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
1004
|
+
ansible_core-2.16.0b2.dist-info/METADATA,sha256=lRhGir5_VtZS-Lj-pmuS_tkKJFXIPldTdgK6L3U6Dgw,6856
|
|
1005
|
+
ansible_core-2.16.0b2.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
|
1006
|
+
ansible_core-2.16.0b2.dist-info/entry_points.txt,sha256=0mpmsrIhODChxKl3eS-NcVQCaMetBn8KdPLtVxQgR64,453
|
|
1007
|
+
ansible_core-2.16.0b2.dist-info/top_level.txt,sha256=IFbRLjAvih1DYzJWg3_F6t4sCzEMxRO7TOMNs6GkYHo,21
|
|
1008
|
+
ansible_core-2.16.0b2.dist-info/RECORD,,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
base image=quay.io/ansible/base-test-container:5.
|
|
2
|
-
default image=quay.io/ansible/default-test-container:8.
|
|
3
|
-
default image=quay.io/ansible/ansible-core-test-container:8.
|
|
4
|
-
alpine3 image=quay.io/ansible/alpine3-test-container:
|
|
5
|
-
centos7 image=quay.io/ansible/centos7-test-container:
|
|
6
|
-
fedora38 image=quay.io/ansible/fedora38-test-container:6.
|
|
7
|
-
opensuse15 image=quay.io/ansible/opensuse15-test-container:6.
|
|
8
|
-
ubuntu2004 image=quay.io/ansible/ubuntu2004-test-container:
|
|
9
|
-
ubuntu2204 image=quay.io/ansible/ubuntu2204-test-container:
|
|
1
|
+
base image=quay.io/ansible/base-test-container:5.9.0 python=3.11,2.7,3.6,3.7,3.8,3.9,3.10,3.12
|
|
2
|
+
default image=quay.io/ansible/default-test-container:8.11.0 python=3.11,2.7,3.6,3.7,3.8,3.9,3.10,3.12 context=collection
|
|
3
|
+
default image=quay.io/ansible/ansible-core-test-container:8.11.0 python=3.11,2.7,3.6,3.7,3.8,3.9,3.10,3.12 context=ansible-core
|
|
4
|
+
alpine3 image=quay.io/ansible/alpine3-test-container:6.3.0 python=3.11 cgroup=none audit=none
|
|
5
|
+
centos7 image=quay.io/ansible/centos7-test-container:6.3.0 python=2.7 cgroup=v1-only
|
|
6
|
+
fedora38 image=quay.io/ansible/fedora38-test-container:6.3.0 python=3.11
|
|
7
|
+
opensuse15 image=quay.io/ansible/opensuse15-test-container:6.3.0 python=3.6
|
|
8
|
+
ubuntu2004 image=quay.io/ansible/ubuntu2004-test-container:6.3.0 python=3.8
|
|
9
|
+
ubuntu2204 image=quay.io/ansible/ubuntu2204-test-container:6.3.0 python=3.10
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# The test-constraints sanity test verifies this file, but changes must be made manually to keep it in up-to-date.
|
|
2
2
|
virtualenv == 16.7.12 ; python_version < '3'
|
|
3
|
-
coverage == 7.3.
|
|
3
|
+
coverage == 7.3.2 ; python_version >= '3.8' and python_version <= '3.12'
|
|
4
4
|
coverage == 6.5.0 ; python_version >= '3.7' and python_version <= '3.7'
|
|
5
5
|
coverage == 4.5.4 ; python_version >= '2.6' and python_version <= '3.6'
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# edit "sanity.changelog.in" and generate with: hacking/update-sanity-requirements.py --test changelog
|
|
2
2
|
antsibull-changelog==0.23.0
|
|
3
3
|
docutils==0.18.1
|
|
4
|
-
packaging==23.
|
|
4
|
+
packaging==23.2
|
|
5
5
|
PyYAML==6.0.1
|
|
6
6
|
rstcheck==5.0.0
|
|
7
7
|
semantic-version==2.10.0
|
|
8
8
|
types-docutils==0.18.3
|
|
9
|
-
typing_extensions==4.
|
|
9
|
+
typing_extensions==4.8.0
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
# edit "sanity.mypy.in" and generate with: hacking/update-sanity-requirements.py --test mypy
|
|
2
|
-
cffi==1.
|
|
3
|
-
cryptography==41.0.
|
|
2
|
+
cffi==1.16.0
|
|
3
|
+
cryptography==41.0.4
|
|
4
4
|
Jinja2==3.1.2
|
|
5
5
|
MarkupSafe==2.1.3
|
|
6
6
|
mypy==1.5.1
|
|
7
7
|
mypy-extensions==1.0.0
|
|
8
|
-
packaging==23.
|
|
8
|
+
packaging==23.2
|
|
9
9
|
pycparser==2.21
|
|
10
10
|
tomli==2.0.1
|
|
11
11
|
types-backports==0.1.3
|
|
12
12
|
types-paramiko==3.3.0.0
|
|
13
|
-
types-PyYAML==6.0.12.
|
|
14
|
-
types-requests==2.31.0.
|
|
13
|
+
types-PyYAML==6.0.12.12
|
|
14
|
+
types-requests==2.31.0.7
|
|
15
15
|
types-setuptools==68.2.0.0
|
|
16
16
|
types-toml==0.10.8.7
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
typing_extensions==4.8.0
|
|
18
|
+
urllib3==2.0.6
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
# edit "sanity.pylint.in" and generate with: hacking/update-sanity-requirements.py --test pylint
|
|
2
|
-
astroid==
|
|
2
|
+
astroid==3.0.0
|
|
3
3
|
dill==0.3.7
|
|
4
4
|
isort==5.12.0
|
|
5
|
-
lazy-object-proxy==1.9.0
|
|
6
5
|
mccabe==0.7.0
|
|
7
|
-
platformdirs==3.
|
|
8
|
-
pylint==
|
|
6
|
+
platformdirs==3.11.0
|
|
7
|
+
pylint==3.0.0
|
|
9
8
|
PyYAML==6.0.1
|
|
10
|
-
tomli==2.0.1
|
|
11
9
|
tomlkit==0.12.1
|
|
12
|
-
typing_extensions==4.7.1
|
|
13
|
-
wrapt==1.15.0
|
|
@@ -82,12 +82,6 @@ class PylintTest(SanitySingleVersion):
|
|
|
82
82
|
"""Error code for ansible-test matching the format used by the underlying test program, or None if the program does not use error codes."""
|
|
83
83
|
return 'ansible-test'
|
|
84
84
|
|
|
85
|
-
@property
|
|
86
|
-
def supported_python_versions(self) -> t.Optional[tuple[str, ...]]:
|
|
87
|
-
"""A tuple of supported Python versions or None if the test does not depend on specific Python versions."""
|
|
88
|
-
# NOTE: When removing the Python 3.12 exclusion, be sure to update the ansible-test-sanity-pylint integration test.
|
|
89
|
-
return tuple(version for version in super().supported_python_versions if version != '3.12')
|
|
90
|
-
|
|
91
85
|
def filter_targets(self, targets: list[TestTarget]) -> list[TestTarget]:
|
|
92
86
|
"""Return the given list of test targets, filtered to include only those relevant for the test."""
|
|
93
87
|
return [target for target in targets if os.path.splitext(target.path)[1] == '.py' or is_subdir(target.path, 'bin')]
|
|
@@ -69,7 +69,7 @@ class CoverageVersion:
|
|
|
69
69
|
|
|
70
70
|
COVERAGE_VERSIONS = (
|
|
71
71
|
# IMPORTANT: Keep this in sync with the ansible-test.txt requirements file.
|
|
72
|
-
CoverageVersion('7.3.
|
|
72
|
+
CoverageVersion('7.3.2', 7, (3, 8), (3, 12)),
|
|
73
73
|
CoverageVersion('6.5.0', 7, (3, 7), (3, 7)),
|
|
74
74
|
CoverageVersion('4.5.4', 0, (2, 6), (3, 6)),
|
|
75
75
|
)
|
|
@@ -806,6 +806,7 @@ class DockerProfile(ControllerHostProfile[DockerConfig], SshTargetHostProfile[Do
|
|
|
806
806
|
- Avoid hanging indefinitely or for an unreasonably long time.
|
|
807
807
|
|
|
808
808
|
NOTE: The container must have a POSIX-compliant default shell "sh" with a non-builtin "sleep" command.
|
|
809
|
+
The "sleep" command is invoked through "env" to avoid using a shell builtin "sleep" (if present).
|
|
809
810
|
"""
|
|
810
811
|
command = ''
|
|
811
812
|
|
|
@@ -813,7 +814,7 @@ class DockerProfile(ControllerHostProfile[DockerConfig], SshTargetHostProfile[Do
|
|
|
813
814
|
command += f'{init_config.command} && '
|
|
814
815
|
|
|
815
816
|
if sleep or init_config.command_privileged:
|
|
816
|
-
command += 'sleep 60 ; '
|
|
817
|
+
command += 'env sleep 60 ; '
|
|
817
818
|
|
|
818
819
|
if not command:
|
|
819
820
|
return None
|
|
@@ -14,9 +14,22 @@ from tokenize import COMMENT, TokenInfo
|
|
|
14
14
|
|
|
15
15
|
import astroid
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
# support pylint 2.x and 3.x -- remove when supporting only 3.x
|
|
18
|
+
try:
|
|
19
|
+
from pylint.interfaces import IAstroidChecker, ITokenChecker
|
|
20
|
+
except ImportError:
|
|
21
|
+
class IAstroidChecker:
|
|
22
|
+
"""Backwards compatibility for 2.x / 3.x support."""
|
|
23
|
+
|
|
24
|
+
class ITokenChecker:
|
|
25
|
+
"""Backwards compatibility for 2.x / 3.x support."""
|
|
26
|
+
|
|
27
|
+
try:
|
|
28
|
+
from pylint.checkers.utils import check_messages
|
|
29
|
+
except ImportError:
|
|
30
|
+
from pylint.checkers.utils import only_required_for_messages as check_messages
|
|
31
|
+
|
|
18
32
|
from pylint.checkers import BaseChecker, BaseTokenChecker
|
|
19
|
-
from pylint.checkers.utils import check_messages
|
|
20
33
|
|
|
21
34
|
from ansible.module_utils.compat.version import LooseVersion
|
|
22
35
|
from ansible.module_utils.six import string_types
|
|
@@ -214,14 +227,14 @@ class AnsibleDeprecatedChecker(BaseChecker):
|
|
|
214
227
|
@property
|
|
215
228
|
def collection_name(self) -> t.Optional[str]:
|
|
216
229
|
"""Return the collection name, or None if ansible-core is being tested."""
|
|
217
|
-
return self.config.collection_name
|
|
230
|
+
return self.linter.config.collection_name
|
|
218
231
|
|
|
219
232
|
@property
|
|
220
233
|
def collection_version(self) -> t.Optional[SemanticVersion]:
|
|
221
234
|
"""Return the collection version, or None if ansible-core is being tested."""
|
|
222
|
-
if self.config.collection_version is None:
|
|
235
|
+
if self.linter.config.collection_version is None:
|
|
223
236
|
return None
|
|
224
|
-
sem_ver = SemanticVersion(self.config.collection_version)
|
|
237
|
+
sem_ver = SemanticVersion(self.linter.config.collection_version)
|
|
225
238
|
# Ignore pre-release for version comparison to catch issues before the final release is cut.
|
|
226
239
|
sem_ver.prerelease = ()
|
|
227
240
|
return sem_ver
|
|
@@ -5,10 +5,21 @@
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
7
|
import astroid
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
# support pylint 2.x and 3.x -- remove when supporting only 3.x
|
|
10
|
+
try:
|
|
11
|
+
from pylint.interfaces import IAstroidChecker
|
|
12
|
+
except ImportError:
|
|
13
|
+
class IAstroidChecker:
|
|
14
|
+
"""Backwards compatibility for 2.x / 3.x support."""
|
|
15
|
+
|
|
16
|
+
try:
|
|
17
|
+
from pylint.checkers.utils import check_messages
|
|
18
|
+
except ImportError:
|
|
19
|
+
from pylint.checkers.utils import only_required_for_messages as check_messages
|
|
20
|
+
|
|
9
21
|
from pylint.checkers import BaseChecker
|
|
10
22
|
from pylint.checkers import utils
|
|
11
|
-
from pylint.checkers.utils import check_messages
|
|
12
23
|
|
|
13
24
|
MSGS = {
|
|
14
25
|
'E9305': ("disabled", # kept for backwards compatibility with inline ignores, remove after 2.14 is EOL
|
|
@@ -6,8 +6,14 @@ import typing as t
|
|
|
6
6
|
|
|
7
7
|
import astroid
|
|
8
8
|
|
|
9
|
+
# support pylint 2.x and 3.x -- remove when supporting only 3.x
|
|
10
|
+
try:
|
|
11
|
+
from pylint.interfaces import IAstroidChecker
|
|
12
|
+
except ImportError:
|
|
13
|
+
class IAstroidChecker:
|
|
14
|
+
"""Backwards compatibility for 2.x / 3.x support."""
|
|
15
|
+
|
|
9
16
|
from pylint.checkers import BaseChecker
|
|
10
|
-
from pylint.interfaces import IAstroidChecker
|
|
11
17
|
|
|
12
18
|
ANSIBLE_TEST_MODULES_PATH = os.environ['ANSIBLE_TEST_MODULES_PATH']
|
|
13
19
|
ANSIBLE_TEST_MODULE_UTILS_PATH = os.environ['ANSIBLE_TEST_MODULE_UTILS_PATH']
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|