ansible-core 2.20.0b1__py3-none-any.whl → 2.20.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/doc.py +3 -1
- ansible/collections/list.py +4 -2
- ansible/galaxy/dependency_resolution/providers.py +23 -116
- ansible/module_utils/ansible_release.py +1 -1
- ansible/module_utils/six/__init__.py +8 -0
- ansible/modules/known_hosts.py +7 -1
- ansible/parsing/dataloader.py +2 -2
- ansible/playbook/block.py +1 -3
- ansible/playbook/helpers.py +15 -13
- ansible/playbook/play.py +2 -12
- ansible/plugins/action/fetch.py +1 -1
- ansible/plugins/test/falsy.yml +1 -1
- ansible/plugins/test/truthy.yml +1 -1
- ansible/release.py +1 -1
- ansible/vars/manager.py +1 -2
- {ansible_core-2.20.0b1.dist-info → ansible_core-2.20.0b2.dist-info}/METADATA +1 -1
- {ansible_core-2.20.0b1.dist-info → ansible_core-2.20.0b2.dist-info}/RECORD +27 -27
- ansible_test/_util/controller/sanity/pylint/plugins/unwanted.py +14 -4
- {ansible_core-2.20.0b1.dist-info → ansible_core-2.20.0b2.dist-info}/WHEEL +0 -0
- {ansible_core-2.20.0b1.dist-info → ansible_core-2.20.0b2.dist-info}/entry_points.txt +0 -0
- {ansible_core-2.20.0b1.dist-info → ansible_core-2.20.0b2.dist-info}/licenses/COPYING +0 -0
- {ansible_core-2.20.0b1.dist-info → ansible_core-2.20.0b2.dist-info}/licenses/licenses/Apache-License.txt +0 -0
- {ansible_core-2.20.0b1.dist-info → ansible_core-2.20.0b2.dist-info}/licenses/licenses/BSD-3-Clause.txt +0 -0
- {ansible_core-2.20.0b1.dist-info → ansible_core-2.20.0b2.dist-info}/licenses/licenses/MIT-license.txt +0 -0
- {ansible_core-2.20.0b1.dist-info → ansible_core-2.20.0b2.dist-info}/licenses/licenses/PSF-license.txt +0 -0
- {ansible_core-2.20.0b1.dist-info → ansible_core-2.20.0b2.dist-info}/licenses/licenses/simplified_bsd.txt +0 -0
- {ansible_core-2.20.0b1.dist-info → ansible_core-2.20.0b2.dist-info}/top_level.txt +0 -0
ansible/cli/doc.py
CHANGED
|
@@ -236,7 +236,9 @@ class RoleMixin(object):
|
|
|
236
236
|
b_colldirs = list_collection_dirs(coll_filter=collection_filter)
|
|
237
237
|
for b_path in b_colldirs:
|
|
238
238
|
path = to_text(b_path, errors='surrogate_or_strict')
|
|
239
|
-
collname
|
|
239
|
+
if not (collname := _get_collection_name_from_path(b_path)):
|
|
240
|
+
display.debug(f'Skipping invalid path {b_path!r}')
|
|
241
|
+
continue
|
|
240
242
|
|
|
241
243
|
roles_dir = os.path.join(path, 'roles')
|
|
242
244
|
if os.path.exists(roles_dir):
|
ansible/collections/list.py
CHANGED
|
@@ -17,8 +17,10 @@ def list_collections(coll_filter=None, search_paths=None, dedupe=True, artifacts
|
|
|
17
17
|
|
|
18
18
|
collections = {}
|
|
19
19
|
for candidate in list_collection_dirs(search_paths=search_paths, coll_filter=coll_filter, artifacts_manager=artifacts_manager, dedupe=dedupe):
|
|
20
|
-
collection
|
|
21
|
-
|
|
20
|
+
if collection := _get_collection_name_from_path(candidate):
|
|
21
|
+
collections[collection] = candidate
|
|
22
|
+
else:
|
|
23
|
+
display.debug(f'Skipping invalid collection in path: {candidate!r}')
|
|
22
24
|
return collections
|
|
23
25
|
|
|
24
26
|
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
from __future__ import annotations
|
|
7
7
|
|
|
8
|
+
import collections.abc as _c
|
|
8
9
|
import functools
|
|
9
10
|
import typing as t
|
|
10
11
|
|
|
@@ -37,16 +38,16 @@ except ImportError:
|
|
|
37
38
|
|
|
38
39
|
|
|
39
40
|
# TODO: add python requirements to ansible-test's ansible-core distribution info and remove the hardcoded lowerbound/upperbound fallback
|
|
40
|
-
RESOLVELIB_LOWERBOUND = SemanticVersion("0.
|
|
41
|
+
RESOLVELIB_LOWERBOUND = SemanticVersion("0.8.0")
|
|
41
42
|
RESOLVELIB_UPPERBOUND = SemanticVersion("2.0.0")
|
|
42
43
|
RESOLVELIB_VERSION = SemanticVersion.from_loose_version(LooseVersion(resolvelib_version))
|
|
43
44
|
|
|
44
45
|
|
|
45
|
-
class
|
|
46
|
+
class CollectionDependencyProvider(AbstractProvider):
|
|
46
47
|
"""Delegate providing a requirement interface for the resolver."""
|
|
47
48
|
|
|
48
49
|
def __init__(
|
|
49
|
-
self,
|
|
50
|
+
self,
|
|
50
51
|
apis, # type: MultiGalaxyAPIProxy
|
|
51
52
|
concrete_artifacts_manager=None, # type: ConcreteArtifactsManager
|
|
52
53
|
preferred_candidates=None, # type: t.Iterable[Candidate]
|
|
@@ -102,8 +103,14 @@ class CollectionDependencyProviderBase(AbstractProvider):
|
|
|
102
103
|
"""
|
|
103
104
|
return requirement_or_candidate.canonical_package_id
|
|
104
105
|
|
|
105
|
-
def get_preference(
|
|
106
|
-
|
|
106
|
+
def get_preference(
|
|
107
|
+
self,
|
|
108
|
+
identifier: str,
|
|
109
|
+
resolutions: _c.Mapping[str, Candidate],
|
|
110
|
+
candidates: _c.Mapping[str, _c.Iterator[Candidate]],
|
|
111
|
+
information: _c.Iterator[t.NamedTuple],
|
|
112
|
+
backtrack_causes: _c.Sequence,
|
|
113
|
+
) -> float | int:
|
|
107
114
|
"""Return sort key function return value for given requirement.
|
|
108
115
|
|
|
109
116
|
This result should be based on preference that is defined as
|
|
@@ -111,38 +118,6 @@ class CollectionDependencyProviderBase(AbstractProvider):
|
|
|
111
118
|
The lower the return value is, the more preferred this
|
|
112
119
|
group of arguments is.
|
|
113
120
|
|
|
114
|
-
resolvelib >=0.5.3, <0.7.0
|
|
115
|
-
|
|
116
|
-
:param resolution: Currently pinned candidate, or ``None``.
|
|
117
|
-
|
|
118
|
-
:param candidates: A list of possible candidates.
|
|
119
|
-
|
|
120
|
-
:param information: A list of requirement information.
|
|
121
|
-
|
|
122
|
-
Each ``information`` instance is a named tuple with two entries:
|
|
123
|
-
|
|
124
|
-
* ``requirement`` specifies a requirement contributing to
|
|
125
|
-
the current candidate list
|
|
126
|
-
|
|
127
|
-
* ``parent`` specifies the candidate that provides
|
|
128
|
-
(depended on) the requirement, or `None`
|
|
129
|
-
to indicate a root requirement.
|
|
130
|
-
|
|
131
|
-
resolvelib >=0.7.0, < 0.8.0
|
|
132
|
-
|
|
133
|
-
:param identifier: The value returned by ``identify()``.
|
|
134
|
-
|
|
135
|
-
:param resolutions: Mapping of identifier, candidate pairs.
|
|
136
|
-
|
|
137
|
-
:param candidates: Possible candidates for the identifier.
|
|
138
|
-
Mapping of identifier, list of candidate pairs.
|
|
139
|
-
|
|
140
|
-
:param information: Requirement information of each package.
|
|
141
|
-
Mapping of identifier, list of named tuple pairs.
|
|
142
|
-
The named tuples have the entries ``requirement`` and ``parent``.
|
|
143
|
-
|
|
144
|
-
resolvelib >=0.8.0, <= 1.0.1
|
|
145
|
-
|
|
146
121
|
:param identifier: The value returned by ``identify()``.
|
|
147
122
|
|
|
148
123
|
:param resolutions: Mapping of identifier, candidate pairs.
|
|
@@ -178,10 +153,6 @@ class CollectionDependencyProviderBase(AbstractProvider):
|
|
|
178
153
|
the value is, the more preferred this requirement is (i.e. the
|
|
179
154
|
sorting function is called with ``reverse=False``).
|
|
180
155
|
"""
|
|
181
|
-
raise NotImplementedError
|
|
182
|
-
|
|
183
|
-
def _get_preference(self, candidates):
|
|
184
|
-
# type: (list[Candidate]) -> t.Union[float, int]
|
|
185
156
|
if any(
|
|
186
157
|
candidate in self._preferred_candidates
|
|
187
158
|
for candidate in candidates
|
|
@@ -191,8 +162,12 @@ class CollectionDependencyProviderBase(AbstractProvider):
|
|
|
191
162
|
return float('-inf')
|
|
192
163
|
return len(candidates)
|
|
193
164
|
|
|
194
|
-
def find_matches(
|
|
195
|
-
|
|
165
|
+
def find_matches(
|
|
166
|
+
self,
|
|
167
|
+
identifier: str,
|
|
168
|
+
requirements: _c.Mapping[str, _c.Iterator[Requirement]],
|
|
169
|
+
incompatibilities: _c.Mapping[str, _c.Iterator[Candidate]],
|
|
170
|
+
) -> list[Candidate]:
|
|
196
171
|
r"""Find all possible candidates satisfying given requirements.
|
|
197
172
|
|
|
198
173
|
This tries to get candidates based on the requirements' types.
|
|
@@ -203,32 +178,13 @@ class CollectionDependencyProviderBase(AbstractProvider):
|
|
|
203
178
|
For a "named" requirement, Galaxy-compatible APIs are consulted
|
|
204
179
|
to find concrete candidates for this requirement. If there's a
|
|
205
180
|
pre-installed candidate, it's prepended in front of others.
|
|
206
|
-
|
|
207
|
-
resolvelib >=0.5.3, <0.6.0
|
|
208
|
-
|
|
209
|
-
:param requirements: A collection of requirements which all of \
|
|
210
|
-
the returned candidates must match. \
|
|
211
|
-
All requirements are guaranteed to have \
|
|
212
|
-
the same identifier. \
|
|
213
|
-
The collection is never empty.
|
|
214
|
-
|
|
215
|
-
resolvelib >=0.6.0
|
|
216
|
-
|
|
217
|
-
:param identifier: The value returned by ``identify()``.
|
|
218
|
-
|
|
219
|
-
:param requirements: The requirements all returned candidates must satisfy.
|
|
220
|
-
Mapping of identifier, iterator of requirement pairs.
|
|
221
|
-
|
|
222
|
-
:param incompatibilities: Incompatible versions that must be excluded
|
|
223
|
-
from the returned list.
|
|
224
|
-
|
|
225
|
-
:returns: An iterable that orders candidates by preference, \
|
|
226
|
-
e.g. the most preferred candidate comes first.
|
|
227
181
|
"""
|
|
228
|
-
|
|
182
|
+
return [
|
|
183
|
+
match for match in self._find_matches(list(requirements[identifier]))
|
|
184
|
+
if not any(match.ver == incompat.ver for incompat in incompatibilities[identifier])
|
|
185
|
+
]
|
|
229
186
|
|
|
230
|
-
def _find_matches(self, requirements):
|
|
231
|
-
# type: (list[Requirement]) -> list[Candidate]
|
|
187
|
+
def _find_matches(self, requirements: list[Requirement]) -> list[Candidate]:
|
|
232
188
|
# FIXME: The first requirement may be a Git repo followed by
|
|
233
189
|
# FIXME: its cloned tmp dir. Using only the first one creates
|
|
234
190
|
# FIXME: loops that prevent any further dependency exploration.
|
|
@@ -456,52 +412,3 @@ class CollectionDependencyProviderBase(AbstractProvider):
|
|
|
456
412
|
self._make_req_from_dict({'name': dep_name, 'version': dep_req})
|
|
457
413
|
for dep_name, dep_req in req_map.items()
|
|
458
414
|
]
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
# Classes to handle resolvelib API changes between minor versions for 0.X
|
|
462
|
-
class CollectionDependencyProvider050(CollectionDependencyProviderBase):
|
|
463
|
-
def find_matches(self, requirements): # type: ignore[override]
|
|
464
|
-
# type: (list[Requirement]) -> list[Candidate]
|
|
465
|
-
return self._find_matches(requirements)
|
|
466
|
-
|
|
467
|
-
def get_preference(self, resolution, candidates, information): # type: ignore[override]
|
|
468
|
-
# type: (t.Optional[Candidate], list[Candidate], list[t.NamedTuple]) -> t.Union[float, int]
|
|
469
|
-
return self._get_preference(candidates)
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
class CollectionDependencyProvider060(CollectionDependencyProviderBase):
|
|
473
|
-
def find_matches(self, identifier, requirements, incompatibilities): # type: ignore[override]
|
|
474
|
-
# type: (str, t.Mapping[str, t.Iterator[Requirement]], t.Mapping[str, t.Iterator[Requirement]]) -> list[Candidate]
|
|
475
|
-
return [
|
|
476
|
-
match for match in self._find_matches(list(requirements[identifier]))
|
|
477
|
-
if not any(match.ver == incompat.ver for incompat in incompatibilities[identifier])
|
|
478
|
-
]
|
|
479
|
-
|
|
480
|
-
def get_preference(self, resolution, candidates, information): # type: ignore[override]
|
|
481
|
-
# type: (t.Optional[Candidate], list[Candidate], list[t.NamedTuple]) -> t.Union[float, int]
|
|
482
|
-
return self._get_preference(candidates)
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
class CollectionDependencyProvider070(CollectionDependencyProvider060):
|
|
486
|
-
def get_preference(self, identifier, resolutions, candidates, information): # type: ignore[override]
|
|
487
|
-
# type: (str, t.Mapping[str, Candidate], t.Mapping[str, t.Iterator[Candidate]], t.Iterator[t.NamedTuple]) -> t.Union[float, int]
|
|
488
|
-
return self._get_preference(list(candidates[identifier]))
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
class CollectionDependencyProvider080(CollectionDependencyProvider060):
|
|
492
|
-
def get_preference(self, identifier, resolutions, candidates, information, backtrack_causes): # type: ignore[override]
|
|
493
|
-
# type: (str, t.Mapping[str, Candidate], t.Mapping[str, t.Iterator[Candidate]], t.Iterator[t.NamedTuple], t.Sequence) -> t.Union[float, int]
|
|
494
|
-
return self._get_preference(list(candidates[identifier]))
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
def _get_provider(): # type () -> CollectionDependencyProviderBase
|
|
498
|
-
if RESOLVELIB_VERSION >= SemanticVersion("0.8.0"):
|
|
499
|
-
return CollectionDependencyProvider080
|
|
500
|
-
if RESOLVELIB_VERSION >= SemanticVersion("0.7.0"):
|
|
501
|
-
return CollectionDependencyProvider070
|
|
502
|
-
if RESOLVELIB_VERSION >= SemanticVersion("0.6.0"):
|
|
503
|
-
return CollectionDependencyProvider060
|
|
504
|
-
return CollectionDependencyProvider050
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
CollectionDependencyProvider = _get_provider()
|
|
@@ -33,6 +33,14 @@ import operator
|
|
|
33
33
|
import sys
|
|
34
34
|
import types
|
|
35
35
|
|
|
36
|
+
from ansible.module_utils.common import warnings as _warnings
|
|
37
|
+
|
|
38
|
+
_warnings.deprecate(
|
|
39
|
+
msg="The `ansible.module_utils.six` module is deprecated.",
|
|
40
|
+
help_text="Use the Python standard library equivalent instead.",
|
|
41
|
+
version="2.24",
|
|
42
|
+
)
|
|
43
|
+
|
|
36
44
|
# The following makes it easier for us to script updates of the bundled code. It is not part of
|
|
37
45
|
# upstream six
|
|
38
46
|
_BUNDLED_METADATA = {"pypi_name": "six", "version": "1.17.0"}
|
ansible/modules/known_hosts.py
CHANGED
|
@@ -225,7 +225,13 @@ def sanity_check(module, host, key, sshkeygen):
|
|
|
225
225
|
rc, stdout, stderr = module.run_command(sshkeygen_command)
|
|
226
226
|
|
|
227
227
|
if stdout == '': # host not found
|
|
228
|
-
|
|
228
|
+
results = {
|
|
229
|
+
"msg": "Host parameter does not match hashed host field in supplied key",
|
|
230
|
+
"rc": rc,
|
|
231
|
+
}
|
|
232
|
+
if stderr:
|
|
233
|
+
results["stderr"] = stderr
|
|
234
|
+
module.fail_json(**results)
|
|
229
235
|
|
|
230
236
|
|
|
231
237
|
def search_for_host_key(module, host, key, path, sshkeygen):
|
ansible/parsing/dataloader.py
CHANGED
|
@@ -54,7 +54,7 @@ class DataLoader:
|
|
|
54
54
|
|
|
55
55
|
def __init__(self) -> None:
|
|
56
56
|
|
|
57
|
-
self._basedir: str = '.'
|
|
57
|
+
self._basedir: str = os.path.abspath('.')
|
|
58
58
|
|
|
59
59
|
# NOTE: not effective with forks as the main copy does not get updated.
|
|
60
60
|
# avoids rereading files
|
|
@@ -227,7 +227,7 @@ class DataLoader:
|
|
|
227
227
|
|
|
228
228
|
def set_basedir(self, basedir: str) -> None:
|
|
229
229
|
""" sets the base directory, used to find files when a relative path is given """
|
|
230
|
-
self._basedir = basedir
|
|
230
|
+
self._basedir = os.path.abspath(basedir)
|
|
231
231
|
|
|
232
232
|
def path_dwim(self, given: str) -> str:
|
|
233
233
|
"""
|
ansible/playbook/block.py
CHANGED
|
@@ -17,7 +17,6 @@
|
|
|
17
17
|
|
|
18
18
|
from __future__ import annotations
|
|
19
19
|
|
|
20
|
-
import ansible.constants as C
|
|
21
20
|
from ansible.errors import AnsibleParserError
|
|
22
21
|
from ansible.module_utils.common.sentinel import Sentinel
|
|
23
22
|
from ansible.playbook.attribute import NonInheritableFieldAttribute
|
|
@@ -316,8 +315,7 @@ class Block(Base, Conditional, CollectionSearch, Taggable, Notifiable, Delegatab
|
|
|
316
315
|
filtered_block = evaluate_block(task)
|
|
317
316
|
if filtered_block.has_tasks():
|
|
318
317
|
tmp_list.append(filtered_block)
|
|
319
|
-
elif
|
|
320
|
-
task.evaluate_tags(self._play.only_tags, self._play.skip_tags, all_vars=all_vars)):
|
|
318
|
+
elif task.evaluate_tags(self._play.only_tags, self._play.skip_tags, all_vars=all_vars):
|
|
321
319
|
tmp_list.append(task)
|
|
322
320
|
return tmp_list
|
|
323
321
|
|
ansible/playbook/helpers.py
CHANGED
|
@@ -165,17 +165,29 @@ def load_list_of_tasks(ds, play, block=None, role=None, task_include=None, use_h
|
|
|
165
165
|
subdir = 'tasks'
|
|
166
166
|
if use_handlers:
|
|
167
167
|
subdir = 'handlers'
|
|
168
|
+
try:
|
|
169
|
+
include_target = templar.template(task.args['_raw_params'])
|
|
170
|
+
except AnsibleUndefinedVariable as ex:
|
|
171
|
+
raise AnsibleParserError(
|
|
172
|
+
message=f"Error when evaluating variable in import path {task.args['_raw_params']!r}.",
|
|
173
|
+
help_text="When using static imports, ensure that any variables used in their names are defined in vars/vars_files\n"
|
|
174
|
+
"or extra-vars passed in from the command line. Static imports cannot use variables from facts or inventory\n"
|
|
175
|
+
"sources like group or host vars.",
|
|
176
|
+
obj=task_ds,
|
|
177
|
+
) from ex
|
|
178
|
+
# FIXME this appears to be (almost?) duplicate code as in IncludedFile for include_tasks
|
|
168
179
|
while parent_include is not None:
|
|
169
180
|
if not isinstance(parent_include, TaskInclude):
|
|
170
181
|
parent_include = parent_include._parent
|
|
171
182
|
continue
|
|
172
|
-
parent_include
|
|
173
|
-
|
|
183
|
+
if isinstance(parent_include, IncludeRole):
|
|
184
|
+
parent_include_dir = parent_include._role_path
|
|
185
|
+
else:
|
|
186
|
+
parent_include_dir = os.path.dirname(templar.template(parent_include.args.get('_raw_params')))
|
|
174
187
|
if cumulative_path is None:
|
|
175
188
|
cumulative_path = parent_include_dir
|
|
176
189
|
elif not os.path.isabs(cumulative_path):
|
|
177
190
|
cumulative_path = os.path.join(parent_include_dir, cumulative_path)
|
|
178
|
-
include_target = templar.template(task.args['_raw_params'])
|
|
179
191
|
if task._role:
|
|
180
192
|
new_basedir = os.path.join(task._role._role_path, subdir, cumulative_path)
|
|
181
193
|
include_file = loader.path_dwim_relative(new_basedir, subdir, include_target)
|
|
@@ -189,16 +201,6 @@ def load_list_of_tasks(ds, play, block=None, role=None, task_include=None, use_h
|
|
|
189
201
|
parent_include = parent_include._parent
|
|
190
202
|
|
|
191
203
|
if not found:
|
|
192
|
-
try:
|
|
193
|
-
include_target = templar.template(task.args['_raw_params'])
|
|
194
|
-
except AnsibleUndefinedVariable as ex:
|
|
195
|
-
raise AnsibleParserError(
|
|
196
|
-
message=f"Error when evaluating variable in import path {task.args['_raw_params']!r}.",
|
|
197
|
-
help_text="When using static imports, ensure that any variables used in their names are defined in vars/vars_files\n"
|
|
198
|
-
"or extra-vars passed in from the command line. Static imports cannot use variables from facts or inventory\n"
|
|
199
|
-
"sources like group or host vars.",
|
|
200
|
-
obj=task_ds,
|
|
201
|
-
) from ex
|
|
202
204
|
if task._role:
|
|
203
205
|
include_file = loader.path_dwim_relative(task._role._role_path, subdir, include_target)
|
|
204
206
|
else:
|
ansible/playbook/play.py
CHANGED
|
@@ -314,19 +314,9 @@ class Play(Base, Taggable, CollectionSearch):
|
|
|
314
314
|
t.args['_raw_params'] = 'flush_handlers'
|
|
315
315
|
t.implicit = True
|
|
316
316
|
t.set_loader(self._loader)
|
|
317
|
+
t.tags = ['always']
|
|
317
318
|
|
|
318
|
-
|
|
319
|
-
# Avoid calling flush_handlers in case the whole play is skipped on tags,
|
|
320
|
-
# this could be performance improvement since calling flush_handlers on
|
|
321
|
-
# large inventories could be expensive even if no hosts are notified
|
|
322
|
-
# since we call flush_handlers per host.
|
|
323
|
-
# Block.filter_tagged_tasks ignores evaluating tags on implicit meta
|
|
324
|
-
# tasks so we need to explicitly call Task.evaluate_tags here.
|
|
325
|
-
t.tags = self.tags
|
|
326
|
-
if t.evaluate_tags(self.only_tags, self.skip_tags, all_vars=self.vars):
|
|
327
|
-
flush_block.block = [t]
|
|
328
|
-
else:
|
|
329
|
-
flush_block.block = [t]
|
|
319
|
+
flush_block.block = [t]
|
|
330
320
|
|
|
331
321
|
# NOTE keep flush_handlers tasks even if a section has no regular tasks,
|
|
332
322
|
# there may be notified handlers from the previous section
|
ansible/plugins/action/fetch.py
CHANGED
|
@@ -192,7 +192,7 @@ class ActionModule(ActionBase):
|
|
|
192
192
|
msg="checksum mismatch", file=source, dest=dest, remote_md5sum=None,
|
|
193
193
|
checksum=new_checksum, remote_checksum=remote_checksum))
|
|
194
194
|
else:
|
|
195
|
-
result.update({'changed': True, 'md5sum': new_md5, 'dest': dest,
|
|
195
|
+
result.update({'changed': True, 'md5sum': new_md5, 'file': source, 'dest': dest,
|
|
196
196
|
'remote_md5sum': None, 'checksum': new_checksum,
|
|
197
197
|
'remote_checksum': remote_checksum})
|
|
198
198
|
else:
|
ansible/plugins/test/falsy.yml
CHANGED
|
@@ -5,7 +5,7 @@ DOCUMENTATION:
|
|
|
5
5
|
short_description: Pythonic false
|
|
6
6
|
description:
|
|
7
7
|
- This check is a more Python version of what is 'false'.
|
|
8
|
-
- It is the opposite of
|
|
8
|
+
- It is the opposite of P(ansible.builtin.truthy#test).
|
|
9
9
|
options:
|
|
10
10
|
_input:
|
|
11
11
|
description: An expression that can be expressed in a boolean context.
|
ansible/plugins/test/truthy.yml
CHANGED
|
@@ -20,5 +20,5 @@ EXAMPLES: |
|
|
|
20
20
|
thisisfalse: '{{ "" is truthy }}'
|
|
21
21
|
RETURN:
|
|
22
22
|
_value:
|
|
23
|
-
description: Returns V(True) if the condition is
|
|
23
|
+
description: Returns V(True) if the condition is "Python truthy", V(False) otherwise.
|
|
24
24
|
type: boolean
|
ansible/release.py
CHANGED
ansible/vars/manager.py
CHANGED
|
@@ -17,7 +17,6 @@
|
|
|
17
17
|
|
|
18
18
|
from __future__ import annotations
|
|
19
19
|
|
|
20
|
-
import os
|
|
21
20
|
import sys
|
|
22
21
|
import typing as t
|
|
23
22
|
|
|
@@ -447,7 +446,7 @@ class VariableManager:
|
|
|
447
446
|
"""
|
|
448
447
|
|
|
449
448
|
variables = {}
|
|
450
|
-
variables['playbook_dir'] =
|
|
449
|
+
variables['playbook_dir'] = self._loader.get_basedir()
|
|
451
450
|
variables['ansible_playbook_python'] = sys.executable
|
|
452
451
|
variables['ansible_config_file'] = C.CONFIG_FILE
|
|
453
452
|
|
|
@@ -3,7 +3,7 @@ ansible/__main__.py,sha256=24j-7-YT4lZ2fmV80JD-VRoYBnxR7YoP_VP-orJtDt0,796
|
|
|
3
3
|
ansible/constants.py,sha256=qef45QpHi-yFFMvllvNKmqFpXdKKr304e5fEZnjgwZc,7989
|
|
4
4
|
ansible/context.py,sha256=oKYyfjfWpy8vDeProtqfnqSmuij_t75_5e5t0U_hQ1g,1933
|
|
5
5
|
ansible/keyword_desc.yml,sha256=i3d_5dCS8Qsy5DNyrZnPHupkFnj6U3onpgEe2VqS8AY,7273
|
|
6
|
-
ansible/release.py,sha256=
|
|
6
|
+
ansible/release.py,sha256=MHD1PthxmFO6BBW8FDGHrx_D_sBABtICDeMysD2xoE0,842
|
|
7
7
|
ansible/_internal/__init__.py,sha256=pLZlT_Cm_fKBKDcWB5g0KZt2XWKZGlC7sfytkuUTbJU,2186
|
|
8
8
|
ansible/_internal/_collection_proxy.py,sha256=Dm7iePwbX9fHPCYsadPLek47eiYSJSQkfcmSWHI8kr8,1154
|
|
9
9
|
ansible/_internal/_display_utils.py,sha256=2dOknOQpt_GW2AkoMUJxPvmQUCAVYv911KwX6Dwrh0c,5651
|
|
@@ -80,7 +80,7 @@ ansible/cli/_ssh_askpass.py,sha256=fKYjoUkAxh1slpKm969wtJxX78zXe57bgLtQDhxMk_Y,2
|
|
|
80
80
|
ansible/cli/adhoc.py,sha256=ybYB9k6KsT2126E7My7lkOGFOIm2i0yF1FdY5MYtujg,8326
|
|
81
81
|
ansible/cli/config.py,sha256=3lHmiX-pOI4lM7jnMPpLU1-xiOc76JWSXnVvVZelHLk,28512
|
|
82
82
|
ansible/cli/console.py,sha256=F9jL6C3LTZBBD_0OIanGyM86PfxCSAe-gcvv7bqmt58,22002
|
|
83
|
-
ansible/cli/doc.py,sha256=
|
|
83
|
+
ansible/cli/doc.py,sha256=7y1IJfNJbfJKeGNJJi5pzZDjrkj2raAMhnxQLAvszCg,73077
|
|
84
84
|
ansible/cli/galaxy.py,sha256=nSRvhTJnYmrf6OvSnJV-uqw3w9I0d-HRIxHiS9A6HSE,94348
|
|
85
85
|
ansible/cli/inventory.py,sha256=F5vifIv1t_wOLDSY9B3giSpS-876pKIXXwHE_ISET30,15983
|
|
86
86
|
ansible/cli/playbook.py,sha256=F8v8t4v2dIpSVOlLb2RtvoHC3MraKjPbq1j01OOrQrA,10480
|
|
@@ -91,7 +91,7 @@ ansible/cli/arguments/option_helpers.py,sha256=BO_yCmofRJRuaVQXVmfiLHfaEJaKkoiMP
|
|
|
91
91
|
ansible/cli/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
92
92
|
ansible/cli/scripts/ansible_connection_cli_stub.py,sha256=LVRkDIrsgL_72dJ7ZzZVn6On9u_SASNsh-tgCog8ZxU,13121
|
|
93
93
|
ansible/collections/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
94
|
-
ansible/collections/list.py,sha256=
|
|
94
|
+
ansible/collections/list.py,sha256=kRYyW0UUu2Js5UuDW_pELrU3pQMPHSOW0hUXVA6b7-8,2977
|
|
95
95
|
ansible/compat/__init__.py,sha256=CvyoCuJ9EdeWO3_nj5fBSQ495YP0tCbXhQ6cramBdGY,1002
|
|
96
96
|
ansible/compat/importlib_resources.py,sha256=75SJApiBzBKuBDknj81vdfzSJSxc2Pi4YvgQkmmGtew,542
|
|
97
97
|
ansible/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -200,7 +200,7 @@ ansible/galaxy/data/network/vars/main.yml.j2,sha256=3I4QQOFgSN3CSJ2C1qRFPeRVv23S
|
|
|
200
200
|
ansible/galaxy/dependency_resolution/__init__.py,sha256=_0Ss541x_EPocg1b_arUpqFpchADtfQwiAw-1B7nqEE,1996
|
|
201
201
|
ansible/galaxy/dependency_resolution/dataclasses.py,sha256=HjBvJjq9dn60CBnyPzJEELi80J28SXZtQu4syN6ealk,24024
|
|
202
202
|
ansible/galaxy/dependency_resolution/errors.py,sha256=t9RSyjCNaeB9ipzW_UmZA96SDHlMh0v5IsqbN1L_LQ4,697
|
|
203
|
-
ansible/galaxy/dependency_resolution/providers.py,sha256=
|
|
203
|
+
ansible/galaxy/dependency_resolution/providers.py,sha256=fCw7Wg14NLC80M-v6wpPKbzsw6pQWuz0jsfysOsFHn8,19124
|
|
204
204
|
ansible/galaxy/dependency_resolution/reporters.py,sha256=HKYT0lf6sihCQ2EheYD07m6mZ5P69l1pLYBjx8Vhk-k,3389
|
|
205
205
|
ansible/galaxy/dependency_resolution/resolvers.py,sha256=NUtKTwIBMegoMkfhbxKA_COF0bSsXMCLkp8cqI0ZKGA,623
|
|
206
206
|
ansible/galaxy/dependency_resolution/versioning.py,sha256=QIpRw4anhAhXFFWbRyALIrCBRgwvX7SMgDDw4sEhJQU,1726
|
|
@@ -212,7 +212,7 @@ ansible/inventory/host.py,sha256=cZw906LeMYe6oF3ZxW6K2HWoW2Qc0jxHssg_C8cRumE,493
|
|
|
212
212
|
ansible/inventory/manager.py,sha256=IiODOOpm5iGpAHn5Sjap-_XTX0pZsXrQCevEaFNF_Sc,31743
|
|
213
213
|
ansible/module_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
214
214
|
ansible/module_utils/_text.py,sha256=MjBVvIttHxQbicW6EY9F0B7GTbhjyiVDNt92fCZnQOw,1207
|
|
215
|
-
ansible/module_utils/ansible_release.py,sha256=
|
|
215
|
+
ansible/module_utils/ansible_release.py,sha256=MHD1PthxmFO6BBW8FDGHrx_D_sBABtICDeMysD2xoE0,842
|
|
216
216
|
ansible/module_utils/api.py,sha256=8BmCzQtp9rClsLGlDn4I9iJrUFLCdnoEIxYX59_IL9c,5756
|
|
217
217
|
ansible/module_utils/basic.py,sha256=GsM5pubhLqRjdXE21LxdbbzOgRDrQm6a9bJ-_-kHHSI,90082
|
|
218
218
|
ansible/module_utils/connection.py,sha256=5RE7BmO58yvutG4Z1sVNsb1Km9ea1hA37HRcPuSJxFA,7575
|
|
@@ -387,7 +387,7 @@ ansible/module_utils/powershell/Ansible.ModuleUtils.PrivilegeUtil.psm1,sha256=1u
|
|
|
387
387
|
ansible/module_utils/powershell/Ansible.ModuleUtils.SID.psm1,sha256=TX70j9dlg_SGVcb2HrHxakrkZzsyxPtaIeKaRevgy54,3639
|
|
388
388
|
ansible/module_utils/powershell/Ansible.ModuleUtils.WebRequest.psm1,sha256=4Wb0K_GO8maVpQYpdDBrUvl7YgkReeunXSNM1N6nq74,19182
|
|
389
389
|
ansible/module_utils/powershell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
390
|
-
ansible/module_utils/six/__init__.py,sha256=
|
|
390
|
+
ansible/module_utils/six/__init__.py,sha256=j2dk0uS3NrLLJ-4VhBQ8sO7Uep7kt3FE9q1v293nDlo,35372
|
|
391
391
|
ansible/modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
392
392
|
ansible/modules/add_host.py,sha256=VZ3gc-phY5myzGijo6AIB1omD9ykfWpoqRvzleZp3DU,3859
|
|
393
393
|
ansible/modules/apt.py,sha256=267kolDkjiXbO80Oum2wrM96pQQJLHk3NROTe2fCF8w,63056
|
|
@@ -426,7 +426,7 @@ ansible/modules/include_role.py,sha256=9FWEwk09DT0ucD6OOMPOS1i6jkllJOn7gkzJkRg8v
|
|
|
426
426
|
ansible/modules/include_tasks.py,sha256=SrEIkzv7o01GXmRsXmWHhaNJcHiqN9qXZeDsNAhHuo4,2659
|
|
427
427
|
ansible/modules/include_vars.py,sha256=JplpZJT9d4nKPUbKYSlPOh1_huyZuaSmpt-z4i2olx0,6730
|
|
428
428
|
ansible/modules/iptables.py,sha256=94iDMuVpx3Qq52cJaUW0dxZO3FE8cvs4op8t7nsvNm8,35494
|
|
429
|
-
ansible/modules/known_hosts.py,sha256=
|
|
429
|
+
ansible/modules/known_hosts.py,sha256=4mZFUKtNuvTT60cf_XV7P6DjyX-K5IO5RhKHaE8Tqc0,14449
|
|
430
430
|
ansible/modules/lineinfile.py,sha256=x0nR7uJ5B28Ckap_Yo_3zMabc742jXj59Dk9qF616dQ,23595
|
|
431
431
|
ansible/modules/meta.py,sha256=0oLfvydcj8XeZsRR8yoRzgTINaPsEfl3-jxp1T-lzDM,7264
|
|
432
432
|
ansible/modules/mount_facts.py,sha256=vy9Eeu17_EMsJbxgc23pa7DDXwU8rg11WFJTqcLjMXo,26018
|
|
@@ -463,7 +463,7 @@ ansible/modules/wait_for_connection.py,sha256=U7yQEXyWnrTGpaBAfMF1KFQpg3ZhX4QjZd
|
|
|
463
463
|
ansible/modules/yum_repository.py,sha256=3kV5z7nTdLWuYPKT292aj-p8Z4UXwaSKxcXzQktUUkU,23852
|
|
464
464
|
ansible/parsing/__init__.py,sha256=NMP9ZkK59SNdQktw76aWAXVAm5U2POXLgAK7wH-1h0g,742
|
|
465
465
|
ansible/parsing/ajson.py,sha256=nv82WTeWYuKdy4LE_YM6nhLR7eb-Tyr4F6arjTP8nmY,692
|
|
466
|
-
ansible/parsing/dataloader.py,sha256=
|
|
466
|
+
ansible/parsing/dataloader.py,sha256=2znBPFGXFcYKuTCDJ48so9JMsYc1kBN_HV2PixSDQqI,22365
|
|
467
467
|
ansible/parsing/mod_args.py,sha256=5-JzLXH1sW9XxyeZgNOEqWt8_I6cPl2C9VwZQ_3z1K8,15090
|
|
468
468
|
ansible/parsing/plugin_docs.py,sha256=UYWDpLCF4FrBU0lxgR6C2bkoa7N8TBplh4KcW-B6enk,6326
|
|
469
469
|
ansible/parsing/quoting.py,sha256=myYxG625XK6rgNULbBuKp23G2R83c0UilrF1ZImDjGs,1057
|
|
@@ -480,17 +480,17 @@ ansible/parsing/yaml/objects.py,sha256=muP81NhLvhJAh9MZ5UTUp8AMUTkTKM4Pk-xl6gOeV
|
|
|
480
480
|
ansible/playbook/__init__.py,sha256=5FKnJsBz35UvBbwyiLrniAwkdse8jTRzjOrI0RLU05E,4766
|
|
481
481
|
ansible/playbook/attribute.py,sha256=kAWselKvFurdGC0EaKJLh8b9y7IWChZwXG648aH6S-4,7800
|
|
482
482
|
ansible/playbook/base.py,sha256=DL_jvJQ_E21xkyLsZrUxOEUQ0DyQ3XafKo57icx797Y,33809
|
|
483
|
-
ansible/playbook/block.py,sha256=
|
|
483
|
+
ansible/playbook/block.py,sha256=SkEwtHHFGI3gadaF9YhuXH5vjsfwwK5TNqFuayGwD_Y,14383
|
|
484
484
|
ansible/playbook/collectionsearch.py,sha256=GO3tuBSKVeMnfp1xGtGSdHRZzk3eYMhL_zYVCLVcqYA,1828
|
|
485
485
|
ansible/playbook/conditional.py,sha256=oq0Adm8LwibKuBC0LTk1TsQcqS1ZwPjSQuM2FUeip8g,1317
|
|
486
486
|
ansible/playbook/delegatable.py,sha256=BBcw2GU85V7ome7qX0KRg-vZyjv2J890kEHjYQOyoTk,625
|
|
487
487
|
ansible/playbook/handler.py,sha256=2LItktoUgVDejUeoxOJbUqjob8INJFALq6FAUSFEzOE,2735
|
|
488
488
|
ansible/playbook/handler_task_include.py,sha256=kCrBThzmIRWKaecLl9UNB8VBvtVPI0dt8eHpBldsnlY,1391
|
|
489
|
-
ansible/playbook/helpers.py,sha256=
|
|
489
|
+
ansible/playbook/helpers.py,sha256=FAKTvIb99W8JRBBuK_kJCnd3UP-U_YmiLYTzHrd9j-4,14829
|
|
490
490
|
ansible/playbook/included_file.py,sha256=WgPV0H0f4V11nauyQC5u_gPiWWuocMEHGU7vgR3qbWg,12027
|
|
491
491
|
ansible/playbook/loop_control.py,sha256=5rZz6aWXpvvwOD4CzrS_b_cnXIu4Gf56czkomX1NS7w,2022
|
|
492
492
|
ansible/playbook/notifiable.py,sha256=MQz4VZuOga35VLcdUxVd9FQVzFg-djtQZhs09DS2juA,299
|
|
493
|
-
ansible/playbook/play.py,sha256=
|
|
493
|
+
ansible/playbook/play.py,sha256=KiKImFJfJIZoWpjpJu_2LKq8Sk3RtWDBUTpcRglU6LE,19579
|
|
494
494
|
ansible/playbook/play_context.py,sha256=nfluy9HF2bI-LoFCNImpE33EGN_L5Zx8rmvIzVtzrlM,13847
|
|
495
495
|
ansible/playbook/playbook_include.py,sha256=zTzEsS20DB9hSzRfU9DI4-BsteHwzWVshUF_SoIVVE0,5515
|
|
496
496
|
ansible/playbook/role_include.py,sha256=MZd0EnPjQstRg0-AZBso1iCT8Vr9vThAwyBXeaHpjPg,7551
|
|
@@ -515,7 +515,7 @@ ansible/plugins/action/copy.py,sha256=dq8wGc83xYyRc9X887QnOJxdRAt0rB2-NJQxuxowCl
|
|
|
515
515
|
ansible/plugins/action/debug.py,sha256=KPWtGEPbc119_e1rNQztCB-wzelJObAv16qJNHPUNb4,3604
|
|
516
516
|
ansible/plugins/action/dnf.py,sha256=2ObzxBLRPBPy2JCp3wWRzR1fIEHzhS5y34CoAzTXqN0,3664
|
|
517
517
|
ansible/plugins/action/fail.py,sha256=MzIefYaHaRdpjgnqc9eNge0P32btlTPzO6TB22jkadk,1457
|
|
518
|
-
ansible/plugins/action/fetch.py,sha256=
|
|
518
|
+
ansible/plugins/action/fetch.py,sha256=4lNe-55Fy1Ph33m26xLLn6OfYqsRE5nBBKSz0v2jG0s,10047
|
|
519
519
|
ansible/plugins/action/gather_facts.py,sha256=vr-3BJiBDP25aJd9e1uydpS3r8Np2T6nubUbYAls58w,9109
|
|
520
520
|
ansible/plugins/action/group_by.py,sha256=O1PfwBJ4wLyE0BMOhhSfx8tlTYQHT1V-_ZZDD6ShE3Q,1835
|
|
521
521
|
ansible/plugins/action/include_vars.py,sha256=tYsdXiV-NGBJkJ_uhS5Rybp7HJ9_X6Iz_2Ug9ZbZ44A,11436
|
|
@@ -710,7 +710,7 @@ ansible/plugins/test/directory.yml,sha256=UpHBKTYTqusESrl9PA5lyhhIdoMXke6sf_1z5n
|
|
|
710
710
|
ansible/plugins/test/exists.yml,sha256=R8lteO8uYy-XelgK7nK3U_sTUDz0DrTO2BAUr8ltgrM,885
|
|
711
711
|
ansible/plugins/test/failed.yml,sha256=lTzQSd0r-SZn2y_ifWO4eszPWd72oea8fCl44p7erA0,803
|
|
712
712
|
ansible/plugins/test/failure.yml,sha256=lTzQSd0r-SZn2y_ifWO4eszPWd72oea8fCl44p7erA0,803
|
|
713
|
-
ansible/plugins/test/falsy.yml,sha256=
|
|
713
|
+
ansible/plugins/test/falsy.yml,sha256=zoK1YNP94tRd0mDHinoZn4a0ODMZiBFVjiKEAU6L0BU,823
|
|
714
714
|
ansible/plugins/test/file.yml,sha256=_yCsLZH8jHhbEwOyI_X4DxYixut6i7oRHaeZWltH50c,651
|
|
715
715
|
ansible/plugins/test/files.py,sha256=YvdrNZ23EOKIttRBiwThij4sPgbFvgOvgc2Uw9RiMM4,1407
|
|
716
716
|
ansible/plugins/test/finished.yml,sha256=tJ5NDBpiuk-VVq0-Q1CHVi4vI0eZjzT9o43iU5HJvgo,702
|
|
@@ -742,7 +742,7 @@ ansible/plugins/test/success.yml,sha256=YCWf9SYePHlqhffTkKEVUOXWMMlYWDDVGdypw9gn
|
|
|
742
742
|
ansible/plugins/test/successful.yml,sha256=YCWf9SYePHlqhffTkKEVUOXWMMlYWDDVGdypw9gngjk,691
|
|
743
743
|
ansible/plugins/test/superset.yml,sha256=KcPyWv-MqREe_hgKdilPJjOJ1O7hGgHLLZEfvEg1Cd8,714
|
|
744
744
|
ansible/plugins/test/timedout.yml,sha256=w-QWRd_nJqY9oE4ypd6Eyi4oc12ngIDZJBICBvWossU,594
|
|
745
|
-
ansible/plugins/test/truthy.yml,sha256=
|
|
745
|
+
ansible/plugins/test/truthy.yml,sha256=sSGai78h38UtaHd21WiqdhbKb4XmuzijviMJSvu5KD4,806
|
|
746
746
|
ansible/plugins/test/unreachable.yml,sha256=KCrtQULh4YZ3iOZiE0-_SGCCpqnjIDf3n5Go5w5d58k,695
|
|
747
747
|
ansible/plugins/test/uri.py,sha256=j1WZU7eCfNEu3m2udzVTP8nIbJ6TFsG3DmO62FIosM4,965
|
|
748
748
|
ansible/plugins/test/uri.yml,sha256=jqb-Ppm-uQfOh-XgTm6iW8dxW1s2NvFpHBsPBsWEMzM,1115
|
|
@@ -787,15 +787,15 @@ ansible/utils/collection_loader/_collection_meta.py,sha256=p2eZArsO8RCl4PlN1x2I-
|
|
|
787
787
|
ansible/vars/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
788
788
|
ansible/vars/clean.py,sha256=5YwNY0ERBr29vQsdncjKSesLwB_Ku7SNk46edkiCXsM,5959
|
|
789
789
|
ansible/vars/hostvars.py,sha256=cRK_4dssUwIN4aDxxYXEj7KzTazrykQ4PbJotne5oJc,4364
|
|
790
|
-
ansible/vars/manager.py,sha256=
|
|
790
|
+
ansible/vars/manager.py,sha256=bsh_Ie5qSPxySkpxtz37n3uXaPcC4bDbDHN8tcSf4xo,28306
|
|
791
791
|
ansible/vars/plugins.py,sha256=Ry0wY-Y7lMlQgowItFngE6EjP_6sFcUEjvS0tGocweg,3127
|
|
792
792
|
ansible/vars/reserved.py,sha256=NgxlMBm_tloqDVb5TEX4eGhpYsz_AO6-Fmyi3kJpIFk,3107
|
|
793
|
-
ansible_core-2.20.
|
|
794
|
-
ansible_core-2.20.
|
|
795
|
-
ansible_core-2.20.
|
|
796
|
-
ansible_core-2.20.
|
|
797
|
-
ansible_core-2.20.
|
|
798
|
-
ansible_core-2.20.
|
|
793
|
+
ansible_core-2.20.0b2.dist-info/licenses/COPYING,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
794
|
+
ansible_core-2.20.0b2.dist-info/licenses/licenses/Apache-License.txt,sha256=y16Ofl9KOYjhBjwULGDcLfdWBfTEZRXnduOspt-XbhQ,11325
|
|
795
|
+
ansible_core-2.20.0b2.dist-info/licenses/licenses/BSD-3-Clause.txt,sha256=la0N3fE3Se8vBiuvUcFKA8b-E41G7flTic6P8CkUroE,1548
|
|
796
|
+
ansible_core-2.20.0b2.dist-info/licenses/licenses/MIT-license.txt,sha256=jLXp2XurnyZKbye40g9tfmLGtVlxh3pPD4n8xNqX8xc,1023
|
|
797
|
+
ansible_core-2.20.0b2.dist-info/licenses/licenses/PSF-license.txt,sha256=g7BC_H1qyg8Q1o5F76Vrm8ChSWYI5-dyj-CdGlNKBUo,2484
|
|
798
|
+
ansible_core-2.20.0b2.dist-info/licenses/licenses/simplified_bsd.txt,sha256=8R5R7R7sOa0h1Fi6RNgFgHowHBfun-OVOMzJ4rKAk2w,1237
|
|
799
799
|
ansible_test/__init__.py,sha256=20VPOj11c6Ut1Av9RaurgwJvFhMqkWG3vAvcCbecNKw,66
|
|
800
800
|
ansible_test/_data/ansible.cfg,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
801
801
|
ansible_test/_data/coveragerc,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -1044,7 +1044,7 @@ ansible_test/_util/controller/sanity/pylint/plugins/deprecated_calls.py,sha256=3
|
|
|
1044
1044
|
ansible_test/_util/controller/sanity/pylint/plugins/deprecated_comment.py,sha256=tmQf_-2VAT2GVfwa9X9ruBcaj0Sz6Ifx4cXmdzJ99SQ,5226
|
|
1045
1045
|
ansible_test/_util/controller/sanity/pylint/plugins/hide_unraisable.py,sha256=s0AIoK03uqZSTwXSLvd4oXvf4WJ0Ckol5ingitHoMr4,836
|
|
1046
1046
|
ansible_test/_util/controller/sanity/pylint/plugins/string_format.py,sha256=Mb1Mx8WS4RulsORFgyctlFRR0Sn-PYPy4mVu_GYCD18,2359
|
|
1047
|
-
ansible_test/_util/controller/sanity/pylint/plugins/unwanted.py,sha256=
|
|
1047
|
+
ansible_test/_util/controller/sanity/pylint/plugins/unwanted.py,sha256=Xq8ThjQTlO1OkdZl59tIJeGm1GIHYFa1WZYugSQxxNM,8710
|
|
1048
1048
|
ansible_test/_util/controller/sanity/shellcheck/exclude.txt,sha256=8U3ZTe1A1YRCXUB1AIAIgcd33ejBhzelBPkVdOJnhj8,21
|
|
1049
1049
|
ansible_test/_util/controller/sanity/validate-modules/validate.py,sha256=jpNOhA5qJ5LdlWlSOJoJyTUh9H1tepjcSYZXeHdhJRY,114
|
|
1050
1050
|
ansible_test/_util/controller/sanity/validate-modules/validate_modules/__init__.py,sha256=CRUAj-k-zJye4RAGZ8eR9HvP6weM6VKTwGmFYpI_0Bw,816
|
|
@@ -1091,8 +1091,8 @@ ansible_test/config/cloud-config-vultr.ini.template,sha256=XLKHk3lg_8ReQMdWfZzhh
|
|
|
1091
1091
|
ansible_test/config/config.yml,sha256=1zdGucnIl6nIecZA7ISIANvqXiHWqq6Dthsk_6MUwNc,2642
|
|
1092
1092
|
ansible_test/config/inventory.networking.template,sha256=bFNSk8zNQOaZ_twaflrY0XZ9mLwUbRLuNT0BdIFwvn4,1335
|
|
1093
1093
|
ansible_test/config/inventory.winrm.template,sha256=1QU8W-GFLnYEw8yY9bVIvUAVvJYPM3hyoijf6-M7T00,1098
|
|
1094
|
-
ansible_core-2.20.
|
|
1095
|
-
ansible_core-2.20.
|
|
1096
|
-
ansible_core-2.20.
|
|
1097
|
-
ansible_core-2.20.
|
|
1098
|
-
ansible_core-2.20.
|
|
1094
|
+
ansible_core-2.20.0b2.dist-info/METADATA,sha256=9EZQhLa0qNtDowW4jyvDRJReTtejQWpWvZHZjJxSmME,7732
|
|
1095
|
+
ansible_core-2.20.0b2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
1096
|
+
ansible_core-2.20.0b2.dist-info/entry_points.txt,sha256=S9yJij5Im6FgRQxzkqSCnPQokC7PcWrDW_NSygZczJU,451
|
|
1097
|
+
ansible_core-2.20.0b2.dist-info/top_level.txt,sha256=IFbRLjAvih1DYzJWg3_F6t4sCzEMxRO7TOMNs6GkYHo,21
|
|
1098
|
+
ansible_core-2.20.0b2.dist-info/RECORD,,
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import functools
|
|
5
6
|
import os
|
|
6
7
|
import typing as t
|
|
7
8
|
|
|
@@ -108,10 +109,6 @@ class AnsibleUnwantedChecker(BaseChecker):
|
|
|
108
109
|
'Iterator',
|
|
109
110
|
)
|
|
110
111
|
),
|
|
111
|
-
|
|
112
|
-
'ansible.module_utils.six': UnwantedEntry(
|
|
113
|
-
'the Python standard library equivalent'
|
|
114
|
-
),
|
|
115
112
|
}
|
|
116
113
|
|
|
117
114
|
unwanted_functions = {
|
|
@@ -136,6 +133,19 @@ class AnsibleUnwantedChecker(BaseChecker):
|
|
|
136
133
|
modules_only=True),
|
|
137
134
|
}
|
|
138
135
|
|
|
136
|
+
def __init__(self, *args, **kwargs) -> None:
|
|
137
|
+
super().__init__(*args, **kwargs)
|
|
138
|
+
# ansible.module_utils.six is deprecated and collections can still use it until it is removed
|
|
139
|
+
if self.is_ansible_core:
|
|
140
|
+
self.unwanted_imports['ansible.module_utils.six'] = UnwantedEntry(
|
|
141
|
+
'the Python standard library equivalent'
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
@functools.cached_property
|
|
145
|
+
def is_ansible_core(self) -> bool:
|
|
146
|
+
"""True if ansible-core is being tested."""
|
|
147
|
+
return not self.linter.config.collection_name
|
|
148
|
+
|
|
139
149
|
def visit_import(self, node): # type: (astroid.node_classes.Import) -> None
|
|
140
150
|
"""Visit an import node."""
|
|
141
151
|
for name in node.names:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|