ScriptCollection 3.3.72__py3-none-any.whl → 3.3.74__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.
@@ -26,7 +26,7 @@ from .ProgramRunnerPopen import ProgramRunnerPopen
26
26
  from .ProgramRunnerEpew import ProgramRunnerEpew, CustomEpewArgument
27
27
 
28
28
 
29
- version = "3.3.72"
29
+ version = "3.3.74"
30
30
  __version__ = version
31
31
 
32
32
 
@@ -27,9 +27,11 @@ class CreateReleaseConfiguration():
27
27
  public_repository_url: str
28
28
  additional_arguments_file: str = None
29
29
  artifacts_which_have_artifacts_to_push: list[str] = None
30
+ repository_folder_name: str = None
30
31
 
31
32
  def __init__(self, projectname: str, remotename: str, build_artifacts_target_folder: str, push_artifacts_scripts_folder: str,
32
- verbosity: int, public_repository_url: str, additional_arguments_file: str, artifacts_which_have_artifacts_to_push: list[str]):
33
+ verbosity: int, public_repository_url: str, additional_arguments_file: str, artifacts_which_have_artifacts_to_push: list[str],
34
+ repository_folder_name: str):
33
35
 
34
36
  self.projectname = projectname
35
37
  self.remotename = remotename
@@ -40,6 +42,7 @@ class CreateReleaseConfiguration():
40
42
  self.reference_repository_remote_name = self.remotename
41
43
  self.additional_arguments_file = additional_arguments_file
42
44
  self.artifacts_which_have_artifacts_to_push = artifacts_which_have_artifacts_to_push
45
+ self.repository_folder_name = repository_folder_name
43
46
 
44
47
 
45
48
  class CreateReleaseInformationForProjectInCommonProjectFormat:
@@ -70,7 +73,7 @@ class CreateReleaseInformationForProjectInCommonProjectFormat:
70
73
  projectname = os.path.basename(self.repository)
71
74
  else:
72
75
  self.projectname = projectname
73
- self.reference_repository = GeneralUtilities.resolve_relative_path(f"../{projectname}Reference", repository)
76
+ self.reference_repository = f"{repository}Reference"
74
77
  self.artifacts_which_have_artifacts_to_push = artifacts_which_have_artifacts_to_push
75
78
 
76
79
 
@@ -253,10 +256,10 @@ class TasksForCommonProjectStructure:
253
256
 
254
257
  @GeneralUtilities.check_arguments
255
258
  def push_wheel_build_artifact(self, push_build_artifacts_file, product_name, codeunitname, repository: str,
256
- apikey: str, gpg_identity: str, verbosity: int, commandline_arguments: list[str]) -> None:
259
+ apikey: str, gpg_identity: str, verbosity: int, commandline_arguments: list[str], repository_folder_name: str) -> None:
257
260
  verbosity = TasksForCommonProjectStructure.get_verbosity_from_commandline_arguments(commandline_arguments, verbosity)
258
261
  folder_of_this_file = os.path.dirname(push_build_artifacts_file)
259
- repository_folder = GeneralUtilities.resolve_relative_path(f"..{os.path.sep}../Submodules{os.path.sep}{product_name}", folder_of_this_file)
262
+ repository_folder = GeneralUtilities.resolve_relative_path(f"..{os.path.sep}../Submodules{os.path.sep}{repository_folder_name}", folder_of_this_file)
260
263
  wheel_file = self.get_wheel_file(repository_folder, codeunitname)
261
264
  self.standardized_tasks_push_wheel_file_to_registry(wheel_file, apikey, repository, gpg_identity, verbosity)
262
265
 
@@ -391,26 +394,29 @@ class TasksForCommonProjectStructure:
391
394
  repository_folder = os.path.dirname(codeunit_folder)
392
395
  codeunit_name = os.path.basename(codeunit_folder)
393
396
  codeunit_folder = os.path.join(repository_folder, codeunit_name)
397
+ codeunit_version = self.get_version_of_codeunit_folder(codeunit_folder)
394
398
  message = " does not match the standardized .csproj-file-format."
395
399
 
396
400
  project_name = codeunit_name
397
401
  csproj_file = os.path.join(codeunit_folder, project_name, project_name+".csproj")
398
- if not self.__standardized_task_verify_standard_format_for_project_csproj_file(csproj_file):
402
+ if not self.__standardized_task_verify_standard_format_for_project_csproj_file(csproj_file, codeunit_name, codeunit_version):
399
403
  raise ValueError(csproj_file+message)
400
404
 
401
405
  testproject_name = project_name+"Tests"
402
406
  test_csproj_file = os.path.join(codeunit_folder, testproject_name, testproject_name+".csproj")
403
- if not self.__standardized_task_verify_standard_format_for_test_csproj_file(test_csproj_file):
407
+ if not self.__standardized_task_verify_standard_format_for_test_csproj_file(test_csproj_file, codeunit_name, codeunit_version):
404
408
  raise ValueError(test_csproj_file+message)
405
409
 
406
- def __standardized_task_verify_standard_format_for_project_csproj_file(self, csproj_file: str) -> bool:
407
- regex = """^<Project Sdk=\\"Microsoft\\.NET\\.Sdk\\">
410
+ def __standardized_task_verify_standard_format_for_project_csproj_file(self, csproj_file: str, codeunit_name: str, codeunit_version: str) -> bool:
411
+ codeunit_name_regex = re.escape(codeunit_name)
412
+ codeunit_version_regex = re.escape(codeunit_version)
413
+ regex = f"""^<Project Sdk=\\"Microsoft\\.NET\\.Sdk\\">
408
414
  \\W*<PropertyGroup>
409
415
  \\W* <TargetFramework>([^<]+)<\\/TargetFramework>
410
416
  \\W* <Authors>([^<]+)<\\/Authors>
411
- \\W* <Version>\\d+\\.\\d+\\.\\d+<\\/Version>
412
- \\W* <AssemblyVersion>\\d+\\.\\d+\\.\\d+<\\/AssemblyVersion>
413
- \\W* <FileVersion>\\d+\\.\\d+\\.\\d+<\\/FileVersion>
417
+ \\W* <Version>{codeunit_version_regex}<\\/Version>
418
+ \\W* <AssemblyVersion>{codeunit_version_regex}<\\/AssemblyVersion>
419
+ \\W* <FileVersion>{codeunit_version_regex}<\\/FileVersion>
414
420
  \\W* <SelfContained>false<\\/SelfContained>
415
421
  \\W* <IsPackable>false<\\/IsPackable>
416
422
  \\W* <PreserveCompilationContext>false<\\/PreserveCompilationContext>
@@ -418,7 +424,7 @@ class TasksForCommonProjectStructure:
418
424
  \\W* <Copyright>([^<]+)<\\/Copyright>
419
425
  \\W* <Description>([^<]+)<\\/Description>
420
426
  \\W* <PackageProjectUrl>https:\\/\\/([^<]+)<\\/PackageProjectUrl>
421
- \\W* <RepositoryUrl>https:\\/\\/([^<]+)<\\/RepositoryUrl>
427
+ \\W* <RepositoryUrl>https:\\/\\/([^<]+)\\.git<\\/RepositoryUrl>
422
428
  \\W* <RootNamespace>([^<]+)\\.Core<\\/RootNamespace>
423
429
  \\W* <ProduceReferenceAssembly>false<\\/ProduceReferenceAssembly>
424
430
  \\W* <Nullable>disable<\\/Nullable>
@@ -434,9 +440,9 @@ class TasksForCommonProjectStructure:
434
440
  \\W* <Prefer32Bit>false<\\/Prefer32Bit>
435
441
  \\W* <NoWarn>([^<]+)<\\/NoWarn>
436
442
  \\W* <WarningsAsErrors>([^<]+)<\\/WarningsAsErrors>
437
- \\W* <ErrorLog>\\.\\.\\\\Other\\\\Resources\\\\([^<]+)\\.sarif<\\/ErrorLog>
443
+ \\W* <ErrorLog>\\.\\.\\\\Other\\\\Resources\\\\{codeunit_name_regex}\\.sarif<\\/ErrorLog>
438
444
  \\W* <OutputType>([^<]+)<\\/OutputType>
439
- \\W* <DocumentationFile>\\.\\.\\\\Other\\\\Artifacts\\\\MetaInformation\\\\([^<]+)\\.xml<\\/DocumentationFile>
445
+ \\W* <DocumentationFile>\\.\\.\\\\Other\\\\Artifacts\\\\MetaInformation\\\\{codeunit_name_regex}\\.xml<\\/DocumentationFile>
440
446
  \\W* (<ApplicationIcon>([^<]+)<\\/ApplicationIcon>)?
441
447
  \\W* (<StartupObject>([^<]+)<\\/StartupObject>)?
442
448
  \\W*<\\/PropertyGroup>
@@ -468,22 +474,24 @@ class TasksForCommonProjectStructure:
468
474
  \\W*$"""
469
475
  return self.__standardized_task_verify_standard_format_for_csproj_files(regex, csproj_file)
470
476
 
471
- def __standardized_task_verify_standard_format_for_test_csproj_file(self, csproj_file: str) -> bool:
472
- regex = """^<Project Sdk=\\"Microsoft\\.NET\\.Sdk\\">
477
+ def __standardized_task_verify_standard_format_for_test_csproj_file(self, csproj_file: str, codeunit_name: str, codeunit_version: str) -> bool:
478
+ codeunit_name_regex = re.escape(codeunit_name)
479
+ codeunit_version_regex = re.escape(codeunit_version)
480
+ regex = f"""^<Project Sdk=\\"Microsoft\\.NET\\.Sdk\\">
473
481
  \\W*<PropertyGroup>
474
482
  \\W* <TargetFramework>([^<]+)<\\/TargetFramework>
475
483
  \\W* <Authors>([^<]+)<\\/Authors>
476
- \\W* <Version>\\d+\\.\\d+\\.\\d+<\\/Version>
477
- \\W* <AssemblyVersion>\\d+\\.\\d+\\.\\d+<\\/AssemblyVersion>
478
- \\W* <FileVersion>\\d+\\.\\d+\\.\\d+<\\/FileVersion>
484
+ \\W* <Version>{codeunit_version_regex}<\\/Version>
485
+ \\W* <AssemblyVersion>{codeunit_version_regex}<\\/AssemblyVersion>
486
+ \\W* <FileVersion>{codeunit_version_regex}<\\/FileVersion>
479
487
  \\W* <SelfContained>false<\\/SelfContained>
480
488
  \\W* <IsPackable>false<\\/IsPackable>
481
489
  \\W* <PreserveCompilationContext>false<\\/PreserveCompilationContext>
482
490
  \\W* <GenerateRuntimeConfigurationFiles>true<\\/GenerateRuntimeConfigurationFiles>
483
491
  \\W* <Copyright>([^<]+)<\\/Copyright>
484
- \\W* <Description>([^<]+)<\\/Description>
492
+ \\W* <Description>{codeunit_name_regex}Tests\\ is\\ the\\ test-project\\ for\\ {codeunit_name_regex}\\.<\\/Description>
485
493
  \\W* <PackageProjectUrl>https:\\/\\/([^<]+)<\\/PackageProjectUrl>
486
- \\W* <RepositoryUrl>https:\\/\\/([^<]+)</RepositoryUrl>
494
+ \\W* <RepositoryUrl>https:\\/\\/([^<]+)\\.git</RepositoryUrl>
487
495
  \\W* <RootNamespace>([^<]+)\\.Tests<\\/RootNamespace>
488
496
  \\W* <ProduceReferenceAssembly>false<\\/ProduceReferenceAssembly>
489
497
  \\W* <Nullable>disable<\\/Nullable>
@@ -499,7 +507,7 @@ class TasksForCommonProjectStructure:
499
507
  \\W* <Prefer32Bit>false<\\/Prefer32Bit>
500
508
  \\W* <NoWarn>([^<]+)<\\/NoWarn>
501
509
  \\W* <WarningsAsErrors>([^<]+)<\\/WarningsAsErrors>
502
- \\W* <ErrorLog>\\.\\.\\\\Other\\\\Resources\\\\([^<]+)\\.sarif<\\/ErrorLog>
510
+ \\W* <ErrorLog>\\.\\.\\\\Other\\\\Resources\\\\{codeunit_name_regex}Tests\\.sarif<\\/ErrorLog>
503
511
  \\W* <OutputType>Library<\\/OutputType>
504
512
  \\W*<\\/PropertyGroup>
505
513
  \\W*<PropertyGroup Condition=\\\"'\\$\\(Configuration\\)'=='Development'\\\">
@@ -523,9 +531,9 @@ class TasksForCommonProjectStructure:
523
531
  \\W* <DefineConstants>Productive<\\/DefineConstants>
524
532
  \\W* <ErrorReport>none<\\/ErrorReport>
525
533
  \\W*<\\/PropertyGroup>
526
- \\W*<ItemGroup>
527
- \\W*.+
528
- \\W*<\\/ItemGroup>
534
+ \\W*(<ItemGroup>
535
+ \\W*.*
536
+ \\W*<\\/ItemGroup>)*
529
537
  \\W*<\\/Project>
530
538
  \\W*$"""
531
539
  return self.__standardized_task_verify_standard_format_for_csproj_files(regex, csproj_file)
@@ -891,10 +899,10 @@ class TasksForCommonProjectStructure:
891
899
  GeneralUtilities.write_text_to_file(reference_index_file, reference_index_file_content)
892
900
 
893
901
  @GeneralUtilities.check_arguments
894
- def push_nuget_build_artifact(self, push_script_file: str, codeunitname: str, registry_address: str, api_key: str):
902
+ def push_nuget_build_artifact(self, push_script_file: str, codeunitname: str, registry_address: str, api_key: str, repository_folder_name: str):
895
903
  # when pusing to "default public" nuget-server then use registry_address: "nuget.org"
896
904
  build_artifact_folder = GeneralUtilities.resolve_relative_path(
897
- f"../../Submodules/{codeunitname}/{codeunitname}/Other/Artifacts/BuildResult_NuGet", os.path.dirname(push_script_file))
905
+ f"../../Submodules/{repository_folder_name}/{codeunitname}/Other/Artifacts/BuildResult_NuGet", os.path.dirname(push_script_file))
898
906
  self.__sc.push_nuget_build_artifact(self.__sc.find_file_by_extension(build_artifact_folder, "nupkg"),
899
907
  registry_address, api_key)
900
908
 
@@ -937,7 +945,7 @@ class TasksForCommonProjectStructure:
937
945
 
938
946
  self.__sc.git_checkout(build_repository_folder, createRelease_configuration.build_repository_branch)
939
947
 
940
- repository_folder = GeneralUtilities.resolve_relative_path(f"Submodules{os.path.sep}{createRelease_configuration.projectname}", build_repository_folder)
948
+ repository_folder = GeneralUtilities.resolve_relative_path(f"Submodules{os.path.sep}{createRelease_configuration.repository_folder_name}", build_repository_folder)
941
949
  mergeInformation = MergeToStableBranchInformationForProjectInCommonProjectFormat(repository_folder,
942
950
  createRelease_configuration.additional_arguments_file,
943
951
  createRelease_configuration.artifacts_folder)
@@ -1055,10 +1063,10 @@ class TasksForCommonProjectStructure:
1055
1063
 
1056
1064
  @GeneralUtilities.check_arguments
1057
1065
  def push_docker_build_artifact(self, push_artifacts_file: str, registry: str, product_name: str, codeunitname: str,
1058
- verbosity: int, push_readme: bool, commandline_arguments: list[str]):
1066
+ verbosity: int, push_readme: bool, commandline_arguments: list[str], repository_folder_name: str):
1059
1067
  folder_of_this_file = os.path.dirname(push_artifacts_file)
1060
1068
  verbosity = TasksForCommonProjectStructure.get_verbosity_from_commandline_arguments(commandline_arguments, verbosity)
1061
- repository_folder = GeneralUtilities.resolve_relative_path(f"..{os.path.sep}..{os.path.sep}Submodules{os.path.sep}{product_name}", folder_of_this_file)
1069
+ repository_folder = GeneralUtilities.resolve_relative_path(f"..{os.path.sep}..{os.path.sep}Submodules{os.path.sep}{repository_folder_name}", folder_of_this_file)
1062
1070
  codeunit_folder = os.path.join(repository_folder, codeunitname)
1063
1071
  artifacts_folder = self.get_artifacts_folder(repository_folder, codeunitname)
1064
1072
  applicationimage_folder = os.path.join(artifacts_folder, "BuildResult_OCIImage")
@@ -1146,14 +1154,14 @@ class TasksForCommonProjectStructure:
1146
1154
  raise ValueError('An empty array as argument for the "commandline_arguments"-parameter is not valid.')
1147
1155
  commandline_arguments = commandline_arguments[1:]
1148
1156
  repository_folder: str = str(Path(os.path.dirname(common_tasks_scripts_file)).parent.parent.absolute())
1149
- codeunitname: str = str(os.path.basename(Path(os.path.dirname(common_tasks_scripts_file)).parent.absolute()))
1157
+ codeunit_name: str = str(os.path.basename(Path(os.path.dirname(common_tasks_scripts_file)).parent.absolute()))
1150
1158
  verbosity = TasksForCommonProjectStructure.get_verbosity_from_commandline_arguments(commandline_arguments, verbosity)
1151
1159
  project_version = self.get_version_of_project(repository_folder)
1152
- codeunit_folder = os.path.join(repository_folder, codeunitname)
1160
+ codeunit_folder = os.path.join(repository_folder, codeunit_name)
1153
1161
 
1154
1162
  # Check codeunit-conformity
1155
1163
  # TODO check if foldername=="<codeunitname>[.codeunit.xml]"==codeunitname in file
1156
- codeunitfile = os.path.join(codeunit_folder, f"{codeunitname}.codeunit.xml")
1164
+ codeunitfile = os.path.join(codeunit_folder, f"{codeunit_name}.codeunit.xml")
1157
1165
  if not os.path.isfile(codeunitfile):
1158
1166
  raise Exception(f'Codeunitfile "{codeunitfile}" does not exist.')
1159
1167
  # TODO implement usage of self.reference_latest_version_of_xsd_when_generating_xml
@@ -1169,6 +1177,11 @@ class TasksForCommonProjectStructure:
1169
1177
  schemaLocation = root.xpath('//cps:codeunit/@xsi:schemaLocation', namespaces=namespaces)[0]
1170
1178
  xmlschema.validate(codeunitfile, schemaLocation)
1171
1179
 
1180
+ # Check codeunit-name
1181
+ codeunit_name_in_codeunit_file = root.xpath('//cps:codeunit/cps:name/text()', namespaces=namespaces)[0]
1182
+ if codeunit_name != codeunit_name_in_codeunit_file:
1183
+ raise ValueError(f"The folder-name ('{codeunit_name}') is not equal to the codeunit-name ('{codeunit_name_in_codeunit_file}').")
1184
+
1172
1185
  # Check developer
1173
1186
  if self.validate_developers_of_repository:
1174
1187
  expected_authors: list[tuple[str, str]] = []
@@ -1177,7 +1190,7 @@ class TasksForCommonProjectStructure:
1177
1190
  author_name = expected_author.xpath('./cps:developername/text()', namespaces=namespaces)[0]
1178
1191
  author_emailaddress = expected_author.xpath('./cps:developeremailaddress/text()', namespaces=namespaces)[0]
1179
1192
  expected_authors.append((author_name, author_emailaddress))
1180
- actual_authors: list[tuple[str, str]] = self.__sc.get_all_authors_and_committers_of_repository(repository_folder, codeunitname, verbosity)
1193
+ actual_authors: list[tuple[str, str]] = self.__sc.get_all_authors_and_committers_of_repository(repository_folder, codeunit_name, verbosity)
1181
1194
  for actual_author in actual_authors:
1182
1195
  if not (actual_author) in expected_authors:
1183
1196
  actual_author_formatted = f"{actual_author[0]} <{actual_author[1]}>"
@@ -1197,8 +1210,8 @@ class TasksForCommonProjectStructure:
1197
1210
  if assume_dependent_codeunits_are_already_built:
1198
1211
  pass # TODO do basic checks to verify dependent codeunits are really there and raise exception if not
1199
1212
  else:
1200
- self.build_dependent_code_units(repository_folder, codeunitname, verbosity, target_environmenttype, additional_arguments_file)
1201
- self.copy_artifacts_from_dependent_code_units(repository_folder, codeunitname)
1213
+ self.build_dependent_code_units(repository_folder, codeunit_name, verbosity, target_environmenttype, additional_arguments_file)
1214
+ self.copy_artifacts_from_dependent_code_units(repository_folder, codeunit_name)
1202
1215
 
1203
1216
  # Update codeunit-version
1204
1217
  self.update_version_of_codeunit(common_tasks_scripts_file, version)
@@ -1341,16 +1354,15 @@ class TasksForCommonProjectStructure:
1341
1354
  GeneralUtilities.write_text_to_file(os.path.join(constants_valuefile_folder, constants_valuefile_name), constant_value)
1342
1355
 
1343
1356
  @GeneralUtilities.check_arguments
1344
- def generate_openapi_file(self, buildscript_file: str, runtime: str, swagger_document_name: str,
1345
- verbosity: int, commandline_arguments: list[str]) -> None:
1357
+ def generate_openapi_file(self, buildscript_file: str, runtime: str, verbosity: int, commandline_arguments: list[str],
1358
+ swagger_document_name: str = "APISpecification") -> None:
1346
1359
  codeunitname = os.path.basename(str(Path(os.path.dirname(buildscript_file)).parent.parent.absolute()))
1347
1360
  repository_folder = str(Path(os.path.dirname(buildscript_file)).parent.parent.parent.absolute())
1348
1361
  artifacts_folder = os.path.join(repository_folder, codeunitname, "Other", "Artifacts")
1349
1362
  GeneralUtilities.ensure_directory_exists(os.path.join(artifacts_folder, "APISpecification"))
1350
- verbosity = TasksForCommonProjectStructure.get_verbosity_from_commandline_arguments(commandline_arguments, verbosity)
1363
+ verbosity = self.get_verbosity_from_commandline_arguments(commandline_arguments, verbosity)
1351
1364
  version = self.get_version_of_codeunit_folder(os.path.join(repository_folder, codeunitname))
1352
- self.__sc.run_program("swagger",
1353
- f"tofile --output APISpecification\\{codeunitname}.v{version}.api.json" +
1365
+ self.__sc.run_program("swagger", f"tofile --output APISpecification\\{codeunitname}.v{version}.api.json" +
1354
1366
  f" BuildResult_DotNet_{runtime}\\{codeunitname}.dll {swagger_document_name}",
1355
1367
  artifacts_folder, verbosity=verbosity)
1356
1368
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ScriptCollection
3
- Version: 3.3.72
3
+ Version: 3.3.74
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
@@ -3,12 +3,12 @@ ScriptCollection/GeneralUtilities.py,sha256=Blo0Iq-G4zuUL5oUxBTeGFtQ23ndK7dpZPOj
3
3
  ScriptCollection/ProgramRunnerBase.py,sha256=2kyOuoM3oFjBfLc9Q5t5RTz7Ya2CjUxFtB1rBBDmnjU,1937
4
4
  ScriptCollection/ProgramRunnerEpew.py,sha256=ZiBZVMcsphmo49z2BwUwQYXo2uTKXPu33QW3IxCT46E,6273
5
5
  ScriptCollection/ProgramRunnerPopen.py,sha256=HOs1QVnXiQtwXy1_xvH79bWBdd0i-2tUyyLloQBvMto,3023
6
- ScriptCollection/ScriptCollectionCore.py,sha256=XtEa3jDCSviyL6JPdOttS7fz_yB7i5ysNSPmfu49vWc,86796
7
- ScriptCollection/TasksForCommonProjectStructure.py,sha256=fd7VjtbvncnPdaJV1g7bZDVspV0mo7-uoaN9GwU9wjo,117347
6
+ ScriptCollection/ScriptCollectionCore.py,sha256=STnbdeyyo8d-hc5qqkX4qGWDit6AK-fp7rVGtZSJw2k,86796
7
+ ScriptCollection/TasksForCommonProjectStructure.py,sha256=yn2reLjaNyMtV6f37dwTBXuIYnO37Zfu059EdstsOMM,118534
8
8
  ScriptCollection/UpdateCertificates.py,sha256=Go-JJK-YTi7aBB1phlLxypa8GHkmFHBEPB0_TT9G-bw,7918
9
9
  ScriptCollection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- ScriptCollection-3.3.72.dist-info/METADATA,sha256=7bawbXJYTHtf8g36GXbGDcSAuqLn8Bp87qPxqAA3UJU,7878
11
- ScriptCollection-3.3.72.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
12
- ScriptCollection-3.3.72.dist-info/entry_points.txt,sha256=VIuxVCOpX38lSJUwRRENBNgcGKTIBxQyrCfbJVRHP8g,1968
13
- ScriptCollection-3.3.72.dist-info/top_level.txt,sha256=hY2hOVH0V0Ce51WB76zKkIWTUNwMUdHo4XDkR2vYVwg,17
14
- ScriptCollection-3.3.72.dist-info/RECORD,,
10
+ ScriptCollection-3.3.74.dist-info/METADATA,sha256=73D1BAzKZnroByQrqwadaow6mrTeyX1vGsYIZQt7vLk,7878
11
+ ScriptCollection-3.3.74.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
12
+ ScriptCollection-3.3.74.dist-info/entry_points.txt,sha256=VIuxVCOpX38lSJUwRRENBNgcGKTIBxQyrCfbJVRHP8g,1968
13
+ ScriptCollection-3.3.74.dist-info/top_level.txt,sha256=hY2hOVH0V0Ce51WB76zKkIWTUNwMUdHo4XDkR2vYVwg,17
14
+ ScriptCollection-3.3.74.dist-info/RECORD,,