ScriptCollection 3.5.85__py3-none-any.whl → 3.5.86__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/Executables.py +19 -18
- ScriptCollection/ScriptCollectionCore.py +6 -4
- ScriptCollection/TasksForCommonProjectStructure.py +24 -14
- {scriptcollection-3.5.85.dist-info → scriptcollection-3.5.86.dist-info}/METADATA +1 -1
- {scriptcollection-3.5.85.dist-info → scriptcollection-3.5.86.dist-info}/RECORD +8 -8
- {scriptcollection-3.5.85.dist-info → scriptcollection-3.5.86.dist-info}/WHEEL +0 -0
- {scriptcollection-3.5.85.dist-info → scriptcollection-3.5.86.dist-info}/entry_points.txt +0 -0
- {scriptcollection-3.5.85.dist-info → scriptcollection-3.5.86.dist-info}/top_level.txt +0 -0
ScriptCollection/Executables.py
CHANGED
@@ -379,6 +379,7 @@ def CreateChangelogEntry() -> int:
|
|
379
379
|
parser.add_argument('-f', '--repositoryfolder', required=False, default=".")
|
380
380
|
parser.add_argument('-m', '--message', required=False, default="Updates.")
|
381
381
|
parser.add_argument('-c', '--commit', action='store_true', required=False, default=False)
|
382
|
+
parser.add_argument('-f', '--force', action='store_true', required=False, default=False)
|
382
383
|
args = parser.parse_args()
|
383
384
|
|
384
385
|
folder: str = None
|
@@ -386,7 +387,7 @@ def CreateChangelogEntry() -> int:
|
|
386
387
|
folder = args.repositoryfolder
|
387
388
|
else:
|
388
389
|
folder = GeneralUtilities.resolve_relative_path(args.repositoryfolder, os.getcwd())
|
389
|
-
TasksForCommonProjectStructure().create_changelog_entry(folder, args.message, args.commit)
|
390
|
+
TasksForCommonProjectStructure().create_changelog_entry(folder, args.message, args.commit, args.force)
|
390
391
|
return 0
|
391
392
|
|
392
393
|
|
@@ -538,18 +539,18 @@ def Copy() -> int:
|
|
538
539
|
if os.path.isfile(args.target) or os.path.isdir(args.target):
|
539
540
|
raise ValueError(f"Can not copy to '{args.target}' because the target already exists.")
|
540
541
|
|
541
|
-
source=args.source
|
542
|
+
source = args.source
|
542
543
|
if not os.path.isabs(source):
|
543
|
-
source=GeneralUtilities.resolve_relative_path(source,os.getcwd())
|
544
|
-
target=args.target
|
544
|
+
source = GeneralUtilities.resolve_relative_path(source, os.getcwd())
|
545
|
+
target = args.target
|
545
546
|
if not os.path.isabs(target):
|
546
|
-
target=GeneralUtilities.resolve_relative_path(target,os.getcwd())
|
547
|
+
target = GeneralUtilities.resolve_relative_path(target, os.getcwd())
|
547
548
|
|
548
549
|
if os.path.isfile(source):
|
549
550
|
shutil.copyfile(source, target)
|
550
551
|
elif os.path.isdir(source):
|
551
552
|
GeneralUtilities.ensure_directory_exists(target)
|
552
|
-
GeneralUtilities.copy_content_of_folder(source,target)
|
553
|
+
GeneralUtilities.copy_content_of_folder(source, target)
|
553
554
|
else:
|
554
555
|
raise ValueError(f"'{source}' can not be copied because the path does not exist.")
|
555
556
|
return 0
|
@@ -575,26 +576,26 @@ def PrintCurrecntWorkingDirectory() -> int:
|
|
575
576
|
def ListFolderContent() -> int:
|
576
577
|
parser = argparse.ArgumentParser(description="This function lists folder-content.")
|
577
578
|
parser.add_argument('-p', '--path', required=True)
|
578
|
-
parser.add_argument('-f', '--excludefiles', action='store_true', required=False,default=False)
|
579
|
-
parser.add_argument('-d', '--excludedirectories', action='store_true', required=False,default=False)
|
580
|
-
parser.add_argument('-n', '--printonlynamewithoutpath', action='store_true', required=False,default=False)
|
579
|
+
parser.add_argument('-f', '--excludefiles', action='store_true', required=False, default=False)
|
580
|
+
parser.add_argument('-d', '--excludedirectories', action='store_true', required=False, default=False)
|
581
|
+
parser.add_argument('-n', '--printonlynamewithoutpath', action='store_true', required=False, default=False)
|
581
582
|
# TODO add option to also list transitively list subfolder
|
582
583
|
# TODO add option to show only content which matches a filter by extension or regex or glob-pattern
|
583
|
-
args=parser.parse_args()
|
584
|
-
folder=args.path
|
584
|
+
args = parser.parse_args()
|
585
|
+
folder = args.path
|
585
586
|
if not os.path.isabs(folder):
|
586
|
-
folder=GeneralUtilities.resolve_relative_path(folder,os.getcwd())
|
587
|
-
content=[]
|
587
|
+
folder = GeneralUtilities.resolve_relative_path(folder, os.getcwd())
|
588
|
+
content = []
|
588
589
|
if not args.excludefiles:
|
589
|
-
content=content+GeneralUtilities.get_direct_files_of_folder(folder)
|
590
|
+
content = content+GeneralUtilities.get_direct_files_of_folder(folder)
|
590
591
|
if not args.excludedirectories:
|
591
|
-
content=content+GeneralUtilities.get_direct_folders_of_folder(folder)
|
592
|
+
content = content+GeneralUtilities.get_direct_folders_of_folder(folder)
|
592
593
|
for contentitem in content:
|
593
|
-
content_to_print:str=None
|
594
|
+
content_to_print: str = None
|
594
595
|
if args.printonlynamewithoutpath:
|
595
|
-
content_to_print=os.path.basename(contentitem)
|
596
|
+
content_to_print = os.path.basename(contentitem)
|
596
597
|
else:
|
597
|
-
content_to_print= contentitem
|
598
|
+
content_to_print = contentitem
|
598
599
|
GeneralUtilities.write_message_to_stdout(content_to_print)
|
599
600
|
return 0
|
600
601
|
|
@@ -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.
|
35
|
+
version = "3.5.86"
|
36
36
|
__version__ = version
|
37
37
|
|
38
38
|
|
@@ -456,8 +456,10 @@ 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, assert_no_uncommitted_changes: bool = True) -> None:
|
460
460
|
self.assert_is_git_repository(directory)
|
461
|
+
if assert_no_uncommitted_changes:
|
462
|
+
GeneralUtilities.assert_condition(not self.git_repository_has_uncommitted_changes(directory), f"Repository '{directory}' has uncommitted changes.")
|
461
463
|
self.run_program_argsasarray("git", ["checkout", branch], directory, throw_exception_if_exitcode_is_not_zero=True, verbosity=0)
|
462
464
|
self.run_program_argsasarray("git", ["submodule", "update", "--recursive"], directory, throw_exception_if_exitcode_is_not_zero=True, verbosity=0)
|
463
465
|
if undo_all_changes_after_checkout:
|
@@ -469,9 +471,9 @@ class ScriptCollectionCore:
|
|
469
471
|
self.run_program_argsasarray("git", ["merge", "--abort"], directory, throw_exception_if_exitcode_is_not_zero=True, verbosity=0)
|
470
472
|
|
471
473
|
@GeneralUtilities.check_arguments
|
472
|
-
def git_merge(self, directory: str, sourcebranch: str, targetbranch: str, fastforward: bool = True, commit: bool = True, commit_message: str = None) -> str:
|
474
|
+
def git_merge(self, directory: str, sourcebranch: str, targetbranch: str, fastforward: bool = True, commit: bool = True, commit_message: str = None, undo_all_changes_after_checkout: bool = True, assert_no_uncommitted_changes: bool = True) -> str:
|
473
475
|
self.assert_is_git_repository(directory)
|
474
|
-
self.git_checkout(directory, targetbranch)
|
476
|
+
self.git_checkout(directory, targetbranch, undo_all_changes_after_checkout, assert_no_uncommitted_changes)
|
475
477
|
args = ["merge"]
|
476
478
|
if not commit:
|
477
479
|
args.append("--no-commit")
|
@@ -1018,7 +1018,7 @@ class TasksForCommonProjectStructure:
|
|
1018
1018
|
target_folder_base = os.path.join(information.artifacts_folder, information.projectname, project_version)
|
1019
1019
|
GeneralUtilities.ensure_directory_exists(target_folder_base)
|
1020
1020
|
|
1021
|
-
self.build_codeunits(information.repository, information.verbosity, information.target_environmenttype_for_productive, information.additional_arguments_file, False, information.export_target, [], True, "Generate artifacts")# Generate artifacts after merge (because now are constants like commit-id of the new version available)
|
1021
|
+
self.build_codeunits(information.repository, information.verbosity, information.target_environmenttype_for_productive, information.additional_arguments_file, False, information.export_target, [], True, "Generate artifacts") # Generate artifacts after merge (because now are constants like commit-id of the new version available)
|
1022
1022
|
|
1023
1023
|
reference_folder = os.path.join(information.reference_repository, "ReferenceContent")
|
1024
1024
|
|
@@ -1252,7 +1252,7 @@ class TasksForCommonProjectStructure:
|
|
1252
1252
|
|
1253
1253
|
self.__sc.git_checkout(repository_folder, source_branch)
|
1254
1254
|
self.build_codeunits(repository_folder, verbosity, TasksForCommonProjectStructure.get_qualitycheck_environment_name(), additional_arguments_file, True, None, [], True, "Check if product is buildable")
|
1255
|
-
self.__sc.git_merge(repository_folder, source_branch, target_branch, False, False, None)
|
1255
|
+
self.__sc.git_merge(repository_folder, source_branch, target_branch, False, False, None, False, False)
|
1256
1256
|
self.__sc.git_commit(repository_folder, f'Merge branch {source_branch} into {target_branch}', stage_all_changes=True, no_changes_behavior=1)
|
1257
1257
|
self.__sc.git_checkout(repository_folder, target_branch)
|
1258
1258
|
if fast_forward_source_branch:
|
@@ -1300,8 +1300,8 @@ class TasksForCommonProjectStructure:
|
|
1300
1300
|
# hint: arguments can be overwritten by commandline_arguments
|
1301
1301
|
folder_of_this_file = os.path.dirname(create_release_file)
|
1302
1302
|
verbosity = TasksForCommonProjectStructure.get_verbosity_from_commandline_arguments(commandline_arguments, verbosity)
|
1303
|
-
result=self.__sc.run_program("python", f"CreateRelease.py --overwrite_verbosity {str(verbosity)}", folder_of_this_file, verbosity=verbosity, log_file=logfile, addLogOverhead=addLogOverhead,print_live_output=True,throw_exception_if_exitcode_is_not_zero=False)
|
1304
|
-
if result[0]!=0:
|
1303
|
+
result = self.__sc.run_program("python", f"CreateRelease.py --overwrite_verbosity {str(verbosity)}", folder_of_this_file, verbosity=verbosity, log_file=logfile, addLogOverhead=addLogOverhead, print_live_output=True, throw_exception_if_exitcode_is_not_zero=False)
|
1304
|
+
if result[0] != 0:
|
1305
1305
|
raise ValueError(f"CreateRelease.py resulted in exitcode {result[0]}.")
|
1306
1306
|
|
1307
1307
|
@GeneralUtilities.check_arguments
|
@@ -1315,7 +1315,7 @@ class TasksForCommonProjectStructure:
|
|
1315
1315
|
self.__sc.run_program("git", "clean -dfx", information.repository, verbosity=information.verbosity, throw_exception_if_exitcode_is_not_zero=True)
|
1316
1316
|
project_version = self.__sc.get_semver_version_from_gitversion(information.repository)
|
1317
1317
|
|
1318
|
-
self.build_codeunits(information.repository, information.verbosity, information.target_environmenttype_for_qualitycheck, information.additional_arguments_file, False, information.export_target, [], True, "Productive build")#verify hat codeunits are buildable with productive-config before merge
|
1318
|
+
self.build_codeunits(information.repository, information.verbosity, information.target_environmenttype_for_qualitycheck, information.additional_arguments_file, False, information.export_target, [], True, "Productive build") # verify hat codeunits are buildable with productive-config before merge
|
1319
1319
|
|
1320
1320
|
self.assert_no_uncommitted_changes(information.repository)
|
1321
1321
|
|
@@ -2445,11 +2445,11 @@ class TasksForCommonProjectStructure:
|
|
2445
2445
|
self.__sc.assert_is_git_repository(repository_folder)
|
2446
2446
|
repository_folder = GeneralUtilities.resolve_relative_path_from_current_working_directory(repository_folder)
|
2447
2447
|
codeunits = self.get_codeunits(repository_folder, False)
|
2448
|
-
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)
|
2448
|
+
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)
|
2449
2449
|
|
2450
2450
|
@GeneralUtilities.check_arguments
|
2451
2451
|
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:
|
2452
|
-
if verbosity>2:
|
2452
|
+
if verbosity > 2:
|
2453
2453
|
GeneralUtilities.write_message_to_stdout(f"Start building codeunits for repository '{repository_folder}'...")
|
2454
2454
|
self.__sc.assert_is_git_repository(repository_folder)
|
2455
2455
|
self.__check_target_environmenttype(target_environmenttype)
|
@@ -2470,8 +2470,8 @@ class TasksForCommonProjectStructure:
|
|
2470
2470
|
prepare_build_codeunits_scripts = os.path.join(project_resources_folder, PrepareBuildCodeunits_script_name)
|
2471
2471
|
if os.path.isfile(prepare_build_codeunits_scripts):
|
2472
2472
|
GeneralUtilities.write_message_to_stdout(f'Run "{PrepareBuildCodeunits_script_name}"')
|
2473
|
-
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)
|
2474
|
-
if result[0]!=0:
|
2473
|
+
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)
|
2474
|
+
if result[0] != 0:
|
2475
2475
|
raise ValueError(f"PrepareBuildCodeunits.py resulted in exitcode {result[0]}.")
|
2476
2476
|
|
2477
2477
|
for subfolder in subfolders:
|
@@ -2903,7 +2903,7 @@ class TasksForCommonProjectStructure:
|
|
2903
2903
|
# update dependencies of resources
|
2904
2904
|
global_scripts_folder = os.path.join(repository_folder, "Other", "Scripts")
|
2905
2905
|
if os.path.isfile(os.path.join(global_scripts_folder, update_dependencies_script_filename)):
|
2906
|
-
self.__sc.run_program("python", update_dependencies_script_filename, global_scripts_folder,print_live_output=True)
|
2906
|
+
self.__sc.run_program("python", update_dependencies_script_filename, global_scripts_folder, print_live_output=True)
|
2907
2907
|
|
2908
2908
|
# update dependencies of codeunits
|
2909
2909
|
for codeunit in codeunits:
|
@@ -2913,7 +2913,7 @@ class TasksForCommonProjectStructure:
|
|
2913
2913
|
codeunit_folder = os.path.join(repository_folder, codeunit)
|
2914
2914
|
update_dependencies_script_folder = os.path.join(codeunit_folder, "Other")
|
2915
2915
|
GeneralUtilities.ensure_directory_exists(os.path.join(update_dependencies_script_folder, "Resources", "CodeAnalysisResult"))
|
2916
|
-
self.__sc.run_program("python", update_dependencies_script_filename, update_dependencies_script_folder, verbosity,print_live_output=True)
|
2916
|
+
self.__sc.run_program("python", update_dependencies_script_filename, update_dependencies_script_folder, verbosity, print_live_output=True)
|
2917
2917
|
if self.__sc.git_repository_has_uncommitted_changes(repository_folder):
|
2918
2918
|
version_of_project = self.get_version_of_project(repository_folder)
|
2919
2919
|
changelog_file = os.path.join(repository_folder, "Other", "Resources", "Changelog", f"v{version_of_project}.md")
|
@@ -2961,9 +2961,13 @@ class TasksForCommonProjectStructure:
|
|
2961
2961
|
# prepare
|
2962
2962
|
self.assert_no_uncommitted_changes(repository_folder)
|
2963
2963
|
self.assert_no_uncommitted_changes(reference_folder)
|
2964
|
-
self.
|
2964
|
+
self.assert_no_uncommitted_changes(build_repository_folder)
|
2965
|
+
self.__sc.git_checkout(repository_folder, merge_source_branch, True)
|
2966
|
+
self.__sc.git_checkout(reference_folder, "main", True)
|
2967
|
+
self.__sc.git_checkout(build_repository_folder, "main", True)
|
2965
2968
|
self.assert_no_uncommitted_changes(repository_folder)
|
2966
2969
|
self.assert_no_uncommitted_changes(reference_folder)
|
2970
|
+
self.__sc.git_commit(build_repository_folder, "Updated submodules")
|
2967
2971
|
|
2968
2972
|
if "--dependencyupdate" in generic_prepare_new_release_arguments.commandline_arguments:
|
2969
2973
|
self.generic_update_dependencies(repository_folder)
|
@@ -2985,7 +2989,6 @@ class TasksForCommonProjectStructure:
|
|
2985
2989
|
self.__sc.git_commit(build_repository_folder, "Updated submodule due to merge to main-branch.")
|
2986
2990
|
GeneralUtilities.write_message_to_stdout(f"Finished prepare release for {generic_prepare_new_release_arguments.product_name}.")
|
2987
2991
|
|
2988
|
-
|
2989
2992
|
class GenericCreateReleaseArguments():
|
2990
2993
|
current_file: str
|
2991
2994
|
product_name: str
|
@@ -3025,6 +3028,7 @@ class TasksForCommonProjectStructure:
|
|
3025
3028
|
self.__sc.git_checkout(repository_folder, merge_source_branch)
|
3026
3029
|
reference_repo: str = os.path.join(build_repository_folder, "Submodules", f"{generic_create_release_arguments.product_name}Reference")
|
3027
3030
|
self.__sc.git_commit(reference_repo, "Updated reference")
|
3031
|
+
self.__sc.git_push_with_retry(reference_repo, generic_create_release_arguments.common_remote_name, "main", "main")
|
3028
3032
|
self.__sc.git_commit(build_repository_folder, "Updated submodule")
|
3029
3033
|
|
3030
3034
|
# create release
|
@@ -3051,8 +3055,11 @@ class TasksForCommonProjectStructure:
|
|
3051
3055
|
self.main_branch_name = "main"
|
3052
3056
|
|
3053
3057
|
@GeneralUtilities.check_arguments
|
3054
|
-
def create_changelog_entry(self, repositoryfolder: str, message: str, commit: bool):
|
3058
|
+
def create_changelog_entry(self, repositoryfolder: str, message: str, commit: bool, force: bool):
|
3055
3059
|
self.__sc.assert_is_git_repository(repositoryfolder)
|
3060
|
+
random_file = os.path.join(repositoryfolder, str(uuid.uuid4()))
|
3061
|
+
if force and not self.__sc.git_repository_has_uncommitted_changes(repositoryfolder):
|
3062
|
+
GeneralUtilities.ensure_file_exists(random_file)
|
3056
3063
|
current_version = self.get_version_of_project(repositoryfolder)
|
3057
3064
|
changelog_file = os.path.join(repositoryfolder, "Other", "Resources", "Changelog", f"v{current_version}.md")
|
3058
3065
|
if os.path.isdir(changelog_file):
|
@@ -3065,6 +3072,9 @@ class TasksForCommonProjectStructure:
|
|
3065
3072
|
|
3066
3073
|
- {message}
|
3067
3074
|
""")
|
3075
|
+
GeneralUtilities.ensure_file_does_not_exist(random_file)
|
3076
|
+
if commit:
|
3077
|
+
self.__sc.git_commit(repositoryfolder, f"Added changelog-file for v{current_version}.")
|
3068
3078
|
|
3069
3079
|
@GeneralUtilities.check_arguments
|
3070
3080
|
def update_http_documentation(self, update_http_documentation_arguments: UpdateHTTPDocumentationArguments):
|
@@ -1,16 +1,16 @@
|
|
1
|
-
ScriptCollection/Executables.py,sha256=
|
1
|
+
ScriptCollection/Executables.py,sha256=XwnhziKm3HdsJNkvj2TCTf-KS2e4RKibpNcNTZOHFJ4,30175
|
2
2
|
ScriptCollection/GeneralUtilities.py,sha256=VVbbGFD4qLwWV211-E-n3faP2fZGc8mOBlKLd0oKHl4,40765
|
3
3
|
ScriptCollection/ProcessesRunner.py,sha256=3mu4ZxzZleQo0Op6o9EYTCFiJfb6kx5ov2YfZfT89mU,1395
|
4
4
|
ScriptCollection/ProgramRunnerBase.py,sha256=2kMIAqdc65UjBAddOZkzy_aFx9h5roZ5a4bQNM6RV6Y,2480
|
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=
|
9
|
-
ScriptCollection/TasksForCommonProjectStructure.py,sha256=
|
8
|
+
ScriptCollection/ScriptCollectionCore.py,sha256=QsyoePkvnrP1DpEy0V5wiOHewiim649hlPR0uQN5fJw,123286
|
9
|
+
ScriptCollection/TasksForCommonProjectStructure.py,sha256=0G2onG2crhkn3ivRqfVtHcg9WgwRXT488X0zEy8CSe4,216807
|
10
10
|
ScriptCollection/UpdateCertificates.py,sha256=Eynbgu7k9jLxApP2D_8Il77B6BFjJap6K7oTeEAZYbk,7790
|
11
11
|
ScriptCollection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
|
-
scriptcollection-3.5.
|
13
|
-
scriptcollection-3.5.
|
14
|
-
scriptcollection-3.5.
|
15
|
-
scriptcollection-3.5.
|
16
|
-
scriptcollection-3.5.
|
12
|
+
scriptcollection-3.5.86.dist-info/METADATA,sha256=JSg4iWzozzhdD_I0svPAbfBywMaZYuum13ycscoCcdk,7664
|
13
|
+
scriptcollection-3.5.86.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
14
|
+
scriptcollection-3.5.86.dist-info/entry_points.txt,sha256=1jAL5AuB8mvdw2v-6E7wCZFThurQxchiQynL8DCi-Yg,3545
|
15
|
+
scriptcollection-3.5.86.dist-info/top_level.txt,sha256=hY2hOVH0V0Ce51WB76zKkIWTUNwMUdHo4XDkR2vYVwg,17
|
16
|
+
scriptcollection-3.5.86.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|