ansible-core 2.17.0b1__py3-none-any.whl → 2.17.0rc2__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/config.py CHANGED
@@ -269,7 +269,7 @@ class ConfigCLI(CLI):
269
269
  if not settings[setting].get('description'):
270
270
  continue
271
271
 
272
- default = settings[setting].get('default', '')
272
+ default = self.config.template_default(settings[setting].get('default', ''), get_constants())
273
273
  if subkey == 'env':
274
274
  stype = settings[setting].get('type', '')
275
275
  if stype == 'boolean':
@@ -351,7 +351,7 @@ class ConfigCLI(CLI):
351
351
  if entry['key'] not in seen[entry['section']]:
352
352
  seen[entry['section']].append(entry['key'])
353
353
 
354
- default = opt.get('default', '')
354
+ default = self.config.template_default(opt.get('default', ''), get_constants())
355
355
  if opt.get('type', '') == 'list' and not isinstance(default, string_types):
356
356
  # python lists are not valid ini ones
357
357
  default = ', '.join(default)
@@ -413,14 +413,16 @@ class ConfigCLI(CLI):
413
413
  if context.CLIARGS['format'] == 'display':
414
414
  if isinstance(config[setting], Setting):
415
415
  # proceed normally
416
+ value = config[setting].value
416
417
  if config[setting].origin == 'default':
417
418
  color = 'green'
419
+ value = self.config.template_default(value, get_constants())
418
420
  elif config[setting].origin == 'REQUIRED':
419
421
  # should include '_terms', '_input', etc
420
422
  color = 'red'
421
423
  else:
422
424
  color = 'yellow'
423
- msg = "%s(%s) = %s" % (setting, config[setting].origin, config[setting].value)
425
+ msg = "%s(%s) = %s" % (setting, config[setting].origin, value)
424
426
  else:
425
427
  color = 'green'
426
428
  msg = "%s(%s) = %s" % (setting, 'default', config[setting].get('default'))
ansible/cli/doc.py CHANGED
@@ -1296,14 +1296,15 @@ class DocCLI(CLI, RoleMixin):
1296
1296
 
1297
1297
  if doc.get('description'):
1298
1298
  if isinstance(doc['description'], list):
1299
- desc = " ".join(doc['description'])
1299
+ descs = doc['description']
1300
1300
  else:
1301
- desc = doc['description']
1302
- text.append("%s" % DocCLI.warp_fill(DocCLI.tty_ify(desc), limit, initial_indent=opt_indent, subsequent_indent=opt_indent))
1301
+ descs = [doc['description']]
1302
+ for desc in descs:
1303
+ text.append("%s" % DocCLI.warp_fill(DocCLI.tty_ify(desc), limit, initial_indent=opt_indent, subsequent_indent=opt_indent))
1303
1304
  text.append('')
1304
1305
 
1305
1306
  if doc.get('options'):
1306
- text.append(_format("Options", 'bold') + " (%s inicates it is required):" % ("=" if C.ANSIBLE_NOCOLOR else 'red'))
1307
+ text.append(_format("Options", 'bold') + " (%s indicates it is required):" % ("=" if C.ANSIBLE_NOCOLOR else 'red'))
1307
1308
  DocCLI.add_fields(text, doc.pop('options'), limit, opt_indent)
1308
1309
 
1309
1310
  if doc.get('attributes', False):
@@ -1355,12 +1356,13 @@ class DocCLI(CLI, RoleMixin):
1355
1356
  text.append("> %s %s (%s)" % (plugin_type.upper(), _format(doc.pop('plugin_name'), 'bold'), doc.pop('filename')))
1356
1357
 
1357
1358
  if isinstance(doc['description'], list):
1358
- desc = " ".join(doc.pop('description'))
1359
+ descs = doc.pop('description')
1359
1360
  else:
1360
- desc = doc.pop('description')
1361
+ descs = [doc.pop('description')]
1361
1362
 
1362
1363
  text.append('')
1363
- text.append(DocCLI.warp_fill(DocCLI.tty_ify(desc), limit, initial_indent=base_indent, subsequent_indent=base_indent))
1364
+ for desc in descs:
1365
+ text.append(DocCLI.warp_fill(DocCLI.tty_ify(desc), limit, initial_indent=base_indent, subsequent_indent=base_indent))
1364
1366
 
1365
1367
  if display.verbosity > 0:
1366
1368
  doc['added_in'] = DocCLI._format_version_added(doc.pop('version_added', 'historical'), doc.pop('version_added_collection', 'ansible-core'))
@@ -1385,7 +1387,7 @@ class DocCLI(CLI, RoleMixin):
1385
1387
 
1386
1388
  if doc.get('options', False):
1387
1389
  text.append("")
1388
- text.append(_format("OPTIONS", 'bold') + " (%s inicates it is required):" % ("=" if C.ANSIBLE_NOCOLOR else 'red'))
1390
+ text.append(_format("OPTIONS", 'bold') + " (%s indicates it is required):" % ("=" if C.ANSIBLE_NOCOLOR else 'red'))
1389
1391
  DocCLI.add_fields(text, doc.pop('options'), limit, opt_indent, man=(display.verbosity == 0))
1390
1392
 
1391
1393
  if doc.get('attributes', False):
ansible/config/manager.py CHANGED
@@ -302,6 +302,17 @@ class ConfigManager(object):
302
302
  # ensure we always have config def entry
303
303
  self._base_defs['CONFIG_FILE'] = {'default': None, 'type': 'path'}
304
304
 
305
+ def template_default(self, value, variables):
306
+ if isinstance(value, string_types) and (value.startswith('{{') and value.endswith('}}')) and variables is not None:
307
+ # template default values if possible
308
+ # NOTE: cannot use is_template due to circular dep
309
+ try:
310
+ t = NativeEnvironment().from_string(value)
311
+ value = t.render(variables)
312
+ except Exception:
313
+ pass # not templatable
314
+ return value
315
+
305
316
  def _read_config_yaml_file(self, yml_file):
306
317
  # TODO: handle relative paths as relative to the directory containing the current playbook instead of CWD
307
318
  # Currently this is only used with absolute paths to the `ansible/config` directory
@@ -555,18 +566,9 @@ class ConfigManager(object):
555
566
  to_native(_get_entry(plugin_type, plugin_name, config)))
556
567
  else:
557
568
  origin = 'default'
558
- value = defs[config].get('default')
559
- if isinstance(value, string_types) and (value.startswith('{{') and value.endswith('}}')) and variables is not None:
560
- # template default values if possible
561
- # NOTE: cannot use is_template due to circular dep
562
- try:
563
- t = NativeEnvironment().from_string(value)
564
- value = t.render(variables)
565
- except Exception:
566
- pass # not templatable
567
-
568
- # ensure correct type, can raise exceptions on mismatched types
569
+ value = self.template_default(defs[config].get('default'), variables)
569
570
  try:
571
+ # ensure correct type, can raise exceptions on mismatched types
570
572
  value = ensure_type(value, defs[config].get('type'), origin=origin, origin_ftype=origin_ftype)
571
573
  except ValueError as e:
572
574
  if origin.startswith('env:') and value == '':
@@ -427,13 +427,13 @@ class PlayIterator:
427
427
  # might be there from previous flush
428
428
  state.handlers = self.handlers[:]
429
429
  state.update_handlers = False
430
- state.cur_handlers_task = 0
431
430
 
432
431
  while True:
433
432
  try:
434
433
  task = state.handlers[state.cur_handlers_task]
435
434
  except IndexError:
436
435
  task = None
436
+ state.cur_handlers_task = 0
437
437
  state.run_state = state.pre_flushing_run_state
438
438
  state.update_handlers = True
439
439
  break
ansible/galaxy/role.py CHANGED
@@ -386,6 +386,8 @@ class GalaxyRole(object):
386
386
  else:
387
387
  os.makedirs(self.path)
388
388
 
389
+ resolved_archive = unfrackpath(archive_parent_dir, follow=False)
390
+
389
391
  # We strip off any higher-level directories for all of the files
390
392
  # contained within the tar file here. The default is 'github_repo-target'.
391
393
  # Gerrit instances, on the other hand, does not have a parent directory at all.
@@ -400,33 +402,29 @@ class GalaxyRole(object):
400
402
  if not (attr_value := getattr(member, attr, None)):
401
403
  continue
402
404
 
403
- if attr_value.startswith(os.sep) and not is_subpath(attr_value, archive_parent_dir):
404
- err = f"Invalid {attr} for tarfile member: path {attr_value} is not a subpath of the role {archive_parent_dir}"
405
- raise AnsibleError(err)
406
-
407
405
  if attr == 'linkname':
408
406
  # Symlinks are relative to the link
409
- relative_to_archive_dir = os.path.dirname(getattr(member, 'name', ''))
410
- archive_dir_path = os.path.join(archive_parent_dir, relative_to_archive_dir, attr_value)
407
+ relative_to = os.path.dirname(getattr(member, 'name', ''))
411
408
  else:
412
409
  # Normalize paths that start with the archive dir
413
410
  attr_value = attr_value.replace(archive_parent_dir, "", 1)
414
411
  attr_value = os.path.join(*attr_value.split(os.sep)) # remove leading os.sep
415
- archive_dir_path = os.path.join(archive_parent_dir, attr_value)
412
+ relative_to = ''
416
413
 
417
- resolved_archive = unfrackpath(archive_parent_dir)
418
- resolved_path = unfrackpath(archive_dir_path)
419
- if not is_subpath(resolved_path, resolved_archive):
420
- err = f"Invalid {attr} for tarfile member: path {resolved_path} is not a subpath of the role {resolved_archive}"
414
+ full_path = os.path.join(resolved_archive, relative_to, attr_value)
415
+ if not is_subpath(full_path, resolved_archive, real=True):
416
+ err = f"Invalid {attr} for tarfile member: path {full_path} is not a subpath of the role {resolved_archive}"
421
417
  raise AnsibleError(err)
422
418
 
423
- relative_path = os.path.join(*resolved_path.replace(resolved_archive, "", 1).split(os.sep)) or '.'
419
+ relative_path_dir = os.path.join(resolved_archive, relative_to)
420
+ relative_path = os.path.join(*full_path.replace(relative_path_dir, "", 1).split(os.sep))
424
421
  setattr(member, attr, relative_path)
425
422
 
426
423
  if _check_working_data_filter():
427
424
  # deprecated: description='extract fallback without filter' python_version='3.11'
428
425
  role_tar_file.extract(member, to_native(self.path), filter='data') # type: ignore[call-arg]
429
426
  else:
427
+ # Remove along with manual path filter once Python 3.12 is minimum supported version
430
428
  role_tar_file.extract(member, to_native(self.path))
431
429
 
432
430
  # write out the install info file for later use
@@ -17,6 +17,6 @@
17
17
 
18
18
  from __future__ import annotations
19
19
 
20
- __version__ = '2.17.0b1'
20
+ __version__ = '2.17.0rc2'
21
21
  __author__ = 'Ansible, Inc.'
22
22
  __codename__ = "Gallows Pole"
@@ -22,7 +22,7 @@ Compat distro library.
22
22
  from __future__ import annotations
23
23
 
24
24
  # The following makes it easier for us to script updates of the bundled code
25
- _BUNDLED_METADATA = {"pypi_name": "distro", "version": "1.6.0"}
25
+ _BUNDLED_METADATA = {"pypi_name": "distro", "version": "1.8.0"}
26
26
 
27
27
  # The following additional changes have been made:
28
28
  # * Remove optparse since it is not needed for our use.
@@ -175,7 +175,7 @@ class LinuxVirtual(Virtual):
175
175
  virtual_facts['virtualization_type'] = 'RHEV'
176
176
  found_virt = True
177
177
 
178
- if product_name in ('VMware Virtual Platform', 'VMware7,1', 'VMware20,1'):
178
+ if product_name and product_name.startswith(("VMware",)):
179
179
  guest_tech.add('VMware')
180
180
  if not found_virt:
181
181
  virtual_facts['virtualization_type'] = 'VMware'
ansible/modules/dnf5.py CHANGED
@@ -504,7 +504,7 @@ class Dnf5Module(YumDnf):
504
504
  conf.config_file_path = self.conf_file
505
505
 
506
506
  try:
507
- base.load_config_from_file()
507
+ base.load_config()
508
508
  except RuntimeError as e:
509
509
  self.module.fail_json(
510
510
  msg=str(e),
@@ -544,7 +544,8 @@ class Dnf5Module(YumDnf):
544
544
  log_router = base.get_logger()
545
545
  global_logger = libdnf5.logger.GlobalLogger()
546
546
  global_logger.set(log_router.get(), libdnf5.logger.Logger.Level_DEBUG)
547
- logger = libdnf5.logger.create_file_logger(base)
547
+ # FIXME hardcoding the filename does not seem right, should libdnf5 expose the default file name?
548
+ logger = libdnf5.logger.create_file_logger(base, "dnf5.log")
548
549
  log_router.add_logger(logger)
549
550
 
550
551
  if self.update_cache:
@@ -569,7 +570,11 @@ class Dnf5Module(YumDnf):
569
570
  for repo in repo_query:
570
571
  repo.enable()
571
572
 
572
- sack.update_and_load_enabled_repos(True)
573
+ try:
574
+ sack.load_repos()
575
+ except AttributeError:
576
+ # dnf5 < 5.2.0.0
577
+ sack.update_and_load_enabled_repos(True)
573
578
 
574
579
  if self.update_cache and not self.names and not self.list:
575
580
  self.module.exit_json(
@@ -601,7 +606,11 @@ class Dnf5Module(YumDnf):
601
606
  self.module.exit_json(msg="", results=results, rc=0)
602
607
 
603
608
  settings = libdnf5.base.GoalJobSettings()
604
- settings.group_with_name = True
609
+ try:
610
+ settings.set_group_with_name(True)
611
+ except AttributeError:
612
+ # dnf5 < 5.2.0.0
613
+ settings.group_with_name = True
605
614
  if self.bugfix or self.security:
606
615
  advisory_query = libdnf5.advisory.AdvisoryQuery(base)
607
616
  types = []
ansible/modules/uri.py CHANGED
@@ -107,14 +107,15 @@ options:
107
107
  default: no
108
108
  follow_redirects:
109
109
  description:
110
- - Whether or not the URI module should follow redirects. V(all) will follow all redirects.
111
- V(safe) will follow only "safe" redirects, where "safe" means that the client is only
112
- doing a GET or HEAD on the URI to which it is being redirected. V(none) will not follow
113
- any redirects. Note that V(true) and V(false) choices are accepted for backwards compatibility,
114
- where V(true) is the equivalent of V(all) and V(false) is the equivalent of V(safe). V(true) and V(false)
115
- are deprecated and will be removed in some future version of Ansible.
110
+ - Whether or not the URI module should follow redirects.
111
+ choices:
112
+ all: Will follow all redirects.
113
+ none: Will not follow any redirects.
114
+ safe: Only redirects doing GET or HEAD requests will be followed.
115
+ urllib2: Defer to urllib2 behavior (As of writing this follows HTTP redirects).
116
+ 'no': (DEPRECATED, will be removed in the future version) alias of V(none).
117
+ 'yes': (DEPRECATED, will be removed in the future version) alias of V(all).
116
118
  type: str
117
- choices: ['all', 'no', 'none', 'safe', 'urllib2', 'yes']
118
119
  default: safe
119
120
  creates:
120
121
  description:
@@ -13,7 +13,7 @@ description:
13
13
  underlying transport but instead runs in a PowerShell interpreter.
14
14
  version_added: "2.7"
15
15
  requirements:
16
- - pypsrp>=0.4.0 (Python library)
16
+ - pypsrp>=0.4.0, <1.0.0 (Python library)
17
17
  extends_documentation_fragment:
18
18
  - connection_pipelining
19
19
  options:
@@ -99,12 +99,12 @@ options:
99
99
  - section: url_lookup
100
100
  key: follow_redirects
101
101
  choices:
102
- - urllib2
103
- - all
104
- - 'yes'
105
- - safe
106
- - none
107
- - 'no'
102
+ all: Will follow all redirects.
103
+ none: Will not follow any redirects.
104
+ safe: Only redirects doing GET or HEAD requests will be followed.
105
+ urllib2: Defer to urllib2 behavior (As of writing this follows HTTP redirects).
106
+ 'no': (DEPRECATED, will be removed in the future version) alias of V(none).
107
+ 'yes': (DEPRECATED, will be removed in the future version) alias of V(all).
108
108
  use_gssapi:
109
109
  description:
110
110
  - Use GSSAPI handler of requests
ansible/release.py CHANGED
@@ -17,6 +17,6 @@
17
17
 
18
18
  from __future__ import annotations
19
19
 
20
- __version__ = '2.17.0b1'
20
+ __version__ = '2.17.0rc2'
21
21
  __author__ = 'Ansible, Inc.'
22
22
  __codename__ = "Gallows Pole"
@@ -85,26 +85,26 @@ def generate_ansible_template_vars(path, fullpath=None, dest_path=None):
85
85
  template_uid = os.stat(b_path).st_uid
86
86
 
87
87
  temp_vars = {
88
- 'template_host': to_text(os.uname()[1]),
89
- 'template_path': path,
88
+ 'template_host': to_unsafe_text(os.uname()[1]),
89
+ 'template_path': to_unsafe_text(path),
90
90
  'template_mtime': datetime.datetime.fromtimestamp(os.path.getmtime(b_path)),
91
- 'template_uid': to_text(template_uid),
91
+ 'template_uid': to_unsafe_text(template_uid),
92
92
  'template_run_date': datetime.datetime.now(),
93
- 'template_destpath': to_native(dest_path) if dest_path else None,
93
+ 'template_destpath': wrap_var(to_native(dest_path)) if dest_path else None,
94
94
  }
95
95
 
96
96
  if fullpath is None:
97
- temp_vars['template_fullpath'] = os.path.abspath(path)
97
+ temp_vars['template_fullpath'] = wrap_var(os.path.abspath(path))
98
98
  else:
99
- temp_vars['template_fullpath'] = fullpath
99
+ temp_vars['template_fullpath'] = wrap_var(fullpath)
100
100
 
101
101
  managed_default = C.DEFAULT_MANAGED_STR
102
102
  managed_str = managed_default.format(
103
- host=temp_vars['template_host'],
104
- uid=temp_vars['template_uid'],
105
- file=temp_vars['template_path'].replace('%', '%%'),
103
+ host="{{ template_host }}",
104
+ uid="{{ template_uid }}",
105
+ file="{{ template_path }}"
106
106
  )
107
- temp_vars['ansible_managed'] = to_unsafe_text(time.strftime(to_native(managed_str), time.localtime(os.path.getmtime(b_path))))
107
+ temp_vars['ansible_managed'] = time.strftime(to_native(managed_str), time.localtime(os.path.getmtime(b_path)))
108
108
 
109
109
  return temp_vars
110
110
 
ansible/utils/display.py CHANGED
@@ -451,7 +451,7 @@ class Display(metaclass=Singleton):
451
451
 
452
452
  def _log(self, msg: str, color: str | None = None, caplevel: int | None = None):
453
453
 
454
- if caplevel is None or self.log_verbosity > caplevel:
454
+ if logger and (caplevel is None or self.log_verbosity > caplevel):
455
455
  msg2 = msg.lstrip('\n')
456
456
 
457
457
  lvl = logging.INFO
@@ -462,6 +462,7 @@ class Display(metaclass=Singleton):
462
462
  except KeyError:
463
463
  # this should not happen, but JIC
464
464
  raise AnsibleAssertionError('Invalid color supplied to display: %s' % color)
465
+
465
466
  # actually log
466
467
  logger.log(lvl, msg2)
467
468
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ansible-core
3
- Version: 2.17.0b1
3
+ Version: 2.17.0rc2
4
4
  Summary: Radically simple IT automation
5
5
  Home-page: https://ansible.com/
6
6
  Author: Ansible, Inc.
@@ -3,13 +3,13 @@ ansible/__main__.py,sha256=EnLcULXNtSXkuJ8igEHPPLBTZKAwqXv4PvMEhvzp2Oo,1430
3
3
  ansible/constants.py,sha256=vRwEcoynqtuKDPKsxKUY94XzrTSV3J0y1slb907DioU,9140
4
4
  ansible/context.py,sha256=oKYyfjfWpy8vDeProtqfnqSmuij_t75_5e5t0U_hQ1g,1933
5
5
  ansible/keyword_desc.yml,sha256=vE9joFgSeHR4Djl7Bd-HHVCrGByRCrTUmWYZ8LKPZKk,7412
6
- ansible/release.py,sha256=_cqtMDp5jk27e8FYVragFsoQIJ_bEG2mEGN2HJhDlFU,834
6
+ ansible/release.py,sha256=grMBcL2FJJlTs0BXFMNu_bgy_-y625b3VRpw0HD9G68,835
7
7
  ansible/_vendor/__init__.py,sha256=2QBeBwT7uG7M3Aw-pIdCpt6XPtHMCpbEKfACYKA7xIg,2033
8
8
  ansible/cli/__init__.py,sha256=fzgR82NIGBH3GujIMehhAaP4KYszn4uztuCaFYRUpGk,28718
9
9
  ansible/cli/adhoc.py,sha256=quJ9WzRzf3dz_dtDGmahNMffqyNVy1jzQCMo21YL5Qg,8194
10
- ansible/cli/config.py,sha256=OW-ZtThC_xPgBtTRKVM80mH-yZeuk-ocu8IvTnB6Yxg,22450
10
+ ansible/cli/config.py,sha256=54IEhW7pH5bpWB7u1abEh-4zjU2xqhB0nQi5dHGBZSY,22663
11
11
  ansible/cli/console.py,sha256=GOdaJfy0NtBIo4HUom4V4VrcrmLiBYcaSBZgbmAP9Ss,21987
12
- ansible/cli/doc.py,sha256=kjyJlvlWwrE87I9TT0KT_XEoaltXqDPtBJHHBbGr1QU,69602
12
+ ansible/cli/doc.py,sha256=WM-LAlsVREtyppuYKQDF3E6EDnhtRsrGItQSxXz1rjI,69662
13
13
  ansible/cli/galaxy.py,sha256=E9llaIyZEbfFl9j2SEbu74Gghpt6x6Egz1CwtqPw_2g,95494
14
14
  ansible/cli/inventory.py,sha256=bVT2FRQLSab_vDqw_vTMLpxzd2HYW1KDslsEb6gqFSI,16771
15
15
  ansible/cli/playbook.py,sha256=d0x_X0BXjxYjPJ-qc6JcyGxR6IzxdvnSjoT4tUtaGKQ,10865
@@ -27,14 +27,14 @@ ansible/compat/selectors.py,sha256=pbI2QH2fT2WAOtmEBbd6Cp2yXyCBbb5TLR7iitqnAkU,1
27
27
  ansible/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
28
  ansible/config/ansible_builtin_runtime.yml,sha256=nwL_-rqEEmpuSHxZH70pJBiEosDKOPkYIboH3_7LVEY,376076
29
29
  ansible/config/base.yml,sha256=aovj2JgkotyG1UKFFISOUJaZ2UBF2eRRc1pzJRQ6Z5s,85646
30
- ansible/config/manager.py,sha256=3_SHtwx8ZMD83iALCV5HZB8XUWFlTMmS0ordGQLNc8w,25717
30
+ ansible/config/manager.py,sha256=MvNZnqHDtz9uda5_ryNvpCv2M3frAl81bvZvgS1lGko,25730
31
31
  ansible/errors/__init__.py,sha256=pJ0Cd87ET5SNut851lrHH8EAoKEal2DdUJYl8yjRd8E,14739
32
32
  ansible/errors/yaml_strings.py,sha256=fKfgD3rC017dyMackTpu-LkvbsdnsfBAKCxMH-fDtIg,3858
33
33
  ansible/executor/__init__.py,sha256=mRvbCJPA-_veSG5ka3v04G5vsarLVDeB3EWFsu6geSI,749
34
34
  ansible/executor/action_write_locks.py,sha256=Up2n3cwFCr4T4IvttHpe3QOxRBF_9NgWJ1tFm9CHpfM,1915
35
35
  ansible/executor/interpreter_discovery.py,sha256=i9BS5Rw0TWC_32zqRO3KTURjn1J6CugrVxKKqhvmn-k,9974
36
36
  ansible/executor/module_common.py,sha256=4pVfjMgCle9ttAZTeuwSx3Kdi0rljagyHC11i4VnCl4,65755
37
- ansible/executor/play_iterator.py,sha256=TiPXcXx22fh3l3-fopLdaGFesAjb9utH-EmxG2WIWEA,30423
37
+ ansible/executor/play_iterator.py,sha256=FRzl8ELbICqzud-lT2KNuLmPoPntzayf2Y9DboEwso0,30427
38
38
  ansible/executor/playbook_executor.py,sha256=S_dwBYqYTQtN32AMQXxQTOpVCczV4KJ8ezergt1nlmA,15014
39
39
  ansible/executor/stats.py,sha256=gcBhJQrZTgE95737d6lArJ3FpTlbAfVt6GMhEqs5ZPU,3180
40
40
  ansible/executor/task_executor.py,sha256=dnt52xdlu9pK_0utDAMT8DBzXD6ixFY5vFPRGd3GMXU,60391
@@ -57,7 +57,7 @@ ansible/executor/process/__init__.py,sha256=mRvbCJPA-_veSG5ka3v04G5vsarLVDeB3EWF
57
57
  ansible/executor/process/worker.py,sha256=BEVV3ZSSawsuJSQB1nF2q2b58xcIS9WkmnmHEMQZPAI,10041
58
58
  ansible/galaxy/__init__.py,sha256=b21BxSru5rGKDcFsolAnZ8GIvyDmD4Gj1nMACnZ7HK8,2497
59
59
  ansible/galaxy/api.py,sha256=72wp5fBqel-nw9xyTh8Yb0qdJjvdIF6e8kRk8BvwvSo,40193
60
- ansible/galaxy/role.py,sha256=5ZhfYS2CedATUTnwTqqWlIeEFwP4gMnqZ7gjs5N8DUU,21395
60
+ ansible/galaxy/role.py,sha256=yPLmpm1wESUHqmIRYJ9aLlfs-7TBOHwksa4W286SqGs,21120
61
61
  ansible/galaxy/token.py,sha256=Skm_MSpUgn7_SXeGHzdPEPR06kVZ-2dJgYGjm89c8MY,6131
62
62
  ansible/galaxy/user_agent.py,sha256=_Vr4ZJV8HNXhSbhw_dvUr378OjFdyhtLRHyywCjGU6g,760
63
63
  ansible/galaxy/collection/__init__.py,sha256=DBZFQRFQUA7jQknzOXAJbJezXeMNbGpgZpvtBzw3ZJg,78889
@@ -140,7 +140,7 @@ ansible/inventory/host.py,sha256=PDb5OTplhfpUIvdHiP2BckUOB1gUl302N-3sW0_sTyg,503
140
140
  ansible/inventory/manager.py,sha256=45mHgZTAkQ3IjAtrgsNzJXvynC-HIEor-JJE-V3xXN4,29454
141
141
  ansible/module_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
142
142
  ansible/module_utils/_text.py,sha256=VkWgAnSNVCbTQqZgllUObBFsH3uM4EUW5srl1UR9t1g,544
143
- ansible/module_utils/ansible_release.py,sha256=_cqtMDp5jk27e8FYVragFsoQIJ_bEG2mEGN2HJhDlFU,834
143
+ ansible/module_utils/ansible_release.py,sha256=grMBcL2FJJlTs0BXFMNu_bgy_-y625b3VRpw0HD9G68,835
144
144
  ansible/module_utils/api.py,sha256=DWIuLW5gDWuyyDHLLgGnub42Qa8kagDdkf1xDeLAFl4,5784
145
145
  ansible/module_utils/basic.py,sha256=1BHf9_6SsFlfeTcYlOqOzbnITG3x8galaBcPm8ec6nE,85703
146
146
  ansible/module_utils/connection.py,sha256=q_BdUaST6E44ltHsWPOFOheXK9vKmzaJvP-eQOrOrmE,8394
@@ -185,7 +185,7 @@ ansible/module_utils/csharp/Ansible.Become.cs,sha256=1yasfX8SpbcIWJWiobr2Ms-Hl5W
185
185
  ansible/module_utils/csharp/Ansible.Privilege.cs,sha256=7e46na6k6ygdRwN53bzfIS8O-IwfM1TF_q5DeFH2Z80,19398
186
186
  ansible/module_utils/csharp/Ansible.Process.cs,sha256=g6R2PkbxiVBry4bk35ieWwYCAZOi7RSeyKmtOW8j90I,19449
187
187
  ansible/module_utils/csharp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
188
- ansible/module_utils/distro/__init__.py,sha256=w3fzYf7ymcBi5Hk1GOoZIm_bZWKMuGysQtCo8y5BNe8,1943
188
+ ansible/module_utils/distro/__init__.py,sha256=rm-n2ri9SCdppcZhv4iEVT0qEBmH7BLbImOcpYRWLHQ,1943
189
189
  ansible/module_utils/distro/_distro.py,sha256=zJMW0bb4xg-ZVpRdDcdAutOIGEPIN3FT3a7NZTVJPZI,49484
190
190
  ansible/module_utils/facts/__init__.py,sha256=Vyndmo-7rUjG-SX3hQHGoviksC_DeKSijZ2tFDESIAQ,1890
191
191
  ansible/module_utils/facts/ansible_collector.py,sha256=TGc3uEaOx0u-ucNM5_pt0HQTG-mN8zlQJLYPZXoeEFw,6566
@@ -253,7 +253,7 @@ ansible/module_utils/facts/virtual/base.py,sha256=V1WM831aLueSnON5jJbRT0oX7JW_sd
253
253
  ansible/module_utils/facts/virtual/dragonfly.py,sha256=fx8MZjy6FqfSpshxnPyGs5B4FezmYFqqTr1XibWWSeE,959
254
254
  ansible/module_utils/facts/virtual/freebsd.py,sha256=Wc3hjsxrjWnLaZFBX3zM4lZpeGy4ZS5BTOXTs9SRN-I,3018
255
255
  ansible/module_utils/facts/virtual/hpux.py,sha256=NLQfUpXE7Gh-eZFfLyugvnnJjWFIGv9xqjC_zV4DLKw,2823
256
- ansible/module_utils/facts/virtual/linux.py,sha256=yhkT9oJlQvvZ3a7mFv0R8u3YMpniCQmKEMVoWkbi9PM,17839
256
+ ansible/module_utils/facts/virtual/linux.py,sha256=ifvJuZ6S0IgFSLVH3ajCfkX2eFv2g5cajvid7UFCARE,17822
257
257
  ansible/module_utils/facts/virtual/netbsd.py,sha256=53n3E9vowi8kCbFyj7vDeKocZ3OU_TLVSKRJRU8SenE,2896
258
258
  ansible/module_utils/facts/virtual/openbsd.py,sha256=J8Ow7x3J5ZuHFThqAwIdAdTLV1V9vN_U965Q34TAvNA,2785
259
259
  ansible/module_utils/facts/virtual/sunos.py,sha256=OcT2yemUKUgF8lHzMNkTqCwD4ScHwgTEA6zX3lJ39A0,6217
@@ -290,7 +290,7 @@ ansible/modules/deb822_repository.py,sha256=CWgVVSuq45dkHrozG2Yk229FdIdGfaFSmBFB
290
290
  ansible/modules/debconf.py,sha256=6zKDjdehURYxMe9YfUDTQn7YQlhS4bm6STGbUm1T17E,9205
291
291
  ansible/modules/debug.py,sha256=jqFvwGzDkB5NlcxR8vXhHjaakv9Ib_GjGdT2GbKhMhE,2907
292
292
  ansible/modules/dnf.py,sha256=7_5SY2qJ5hoBgtIKWecYanV_sH2J-2LoJQWxMf9uLBI,55256
293
- ansible/modules/dnf5.py,sha256=w2weTJxQgiTlt9FA80SJLJFrTXWGkimJIsCh_Wk4YGo,25904
293
+ ansible/modules/dnf5.py,sha256=TJmBLB1ai6kIiZSy_MiaRNkrRBKcbNm6oYMohLB8Q4Q,26243
294
294
  ansible/modules/dpkg_selections.py,sha256=rBH3A2lr6DB6qGlF3fF2716QU4jMSqC6EjikYffTtOI,2782
295
295
  ansible/modules/expect.py,sha256=J7IsU3OvBOeK8YtSWKkQKTfgmnWs2OSP_ntyj3UjmvM,9367
296
296
  ansible/modules/fail.py,sha256=95z8jFyVaizwwupSce04kj1wwnOmbM0ooUX7mXluoyU,1659
@@ -339,7 +339,7 @@ ansible/modules/sysvinit.py,sha256=lW3t6HBH_lCcBi9mBhRgiYmeADIu0Xbaf9uM_b05FH0,1
339
339
  ansible/modules/tempfile.py,sha256=lA9e8lyFXf9J5ud0R6Jkt8sIFyRcOwzhc9Jz-5_HOZQ,3627
340
340
  ansible/modules/template.py,sha256=D1sm36GB_mEimH0CfWq1cJ4w1eRvpcsHwZ-ufVzC_Gs,4537
341
341
  ansible/modules/unarchive.py,sha256=hlRAn2Ma36rmeQ4-OldGLPnHu3w8rlxlvLovQ2pYg5c,44880
342
- ansible/modules/uri.py,sha256=gO-ALWZ1T7sp9mJk78Jnmku2KXnhMH06ANfevGA9oX4,28368
342
+ ansible/modules/uri.py,sha256=WgJA04YvgKTpQsMJFWAg9ITbj8cpIYwZD_tPlD_hcz4,28203
343
343
  ansible/modules/user.py,sha256=W53gNWD8ymV5o7j80-ROHMfkwG4IPVLuQ2r5Efk98_U,118055
344
344
  ansible/modules/validate_argument_spec.py,sha256=epLh4EUaoDLvhdVszRM68Q2QdicK-3jxhMA530dQaIE,3044
345
345
  ansible/modules/wait_for.py,sha256=VXFFcYG88EJVXnrJfa0fzh9rD_2luSty__qdzRuTAQE,27322
@@ -437,7 +437,7 @@ ansible/plugins/cliconf/__init__.py,sha256=NlIs8a21RJSPOmoO-fVSJtO4OGNPxCAMFntDZ
437
437
  ansible/plugins/connection/__init__.py,sha256=7B9UmhcM4divUhg-RsurhOOGQiCVeLGGh0Zp_zCvK4w,17947
438
438
  ansible/plugins/connection/local.py,sha256=A-XQy_wIky16xrgkm2KW2jyZLpzmcUPjNOPtoQQnDJg,8339
439
439
  ansible/plugins/connection/paramiko_ssh.py,sha256=NnCHPiVZTzJVu0EQ4p4g0k0jxUgEHC9PHvuD6IFZ6O4,30045
440
- ansible/plugins/connection/psrp.py,sha256=WRpeCYp77UZpjp9qRahgn-He-Kq-gp2Aa52aBWs2e0U,36732
440
+ ansible/plugins/connection/psrp.py,sha256=1wihaS4h7-Yq2SVsQ9KI1ipxn7Jg9fvzmf7q7KannOw,36740
441
441
  ansible/plugins/connection/ssh.py,sha256=zTaDGv23CmIvrXqSkMmoosLnFecszJlaFl1fDD8BOMA,62811
442
442
  ansible/plugins/connection/winrm.py,sha256=x9FHPRkEyI_ua4PUPbYVb7_joyMJYEiGSv45jxxkNTQ,40599
443
443
  ansible/plugins/doc_fragments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -568,7 +568,7 @@ ansible/plugins/lookup/subelements.py,sha256=2dZdjfOe0_yNkYMQRDWl86eFyt4YqEm1mOY
568
568
  ansible/plugins/lookup/template.py,sha256=xFYWKY808hHPj7nJbaLM2mZro79p6TjpFXyAcRK4AR0,7112
569
569
  ansible/plugins/lookup/together.py,sha256=T4J2miqHTnrDP6-CrlJ3wgI0UgyZyYVRVrDTWx3olpY,2110
570
570
  ansible/plugins/lookup/unvault.py,sha256=5LU8Lf7Gx0yRh8z0u1giSXkd93pkSZ34ibkoQnHCsyw,2049
571
- ansible/plugins/lookup/url.py,sha256=JteVmGKClq0fI29W6CKbnStNe3TxWWdAplTjRbuaPlU,9068
571
+ ansible/plugins/lookup/url.py,sha256=8JFMlk9diqsboHr1ArYGudsapPBP995maJdzHlair74,9378
572
572
  ansible/plugins/lookup/varnames.py,sha256=h5ZAHOx8MlEvv466AirXCaGZ5DeH95evGb2he8_aKqA,2330
573
573
  ansible/plugins/lookup/vars.py,sha256=eXVZdwumdcp3ajaDX7JyIYeGvQ6L-HxHGfnob9Pnkg8,3424
574
574
  ansible/plugins/netconf/__init__.py,sha256=50w1g2rhUo6L-xtiMT20jbR8WyOnhwNSRd2IRNSjNX4,17094
@@ -636,7 +636,7 @@ ansible/plugins/test/version.yml,sha256=2d55HZGIniPu53z6_bV4C26_1sqRAHJqCwesOU3m
636
636
  ansible/plugins/test/version_compare.yml,sha256=2d55HZGIniPu53z6_bV4C26_1sqRAHJqCwesOU3ma38,3283
637
637
  ansible/plugins/vars/__init__.py,sha256=D3YwVKABesBwag9e7GsLOxlRWqEO5NgfHDmYSq0z_1k,1331
638
638
  ansible/plugins/vars/host_group_vars.py,sha256=Qouyds_KOEuqaz4GlTYQnQUxXyTyyjFMj7maRnH8miU,6284
639
- ansible/template/__init__.py,sha256=4gyXdTlPj6W-npR1VuYyGBcKl2tOjr_xuypQzVv8jYc,40958
639
+ ansible/template/__init__.py,sha256=_TjK5oSfTlC4sGqaOegaAyjVP_m2C9SmI2S2d690HLQ,40967
640
640
  ansible/template/native_helpers.py,sha256=XjaTCQFSq0X6xTVENviRKYRVqmgI7IXCx70DeZ0C7F4,4333
641
641
  ansible/template/template.py,sha256=47dvX9AqSKlp6-n2QRPrHyhI3bboVyOpQekmQYryUB4,1583
642
642
  ansible/template/vars.py,sha256=YUCVqNLS3wjYHACSei7f5uwZMZRBTwiyjGge09EP00E,2854
@@ -645,7 +645,7 @@ ansible/utils/_junit_xml.py,sha256=5op7cjGK7Et0OSjcAAuUEqNWNAv5ZoNI0rkLx2ERXwM,8
645
645
  ansible/utils/cmd_functions.py,sha256=VmGs5ntdVaaqAJHcCTpGG3rYAAcTNl1b2-Iw4YVOt9Y,2180
646
646
  ansible/utils/color.py,sha256=LjJO_12OsJiavBxwSDVXtLxdTzdwd2YWUp1OJ6KcM2g,4057
647
647
  ansible/utils/context_objects.py,sha256=vYulSJkzR3zxsQF_6_AqbPCCMy8WGC5dSqLFXJZqGIo,3034
648
- ansible/utils/display.py,sha256=lwcxAZDBDsSitFXqOde7QwQXoW2QkN-ZHIMw9ms2rqY,32080
648
+ ansible/utils/display.py,sha256=Ld3dNZTvvLRZmPCq191Iu-t4EIzoIP1fY_-X7qcoSts,32094
649
649
  ansible/utils/encrypt.py,sha256=MU0teLATt7qtTwk-y809H5HApafSl2QMW1INWIUL3T4,7221
650
650
  ansible/utils/fqcn.py,sha256=Jx5SwYzlbMZ-SlkjyKkM4pCe5jIyXeeo62BU1msUunU,1215
651
651
  ansible/utils/galaxy.py,sha256=wQ3s8Mr7Ib0C2ou1SloA76ZOraJr48ADZZf_6vaNYdg,3830
@@ -678,7 +678,7 @@ ansible/vars/hostvars.py,sha256=rzxFov5bLpRtCSAFJswuRSCBx0DMNPnMJwkFKepvMuY,4764
678
678
  ansible/vars/manager.py,sha256=ujVDQXWvy8BihIxGzBPX6fMeUl2AlclkwadKMo6VjSk,38583
679
679
  ansible/vars/plugins.py,sha256=RsRU9fiLcJwPIAyTYnmVZglsiEOMCIgQskflavE-XnE,4546
680
680
  ansible/vars/reserved.py,sha256=kZiQMPvaFin35006gLwDpX16w-9xlu6EaL4LSTKP40U,2531
681
- ansible_core-2.17.0b1.data/scripts/ansible-test,sha256=dyY2HtRZotRQO3b89HGXY_KnJgBvgsm4eLIe4B2LUoA,1637
681
+ ansible_core-2.17.0rc2.data/scripts/ansible-test,sha256=dyY2HtRZotRQO3b89HGXY_KnJgBvgsm4eLIe4B2LUoA,1637
682
682
  ansible_test/__init__.py,sha256=20VPOj11c6Ut1Av9RaurgwJvFhMqkWG3vAvcCbecNKw,66
683
683
  ansible_test/_data/ansible.cfg,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
684
684
  ansible_test/_data/coveragerc,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -702,7 +702,7 @@ ansible_test/_data/pytest/config/default.ini,sha256=3f5D0MA9l2RafBBriLaG2eH3ePHP
702
702
  ansible_test/_data/pytest/config/legacy.ini,sha256=WBpVsIeHL2szv5oFznM2WXYizBgYhBrivpvQliYUKTw,85
703
703
  ansible_test/_data/requirements/ansible-test.txt,sha256=YnGKjOaFRegMcwnUgWuHcCr8rfb4kJVoHNaQ5BxFHvw,260
704
704
  ansible_test/_data/requirements/ansible.txt,sha256=SoGhVAYgDYWYKwMSH0g8WsCQczVft6Obb5ePPMQPRTU,838
705
- ansible_test/_data/requirements/constraints.txt,sha256=MzqRG9eh7CYXv3K8HSX9lQ6tNzO-_WphuA9z7pb0v80,821
705
+ ansible_test/_data/requirements/constraints.txt,sha256=XzihQc6_VxMGAGU5zX2odpKYJVEvCzaOO18pEm2G9Zw,893
706
706
  ansible_test/_data/requirements/sanity.ansible-doc.in,sha256=9KRJJ-n37IMHpLJLv_VmFOhYF8Y3Vnk6eRyhwVKzC8A,108
707
707
  ansible_test/_data/requirements/sanity.ansible-doc.txt,sha256=rmCIJGr5BK2pq84QLbO3uDudXkX5Q1Be4B19kihcK-E,169
708
708
  ansible_test/_data/requirements/sanity.changelog.in,sha256=gWVsUch6Jxrq55MEutB-b9GB6Pp2PL-FqM84v-aI4Ng,78
@@ -979,9 +979,9 @@ ansible_test/config/cloud-config-vultr.ini.template,sha256=XLKHk3lg_8ReQMdWfZzhh
979
979
  ansible_test/config/config.yml,sha256=wb3knoBmZewG3GWOMnRHoVPQWW4vPixKLPMNS6vJmTc,2620
980
980
  ansible_test/config/inventory.networking.template,sha256=bFNSk8zNQOaZ_twaflrY0XZ9mLwUbRLuNT0BdIFwvn4,1335
981
981
  ansible_test/config/inventory.winrm.template,sha256=1QU8W-GFLnYEw8yY9bVIvUAVvJYPM3hyoijf6-M7T00,1098
982
- ansible_core-2.17.0b1.dist-info/COPYING,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
983
- ansible_core-2.17.0b1.dist-info/METADATA,sha256=LD4hEFY_PFgGEgauISc7IDAoF5jPi_PF1KmaMw3rTVk,6947
984
- ansible_core-2.17.0b1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
985
- ansible_core-2.17.0b1.dist-info/entry_points.txt,sha256=0mpmsrIhODChxKl3eS-NcVQCaMetBn8KdPLtVxQgR64,453
986
- ansible_core-2.17.0b1.dist-info/top_level.txt,sha256=IFbRLjAvih1DYzJWg3_F6t4sCzEMxRO7TOMNs6GkYHo,21
987
- ansible_core-2.17.0b1.dist-info/RECORD,,
982
+ ansible_core-2.17.0rc2.dist-info/COPYING,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
983
+ ansible_core-2.17.0rc2.dist-info/METADATA,sha256=iYAzAFo8Bkvga6-m7XliJdPukm6wvA_gh-woWz1NNPg,6948
984
+ ansible_core-2.17.0rc2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
985
+ ansible_core-2.17.0rc2.dist-info/entry_points.txt,sha256=0mpmsrIhODChxKl3eS-NcVQCaMetBn8KdPLtVxQgR64,453
986
+ ansible_core-2.17.0rc2.dist-info/top_level.txt,sha256=IFbRLjAvih1DYzJWg3_F6t4sCzEMxRO7TOMNs6GkYHo,21
987
+ ansible_core-2.17.0rc2.dist-info/RECORD,,
@@ -1,5 +1,6 @@
1
1
  # do not add a cryptography or pyopenssl constraint to this file, they require special handling, see get_cryptography_requirements in python_requirements.py
2
2
  # do not add a coverage constraint to this file, it is handled internally by ansible-test
3
+ pypsrp < 1.0.0 # in case the next major version is too big of a change
3
4
  pywinrm >= 0.3.0 ; python_version < '3.11' # message encryption support
4
5
  pywinrm >= 0.4.3 ; python_version >= '3.11' # support for Python 3.11
5
6
  pytest >= 4.5.0 # pytest 4.5.0 added support for --strict-markers