ScriptCollection 3.5.94__py3-none-any.whl → 3.5.95__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.
- ScriptCollection/ScriptCollectionCore.py +1 -1
- ScriptCollection/TasksForCommonProjectStructure.py +65 -48
- {scriptcollection-3.5.94.dist-info → scriptcollection-3.5.95.dist-info}/METADATA +1 -1
- {scriptcollection-3.5.94.dist-info → scriptcollection-3.5.95.dist-info}/RECORD +7 -7
- {scriptcollection-3.5.94.dist-info → scriptcollection-3.5.95.dist-info}/WHEEL +0 -0
- {scriptcollection-3.5.94.dist-info → scriptcollection-3.5.95.dist-info}/entry_points.txt +0 -0
- {scriptcollection-3.5.94.dist-info → scriptcollection-3.5.95.dist-info}/top_level.txt +0 -0
@@ -1360,24 +1360,24 @@ class TasksForCommonProjectStructure:
|
|
1360
1360
|
repository_folder = GeneralUtilities.resolve_relative_path("..", codeunit_folder)
|
1361
1361
|
dependent_codeunit_folder = os.path.join(repository_folder, dependent_codeunit_name).replace("\\", "/")
|
1362
1362
|
t = TasksForCommonProjectStructure()
|
1363
|
-
sbom_file = f"{codeunitname}/Other/Artifacts/BOM/{codeunitname}.{t.get_version_of_codeunit_folder(codeunit_folder)}.sbom.xml"
|
1364
|
-
dependent_sbom_file = f"{dependent_codeunit_name}/Other/Artifacts/BOM/{dependent_codeunit_name}.{t.get_version_of_codeunit_folder(dependent_codeunit_folder)}.sbom.xml"
|
1363
|
+
sbom_file = f"{repository_folder}/{codeunitname}/Other/Artifacts/BOM/{codeunitname}.{t.get_version_of_codeunit_folder(codeunit_folder)}.sbom.xml"
|
1364
|
+
dependent_sbom_file = f"{repository_folder}/{dependent_codeunit_name}/Other/Artifacts/BOM/{dependent_codeunit_name}.{t.get_version_of_codeunit_folder(dependent_codeunit_folder)}.sbom.xml"
|
1365
1365
|
self.merge_sbom_file(repository_folder, dependent_sbom_file, sbom_file)
|
1366
1366
|
|
1367
1367
|
@GeneralUtilities.check_arguments
|
1368
|
-
def merge_sbom_file(self, repository_folder: str,
|
1369
|
-
GeneralUtilities.assert_file_exists(os.path.join(repository_folder,
|
1370
|
-
GeneralUtilities.assert_file_exists(os.path.join(repository_folder,
|
1371
|
-
|
1372
|
-
os.rename(os.path.join(repository_folder,
|
1368
|
+
def merge_sbom_file(self, repository_folder: str, source_sbom_file_relative: str, target_sbom_file_relative: str) -> None:
|
1369
|
+
GeneralUtilities.assert_file_exists(os.path.join(repository_folder, source_sbom_file_relative))
|
1370
|
+
GeneralUtilities.assert_file_exists(os.path.join(repository_folder, target_sbom_file_relative))
|
1371
|
+
target_original_sbom_file_relative = os.path.dirname(target_sbom_file_relative)+"/"+os.path.basename(target_sbom_file_relative)+".original.xml"
|
1372
|
+
os.rename(os.path.join(repository_folder, target_sbom_file_relative), os.path.join(repository_folder, target_original_sbom_file_relative))
|
1373
1373
|
|
1374
1374
|
self.ensure_cyclonedxcli_is_available(repository_folder)
|
1375
1375
|
cyclonedx_exe = os.path.join(repository_folder, "Other/Resources/CycloneDXCLI/cyclonedx-cli")
|
1376
1376
|
if GeneralUtilities.current_system_is_windows():
|
1377
1377
|
cyclonedx_exe = cyclonedx_exe+".exe"
|
1378
|
-
self.__sc.run_program(
|
1379
|
-
GeneralUtilities.ensure_file_does_not_exist(os.path.join(repository_folder,
|
1380
|
-
self.__sc.format_xml_file(
|
1378
|
+
self.__sc.run_program(cyclonedx_exe, f"merge --input-files {source_sbom_file_relative} {target_original_sbom_file_relative} --output-file {target_sbom_file_relative}", repository_folder)
|
1379
|
+
GeneralUtilities.ensure_file_does_not_exist(os.path.join(repository_folder, target_original_sbom_file_relative))
|
1380
|
+
self.__sc.format_xml_file(os.path.join(repository_folder, target_sbom_file_relative))
|
1381
1381
|
|
1382
1382
|
@GeneralUtilities.check_arguments
|
1383
1383
|
def standardized_tasks_build_for_docker_project_with_additional_build_arguments(self, build_script_file: str, target_environment_type: str, verbosity: int, commandline_arguments: list[str], custom_arguments: dict[str, str]) -> None:
|
@@ -1486,8 +1486,8 @@ class TasksForCommonProjectStructure:
|
|
1486
1486
|
@GeneralUtilities.check_arguments
|
1487
1487
|
def standardized_tasks_do_common_tasks(self, common_tasks_scripts_file: str, codeunit_version: str, verbosity: int, targetenvironmenttype: str, clear_artifacts_folder: bool, additional_arguments_file: str, assume_dependent_codeunits_are_already_built: bool, commandline_arguments: list[str]) -> None:
|
1488
1488
|
additional_arguments_file = self.get_additionalargumentsfile_from_commandline_arguments(commandline_arguments, additional_arguments_file)
|
1489
|
-
target_environmenttype = self.get_targetenvironmenttype_from_commandline_arguments(commandline_arguments, targetenvironmenttype)
|
1490
|
-
assume_dependent_codeunits_are_already_built = self.get_assume_dependent_codeunits_are_already_built_from_commandline_arguments(commandline_arguments, assume_dependent_codeunits_are_already_built)
|
1489
|
+
target_environmenttype = self.get_targetenvironmenttype_from_commandline_arguments(commandline_arguments, targetenvironmenttype)#pylint: disable=unused-variable
|
1490
|
+
# assume_dependent_codeunits_are_already_built = self.get_assume_dependent_codeunits_are_already_built_from_commandline_arguments(commandline_arguments, assume_dependent_codeunits_are_already_built)
|
1491
1491
|
if commandline_arguments is None:
|
1492
1492
|
raise ValueError('The "commandline_arguments"-parameter is not defined.')
|
1493
1493
|
if len(commandline_arguments) == 0:
|
@@ -1587,8 +1587,8 @@ class TasksForCommonProjectStructure:
|
|
1587
1587
|
GeneralUtilities.ensure_directory_does_not_exist(artifacts_folder)
|
1588
1588
|
|
1589
1589
|
# Get artifacts from dependent codeunits
|
1590
|
-
if assume_dependent_codeunits_are_already_built:
|
1591
|
-
|
1590
|
+
# if assume_dependent_codeunits_are_already_built:
|
1591
|
+
# self.build_dependent_code_units(repository_folder, codeunit_name, verbosity, target_environmenttype, additional_arguments_file, commandline_arguments)
|
1592
1592
|
self.copy_artifacts_from_dependent_code_units(repository_folder, codeunit_name)
|
1593
1593
|
|
1594
1594
|
# Update codeunit-version
|
@@ -2350,6 +2350,7 @@ class TasksForCommonProjectStructure:
|
|
2350
2350
|
command_with_args = f"{command_with_args} {{{{.CLI_ARGS}}}}"
|
2351
2351
|
lines.append(f" {name}:")
|
2352
2352
|
lines.append(f' desc: "{description}"')
|
2353
|
+
lines.append(' silent: true')
|
2353
2354
|
lines.append(f' dir: "{cwd}"')
|
2354
2355
|
lines.append(" cmds:")
|
2355
2356
|
lines.append(f" - {command_with_args}")
|
@@ -2449,7 +2450,19 @@ class TasksForCommonProjectStructure:
|
|
2449
2450
|
GeneralUtilities.copy_content_of_folder(ca_source_folder, ca_target_folder)
|
2450
2451
|
|
2451
2452
|
@GeneralUtilities.check_arguments
|
2452
|
-
def get_sorted_codeunits(self,
|
2453
|
+
def get_sorted_codeunits(self, repository_folder: str) -> list[str]:
|
2454
|
+
codeunits_with_dependent_codeunits: dict[str, set[str]] = dict[str, set[str]]()
|
2455
|
+
subfolders = GeneralUtilities.get_direct_folders_of_folder(repository_folder)
|
2456
|
+
for subfolder in subfolders:
|
2457
|
+
codeunit_name: str = os.path.basename(subfolder)
|
2458
|
+
codeunit_file = os.path.join(subfolder, f"{codeunit_name}.codeunit.xml")
|
2459
|
+
if os.path.exists(codeunit_file):
|
2460
|
+
codeunits_with_dependent_codeunits[codeunit_name] = self.get_dependent_code_units(codeunit_file)
|
2461
|
+
sorted_codeunits = self._internal_get_sorted_codeunits_by_dict(codeunits_with_dependent_codeunits)
|
2462
|
+
return sorted_codeunits
|
2463
|
+
|
2464
|
+
@GeneralUtilities.check_arguments
|
2465
|
+
def _internal_get_sorted_codeunits_by_dict(self, codeunits=dict[str, set[str]]) -> list[str]:
|
2453
2466
|
result_typed = list(TopologicalSorter(codeunits).static_order())
|
2454
2467
|
result = list()
|
2455
2468
|
for item in result_typed:
|
@@ -2492,16 +2505,36 @@ class TasksForCommonProjectStructure:
|
|
2492
2505
|
self.__sc.assert_is_git_repository(repository_folder)
|
2493
2506
|
repository_folder = GeneralUtilities.resolve_relative_path_from_current_working_directory(repository_folder)
|
2494
2507
|
codeunits = self.get_codeunits(repository_folder, False)
|
2508
|
+
project_version = self.get_version_of_project(repository_folder)
|
2509
|
+
|
2510
|
+
now = datetime.now()
|
2511
|
+
if not self.__suport_information_exists(repository_folder, project_version):
|
2512
|
+
support_time = timedelta(days=365*2+30*3+1) # TODO make this configurable
|
2513
|
+
until = now + support_time
|
2514
|
+
until_day = datetime(until.year, until.month, until.day, 0, 0, 0)
|
2515
|
+
self.mark_current_version_as_supported(repository_folder, project_version, now, until_day)
|
2516
|
+
|
2517
|
+
project_resources_folder = os.path.join(repository_folder, "Other", "Scripts")
|
2518
|
+
PrepareBuildCodeunits_script_name = "PrepareBuildCodeunits.py"
|
2519
|
+
prepare_build_codeunits_scripts = os.path.join(project_resources_folder, PrepareBuildCodeunits_script_name)
|
2520
|
+
if os.path.isfile(prepare_build_codeunits_scripts):
|
2521
|
+
GeneralUtilities.write_message_to_stdout(f'Run "{PrepareBuildCodeunits_script_name}"')
|
2522
|
+
result = self.__sc.run_program("python", f"{PrepareBuildCodeunits_script_name}", project_resources_folder, throw_exception_if_exitcode_is_not_zero=False, print_live_output=True)
|
2523
|
+
if result[0] != 0:
|
2524
|
+
raise ValueError(f"PrepareBuildCodeunits.py resulted in exitcode {result[0]}.")
|
2525
|
+
|
2526
|
+
self.__do_repository_checks(repository_folder, project_version)
|
2495
2527
|
self.build_specific_codeunits(repository_folder, codeunits, verbosity, target_environmenttype, additional_arguments_file, is_pre_merge, export_target_directory, False, commandline_arguments, do_git_clean_when_no_changes, note)
|
2496
2528
|
|
2497
2529
|
@GeneralUtilities.check_arguments
|
2498
|
-
def build_specific_codeunits(self, repository_folder: str, codeunits: list[str], verbosity: int = 1, target_environmenttype: str = "QualityCheck", additional_arguments_file: str = None, is_pre_merge: bool = False, export_target_directory: str = None, assume_dependent_codeunits_are_already_built: bool = True, commandline_arguments: list[str] = [], do_git_clean_when_no_changes: bool = False, note: str = None) -> None:
|
2530
|
+
def build_specific_codeunits(self, repository_folder: str, codeunits: list[str], verbosity: int = 1, target_environmenttype: str = "QualityCheck", additional_arguments_file: str = None, is_pre_merge: bool = False, export_target_directory: str = None, assume_dependent_codeunits_are_already_built: bool = True, commandline_arguments: list[str] = [], do_git_clean_when_no_changes: bool = False, note: str = None, check_for_new_files: bool = True) -> None:
|
2531
|
+
codeunits_list = {", ".join(codeunits)}
|
2499
2532
|
if verbosity > 2:
|
2500
|
-
GeneralUtilities.write_message_to_stdout(f"Start building codeunits
|
2533
|
+
GeneralUtilities.write_message_to_stdout(f"Start building codeunits ({codeunits_list}) in repository '{repository_folder}'...")
|
2501
2534
|
self.__sc.assert_is_git_repository(repository_folder)
|
2502
2535
|
self.__check_target_environmenttype(target_environmenttype)
|
2503
2536
|
repository_folder = GeneralUtilities.resolve_relative_path_from_current_working_directory(repository_folder)
|
2504
|
-
repository_name = os.path.
|
2537
|
+
repository_name = os.path.basename(repository_folder)
|
2505
2538
|
contains_uncommitted_changes_at_begin = self.__sc.git_repository_has_uncommitted_changes(repository_folder)
|
2506
2539
|
if contains_uncommitted_changes_at_begin:
|
2507
2540
|
if is_pre_merge:
|
@@ -2509,56 +2542,38 @@ class TasksForCommonProjectStructure:
|
|
2509
2542
|
else:
|
2510
2543
|
if do_git_clean_when_no_changes:
|
2511
2544
|
self.__sc.run_program("git", "clean -dfx", repository_folder)
|
2512
|
-
|
2545
|
+
codeunit_subfolders = [os.path.join(repository_folder, codeunit) for codeunit in codeunits]
|
2513
2546
|
codeunits_with_dependent_codeunits: dict[str, set[str]] = dict[str, set[str]]()
|
2514
2547
|
|
2515
|
-
|
2516
|
-
PrepareBuildCodeunits_script_name = "PrepareBuildCodeunits.py"
|
2517
|
-
prepare_build_codeunits_scripts = os.path.join(project_resources_folder, PrepareBuildCodeunits_script_name)
|
2518
|
-
if os.path.isfile(prepare_build_codeunits_scripts):
|
2519
|
-
GeneralUtilities.write_message_to_stdout(f'Run "{PrepareBuildCodeunits_script_name}"')
|
2520
|
-
result = self.__sc.run_program("python", f"{PrepareBuildCodeunits_script_name}", project_resources_folder, throw_exception_if_exitcode_is_not_zero=False, print_live_output=True)
|
2521
|
-
if result[0] != 0:
|
2522
|
-
raise ValueError(f"PrepareBuildCodeunits.py resulted in exitcode {result[0]}.")
|
2523
|
-
|
2524
|
-
for subfolder in subfolders:
|
2548
|
+
for subfolder in codeunit_subfolders:
|
2525
2549
|
codeunit_name: str = os.path.basename(subfolder)
|
2526
2550
|
codeunit_file = os.path.join(subfolder, f"{codeunit_name}.codeunit.xml")
|
2527
|
-
|
2528
|
-
|
2529
|
-
|
2530
|
-
|
2531
|
-
sorted_codeunits = self.get_sorted_codeunits(codeunits_with_dependent_codeunits)
|
2551
|
+
GeneralUtilities.assert_condition(os.path.exists(codeunit_file), f"Codeunit-file '{codeunit_file}' does nost exist.")
|
2552
|
+
codeunits_with_dependent_codeunits[codeunit_name] = self.get_dependent_code_units(codeunit_file)
|
2553
|
+
sorted_codeunits = self.get_sorted_codeunits(repository_folder)
|
2554
|
+
sorted_codeunits = [codeunit for codeunit in sorted_codeunits if codeunit in codeunits]
|
2532
2555
|
project_version = self.get_version_of_project(repository_folder)
|
2533
2556
|
|
2534
|
-
now = datetime.now()
|
2535
2557
|
message = f"Build codeunits in product {repository_name}..."
|
2536
2558
|
if note is not None:
|
2537
2559
|
message = f"{message} ({note})"
|
2538
2560
|
GeneralUtilities.write_message_to_stdout(message)
|
2539
2561
|
|
2540
|
-
if not self.__suport_information_exists(repository_folder, project_version):
|
2541
|
-
support_time = timedelta(days=365*2+30*3+1) # TODO make this configurable
|
2542
|
-
until = now + support_time
|
2543
|
-
until_day = datetime(until.year, until.month, until.day, 0, 0, 0)
|
2544
|
-
self.mark_current_version_as_supported(repository_folder, project_version, now, until_day)
|
2545
|
-
|
2546
2562
|
if len(sorted_codeunits) == 0:
|
2547
2563
|
raise ValueError(f'No codeunit found in subfolders of "{repository_folder}".')
|
2548
2564
|
else:
|
2549
2565
|
if verbosity > 1:
|
2550
|
-
GeneralUtilities.write_message_to_stdout(f"Attempt to build codeunits for version {project_version} in the following order:")
|
2566
|
+
GeneralUtilities.write_message_to_stdout(f"Attempt to build codeunits ({codeunits_list}) for project version {project_version} in the following order:")
|
2551
2567
|
i = 0
|
2552
2568
|
for codeunit in sorted_codeunits:
|
2553
2569
|
i = i+1
|
2554
2570
|
GeneralUtilities.write_message_to_stdout(f"{i}.: {codeunit}")
|
2555
|
-
self.__do_repository_checks(repository_folder, project_version)
|
2556
2571
|
for codeunit in sorted_codeunits:
|
2557
2572
|
GeneralUtilities.write_message_to_stdout(GeneralUtilities.get_line())
|
2558
2573
|
self.__build_codeunit(os.path.join(repository_folder, codeunit), verbosity, target_environmenttype, additional_arguments_file, is_pre_merge, assume_dependent_codeunits_are_already_built, commandline_arguments)
|
2559
2574
|
GeneralUtilities.write_message_to_stdout(GeneralUtilities.get_line())
|
2560
2575
|
contains_uncommitted_changes_at_end = self.__sc.git_repository_has_uncommitted_changes(repository_folder)
|
2561
|
-
if contains_uncommitted_changes_at_end and not is_pre_merge:
|
2576
|
+
if contains_uncommitted_changes_at_end and (not is_pre_merge) and check_for_new_files:
|
2562
2577
|
if contains_uncommitted_changes_at_begin:
|
2563
2578
|
GeneralUtilities.write_message_to_stdout(f'There are still uncommitted changes in the repository "{repository_folder}".')
|
2564
2579
|
else:
|
@@ -2916,10 +2931,9 @@ class TasksForCommonProjectStructure:
|
|
2916
2931
|
GeneralUtilities.write_message_to_stdout(f"Warning: Codeunit {codeunit_name} is disabled.")
|
2917
2932
|
return
|
2918
2933
|
|
2919
|
-
artifacts_folder = os.path.join(codeunit_folder, "Other", "Artifacts")
|
2920
2934
|
GeneralUtilities.write_message_to_stdout(f"Start building codeunit {codeunit_name}.")
|
2921
2935
|
GeneralUtilities.write_message_to_stdout(f"Build-environmenttype: {target_environmenttype}")
|
2922
|
-
|
2936
|
+
self.__sc.run_program("git", "clean -dfx", codeunit_folder)
|
2923
2937
|
|
2924
2938
|
verbosity_for_executed_programs = self.get_verbosity_from_commandline_arguments(commandline_arguments, verbosity)
|
2925
2939
|
|
@@ -2995,6 +3009,7 @@ class TasksForCommonProjectStructure:
|
|
2995
3009
|
GeneralUtilities.write_message_to_stdout('Run "OnBuildingFinished.py"...')
|
2996
3010
|
self.__sc.run_program("python", f"OnBuildingFinished.py{additional_arguments_f}{general_argument}", other_folder, verbosity=verbosity_for_executed_programs, throw_exception_if_exitcode_is_not_zero=True, print_live_output=2 < verbosity)
|
2997
3011
|
|
3012
|
+
artifacts_folder = os.path.join(codeunit_folder, "Other", "Artifacts")
|
2998
3013
|
artifactsinformation_file = os.path.join(artifacts_folder, f"{codeunit_name}.artifactsinformation.xml")
|
2999
3014
|
codeunit_version = self.get_version_of_codeunit(codeunit_file)
|
3000
3015
|
GeneralUtilities.ensure_file_exists(artifactsinformation_file)
|
@@ -3024,9 +3039,10 @@ class TasksForCommonProjectStructure:
|
|
3024
3039
|
# Prepare
|
3025
3040
|
GeneralUtilities.write_message_to_stdout("Update dependencies...")
|
3026
3041
|
self.__sc.assert_is_git_repository(repository_folder)
|
3027
|
-
codeunits = self.
|
3042
|
+
codeunits = self.get_sorted_codeunits(repository_folder)
|
3028
3043
|
update_dependencies_script_filename = "UpdateDependencies.py"
|
3029
|
-
|
3044
|
+
target_environmenttype = "QualityCheck"
|
3045
|
+
self.build_codeunits(repository_folder, target_environmenttype=target_environmenttype, do_git_clean_when_no_changes=True, note="Prepare dependency-update") # Required because update dependencies is not always possible for not-buildet codeunits (depends on the programming language or package manager)
|
3030
3046
|
|
3031
3047
|
# update dependencies of resources
|
3032
3048
|
global_scripts_folder = os.path.join(repository_folder, "Other", "Scripts")
|
@@ -3042,6 +3058,7 @@ class TasksForCommonProjectStructure:
|
|
3042
3058
|
update_dependencies_script_folder = os.path.join(codeunit_folder, "Other")
|
3043
3059
|
GeneralUtilities.ensure_directory_exists(os.path.join(update_dependencies_script_folder, "Resources", "CodeAnalysisResult"))
|
3044
3060
|
self.__sc.run_program("python", update_dependencies_script_filename, update_dependencies_script_folder, verbosity, print_live_output=True)
|
3061
|
+
self.build_specific_codeunits(repository_folder, [codeunit], 0, target_environmenttype, None, False, None, True, [], False, "Build due to updated dependencies", False)
|
3045
3062
|
if self.__sc.git_repository_has_uncommitted_changes(repository_folder):
|
3046
3063
|
version_of_project = self.get_version_of_project(repository_folder)
|
3047
3064
|
changelog_file = os.path.join(repository_folder, "Other", "Resources", "Changelog", f"v{version_of_project}.md")
|
@@ -6,12 +6,12 @@ ScriptCollection/ProgramRunnerEpew.py,sha256=4pjEd0r9Fcz3TTDv0MdTSd5KkigYXcWUVI1
|
|
6
6
|
ScriptCollection/ProgramRunnerPopen.py,sha256=BPY7-ZMIlqT7JOKz8qlB5c0laF2Js-ijzqk09GxZC48,3821
|
7
7
|
ScriptCollection/RPStream.py,sha256=NRRHL3YSP3D9MuAV2jB_--0KUKCsvJGxeKnxgrRZ9kY,1545
|
8
8
|
ScriptCollection/SCLog.py,sha256=l4aekBiGoNkKGtvO_Er3NY_K7ts4ZWtIGlhq07I-4LY,30
|
9
|
-
ScriptCollection/ScriptCollectionCore.py,sha256=
|
10
|
-
ScriptCollection/TasksForCommonProjectStructure.py,sha256=
|
9
|
+
ScriptCollection/ScriptCollectionCore.py,sha256=BNaVHYzgDngTNPvdu1RmI5CcoBYXa5eER6MbOG9ECZA,123973
|
10
|
+
ScriptCollection/TasksForCommonProjectStructure.py,sha256=WLpk9nRa6p_fFCHTJ3YO8mOxyrs1D8V2CuXem38qi84,226908
|
11
11
|
ScriptCollection/UpdateCertificates.py,sha256=Eynbgu7k9jLxApP2D_8Il77B6BFjJap6K7oTeEAZYbk,7790
|
12
12
|
ScriptCollection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
|
-
scriptcollection-3.5.
|
14
|
-
scriptcollection-3.5.
|
15
|
-
scriptcollection-3.5.
|
16
|
-
scriptcollection-3.5.
|
17
|
-
scriptcollection-3.5.
|
13
|
+
scriptcollection-3.5.95.dist-info/METADATA,sha256=vVDkmhbE3EFINXPutGygcmV-cNd_sEKd0AFPwvsSF8g,7664
|
14
|
+
scriptcollection-3.5.95.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
|
15
|
+
scriptcollection-3.5.95.dist-info/entry_points.txt,sha256=fYCGWGNGijBQHhFe6UAO-BEpfEOxLyNJemukt5ElSzs,3644
|
16
|
+
scriptcollection-3.5.95.dist-info/top_level.txt,sha256=hY2hOVH0V0Ce51WB76zKkIWTUNwMUdHo4XDkR2vYVwg,17
|
17
|
+
scriptcollection-3.5.95.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|