ScriptCollection 3.5.84__py3-none-any.whl → 3.5.85__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.
@@ -32,7 +32,7 @@ from .ProgramRunnerBase import ProgramRunnerBase
32
32
  from .ProgramRunnerPopen import ProgramRunnerPopen
33
33
  from .ProgramRunnerEpew import ProgramRunnerEpew, CustomEpewArgument
34
34
 
35
- version = "3.5.84"
35
+ version = "3.5.85"
36
36
  __version__ = version
37
37
 
38
38
 
@@ -192,7 +192,7 @@ class ScriptCollectionCore:
192
192
  until_as_string = self.__datetime_to_string_for_git(until)
193
193
  result = filter(lambda line: not GeneralUtilities.string_is_none_or_whitespace(line), self.run_program("git", f'log --since "{since_as_string}" --until "{until_as_string}" --pretty=format:"%H" --no-patch', repository_folder, throw_exception_if_exitcode_is_not_zero=True)[1].split("\n").replace("\r", ""))
194
194
  if ignore_commits_which_are_not_in_history_of_head:
195
- result = [commit_id for commit_id in result if self.git_commit_is_ancestor( repository_folder, commit_id)]
195
+ result = [commit_id for commit_id in result if self.git_commit_is_ancestor(repository_folder, commit_id)]
196
196
  return result
197
197
 
198
198
  @GeneralUtilities.check_arguments
@@ -303,7 +303,7 @@ class ScriptCollectionCore:
303
303
 
304
304
  @GeneralUtilities.check_arguments
305
305
  def git_pull_with_retry(self, folder: str, remote: str, localbranchname: str, remotebranchname: str, force: bool = False, amount_of_attempts: int = 5) -> None:
306
- GeneralUtilities.retry_action(lambda: self.git_pull_with_retry(folder, remote,localbranchname,remotebranchname), amount_of_attempts)
306
+ GeneralUtilities.retry_action(lambda: self.git_pull_with_retry(folder, remote, localbranchname, remotebranchname), amount_of_attempts)
307
307
 
308
308
  @GeneralUtilities.check_arguments
309
309
  def git_pull(self, folder: str, remote: str, localbranchname: str, remotebranchname: str, force: bool = False) -> None:
@@ -381,7 +381,7 @@ class ScriptCollectionCore:
381
381
  def git_unstage_all_changes(self, directory: str) -> None:
382
382
  self.assert_is_git_repository(directory)
383
383
  self.run_program_argsasarray("git", ["reset"], directory, throw_exception_if_exitcode_is_not_zero=True, verbosity=0)
384
- #TODO check if this will also be done for submodules
384
+ # TODO check if this will also be done for submodules
385
385
 
386
386
  @GeneralUtilities.check_arguments
387
387
  def git_stage_file(self, directory: str, file: str) -> None:
@@ -405,10 +405,10 @@ class ScriptCollectionCore:
405
405
  self.assert_is_git_repository(directory)
406
406
  self.run_program_argsasarray("git", ['clean', '-df'], directory, throw_exception_if_exitcode_is_not_zero=True, verbosity=0)
407
407
  self.run_program_argsasarray("git", ['checkout', '.'], directory, throw_exception_if_exitcode_is_not_zero=True, verbosity=0)
408
- #TODO check if this will also be done for submodules
408
+ # TODO check if this will also be done for submodules
409
409
 
410
410
  @GeneralUtilities.check_arguments
411
- def git_commit(self, directory: str, message: str="Saved changes.", author_name: str = None, author_email: str = None, stage_all_changes: bool = True, no_changes_behavior: int = 0) -> str:
411
+ def git_commit(self, directory: str, message: str = "Saved changes.", author_name: str = None, author_email: str = None, stage_all_changes: bool = True, no_changes_behavior: int = 0) -> str:
412
412
  """no_changes_behavior=0 => No commit; no_changes_behavior=1 => Commit anyway; no_changes_behavior=2 => Exception"""
413
413
  self.assert_is_git_repository(directory)
414
414
  author_name = GeneralUtilities.str_none_safe(author_name).strip()
@@ -448,7 +448,7 @@ class ScriptCollectionCore:
448
448
  if message is None:
449
449
  message = f"Created {target_for_tag}"
450
450
  argument.extend(["-s", '-m', message])
451
- self.run_program_argsasarray( "git", argument, directory, throw_exception_if_exitcode_is_not_zero=True, verbosity=0)
451
+ self.run_program_argsasarray("git", argument, directory, throw_exception_if_exitcode_is_not_zero=True, verbosity=0)
452
452
 
453
453
  @GeneralUtilities.check_arguments
454
454
  def git_delete_tag(self, directory: str, tag: str) -> None:
@@ -456,9 +456,8 @@ class ScriptCollectionCore:
456
456
  self.run_program_argsasarray("git", ["tag", "--delete", tag], directory, throw_exception_if_exitcode_is_not_zero=True, verbosity=0)
457
457
 
458
458
  @GeneralUtilities.check_arguments
459
- def git_checkout(self, directory: str, branch: str,undo_all_changes_after_checkout:bool=True) -> None:
459
+ def git_checkout(self, directory: str, branch: str, undo_all_changes_after_checkout: bool = True) -> None:
460
460
  self.assert_is_git_repository(directory)
461
- GeneralUtilities.assert_condition(self.git_repository_has_uncommitted_changes(directory),f"Repository '{directory}' has uncommitted changes..")
462
461
  self.run_program_argsasarray("git", ["checkout", branch], directory, throw_exception_if_exitcode_is_not_zero=True, verbosity=0)
463
462
  self.run_program_argsasarray("git", ["submodule", "update", "--recursive"], directory, throw_exception_if_exitcode_is_not_zero=True, verbosity=0)
464
463
  if undo_all_changes_after_checkout:
@@ -662,28 +661,28 @@ class ScriptCollectionCore:
662
661
  GeneralUtilities.assert_condition(self.is_git_repository(folder), f"'{folder}' is not a git-repository.")
663
662
 
664
663
  @GeneralUtilities.check_arguments
665
- def list_content(self, path: str,include_files:bool,include_folder:bool,printonlynamewithoutpath:bool) -> list[str]:
664
+ def list_content(self, path: str, include_files: bool, include_folder: bool, printonlynamewithoutpath: bool) -> list[str]:
666
665
  """This function works platform-independent also for non-local-executions if the ScriptCollection commandline-commands are available as global command on the target-system."""
667
666
  if self.program_runner.will_be_executed_locally():
668
- result=[]
667
+ result = []
669
668
  if include_files:
670
- result=result + GeneralUtilities.get_direct_files_of_folder(path)
669
+ result = result + GeneralUtilities.get_direct_files_of_folder(path)
671
670
  if include_folder:
672
- result=result + GeneralUtilities.get_direct_folders_of_folder(path)
671
+ result = result + GeneralUtilities.get_direct_folders_of_folder(path)
673
672
  return result
674
673
  else:
675
- arguments=["--path", path]
674
+ arguments = ["--path", path]
676
675
  if not include_files:
677
- arguments=arguments+["--excludefiles"]
676
+ arguments = arguments+["--excludefiles"]
678
677
  if not include_folder:
679
- arguments=arguments+["--excludedirectories"]
678
+ arguments = arguments+["--excludedirectories"]
680
679
  if printonlynamewithoutpath:
681
- arguments=arguments+["--printonlynamewithoutpath"]
680
+ arguments = arguments+["--printonlynamewithoutpath"]
682
681
  exit_code, stdout, stderr, _ = self.run_program_argsasarray("sclistfoldercontent", arguments)
683
682
  if exit_code == 0:
684
- result:list[str]=[]
683
+ result: list[str] = []
685
684
  for line in stdout.split("\n"):
686
- normalized_line=line.replace("\r","")
685
+ normalized_line = line.replace("\r", "")
687
686
  result.append(normalized_line)
688
687
  return result
689
688
  else:
@@ -720,7 +719,7 @@ class ScriptCollectionCore:
720
719
  raise ValueError(f"Fatal error occurrs while checking whether folder '{path}' exists. StdErr: '{stderr}'")
721
720
 
722
721
  @GeneralUtilities.check_arguments
723
- def remove(self, path: str) ->None:
722
+ def remove(self, path: str) -> None:
724
723
  """This function works platform-independent also for non-local-executions if the ScriptCollection commandline-commands are available as global command on the target-system."""
725
724
  if self.program_runner.will_be_executed_locally(): # works only locally, but much more performant than always running an external program
726
725
  if os.path.isdir(path):
@@ -738,17 +737,17 @@ class ScriptCollectionCore:
738
737
  raise ValueError(f"Fatal error occurrs while removing folder '{path}'. StdErr: '{stderr}'")
739
738
 
740
739
  @GeneralUtilities.check_arguments
741
- def rename(self, source:str,target:str) ->None:
740
+ def rename(self, source: str, target: str) -> None:
742
741
  """This function works platform-independent also for non-local-executions if the ScriptCollection commandline-commands are available as global command on the target-system."""
743
742
  if self.program_runner.will_be_executed_locally(): # works only locally, but much more performant than always running an external program
744
743
  os.rename(source, target)
745
744
  else:
746
- exit_code, _, stderr, _ = self.run_program_argsasarray("screname", ["--source", source,"--target",target], throw_exception_if_exitcode_is_not_zero=False) # works platform-indepent
745
+ exit_code, _, stderr, _ = self.run_program_argsasarray("screname", ["--source", source, "--target", target], throw_exception_if_exitcode_is_not_zero=False) # works platform-indepent
747
746
  if exit_code != 0:
748
747
  raise ValueError(f"Fatal error occurrs while renaming '{source}' to '{target}'. StdErr: '{stderr}'")
749
748
 
750
749
  @GeneralUtilities.check_arguments
751
- def copy(self, source:str,target:str) ->None:
750
+ def copy(self, source: str, target: str) -> None:
752
751
  """This function works platform-independent also for non-local-executions if the ScriptCollection commandline-commands are available as global command on the target-system."""
753
752
  if self.program_runner.will_be_executed_locally(): # works only locally, but much more performant than always running an external program
754
753
  if os.path.isfile(target) or os.path.isdir(target):
@@ -757,11 +756,11 @@ class ScriptCollectionCore:
757
756
  shutil.copyfile(source, target)
758
757
  elif os.path.isdir(source):
759
758
  GeneralUtilities.ensure_directory_exists(target)
760
- GeneralUtilities.copy_content_of_folder(source,target)
759
+ GeneralUtilities.copy_content_of_folder(source, target)
761
760
  else:
762
761
  raise ValueError(f"'{source}' can not be copied because the path does not exist.")
763
762
  else:
764
- exit_code, _, stderr, _ = self.run_program_argsasarray("sccopy", ["--source", source,"--target", target], throw_exception_if_exitcode_is_not_zero=False) # works platform-indepent
763
+ exit_code, _, stderr, _ = self.run_program_argsasarray("sccopy", ["--source", source, "--target", target], throw_exception_if_exitcode_is_not_zero=False) # works platform-indepent
765
764
  if exit_code != 0:
766
765
  raise ValueError(f"Fatal error occurrs while copying '{source}' to '{target}'. StdErr: '{stderr}'")
767
766
 
@@ -1086,14 +1085,11 @@ class ScriptCollectionCore:
1086
1085
 
1087
1086
  @GeneralUtilities.check_arguments
1088
1087
  def SCShow2FAAsQRCode(self, csvfile: str) -> None:
1089
- separator_line = "--------------------------------------------------------"
1090
1088
  lines = GeneralUtilities.read_csv_file(csvfile, True)
1091
1089
  lines.sort(key=lambda items: ''.join(items).lower())
1092
1090
  for line in lines:
1093
- GeneralUtilities.write_message_to_stdout(separator_line)
1094
- self.__print_qr_code_by_csv_line(
1095
- line[0], line[1], line[2], line[3], line[4])
1096
- GeneralUtilities.write_message_to_stdout(separator_line)
1091
+ self.__print_qr_code_by_csv_line(line[0], line[1], line[2], line[3], line[4])
1092
+ GeneralUtilities.write_message_to_stdout(GeneralUtilities.get_longline())
1097
1093
 
1098
1094
  @GeneralUtilities.check_arguments
1099
1095
  def SCCalculateBitcoinBlockHash(self, block_version_number: str, previousblockhash: str, transactionsmerkleroot: str, timestamp: str, target: str, nonce: str) -> str:
@@ -1381,7 +1377,7 @@ class ScriptCollectionCore:
1381
1377
  return popen
1382
1378
 
1383
1379
  @staticmethod
1384
- def __enqueue_output(file:IO, queue:Queue):
1380
+ def __enqueue_output(file: IO, queue: Queue):
1385
1381
  for line in iter(file.readline, ''):
1386
1382
  queue.put(line)
1387
1383
  file.close()
@@ -1403,7 +1399,7 @@ class ScriptCollectionCore:
1403
1399
  return False
1404
1400
 
1405
1401
  @staticmethod
1406
- def __read_popen_pipes(p: Popen,print_live_output:bool,print_errors_as_information:bool) -> tuple[list[str], list[str]]:
1402
+ def __read_popen_pipes(p: Popen, print_live_output: bool, print_errors_as_information: bool) -> tuple[list[str], list[str]]:
1407
1403
  p_id = p.pid
1408
1404
  with ThreadPoolExecutor(2) as pool:
1409
1405
  q_stdout = Queue()
@@ -1420,8 +1416,8 @@ class ScriptCollectionCore:
1420
1416
  while (ScriptCollectionCore.__continue_process_reading(p_id, p, q_stdout, q_stderr, reading_stdout_last_time_resulted_in_exception, reading_stderr_last_time_resulted_in_exception)):
1421
1417
  try:
1422
1418
  while not q_stdout.empty():
1423
- out_line:str=q_stdout.get_nowait()
1424
- out_line=out_line.replace("\r","").replace("\n","")
1419
+ out_line: str = q_stdout.get_nowait()
1420
+ out_line = out_line.replace("\r", "").replace("\n", "")
1425
1421
  if GeneralUtilities.string_has_content(out_line):
1426
1422
  stdout_result.append(out_line)
1427
1423
  reading_stdout_last_time_resulted_in_exception = False
@@ -1434,8 +1430,8 @@ class ScriptCollectionCore:
1434
1430
 
1435
1431
  try:
1436
1432
  while not q_stderr.empty():
1437
- err_line:str=q_stderr.get_nowait()
1438
- err_line=err_line.replace("\r","").replace("\n","")
1433
+ err_line: str = q_stderr.get_nowait()
1434
+ err_line = err_line.replace("\r", "").replace("\n", "")
1439
1435
  if GeneralUtilities.string_has_content(err_line):
1440
1436
  stderr_result.append(err_line)
1441
1437
  reading_stderr_last_time_resulted_in_exception = False
@@ -1493,7 +1489,7 @@ class ScriptCollectionCore:
1493
1489
  GeneralUtilities.ensure_file_exists(log_file)
1494
1490
  pid = process.pid
1495
1491
 
1496
- outputs: tuple[list[str], list[str]] = ScriptCollectionCore.__read_popen_pipes(process,print_live_output,print_errors_as_information)
1492
+ outputs: tuple[list[str], list[str]] = ScriptCollectionCore.__read_popen_pipes(process, print_live_output, print_errors_as_information)
1497
1493
 
1498
1494
  for out_line_plain in outputs[0]:
1499
1495
  if out_line_plain is not None:
@@ -1550,8 +1546,8 @@ class ScriptCollectionCore:
1550
1546
 
1551
1547
  # Return-values program_runner: Exitcode, StdOut, StdErr, Pid
1552
1548
  @GeneralUtilities.check_arguments
1553
- def run_program_with_retry(self, program: str, arguments: str = "", working_directory: str = None, verbosity: int = 1, print_errors_as_information: bool = False, log_file: str = None, timeoutInSeconds: int = 600, addLogOverhead: bool = False, title: str = None, log_namespace: str = "", arguments_for_log: list[str] = None, throw_exception_if_exitcode_is_not_zero: bool = True, custom_argument: object = None, interactive: bool = False, print_live_output: bool = False,amount_of_attempts:int=5) -> tuple[int, str, str, int]:
1554
- return GeneralUtilities.retry_action(lambda: self.run_program(program, arguments,working_directory,verbosity,print_errors_as_information,log_file,timeoutInSeconds,addLogOverhead,title,log_namespace,arguments_for_log,throw_exception_if_exitcode_is_not_zero,custom_argument,interactive,print_live_output), amount_of_attempts)
1549
+ def run_program_with_retry(self, program: str, arguments: str = "", working_directory: str = None, verbosity: int = 1, print_errors_as_information: bool = False, log_file: str = None, timeoutInSeconds: int = 600, addLogOverhead: bool = False, title: str = None, log_namespace: str = "", arguments_for_log: list[str] = None, throw_exception_if_exitcode_is_not_zero: bool = True, custom_argument: object = None, interactive: bool = False, print_live_output: bool = False, amount_of_attempts: int = 5) -> tuple[int, str, str, int]:
1550
+ return GeneralUtilities.retry_action(lambda: self.run_program(program, arguments, working_directory, verbosity, print_errors_as_information, log_file, timeoutInSeconds, addLogOverhead, title, log_namespace, arguments_for_log, throw_exception_if_exitcode_is_not_zero, custom_argument, interactive, print_live_output), amount_of_attempts)
1555
1551
 
1556
1552
  # Return-values program_runner: Exitcode, StdOut, StdErr, Pid
1557
1553
  @GeneralUtilities.check_arguments
@@ -1851,50 +1847,47 @@ DNS = {domain}
1851
1847
  folder = os.path.dirname(csproj_file)
1852
1848
  csproj_filename = os.path.basename(csproj_file)
1853
1849
  GeneralUtilities.write_message_to_stdout(f"Check for updates in {csproj_filename}")
1854
- result = self.run_program_with_retry("dotnet", f"list {csproj_filename} package --outdated", folder,print_errors_as_information=True)
1850
+ result = self.run_program_with_retry("dotnet", f"list {csproj_filename} package --outdated", folder, print_errors_as_information=True)
1855
1851
  for line in result[1].replace("\r", "").split("\n"):
1856
1852
  # Relevant output-lines are something like " > NJsonSchema 10.7.0 10.7.0 10.9.0"
1857
1853
  if ">" in line:
1858
1854
  package_name = line.replace(">", "").strip().split(" ")[0]
1859
1855
  if not (package_name in ignored_dependencies):
1860
1856
  GeneralUtilities.write_message_to_stdout(f"Update package {package_name}...")
1861
- self.run_program("dotnet", f"add {csproj_filename} package {package_name}", folder,print_errors_as_information=True)
1862
-
1857
+ self.run_program("dotnet", f"add {csproj_filename} package {package_name}", folder, print_errors_as_information=True)
1863
1858
 
1864
1859
  @GeneralUtilities.check_arguments
1865
- def dotnet_package_is_available(self,package_name:str,package_version:str,source:str):
1866
- default_source_address="nuget.org"
1867
- if source==default_source_address:
1860
+ def dotnet_package_is_available(self, package_name: str, package_version: str, source: str):
1861
+ default_source_address = "nuget.org"
1862
+ if source == default_source_address:
1868
1863
  GeneralUtilities.write_message_to_stdout(f"Wait until package {package_name} v{package_version} is available on {source}.")
1869
1864
  headers = {'Cache-Control': 'no-cache'}
1870
- r=requests.get(f"https://api.{default_source_address}/v3-flatcontainer/{package_name.lower()}/{package_version}/{package_name.lower()}.nuspec", timeout=5,headers=headers)
1871
- return r.status_code==200
1865
+ r = requests.get(f"https://api.{default_source_address}/v3-flatcontainer/{package_name.lower()}/{package_version}/{package_name.lower()}.nuspec", timeout=5, headers=headers)
1866
+ return r.status_code == 200
1872
1867
  else:
1873
1868
  raise ValueError(f"dotnet_package_is_available is not implemented yet for other sources than {default_source_address}.")
1874
1869
 
1875
1870
  @GeneralUtilities.check_arguments
1876
- def wait_until_dotnet_package_is_available(self,package_name:str,package_version:str,source:str):
1877
- while not self.dotnet_package_is_available(package_name,package_version,source):
1871
+ def wait_until_dotnet_package_is_available(self, package_name: str, package_version: str, source: str):
1872
+ while not self.dotnet_package_is_available(package_name, package_version, source):
1878
1873
  time.sleep(5)
1879
1874
 
1880
-
1881
1875
  @GeneralUtilities.check_arguments
1882
- def python_package_is_available(self,package_name:str,package_version:str,source:str):
1883
- default_source_address="pypi.org"
1884
- if source==default_source_address:
1876
+ def python_package_is_available(self, package_name: str, package_version: str, source: str):
1877
+ default_source_address = "pypi.org"
1878
+ if source == default_source_address:
1885
1879
  GeneralUtilities.write_message_to_stdout(f"Wait until package {package_name} v{package_version} is available on {source}.")
1886
1880
  headers = {'Cache-Control': 'no-cache'}
1887
- r=requests.get(f"https://{default_source_address}/pypi/{package_name}/{package_version}/json", timeout=5,headers=headers)
1888
- return r.status_code==200
1881
+ r = requests.get(f"https://{default_source_address}/pypi/{package_name}/{package_version}/json", timeout=5, headers=headers)
1882
+ return r.status_code == 200
1889
1883
  else:
1890
1884
  raise ValueError(f"python_package_is_available is not implemented yet for other sources than {default_source_address}.")
1891
1885
 
1892
1886
  @GeneralUtilities.check_arguments
1893
- def wait_until_python_package_is_available(self,package_name:str,package_version:str,source:str):
1894
- while not self.python_package_is_available(package_name,package_version,source):
1887
+ def wait_until_python_package_is_available(self, package_name: str, package_version: str, source: str):
1888
+ while not self.python_package_is_available(package_name, package_version, source):
1895
1889
  time.sleep(5)
1896
1890
 
1897
-
1898
1891
  @GeneralUtilities.check_arguments
1899
1892
  def create_deb_package(self, toolname: str, binary_folder: str, control_file_content: str, deb_output_folder: str, verbosity: int, permission_of_executable_file_as_octet_triple: int) -> None:
1900
1893
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ScriptCollection
3
- Version: 3.5.84
3
+ Version: 3.5.85
4
4
  Summary: The ScriptCollection is the place for reusable scripts.
5
5
  Home-page: https://github.com/anionDev/ScriptCollection
6
6
  Author: Marius Göcke
@@ -24,7 +24,7 @@ Requires-Python: >=3.10
24
24
  Description-Content-Type: text/markdown
25
25
  Requires-Dist: build>=1.2.2.post1
26
26
  Requires-Dist: coverage>=7.6.12
27
- Requires-Dist: cyclonedx-bom>=5.2.0
27
+ Requires-Dist: cyclonedx-bom>=5.3.0
28
28
  Requires-Dist: defusedxml>=0.7.1
29
29
  Requires-Dist: keyboard>=0.13.5
30
30
  Requires-Dist: lcov-cobertura>=2.1.1
@@ -5,12 +5,12 @@ ScriptCollection/ProgramRunnerBase.py,sha256=2kMIAqdc65UjBAddOZkzy_aFx9h5roZ5a4b
5
5
  ScriptCollection/ProgramRunnerEpew.py,sha256=4pjEd0r9Fcz3TTDv0MdTSd5KkigYXcWUVI1X43regfU,6477
6
6
  ScriptCollection/ProgramRunnerPopen.py,sha256=BPY7-ZMIlqT7JOKz8qlB5c0laF2Js-ijzqk09GxZC48,3821
7
7
  ScriptCollection/RPStream.py,sha256=NRRHL3YSP3D9MuAV2jB_--0KUKCsvJGxeKnxgrRZ9kY,1545
8
- ScriptCollection/ScriptCollectionCore.py,sha256=0W4WdCHN8FXmZbrdEWirYschKwJkFqdPNvWw2dwLG6c,123057
8
+ ScriptCollection/ScriptCollectionCore.py,sha256=5xL3OyzIfLB56lvIwMSjSxIwG30bEuDlWhicMIvobK8,122886
9
9
  ScriptCollection/TasksForCommonProjectStructure.py,sha256=n6og3gADK7oBd5_9F-XNKVlQ0bO9EL7irdOSJAh-Vtc,215940
10
10
  ScriptCollection/UpdateCertificates.py,sha256=Eynbgu7k9jLxApP2D_8Il77B6BFjJap6K7oTeEAZYbk,7790
11
11
  ScriptCollection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- ScriptCollection-3.5.84.dist-info/METADATA,sha256=xs5tu_QAF5oTpfKaQI9fQP_9n5REeh8yXqh8lH4_5-k,7664
13
- ScriptCollection-3.5.84.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
14
- ScriptCollection-3.5.84.dist-info/entry_points.txt,sha256=1jAL5AuB8mvdw2v-6E7wCZFThurQxchiQynL8DCi-Yg,3545
15
- ScriptCollection-3.5.84.dist-info/top_level.txt,sha256=hY2hOVH0V0Ce51WB76zKkIWTUNwMUdHo4XDkR2vYVwg,17
16
- ScriptCollection-3.5.84.dist-info/RECORD,,
12
+ scriptcollection-3.5.85.dist-info/METADATA,sha256=IINDRHU-BtfrXLP1MFNrA4TMfjtEJYcYj4BUlSdzS8k,7664
13
+ scriptcollection-3.5.85.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
14
+ scriptcollection-3.5.85.dist-info/entry_points.txt,sha256=1jAL5AuB8mvdw2v-6E7wCZFThurQxchiQynL8DCi-Yg,3545
15
+ scriptcollection-3.5.85.dist-info/top_level.txt,sha256=hY2hOVH0V0Ce51WB76zKkIWTUNwMUdHo4XDkR2vYVwg,17
16
+ scriptcollection-3.5.85.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.0)
2
+ Generator: setuptools (75.8.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5