ansible-core 2.13.8__py3-none-any.whl → 2.13.9rc1__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.

Files changed (43) hide show
  1. ansible/cli/doc.py +10 -4
  2. ansible/galaxy/api.py +29 -10
  3. ansible/galaxy/collection/__init__.py +3 -0
  4. ansible/galaxy/collection/concrete_artifact_manager.py +34 -17
  5. ansible/galaxy/dependency_resolution/dataclasses.py +11 -1
  6. ansible/galaxy/dependency_resolution/providers.py +0 -1
  7. ansible/module_utils/ansible_release.py +1 -1
  8. ansible/module_utils/api.py +14 -1
  9. ansible/module_utils/csharp/Ansible.Basic.cs +265 -7
  10. ansible/plugins/lookup/password.py +79 -39
  11. ansible/release.py +1 -1
  12. ansible/utils/encrypt.py +9 -6
  13. {ansible_core-2.13.8.dist-info → ansible_core-2.13.9rc1.dist-info}/METADATA +1 -1
  14. {ansible_core-2.13.8.dist-info → ansible_core-2.13.9rc1.dist-info}/RECORD +43 -43
  15. {ansible_core-2.13.8.dist-info → ansible_core-2.13.9rc1.dist-info}/WHEEL +1 -1
  16. ansible_test/_internal/ci/__init__.py +2 -2
  17. ansible_test/_internal/ci/azp.py +12 -8
  18. ansible_test/_internal/ci/local.py +2 -2
  19. ansible_test/_internal/classification/__init__.py +51 -43
  20. ansible_test/_internal/cli/argparsing/argcompletion.py +20 -5
  21. ansible_test/_internal/cli/commands/sanity.py +0 -15
  22. ansible_test/_internal/commands/coverage/combine.py +3 -1
  23. ansible_test/_internal/commands/integration/__init__.py +6 -2
  24. ansible_test/_internal/commands/integration/cloud/__init__.py +3 -1
  25. ansible_test/_internal/commands/sanity/__init__.py +7 -0
  26. ansible_test/_internal/commands/sanity/pylint.py +11 -0
  27. ansible_test/_internal/commands/sanity/validate_modules.py +66 -5
  28. ansible_test/_internal/config.py +6 -12
  29. ansible_test/_internal/core_ci.py +8 -1
  30. ansible_test/_internal/data.py +17 -8
  31. ansible_test/_internal/delegation.py +1 -2
  32. ansible_test/_internal/metadata.py +4 -0
  33. ansible_test/_internal/payload.py +75 -6
  34. ansible_test/_internal/python_requirements.py +15 -0
  35. ansible_test/_internal/target.py +3 -7
  36. ansible_test/_internal/test.py +1 -1
  37. ansible_test/_internal/util.py +17 -0
  38. ansible_test/_util/controller/sanity/mypy/ansible-test.ini +3 -0
  39. ansible_test/_util/controller/sanity/validate-modules/validate_modules/main.py +92 -126
  40. {ansible_core-2.13.8.data → ansible_core-2.13.9rc1.data}/scripts/ansible-test +0 -0
  41. {ansible_core-2.13.8.dist-info → ansible_core-2.13.9rc1.dist-info}/COPYING +0 -0
  42. {ansible_core-2.13.8.dist-info → ansible_core-2.13.9rc1.dist-info}/entry_points.txt +0 -0
  43. {ansible_core-2.13.8.dist-info → ansible_core-2.13.9rc1.dist-info}/top_level.txt +0 -0
@@ -197,18 +197,31 @@ def _parse_content(content):
197
197
  '''
198
198
  password = content
199
199
  salt = None
200
+ ident = None
200
201
 
201
202
  salt_slug = u' salt='
203
+ ident_slug = u' ident='
204
+ rem = u''
202
205
  try:
203
206
  sep = content.rindex(salt_slug)
204
207
  except ValueError:
205
208
  # No salt
206
209
  pass
207
210
  else:
208
- salt = password[sep + len(salt_slug):]
211
+ rem = content[sep + len(salt_slug):]
209
212
  password = content[:sep]
210
213
 
211
- return password, salt
214
+ if rem:
215
+ try:
216
+ sep = rem.rindex(ident_slug)
217
+ except ValueError:
218
+ # no ident
219
+ salt = rem
220
+ else:
221
+ ident = rem[sep + len(ident_slug):]
222
+ salt = rem[:sep]
223
+
224
+ return password, salt, ident
212
225
 
213
226
 
214
227
  def _format_content(password, salt, encrypt=None, ident=None):
@@ -338,47 +351,74 @@ class LookupModule(LookupBase):
338
351
  self.set_options(var_options=variables, direct=kwargs)
339
352
 
340
353
  for term in terms:
354
+
355
+ changed = None
341
356
  relpath, params = self._parse_parameters(term)
342
357
  path = self._loader.path_dwim(relpath)
343
358
  b_path = to_bytes(path, errors='surrogate_or_strict')
344
359
  chars = _gen_candidate_chars(params['chars'])
345
-
346
- changed = None
347
- # make sure only one process finishes all the job first
348
- first_process, lockfile = _get_lock(b_path)
349
-
350
- content = _read_password_file(b_path)
351
-
352
- if content is None or b_path == to_bytes('/dev/null'):
353
- plaintext_password = random_password(params['length'], chars, params['seed'])
354
- salt = None
355
- changed = True
356
- else:
357
- plaintext_password, salt = _parse_content(content)
358
-
359
- encrypt = params['encrypt']
360
- if encrypt and not salt:
361
- changed = True
362
- try:
363
- salt = random_salt(BaseHash.algorithms[encrypt].salt_size)
364
- except KeyError:
365
- salt = random_salt()
366
-
367
- ident = params['ident']
368
- if encrypt and not ident:
369
- changed = True
370
- try:
371
- ident = BaseHash.algorithms[encrypt].implicit_ident
372
- except KeyError:
373
- ident = None
374
-
375
- if changed and b_path != to_bytes('/dev/null'):
376
- content = _format_content(plaintext_password, salt, encrypt=encrypt, ident=ident)
377
- _write_password_file(b_path, content)
378
-
379
- if first_process:
380
- # let other processes continue
381
- _release_lock(lockfile)
360
+ ident = None
361
+ first_process = None
362
+ lockfile = None
363
+
364
+ try:
365
+ # make sure only one process finishes all the job first
366
+ first_process, lockfile = _get_lock(b_path)
367
+
368
+ content = _read_password_file(b_path)
369
+
370
+ if content is None or b_path == to_bytes('/dev/null'):
371
+ plaintext_password = random_password(params['length'], chars, params['seed'])
372
+ salt = None
373
+ changed = True
374
+ else:
375
+ plaintext_password, salt, ident = _parse_content(content)
376
+
377
+ encrypt = params['encrypt']
378
+ if encrypt and not salt:
379
+ changed = True
380
+ try:
381
+ salt = random_salt(BaseHash.algorithms[encrypt].salt_size)
382
+ except KeyError:
383
+ salt = random_salt()
384
+
385
+ ident = params['ident']
386
+ if encrypt and not ident:
387
+ changed = True
388
+ try:
389
+ ident = BaseHash.algorithms[encrypt].implicit_ident
390
+ except KeyError:
391
+ ident = None
392
+
393
+ encrypt = params['encrypt']
394
+ if encrypt and not salt:
395
+ changed = True
396
+ try:
397
+ salt = random_salt(BaseHash.algorithms[encrypt].salt_size)
398
+ except KeyError:
399
+ salt = random_salt()
400
+
401
+ if not ident:
402
+ ident = params['ident']
403
+ elif params['ident'] and ident != params['ident']:
404
+ raise AnsibleError('The ident parameter provided (%s) does not match the stored one (%s).' % (ident, params['ident']))
405
+
406
+ if encrypt and not ident:
407
+ try:
408
+ ident = BaseHash.algorithms[encrypt].implicit_ident
409
+ except KeyError:
410
+ ident = None
411
+ if ident:
412
+ changed = True
413
+
414
+ if changed and b_path != to_bytes('/dev/null'):
415
+ content = _format_content(plaintext_password, salt, encrypt=encrypt, ident=ident)
416
+ _write_password_file(b_path, content)
417
+
418
+ finally:
419
+ if first_process:
420
+ # let other processes continue
421
+ _release_lock(lockfile)
382
422
 
383
423
  if encrypt:
384
424
  password = do_encrypt(plaintext_password, encrypt, salt=salt, ident=ident)
ansible/release.py CHANGED
@@ -19,6 +19,6 @@
19
19
  from __future__ import (absolute_import, division, print_function)
20
20
  __metaclass__ = type
21
21
 
22
- __version__ = '2.13.8'
22
+ __version__ = '2.13.9rc1'
23
23
  __author__ = 'Ansible, Inc.'
24
24
  __codename__ = "Nobody's Fault but Mine"
ansible/utils/encrypt.py CHANGED
@@ -231,12 +231,15 @@ class PasslibHash(BaseHash):
231
231
  settings['ident'] = ident
232
232
 
233
233
  # starting with passlib 1.7 'using' and 'hash' should be used instead of 'encrypt'
234
- if hasattr(self.crypt_algo, 'hash'):
235
- result = self.crypt_algo.using(**settings).hash(secret)
236
- elif hasattr(self.crypt_algo, 'encrypt'):
237
- result = self.crypt_algo.encrypt(secret, **settings)
238
- else:
239
- raise AnsibleError("installed passlib version %s not supported" % passlib.__version__)
234
+ try:
235
+ if hasattr(self.crypt_algo, 'hash'):
236
+ result = self.crypt_algo.using(**settings).hash(secret)
237
+ elif hasattr(self.crypt_algo, 'encrypt'):
238
+ result = self.crypt_algo.encrypt(secret, **settings)
239
+ else:
240
+ raise AnsibleError("installed passlib version %s not supported" % passlib.__version__)
241
+ except ValueError as e:
242
+ raise AnsibleError("Could not hash the secret.", orig_exc=e)
240
243
 
241
244
  # passlib.hash should always return something or raise an exception.
242
245
  # Still ensure that there is always a result.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ansible-core
3
- Version: 2.13.8
3
+ Version: 2.13.9rc1
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=hwZGuCn2AAmZK_S7Tjp-5fcOD8ckMtnOa5G5w2QsEHI,1394
3
3
  ansible/constants.py,sha256=YlrxSyBWSu7qjW2cQWV2hKEdiUl4et2QlsuNum2UmLc,8663
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=7jVvSDgZp_RDF6SIK5KXcsM-ggJUJgK5bBdpBslMVgg,927
6
+ ansible/release.py,sha256=GfYI4PGdEuOh4I41Ohg9JpcacbH_qBrfGHAdINChI7I,930
7
7
  ansible/_vendor/__init__.py,sha256=wJRKH7kI9OzYVY9hgSchOsTNTmTnugpPLGYj9Y5akX0,2086
8
8
  ansible/cli/__init__.py,sha256=PgnfbRlVWR5SpobxKIcKKzCqwdmL0YbBxvx1okt7_XM,26451
9
9
  ansible/cli/adhoc.py,sha256=Zcat_7O0xMYd_LNXXOUY0lFjd4a1r6TPcKrbZCgdDpA,7663
10
10
  ansible/cli/config.py,sha256=IcDtL6JpRHtc5BUB894FUOyWGBnnWUfNxVEVZeCZZuQ,19617
11
11
  ansible/cli/console.py,sha256=4c1TUD_NjUPhhQzrPfz7IrSjKy11PJdA1Ny-XpPj0Bc,18680
12
- ansible/cli/doc.py,sha256=ZHW_VpUUsqbCfQD95YckI1kZiqHqY11uxLYdELJt6Xg,61446
12
+ ansible/cli/doc.py,sha256=lNkpFmN8GYavfVAJKTcg0uI4j-KpSgG6ZKH6Us8sGfw,61820
13
13
  ansible/cli/galaxy.py,sha256=icBuUsJ_KwhnNM3M790CSRlZee5NRhThyhudNOQD9qA,90332
14
14
  ansible/cli/inventory.py,sha256=ppeR2jXFkoY9EvS7HsHNFxy2uF3qqo0jH576Ix2EFbY,16700
15
15
  ansible/cli/playbook.py,sha256=Of69ZAdQw4TYaydZaW5TpYu4VWrU95LwPG_o8qGTaOU,10305
@@ -56,12 +56,12 @@ ansible/executor/powershell/module_wrapper.ps1,sha256=JkCL_6aAZoXgQmFjU5hgEzTCMd
56
56
  ansible/executor/process/__init__.py,sha256=1lMXN1i2fFqslda4BmeI5tpYMFP95D5Wpr1AjDJi-SQ,833
57
57
  ansible/executor/process/worker.py,sha256=-83Lcq9fL8pMO-A7GPFXQdKBz5oY9NTDJtvNd9mtejk,8477
58
58
  ansible/galaxy/__init__.py,sha256=_ccTedn8dUGGtkmHcQLIkeje_YD0TYSXlvCl1AOY5fE,2533
59
- ansible/galaxy/api.py,sha256=XMRIRicGBhi1ODI1tRPfnbMz0QsAQzH_l66DRgCEYD4,38860
59
+ ansible/galaxy/api.py,sha256=E8nCKBj5JGNoYLeoPejVPFyYy1mz60Umdbz4T_bBs1k,39592
60
60
  ansible/galaxy/role.py,sha256=MQPXa21Gmhrcc5lEhM3akU8XwuLiFgQKGVdmTt_L4ZE,18108
61
61
  ansible/galaxy/token.py,sha256=K0dAwD3Fjkn3Zs2N9sG98UesSWfAukie47QGyYpIf0M,6167
62
62
  ansible/galaxy/user_agent.py,sha256=x7cJzzpnTngHcwqSUd2hg0i28Dv0tbAyBdke5CSiNhM,813
63
- ansible/galaxy/collection/__init__.py,sha256=EHvZj0NhBxv2YqIUPArSmOU0xhNTvKXuqTK-OEZjQSw,70362
64
- ansible/galaxy/collection/concrete_artifact_manager.py,sha256=rr-p-VrWYsxKuBRxH97VWFgRpbLZDT2IQiZflGUwQmA,28159
63
+ ansible/galaxy/collection/__init__.py,sha256=aTsOf5FR5WiC9-mCyXaWCPzrDlf1Qgu_I5a8zHM1zTs,70498
64
+ ansible/galaxy/collection/concrete_artifact_manager.py,sha256=HbH94ZlQ0Yb3QHD3IuwCFJctNMMnuGP2xF2lEvh_ue0,28961
65
65
  ansible/galaxy/collection/galaxy_api_proxy.py,sha256=tZ5AIdvH2FHli4KUmcWTgFBwJnI14rAgM6wC3Iv3RDE,7409
66
66
  ansible/galaxy/collection/gpg.py,sha256=1wk22RJnX--FsB-4h_EdaT05PWlx9AMxhfH3H7db1i4,7312
67
67
  ansible/galaxy/data/collections_galaxy_meta.yml,sha256=hHjByff1gzYthBt9GxECeEG4GFVS0PvdyUjvwSObqEw,3506
@@ -129,9 +129,9 @@ ansible/galaxy/data/network/tests/inventory,sha256=4CIzgZsaCYREEFSRkYE_fMe6Ng8hK
129
129
  ansible/galaxy/data/network/tests/test.yml.j2,sha256=rjvtKhlkGT_CI_dgBLHX14eI41S6jFPypqESN8Uztgg,199
130
130
  ansible/galaxy/data/network/vars/main.yml.j2,sha256=3qtsgmeZTZ37OdmQNpmI9R6XxOEzJcOhjjGQYGFb85w,36
131
131
  ansible/galaxy/dependency_resolution/__init__.py,sha256=_aYUOgXph4RELAgyphHdRByfPNyESfQOY5qYaRFrv3c,2142
132
- ansible/galaxy/dependency_resolution/dataclasses.py,sha256=-O5RSo5P_9WI3DIDiPzLgvXUownWX7l96aKnAgwMAUQ,20975
132
+ ansible/galaxy/dependency_resolution/dataclasses.py,sha256=UrL1yRv-Afc1tnETCPrYTaKFrS82Q670m4EwlXMCBOs,21636
133
133
  ansible/galaxy/dependency_resolution/errors.py,sha256=7QSmgfeGrespnlr-eqKRQP3fopl4G_wRIiTSDILBrKs,717
134
- ansible/galaxy/dependency_resolution/providers.py,sha256=7vgs1SilEa50e0QpfaUnkRGrKYeh6pii6CT0ulrz9rI,25062
134
+ ansible/galaxy/dependency_resolution/providers.py,sha256=aY2FQgkucYMMGGjlK8v0V8bzR6pL1PAcaCner_vHIS8,24946
135
135
  ansible/galaxy/dependency_resolution/reporters.py,sha256=q-jyfsRu5qve8nikZ0_cBQar3dOX4_WMSAUXZd9xlqg,687
136
136
  ansible/galaxy/dependency_resolution/resolvers.py,sha256=XHBYqltTS7AV4mSiAF2ImXP53W6Yadog_rrqKxrpZU0,676
137
137
  ansible/galaxy/dependency_resolution/versioning.py,sha256=fGmuNhgwHaCKfHb6uH91A7ztuB86nDgiMW3htSI06DY,1779
@@ -143,8 +143,8 @@ ansible/inventory/host.py,sha256=PaP9XSZMyAQ3-qN3KxRK2poIZnPSLvHGwf5DI9Gj3Q8,496
143
143
  ansible/inventory/manager.py,sha256=zk6besJNTgzg2oalD_vS1RFPRoFYLCjI0T66_i72-BU,25641
144
144
  ansible/module_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
145
145
  ansible/module_utils/_text.py,sha256=VCjTJovTxGfLahnzyrvOehpwTXLpRzMUug6wheirt4A,565
146
- ansible/module_utils/ansible_release.py,sha256=7jVvSDgZp_RDF6SIK5KXcsM-ggJUJgK5bBdpBslMVgg,927
147
- ansible/module_utils/api.py,sha256=TKacH22Afdud1NWFSbmKwrO3mU1Br-KnnEh7cSJvRYU,5251
146
+ ansible/module_utils/ansible_release.py,sha256=GfYI4PGdEuOh4I41Ohg9JpcacbH_qBrfGHAdINChI7I,930
147
+ ansible/module_utils/api.py,sha256=BTo7stVOANbtd-ngZslaqx70r9t5gfvo44cKyu5SFjU,5837
148
148
  ansible/module_utils/basic.py,sha256=A4Z1S1PaXz11Qk0GHuc99IMI3sAe2zlkHATLIbSkpS0,86537
149
149
  ansible/module_utils/connection.py,sha256=XHxMlyAdwLiXDSo8jBMkV61-lz_0FDJUYH1B152UGJU,8430
150
150
  ansible/module_utils/errors.py,sha256=MLzb4wJ0-s9DewJp__Bl_NljsbkDbBGZ4qImy8G5AJU,3296
@@ -184,7 +184,7 @@ ansible/module_utils/compat/selinux.py,sha256=FDJE4H5flBECz6k11dI0BObuCZkhToAEcN
184
184
  ansible/module_utils/compat/typing.py,sha256=hniYPak6K3WAvI9SmtI0VSv4NGX0__t82t8cVsH0HY4,638
185
185
  ansible/module_utils/compat/version.py,sha256=Ut6SYr4Vde2MsC0a9WMtHjAD43YHxTT7cVt8uLXgQvo,12786
186
186
  ansible/module_utils/csharp/Ansible.AccessToken.cs,sha256=bGKFk92EEiG4omGPdUk3YZ_GzrDhzn0mO5yu_qC2rVs,16066
187
- ansible/module_utils/csharp/Ansible.Basic.cs,sha256=hhipp9LdbSKuNHnRvLFTHaV-uXhXf_vXnL19fKa3fi0,67135
187
+ ansible/module_utils/csharp/Ansible.Basic.cs,sha256=slTfWp_cpHuxlzjSQMT5VMqIBKg8XE0Ynsa_w0WoX7Q,77734
188
188
  ansible/module_utils/csharp/Ansible.Become.cs,sha256=py7VKd4XjFahf8blwX_Zj5pUvVVCA547SaGDCpMJfME,30728
189
189
  ansible/module_utils/csharp/Ansible.Privilege.cs,sha256=xdreXzRqhvp2kpGWVqFrDrnZozb_JANVVhH_7MDZ4fw,19592
190
190
  ansible/module_utils/csharp/Ansible.Process.cs,sha256=YTTK2LNwxlUa1Xdvf3KER71JFyrZSyrsrZtEX5vkoqo,19568
@@ -490,7 +490,7 @@ ansible/plugins/lookup/items.py,sha256=TIeLaiW2PXHxZQ7Rd2cvoNg2blHtYkzSP8uI783xa
490
490
  ansible/plugins/lookup/lines.py,sha256=InvhZbBIIKpz-y0sTzCQRQmoG0RuOwGyvdpWXh_bmxk,2214
491
491
  ansible/plugins/lookup/list.py,sha256=7BylyTlSdmafiMXCVG7DIwqF2I5nAiDj9ot3nE_r3Ok,1142
492
492
  ansible/plugins/lookup/nested.py,sha256=vxDIkQNlXGmooMyaECeJ7C1Wv_sohgvJ-6cjrDYARbg,2723
493
- ansible/plugins/lookup/password.py,sha256=mBFr4mQjIlMP96KKtmGMWp_sravgjGGL14xPkS8OXRw,16573
493
+ ansible/plugins/lookup/password.py,sha256=NH-NNAQ-lGvfVPNYfhBhrAPHXgtFXygK8MJyCLAKAzk,18067
494
494
  ansible/plugins/lookup/pipe.py,sha256=ErSJZCMzgvVXxS3zKEelGD_0VObOCyq03lt2JxTYpOQ,3006
495
495
  ansible/plugins/lookup/random_choice.py,sha256=c7Cq2ufuDX1cOlMqvbjeoDT0B4r6jllprnl0FysUSgA,1574
496
496
  ansible/plugins/lookup/sequence.py,sha256=klnr8ewcq7gz5S_Z-CMSR8OsSR2KgLSUrhDQ4xRV1zU,9171
@@ -528,7 +528,7 @@ ansible/utils/cmd_functions.py,sha256=rh7_j2C93vVt-nueP9L2Ouz3Y_QAEQ7kI4dZTu2S6M
528
528
  ansible/utils/color.py,sha256=sBoONbLleSeCVPJMzyP4pvwSs1tKiSYwpCmAUq1Tzy0,4110
529
529
  ansible/utils/context_objects.py,sha256=1-j7SRLgVJU3J5b2PkXMcXS391z435SsKsYIU1m0eCw,3119
530
530
  ansible/utils/display.py,sha256=GEaMeP328ODZXSEhRxqDgEUrGGZE7JGR6vCQxRnMjh0,19081
531
- ansible/utils/encrypt.py,sha256=vIO_1Z6hIuDv78On9RC_D9PQoFZ99jhhq9qBbSINbMI,10041
531
+ ansible/utils/encrypt.py,sha256=ZFoIfe58bUWaCkrZeCHIjPoiPIuaJm_kLHKwC5Ien0o,10183
532
532
  ansible/utils/fqcn.py,sha256=bGTXbsj7wt0zfIf2c_mpLPTj8bGnjs1ACiRZAZpEs58,1268
533
533
  ansible/utils/galaxy.py,sha256=KkaFwPFCcn8S50R4jWDYzYm2H-2b95JUOxY2dAYPGIg,3914
534
534
  ansible/utils/hashing.py,sha256=YwnljDgZv2pJ82aydTSBGqmYWUujcOLHuwb-3S4AWfc,2904
@@ -560,7 +560,7 @@ ansible/vars/hostvars.py,sha256=dg3jpVmNwSg8EJ4SIvYGT80uxMgRtrOW6vvtDfrQzDU,5152
560
560
  ansible/vars/manager.py,sha256=qo5jn1kCnY71eVoyZOJwUn-E0k2eZaJLAiKzbtn3wRA,36285
561
561
  ansible/vars/plugins.py,sha256=EoGPunQbSIYm57H4YSimfHeWMEnry5VpMWkRgYf60KQ,3518
562
562
  ansible/vars/reserved.py,sha256=nkbIBnGaQvuEsPNpgDtsVZEygY8SUXUE_iVjx-2vYm0,2661
563
- ansible_core-2.13.8.data/scripts/ansible-test,sha256=CYIYL99IxWdVTtDIj3avilIJXhGAmtjuKPPWNuLWuc8,1690
563
+ ansible_core-2.13.9rc1.data/scripts/ansible-test,sha256=CYIYL99IxWdVTtDIj3avilIJXhGAmtjuKPPWNuLWuc8,1690
564
564
  ansible_test/__init__.py,sha256=6e721yAyyyocRKzbCKtQXloAfFP7Aqv0L3zG70uh-4A,190
565
565
  ansible_test/_data/ansible.cfg,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
566
566
  ansible_test/_data/coveragerc,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -616,15 +616,15 @@ ansible_test/_internal/bootstrap.py,sha256=RSh4bnn7lMPjgahD9vJacuv1mxDCSVltGlone
616
616
  ansible_test/_internal/cache.py,sha256=zbFztnXN5RshrYZJZ0BlXayH06l194DIFjWfQw0gvws,1051
617
617
  ansible_test/_internal/cgroup.py,sha256=CORPMcQY8bUxARH2raa6_PAl588XBxb6u1tIIglwB3s,3874
618
618
  ansible_test/_internal/completion.py,sha256=cF7s7dVHbZTntWhXcQyobRh2DF6eZWG4bd2hCv38FHo,11058
619
- ansible_test/_internal/config.py,sha256=UCANVJllQXTTa9VSKa0O_txmVwfYHWRKGoVprfX72-A,13744
619
+ ansible_test/_internal/config.py,sha256=69BQzblr96aLnyQTkkYC2vDEVOpvrdpAVP81yWqlIsc,13188
620
620
  ansible_test/_internal/connections.py,sha256=OKZhOv9ZfIoP4Z8j9B88ymYX_XLbwtcehzP9NJM-Egg,8506
621
621
  ansible_test/_internal/constants.py,sha256=EDk2CYKDCZBhKP1DIM_FHH3RatbuvVvYtZ5RLXjrVsE,2019
622
622
  ansible_test/_internal/containers.py,sha256=ch0i2AEWgum0JGYf_sm4pNmuHPSvCxif4ea2oJ9FUk4,36885
623
623
  ansible_test/_internal/content_config.py,sha256=2XG93e2gjfr4WbzW4hNEPIyhgIJJAZyPj15lVELeQEg,5808
624
- ansible_test/_internal/core_ci.py,sha256=qRJJPmdCYRMbWXyLDQfXMYlo2GGmz7nQ1JtPehdPnkM,17765
624
+ ansible_test/_internal/core_ci.py,sha256=pe2yg_N9UpH0iI4ERMttvv8yJeknoqPKvAwaQPqJ_rA,17988
625
625
  ansible_test/_internal/coverage_util.py,sha256=ZZ1Jf5eiBXregpiFxdw76OrDBS5WrCjGDKrzWwZkTUE,5722
626
- ansible_test/_internal/data.py,sha256=30bkMSedgnlGQqHgJvUiiiyLjalblv6X-Lkkn62J2_o,11369
627
- ansible_test/_internal/delegation.py,sha256=h9reEF9cGteX2-qR-0Ji0PglOeg6yrZ53TlURnj0FhU,13507
626
+ ansible_test/_internal/data.py,sha256=L0-2_f0sjYf9IcxuHObJUkCKANbJUfGNOrLV0aJR9NA,11685
627
+ ansible_test/_internal/delegation.py,sha256=i5RIRZ0Bf3zTLLh1lhztBhs4FOkyQ0BX5-Lmi6a6oe4,13357
628
628
  ansible_test/_internal/diff.py,sha256=X3SBMNM-ZUg7xeLPh24PMgsdeClR_YsPA_VmDkO4nmw,7559
629
629
  ansible_test/_internal/docker_util.py,sha256=A44Th9xoX-VdDQUw8Il8_1Gid12BXH5pLh657Sy5WMU,38220
630
630
  ansible_test/_internal/encoding.py,sha256=p24Fps7ONeY2u12c5fRFZxmIbf6mMBMs5aeIvu7GoY4,1425
@@ -637,23 +637,23 @@ ansible_test/_internal/init.py,sha256=f2ZN7F-FyjMgN73SUgxwbVtWNhkJv7BIlZ-q4ALHyj
637
637
  ansible_test/_internal/inventory.py,sha256=JVeo3AGB-cLm67Lb5Zz05Ip5xgEyJs3vVB-aa0EVWwU,5482
638
638
  ansible_test/_internal/io.py,sha256=kUB6ND8qquVAwfNuEi3LwBeGp5WfJ4075VHLHkX0YIU,3077
639
639
  ansible_test/_internal/junit_xml.py,sha256=rYPXDUM_GPsnV4S1CoG2hViB3qR93umCMnLtyXRnPT4,8519
640
- ansible_test/_internal/metadata.py,sha256=1Xbl1cRZV6mOeb0ecIJqR00ckpl-3PB20_U2fXaIAe0,4849
641
- ansible_test/_internal/payload.py,sha256=B02ybmU_7n4cIpnHAYHbAJnkW5UfBOEbZ3llkEoATqc,5202
640
+ ansible_test/_internal/metadata.py,sha256=-SpWvw2jUWD82Jzi0FYX_k1eAZsqJvGsokFuFExjGyc,4999
641
+ ansible_test/_internal/payload.py,sha256=bH_FdHA5NaazwJMvnrwj2LsKS9Bg-2sigXN7RKxQ5-k,8026
642
642
  ansible_test/_internal/provisioning.py,sha256=Xh42PD8o9iWmQSJBWMhZek0qM61yV0Su0SB6DJTgiiA,7436
643
643
  ansible_test/_internal/pypi_proxy.py,sha256=vA-kd_36mTPzL8NjYxLs1avK1rUb1eG-vuHV9gnhH-4,6127
644
- ansible_test/_internal/python_requirements.py,sha256=atUsiEFxnPzhgKWJFtQPEmiuOwLcMd8KKPULtiPUV40,19934
644
+ ansible_test/_internal/python_requirements.py,sha256=9oopfrczhmyiOQwERMaE4gsQ0dGJoKbKDGjWjH6_d24,20593
645
645
  ansible_test/_internal/ssh.py,sha256=ijD3qbAZF-D8v6vxNXtcQVmTqyl88Gd2x3oBdcG9aDE,11044
646
- ansible_test/_internal/target.py,sha256=5hf8PqDyMXUXjjNjrfBJUyvx67kx8cdVGDRKEwtLpX4,26447
647
- ansible_test/_internal/test.py,sha256=TEtw-7GLCCceAWASkASFmbpl9OFAWekJ7EDbTwGxjpw,14911
646
+ ansible_test/_internal/target.py,sha256=lyR1s5VbfJgE6w1DbPDjHRv7vlRreUij6AVps6uRW-g,26383
647
+ ansible_test/_internal/test.py,sha256=0g3PqpOF_jTS2umHIgV48dNd5VWA_X8KYpKrijX12W4,14906
648
648
  ansible_test/_internal/thread.py,sha256=FpCUOwwovAYQBu8C1PLDzmuY6w_S2_2SyaUsAZ3kT0E,2644
649
649
  ansible_test/_internal/timeout.py,sha256=4YwJ-oeqLk7a_YqxE6FxsECarAsd2ByY-HwzXzM_nuY,2488
650
- ansible_test/_internal/util.py,sha256=TP7F0zE1_zV-QDwChas1SygLH_wbFNYRZyRtuX9gS2c,37370
650
+ ansible_test/_internal/util.py,sha256=PHZkiFv2B8gXI87STuHHFFuojkSEiyyi6CEe1Qus58M,38042
651
651
  ansible_test/_internal/util_common.py,sha256=-MBoq6FOx_aSsEzWCklrije5WzBtuq0mF_rOnTZxtFw,16778
652
652
  ansible_test/_internal/venv.py,sha256=evMOUysolt6gnP122XskVSbabCmb_g8NG73sjbD-TmQ,9541
653
- ansible_test/_internal/ci/__init__.py,sha256=mInkn4on8bn9GypGQNoo8-3McKjT622bS73YtLZdOjg,7847
654
- ansible_test/_internal/ci/azp.py,sha256=MzCjoxpwvWj5aVNAyJRUZIMtbU6Qqh_yC0fkSajz8cw,10080
655
- ansible_test/_internal/ci/local.py,sha256=_9NGqCjbobvnxbXqj9kDlumkbBjE9qAr7JV_djnHZvo,6868
656
- ansible_test/_internal/classification/__init__.py,sha256=tY3BSgpIEvbEwYinaVDmwBcXmGTstt0hdqjjQ5ifzNI,34749
653
+ ansible_test/_internal/ci/__init__.py,sha256=73sy4a02R0O8R2UvxP2ctM_01zBt6oJLiIWR01Q7G9g,7855
654
+ ansible_test/_internal/ci/azp.py,sha256=VsI6T5MMIbtZcMjwpyi2vhONC2ZrGTYwpV8fxp1zdOo,10252
655
+ ansible_test/_internal/ci/local.py,sha256=jJ6XohwE6pTxl788YpTcUvStjiEd6bn_wM4m1TVOpBI,6876
656
+ ansible_test/_internal/classification/__init__.py,sha256=d3EiWABNYLRvZKKss2KO0t0YwEsW0xfTtvhlvrjQuWU,34878
657
657
  ansible_test/_internal/classification/common.py,sha256=cUV_Gkold2dByDkgk-hmXasHyMCERM40oEYky0fqNQw,904
658
658
  ansible_test/_internal/classification/csharp.py,sha256=sxRrELVVSziaWFLZm0qLh7i_WBM1kBUBrSczIvj0bZc,3328
659
659
  ansible_test/_internal/classification/powershell.py,sha256=jGfDoL3s8ebLrHH53xYNQy8F0c3QxyfVx6h79gaadOQ,3138
@@ -667,11 +667,11 @@ ansible_test/_internal/cli/environments.py,sha256=Yy5lrPgb-ZO-LDSoX5aBGMPk-Ss9r8
667
667
  ansible_test/_internal/cli/epilog.py,sha256=kzCYlmqDccMZnSCV57iXUITo6Z9FMMUIagjWJHHA0yY,658
668
668
  ansible_test/_internal/cli/argparsing/__init__.py,sha256=FFfhbGlyTj5S1_J5drRibvB88lFyOgzDDZlEmdSqxWM,9208
669
669
  ansible_test/_internal/cli/argparsing/actions.py,sha256=JVRUrXuBEQRSm-kqedd_2ldO_gkFfQfjAdh5tgcHciU,613
670
- ansible_test/_internal/cli/argparsing/argcompletion.py,sha256=9LZ9lUAg29z-K98SvfGKK-7jfZwHHTPllcimv1k1tFM,4576
670
+ ansible_test/_internal/cli/argparsing/argcompletion.py,sha256=yoFeAQV0_ZKRkaTN3j2OT1FDiL_mpyVfgMgW7GgtZK8,5180
671
671
  ansible_test/_internal/cli/argparsing/parsers.py,sha256=waXN-JfG5QV6_DxSDth11FWd3x2dINxu4EVPFsF__v4,21895
672
672
  ansible_test/_internal/cli/commands/__init__.py,sha256=Y1RoQQWhiPHj_kToGlKVHd68jXDOsitakXzhJFdy0Hw,5485
673
673
  ansible_test/_internal/cli/commands/env.py,sha256=Q9pKzBVzjgEI1mWM2C2XjJniNQtOQTef2uHzuaFyvmY,1433
674
- ansible_test/_internal/cli/commands/sanity.py,sha256=CVumGa33Z99K6Y6f3--YzPt46lE0zSUa4u-_I9X9FfY,2775
674
+ ansible_test/_internal/cli/commands/sanity.py,sha256=_UJJ0Fn1OmK1nGGAkP9TH4bPU11lTm-4fTPFPzBDy_4,2438
675
675
  ansible_test/_internal/cli/commands/shell.py,sha256=k8XlFt58P6Y-_xjVBhX3PSAR0SsobUdUKV0A_lRK83s,1304
676
676
  ansible_test/_internal/cli/commands/units.py,sha256=e58FmPU8hqGnZn9zGOcHLZr8AzWQx6YJW8LWkCWBqYY,1442
677
677
  ansible_test/_internal/cli/commands/coverage/__init__.py,sha256=3fsMGqmXgpZDotzNMyPQ8tZIlTjFnUrdLvKBn0xX5B4,2022
@@ -699,7 +699,7 @@ ansible_test/_internal/cli/parsers/key_value_parsers.py,sha256=BotCWOVnL01n2OTVJ
699
699
  ansible_test/_internal/cli/parsers/value_parsers.py,sha256=eIiRPP4coCtYo6mgoEXVEI3Kkf4x0V-sd0NLQ0PWgm4,6155
700
700
  ansible_test/_internal/commands/__init__.py,sha256=oRNkU8riDVtUFvIOyQlxiWinOWDUUKb-uEaC_GaE-PQ,88
701
701
  ansible_test/_internal/commands/coverage/__init__.py,sha256=tc4CmRtO2GaS-hogpWxypCQ6Sh66szZwSKyGfW5AQSM,13066
702
- ansible_test/_internal/commands/coverage/combine.py,sha256=RFKndW9B6vMfadTcGjT0On7AAZMw4oiZMAjhPztPP9w,12008
702
+ ansible_test/_internal/commands/coverage/combine.py,sha256=0MOED147WwuYOo5-kvHL6ShAfHPGaMsA_U6vEXayT1w,12059
703
703
  ansible_test/_internal/commands/coverage/erase.py,sha256=KOcfvmXCsNiQuBod-_XeQxOH0uaj-bqDTmkVYtaMkMI,925
704
704
  ansible_test/_internal/commands/coverage/html.py,sha256=Q0RuvkqtDWg8PGGuoA-dhueWHLmrm_luB1GW9eZXK9o,1329
705
705
  ansible_test/_internal/commands/coverage/report.py,sha256=OiWxg-B88MCrC1lYX9eXMrHe_kebgBoi4GnO2K88d3s,4915
@@ -712,13 +712,13 @@ ansible_test/_internal/commands/coverage/analyze/targets/filter.py,sha256=K0RWy3
712
712
  ansible_test/_internal/commands/coverage/analyze/targets/generate.py,sha256=xC1cUl3gENhbFnRlouLBtLQZD7TZtI1s7gDvSsBo_kM,5216
713
713
  ansible_test/_internal/commands/coverage/analyze/targets/missing.py,sha256=FtPJzBQoSnEoFZS77LV04bVGpn7q2CfI0ZuEoePF59g,4145
714
714
  ansible_test/_internal/commands/env/__init__.py,sha256=R_lT-N14LX794ANuFTYJ5rrDocHJexKqs7hA6m5IMF0,5316
715
- ansible_test/_internal/commands/integration/__init__.py,sha256=vSN4ChkHu8BsLAyVQivcbX_M5PixSJY8xAdEDro48zw,37561
715
+ ansible_test/_internal/commands/integration/__init__.py,sha256=95RCpbRWfWN0aiOncct2_8hRa2nVQmSlBukqIhcfbgw,37633
716
716
  ansible_test/_internal/commands/integration/coverage.py,sha256=w_hLREC6MwMIHSyDnFtdCQrSTm0mcAyXHv1Iitl5orU,15960
717
717
  ansible_test/_internal/commands/integration/filters.py,sha256=01GrJNuxdx5splvmyc_oW9WxPJONFNutibbzjzudIoo,12442
718
718
  ansible_test/_internal/commands/integration/network.py,sha256=-BY01_QRNCuBwgV6GdAGrxjME14uEe7Zron1Sq4ThWE,2427
719
719
  ansible_test/_internal/commands/integration/posix.py,sha256=c0WRWCXXn-JfJ9dANY13IyAeRDxwRM4Sk0sD_dMtc0o,1454
720
720
  ansible_test/_internal/commands/integration/windows.py,sha256=qSbuwvlnoGFqEY9Cmi33esKibTfBSbq6ShSRx7tGEd8,2649
721
- ansible_test/_internal/commands/integration/cloud/__init__.py,sha256=8Yma6sp7hHTaf1G_yx5qqNcjFCY60HOuimPau4d8lLE,14913
721
+ ansible_test/_internal/commands/integration/cloud/__init__.py,sha256=6K8urGgUkwiLdTh__qgM4yBMfv8Ay4D8Ct7MwarJQ74,14964
722
722
  ansible_test/_internal/commands/integration/cloud/acme.py,sha256=hRw577byp6FXJnuTGMUsD9md1tk_kc-s9Z27DAY8SiQ,2291
723
723
  ansible_test/_internal/commands/integration/cloud/aws.py,sha256=8YwnETxYBzor5UTmnEiO1fs3Gfhtp4PAVAW7u01QQdU,4292
724
724
  ansible_test/_internal/commands/integration/cloud/azure.py,sha256=XUBLbPIvDbJAk8i7GxafUp0mFoF5XUdpXA_6ikMNfuE,5185
@@ -736,7 +736,7 @@ ansible_test/_internal/commands/integration/cloud/openshift.py,sha256=3EMo0wWaTi
736
736
  ansible_test/_internal/commands/integration/cloud/scaleway.py,sha256=kG0YAJo-dFDXITVTpNQNt4108uwE8MKP-fOKbEcpmA8,1568
737
737
  ansible_test/_internal/commands/integration/cloud/vcenter.py,sha256=9t6VOY6XUUPGS9PMk1yxdnoNxuL3X7ZS6frq2SvLciA,4845
738
738
  ansible_test/_internal/commands/integration/cloud/vultr.py,sha256=NLGCMmoRhn9trGJwQHVPi9M4R72yqbtaIcUI2OOA0z4,1520
739
- ansible_test/_internal/commands/sanity/__init__.py,sha256=fZtPZTYbHLspf7nB23-VzwQMXjc-6BursuvHWxxYKLY,48870
739
+ ansible_test/_internal/commands/sanity/__init__.py,sha256=9cHIZZjIMsXOtN5AblR5agriIMGrcVtz6-t3rPCcjaw,49110
740
740
  ansible_test/_internal/commands/sanity/ansible_doc.py,sha256=iD3Lc_8dqihO6s05qeCxgI-LAyzFBx75CbTvxVKZEgw,4144
741
741
  ansible_test/_internal/commands/sanity/compile.py,sha256=d2r60Jpmek4WFwYMaeCFu8ZxNoL5DqU1HXtBtSQdT8Y,2581
742
742
  ansible_test/_internal/commands/sanity/ignores.py,sha256=HSEckhcy8o9oQ85Y0VDgn19JYIl1igEv6dYrWY_mQi4,2851
@@ -744,10 +744,10 @@ ansible_test/_internal/commands/sanity/import.py,sha256=--B4cPaLi3ho4ha7LW-V2vkU
744
744
  ansible_test/_internal/commands/sanity/mypy.py,sha256=5hQnYeEa51HkUyCf6bIyOJB8me3KDUTGBV1bCP8s3TM,10584
745
745
  ansible_test/_internal/commands/sanity/pep8.py,sha256=h9b6WbYLrZQQM9GF-uatIxZLgy_EKI30IqFniGJodBc,3147
746
746
  ansible_test/_internal/commands/sanity/pslint.py,sha256=NMtbTb_IHPKPzPyuJNlzNRteWOpIWXNLThmm1uX-agk,3248
747
- ansible_test/_internal/commands/sanity/pylint.py,sha256=uc8n42ShBaQWHMS_H8TjWgYfRJQM_fy6OsDJiX2es3M,10510
747
+ ansible_test/_internal/commands/sanity/pylint.py,sha256=0-VDWktjp6JbbSMXbBZzT3Fwipig_53t8xcnmHRZmF8,10964
748
748
  ansible_test/_internal/commands/sanity/sanity_docs.py,sha256=pNVbjqHY_DWSpX8orYzwbaS7CmxPgtXHkOo-pFHghK8,1638
749
749
  ansible_test/_internal/commands/sanity/shellcheck.py,sha256=JnREbagmRTHeKQK1m6vA-qGlNF8ZEPMcljoKLeu4l-A,3134
750
- ansible_test/_internal/commands/sanity/validate_modules.py,sha256=Ay4yzwv9wJEogXG0VSpH7nLcugXOb_5vW5EQIVBz--8,5714
750
+ ansible_test/_internal/commands/sanity/validate_modules.py,sha256=DhAZYQS4IWRxOuYkqESc56v9OqgDlmPKBb1P6swAwEY,7703
751
751
  ansible_test/_internal/commands/sanity/yamllint.py,sha256=Wd21f_yej8j2jI5FC-O0a_sMU65JxzPq65MEm5UJPY4,3484
752
752
  ansible_test/_internal/commands/shell/__init__.py,sha256=JiUsg9Ut-ZhNFyWAsVUXqtnrk4DIZALwAc33zeyEOQ8,4397
753
753
  ansible_test/_internal/commands/units/__init__.py,sha256=c2xRRHOhLxu3F1IvcUUKLTsL-j2Rq3DCsOa7h-4wlK8,12727
@@ -814,7 +814,7 @@ ansible_test/_util/controller/sanity/code-smell/use-compat-six.py,sha256=xeEjjy0
814
814
  ansible_test/_util/controller/sanity/code-smell/changelog/sphinx.py,sha256=M3aEK_XugBtVJjfUZbeoVc10hzRylxRxNfEiNq1JVWQ,193
815
815
  ansible_test/_util/controller/sanity/integration-aliases/yaml_to_json.py,sha256=qxXHZboRVEqISZYOIXrutsAgobEyh6fiUibk133fzhI,299
816
816
  ansible_test/_util/controller/sanity/mypy/ansible-core.ini,sha256=B13dYyd5PGoN-BrFShPMhGBCGbV2oiTsBD8TdRDAh3Q,2327
817
- ansible_test/_util/controller/sanity/mypy/ansible-test.ini,sha256=5YFX-FxSKR3yVrOLxaP0jvpT380RubYZvMC2PG9NphA,854
817
+ ansible_test/_util/controller/sanity/mypy/ansible-test.ini,sha256=BFX5QmOpZiEpRf5zVcLvuIl00NtsJhTFXMAPsZ8sLyg,912
818
818
  ansible_test/_util/controller/sanity/mypy/modules.ini,sha256=48N2I3ubw3yAuE8layHQ_d0CTfH_eATuXt-K5Bq-ifw,1694
819
819
  ansible_test/_util/controller/sanity/pep8/current-ignore.txt,sha256=7J79Z7ypUs0AOEYy4didumaJI0z5Bo69V5u8eZ1M2Bc,20
820
820
  ansible_test/_util/controller/sanity/pslint/pslint.ps1,sha256=h0fLdkwF7JhGGjApvqAsCU87BKy0E_UiFJ_O7MARz6U,1089
@@ -830,7 +830,7 @@ ansible_test/_util/controller/sanity/pylint/plugins/unwanted.py,sha256=4wL2LPtrM
830
830
  ansible_test/_util/controller/sanity/shellcheck/exclude.txt,sha256=-idybvpZeOHVfR8usoyCNdNLD5WpaKQeP9mgzganMpQ,21
831
831
  ansible_test/_util/controller/sanity/validate-modules/validate.py,sha256=jpNOhA5qJ5LdlWlSOJoJyTUh9H1tepjcSYZXeHdhJRY,114
832
832
  ansible_test/_util/controller/sanity/validate-modules/validate_modules/__init__.py,sha256=CRUAj-k-zJye4RAGZ8eR9HvP6weM6VKTwGmFYpI_0Bw,816
833
- ansible_test/_util/controller/sanity/validate-modules/validate_modules/main.py,sha256=bHs9Gi6pq6wckkJJEVjio1QwznOaJr4H7K5xzcIN3Q4,108284
833
+ ansible_test/_util/controller/sanity/validate-modules/validate_modules/main.py,sha256=LBk_rAHBoDNlK_Tgl7YSD8EqX6spFjrBpSQWtQat_jU,107505
834
834
  ansible_test/_util/controller/sanity/validate-modules/validate_modules/module_args.py,sha256=TlRRjgB2ICrN_4bmQe4MgCTlgMn_su_9Iqi_l5t5OWQ,6611
835
835
  ansible_test/_util/controller/sanity/validate-modules/validate_modules/ps_argspec.ps1,sha256=wteIiuD7-UOEGkjdUArKqVVWBpa7A7FU_WwDuMtR2mY,4139
836
836
  ansible_test/_util/controller/sanity/validate-modules/validate_modules/schema.py,sha256=3LFStZ5QdU6Dm7Vqsu3ygLjmV78dbMUIGpwme7vPUSc,34250
@@ -875,9 +875,9 @@ ansible_test/config/cloud-config-vultr.ini.template,sha256=yO2Xz76Ay3kbG54jX7y8-
875
875
  ansible_test/config/config.yml,sha256=wb3knoBmZewG3GWOMnRHoVPQWW4vPixKLPMNS6vJmTc,2620
876
876
  ansible_test/config/inventory.networking.template,sha256=vQ7x1-u5Q4Y5CqZU-7eMSEJOSCzAbPOL1rmK_AQOQuY,1262
877
877
  ansible_test/config/inventory.winrm.template,sha256=_M2i1B9RYfwSjwvgf3M-H_5Br5FO_kney_kMRPmoggk,1025
878
- ansible_core-2.13.8.dist-info/COPYING,sha256=CuBIWlvTemPmNgNZZBfk6w5lMzT6bH-TLKOg6F1K8ic,35148
879
- ansible_core-2.13.8.dist-info/METADATA,sha256=7LEzqZ0qRDWaItvHRaLfMnpW7mXNmpGkqtxATDQ8rUw,7429
880
- ansible_core-2.13.8.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
881
- ansible_core-2.13.8.dist-info/entry_points.txt,sha256=0mpmsrIhODChxKl3eS-NcVQCaMetBn8KdPLtVxQgR64,453
882
- ansible_core-2.13.8.dist-info/top_level.txt,sha256=IFbRLjAvih1DYzJWg3_F6t4sCzEMxRO7TOMNs6GkYHo,21
883
- ansible_core-2.13.8.dist-info/RECORD,,
878
+ ansible_core-2.13.9rc1.dist-info/COPYING,sha256=CuBIWlvTemPmNgNZZBfk6w5lMzT6bH-TLKOg6F1K8ic,35148
879
+ ansible_core-2.13.9rc1.dist-info/METADATA,sha256=eZ4zEQZX9gLbo88jILi5NBWndpx9GgLeAUBxyYZFKZU,7432
880
+ ansible_core-2.13.9rc1.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
881
+ ansible_core-2.13.9rc1.dist-info/entry_points.txt,sha256=0mpmsrIhODChxKl3eS-NcVQCaMetBn8KdPLtVxQgR64,453
882
+ ansible_core-2.13.9rc1.dist-info/top_level.txt,sha256=IFbRLjAvih1DYzJWg3_F6t4sCzEMxRO7TOMNs6GkYHo,21
883
+ ansible_core-2.13.9rc1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.38.4)
2
+ Generator: bdist_wheel (0.40.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -61,8 +61,8 @@ class CIProvider(metaclass=abc.ABCMeta):
61
61
  """Return a resource prefix specific to this CI provider."""
62
62
 
63
63
  @abc.abstractmethod
64
- def get_base_branch(self): # type: () -> str
65
- """Return the base branch or an empty string."""
64
+ def get_base_commit(self, args: CommonConfig) -> str:
65
+ """Return the base commit or an empty string."""
66
66
 
67
67
  @abc.abstractmethod
68
68
  def detect_changes(self, args): # type: (TestConfig) -> t.Optional[t.List[str]]
@@ -43,6 +43,8 @@ class AzurePipelines(CIProvider):
43
43
  def __init__(self):
44
44
  self.auth = AzurePipelinesAuthHelper()
45
45
 
46
+ self._changes: AzurePipelinesChanges | None = None
47
+
46
48
  @staticmethod
47
49
  def is_supported(): # type: () -> bool
48
50
  """Return True if this provider is supported in the current running environment."""
@@ -71,18 +73,20 @@ class AzurePipelines(CIProvider):
71
73
 
72
74
  return prefix
73
75
 
74
- def get_base_branch(self): # type: () -> str
75
- """Return the base branch or an empty string."""
76
- base_branch = os.environ.get('SYSTEM_PULLREQUEST_TARGETBRANCH') or os.environ.get('BUILD_SOURCEBRANCHNAME')
76
+ def get_base_commit(self, args: CommonConfig) -> str:
77
+ """Return the base commit or an empty string."""
78
+ return self._get_changes(args).base_commit or ''
77
79
 
78
- if base_branch:
79
- base_branch = 'origin/%s' % base_branch
80
+ def _get_changes(self, args: CommonConfig) -> AzurePipelinesChanges:
81
+ """Return an AzurePipelinesChanges instance, which will be created on first use."""
82
+ if not self._changes:
83
+ self._changes = AzurePipelinesChanges(args)
80
84
 
81
- return base_branch or ''
85
+ return self._changes
82
86
 
83
87
  def detect_changes(self, args): # type: (TestConfig) -> t.Optional[t.List[str]]
84
88
  """Initialize change detection."""
85
- result = AzurePipelinesChanges(args)
89
+ result = self._get_changes(args)
86
90
 
87
91
  if result.is_pr:
88
92
  job_type = 'pull request'
@@ -128,7 +132,7 @@ class AzurePipelines(CIProvider):
128
132
 
129
133
  def get_git_details(self, args): # type: (CommonConfig) -> t.Optional[t.Dict[str, t.Any]]
130
134
  """Return details about git in the current environment."""
131
- changes = AzurePipelinesChanges(args)
135
+ changes = self._get_changes(args)
132
136
 
133
137
  details = dict(
134
138
  base_commit=changes.base_commit,
@@ -62,8 +62,8 @@ class Local(CIProvider):
62
62
 
63
63
  return prefix
64
64
 
65
- def get_base_branch(self): # type: () -> str
66
- """Return the base branch or an empty string."""
65
+ def get_base_commit(self, args: CommonConfig) -> str:
66
+ """Return the base commit or an empty string."""
67
67
  return ''
68
68
 
69
69
  def detect_changes(self, args): # type: (TestConfig) -> t.Optional[t.List[str]]