ScriptCollection 4.2.41__py3-none-any.whl → 4.2.43__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/GeneralUtilities.py +3 -1
- ScriptCollection/{CultureChooser.py → HTTPMaintenanceOverheadHelper.py} +8 -1
- ScriptCollection/Resources/MaintenanceSite/MaintenanceSite.html +15 -0
- ScriptCollection/ScriptCollectionCore.py +4 -3
- ScriptCollection/TFCPS/NodeJS/TFCPS_CodeUnitSpecific_NodeJS.py +16 -2
- ScriptCollection/TFCPS/TFCPS_CodeUnit_BuildCodeUnits.py +5 -2
- ScriptCollection/TFCPS/TFCPS_Tools_General.py +57 -0
- {scriptcollection-4.2.41.dist-info → scriptcollection-4.2.43.dist-info}/METADATA +2 -2
- {scriptcollection-4.2.41.dist-info → scriptcollection-4.2.43.dist-info}/RECORD +12 -11
- {scriptcollection-4.2.41.dist-info → scriptcollection-4.2.43.dist-info}/WHEEL +0 -0
- {scriptcollection-4.2.41.dist-info → scriptcollection-4.2.43.dist-info}/entry_points.txt +0 -0
- {scriptcollection-4.2.41.dist-info → scriptcollection-4.2.43.dist-info}/top_level.txt +0 -0
|
@@ -154,7 +154,9 @@ class GeneralUtilities:
|
|
|
154
154
|
@staticmethod
|
|
155
155
|
@check_arguments
|
|
156
156
|
def datetime_to_string_with_timezone(value: datetime) -> str:
|
|
157
|
-
|
|
157
|
+
result= value.strftime(GeneralUtilities.__datetime_format_with_offset) # returns "2025-08-21 15:30:00 +02:00" for example
|
|
158
|
+
result=result[:-2] + ":" + result[-2:]
|
|
159
|
+
return result
|
|
158
160
|
|
|
159
161
|
@staticmethod
|
|
160
162
|
@check_arguments
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import re
|
|
2
2
|
from .GeneralUtilities import GeneralUtilities
|
|
3
3
|
|
|
4
|
-
class
|
|
4
|
+
class HTTPMaintenanceOverheadHelper:
|
|
5
|
+
|
|
5
6
|
__culture_regex = re.compile(r"^[a-zA-Z]+(-[a-zA-Z]+)?$")
|
|
6
7
|
|
|
7
8
|
def is_valid_culture(self,culture_string: str) -> bool:
|
|
@@ -27,3 +28,9 @@ class CultureChooser:
|
|
|
27
28
|
content_as_string = content.decode("utf-8")
|
|
28
29
|
result=GeneralUtilities.replace_variable("/*","supportedCultures","*/", ", ".join([f"\"{supported_language}\"" for supported_language in supported_languages]), content_as_string)
|
|
29
30
|
return result
|
|
31
|
+
|
|
32
|
+
def get_maintenance_file(self,site_title:str) -> str:
|
|
33
|
+
content = GeneralUtilities._internal_load_resource("MaintenanceSite/MaintenanceSite.html")
|
|
34
|
+
content_as_string = content.decode("utf-8")
|
|
35
|
+
result=GeneralUtilities.replace_variable("<!--","title","-->", site_title, content_as_string)
|
|
36
|
+
return result
|
|
@@ -35,7 +35,7 @@ from .ProgramRunnerBase import ProgramRunnerBase
|
|
|
35
35
|
from .ProgramRunnerPopen import ProgramRunnerPopen
|
|
36
36
|
from .SCLog import SCLog, LogLevel
|
|
37
37
|
|
|
38
|
-
version = "4.2.
|
|
38
|
+
version = "4.2.43"
|
|
39
39
|
__version__ = version
|
|
40
40
|
|
|
41
41
|
|
|
@@ -2591,7 +2591,7 @@ OCR-content:
|
|
|
2591
2591
|
GeneralUtilities.write_lines_to_file(target_file, new_lines)
|
|
2592
2592
|
|
|
2593
2593
|
@GeneralUtilities.check_arguments
|
|
2594
|
-
def do_and_log_task(self, name_of_task: str, task):
|
|
2594
|
+
def do_and_log_task(self, name_of_task: str, task,do_and_log_task:bool=True):
|
|
2595
2595
|
try:
|
|
2596
2596
|
self.log.log(f"Start action \"{name_of_task}\".", LogLevel.Information)
|
|
2597
2597
|
result = task()
|
|
@@ -2602,7 +2602,8 @@ OCR-content:
|
|
|
2602
2602
|
self.log.log_exception(f"Error while running action \"{name_of_task}\".", e, LogLevel.Error)
|
|
2603
2603
|
return 1
|
|
2604
2604
|
finally:
|
|
2605
|
-
|
|
2605
|
+
if do_and_log_task:
|
|
2606
|
+
self.log.log(f"Finished action \"{name_of_task}\".", LogLevel.Information)
|
|
2606
2607
|
|
|
2607
2608
|
|
|
2608
2609
|
default_excluded_patterns_for_loc: list[str] = ["**.txt", "**.md", "**.svg", "**.vscode", "**/Resources/**", "**/Reference/**", ".gitignore", ".gitattributes", "Other/Metrics/**"]
|
|
@@ -4,7 +4,7 @@ from lxml import etree
|
|
|
4
4
|
from ...GeneralUtilities import GeneralUtilities
|
|
5
5
|
from ...SCLog import LogLevel
|
|
6
6
|
from ..TFCPS_CodeUnitSpecific_Base import TFCPS_CodeUnitSpecific_Base,TFCPS_CodeUnitSpecific_Base_CLI
|
|
7
|
-
from ...
|
|
7
|
+
from ...HTTPMaintenanceOverheadHelper import HTTPMaintenanceOverheadHelper
|
|
8
8
|
|
|
9
9
|
class TFCPS_CodeUnitSpecific_NodeJS_Functions(TFCPS_CodeUnitSpecific_Base):
|
|
10
10
|
|
|
@@ -126,7 +126,7 @@ class TFCPS_CodeUnitSpecific_NodeJS_Functions(TFCPS_CodeUnitSpecific_Base):
|
|
|
126
126
|
def add_culture_chooser(self,site_title:str,supported_cultures:list[str])->None:
|
|
127
127
|
output_folder=self.get_codeunit_folder()+"/Other/Artifacts/BuildResult_WebApplication/browser"
|
|
128
128
|
GeneralUtilities.assert_folder_exists(output_folder)
|
|
129
|
-
cc:
|
|
129
|
+
cc:HTTPMaintenanceOverheadHelper=HTTPMaintenanceOverheadHelper()
|
|
130
130
|
|
|
131
131
|
index_html_file=output_folder+"/index.html"
|
|
132
132
|
GeneralUtilities.ensure_file_exists(index_html_file)
|
|
@@ -138,6 +138,20 @@ class TFCPS_CodeUnitSpecific_NodeJS_Functions(TFCPS_CodeUnitSpecific_Base):
|
|
|
138
138
|
cc_script_content=cc.get_culture_chooser_script(supported_cultures)
|
|
139
139
|
GeneralUtilities.write_text_to_file(cc_script_file, cc_script_content)
|
|
140
140
|
|
|
141
|
+
@GeneralUtilities.check_arguments
|
|
142
|
+
def add_maintenance_site(self,site_title:str)->None:
|
|
143
|
+
output_folder_base=self.get_codeunit_folder()+"/Other/Artifacts/BuildResult_WebApplication"
|
|
144
|
+
GeneralUtilities.assert_folder_exists(output_folder_base)
|
|
145
|
+
output_folder=os.path.join(output_folder_base,"maintenance")
|
|
146
|
+
GeneralUtilities.ensure_directory_exists(output_folder)
|
|
147
|
+
cc:HTTPMaintenanceOverheadHelper=HTTPMaintenanceOverheadHelper()
|
|
148
|
+
|
|
149
|
+
maintenance_file=output_folder+"/MaintenanceSite.html"
|
|
150
|
+
GeneralUtilities.ensure_file_exists(maintenance_file)
|
|
151
|
+
maintenance_content=cc.get_maintenance_file(site_title)
|
|
152
|
+
GeneralUtilities.write_text_to_file(maintenance_file, maintenance_content)
|
|
153
|
+
|
|
154
|
+
|
|
141
155
|
@GeneralUtilities.check_arguments
|
|
142
156
|
def get_available_cultures_for_angular_app(self)->None:
|
|
143
157
|
return self._protected_sc.get_available_cultures_for_angular_app(self.get_codeunit_folder()+"/angular.json")
|
|
@@ -32,7 +32,8 @@ class TFCPS_CodeUnit_BuildCodeUnits:
|
|
|
32
32
|
@GeneralUtilities.check_arguments
|
|
33
33
|
def build_codeunits(self) -> None:
|
|
34
34
|
self.sc.log.log(GeneralUtilities.get_line())
|
|
35
|
-
|
|
35
|
+
start_time:datetime=GeneralUtilities.get_now()
|
|
36
|
+
self.sc.log.log(f"Start building codeunits at {GeneralUtilities.datetime_to_string_with_timezone(start_time)}. (Target environment-type: {self.target_environment_type})")
|
|
36
37
|
|
|
37
38
|
#check if changelog exists
|
|
38
39
|
changelog_file=os.path.join(self.repository,"Other","Resources","Changelog",f"v{self.tfcps_tools_general.get_version_of_project(self.repository)}.md")
|
|
@@ -67,7 +68,9 @@ class TFCPS_CodeUnit_BuildCodeUnits:
|
|
|
67
68
|
if self.is_pre_merge():
|
|
68
69
|
self.__collect_metrics()
|
|
69
70
|
self.__generate_loc_diagram()
|
|
70
|
-
|
|
71
|
+
end_time:datetime=GeneralUtilities.get_now()
|
|
72
|
+
duration=end_time-start_time
|
|
73
|
+
self.sc.log.log(f"Finished building codeunits at {GeneralUtilities.datetime_to_string_with_timezone(start_time)}. (Duration: {GeneralUtilities.timedelta_to_simple_string(duration)})")
|
|
71
74
|
self.sc.log.log(GeneralUtilities.get_line())
|
|
72
75
|
|
|
73
76
|
@GeneralUtilities.check_arguments
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from datetime import datetime,timezone
|
|
2
2
|
from graphlib import TopologicalSorter
|
|
3
|
+
import math
|
|
3
4
|
import os
|
|
4
5
|
from pathlib import Path
|
|
5
6
|
import shutil
|
|
@@ -1401,3 +1402,59 @@ class TFCPS_Tools_General:
|
|
|
1401
1402
|
GeneralUtilities.write_lines_to_file(env_variables_file,lines)
|
|
1402
1403
|
arguments=arguments + " --env-file Parameters.env pull --quiet"
|
|
1403
1404
|
self.__sc.run_program_with_retry("docker",arguments,test_service_folder,print_live_output=self.__sc.log.loglevel==LogLevel.Debug)
|
|
1405
|
+
|
|
1406
|
+
def load_deb_control_file_content(self, file: str, codeunitname: str, codeunitversion: str, installedsize: int, maintainername: str, maintaineremail: str, description: str) -> str:
|
|
1407
|
+
content = GeneralUtilities.read_text_from_file(file)
|
|
1408
|
+
content = GeneralUtilities.replace_variable_in_string(content, "codeunitname", codeunitname)
|
|
1409
|
+
content = GeneralUtilities.replace_variable_in_string(content, "codeunitversion", codeunitversion)
|
|
1410
|
+
content = GeneralUtilities.replace_variable_in_string(content, "installedsize", str(installedsize))
|
|
1411
|
+
content = GeneralUtilities.replace_variable_in_string(content, "maintainername", maintainername)
|
|
1412
|
+
content = GeneralUtilities.replace_variable_in_string(content, "maintaineremail", maintaineremail)
|
|
1413
|
+
content = GeneralUtilities.replace_variable_in_string(content, "description", description)
|
|
1414
|
+
return content
|
|
1415
|
+
|
|
1416
|
+
def calculate_deb_package_size(self, binary_folder: str) -> int:
|
|
1417
|
+
size_in_bytes = 0
|
|
1418
|
+
for file in GeneralUtilities.get_all_files_of_folder(binary_folder):
|
|
1419
|
+
size_in_bytes = size_in_bytes+os.path.getsize(file)
|
|
1420
|
+
result = math.ceil(size_in_bytes/1024)
|
|
1421
|
+
return result
|
|
1422
|
+
|
|
1423
|
+
def create_deb_package_for_artifact(self,codeunit_folder: str, maintainername: str, maintaineremail: str, description: str) -> None:
|
|
1424
|
+
self.assert_is_codeunit_folder(codeunit_folder)
|
|
1425
|
+
codeunit_name = os.path.basename(codeunit_folder)
|
|
1426
|
+
binary_folder = GeneralUtilities.resolve_relative_path("Other/Artifacts/BuildResult_DotNet_linux-x64", codeunit_folder)
|
|
1427
|
+
deb_output_folder = GeneralUtilities.resolve_relative_path("Other/Artifacts/BuildResult_Deb", codeunit_folder)
|
|
1428
|
+
control_file = GeneralUtilities.resolve_relative_path("Other/Build/DebControlFile.txt", codeunit_folder)
|
|
1429
|
+
installedsize = self.calculate_deb_package_size(binary_folder)
|
|
1430
|
+
control_file_content = self.load_deb_control_file_content(control_file, codeunit_name, self.get_version_of_codeunit(os.path.join(codeunit_folder,f"{codeunit_name}.codeunit.xml")), installedsize, maintainername, maintaineremail, description)
|
|
1431
|
+
self.__sc.create_deb_package(codeunit_name, binary_folder, control_file_content, deb_output_folder, 555)
|
|
1432
|
+
|
|
1433
|
+
@GeneralUtilities.check_arguments
|
|
1434
|
+
def create_zip_file_for_artifact(self, codeunit_folder: str, artifact_source_name: str, name_of_new_artifact: str) -> None:
|
|
1435
|
+
self.assert_is_codeunit_folder(codeunit_folder)
|
|
1436
|
+
src_artifact_folder = GeneralUtilities.resolve_relative_path(f"Other/Artifacts/{artifact_source_name}", codeunit_folder)
|
|
1437
|
+
shutil.make_archive(name_of_new_artifact, 'zip', src_artifact_folder)
|
|
1438
|
+
archive_file = os.path.join(os.getcwd(), f"{name_of_new_artifact}.zip")
|
|
1439
|
+
target_folder = GeneralUtilities.resolve_relative_path(f"Other/Artifacts/{name_of_new_artifact}", codeunit_folder)
|
|
1440
|
+
GeneralUtilities.ensure_folder_exists_and_is_empty(target_folder)
|
|
1441
|
+
shutil.move(archive_file, target_folder)
|
|
1442
|
+
|
|
1443
|
+
def generate_winget_zip_manifest(self, codeunit_folder: str, artifact_name_of_zip: str):
|
|
1444
|
+
self.assert_is_codeunit_folder(codeunit_folder)
|
|
1445
|
+
codeunit_name = os.path.basename(codeunit_folder)
|
|
1446
|
+
codeunit_version = self.get_version_of_codeunit(os.path.join(codeunit_folder,f"{codeunit_name}.codeunit.xml"))
|
|
1447
|
+
build_folder = os.path.join(codeunit_folder, "Other", "Build")
|
|
1448
|
+
artifacts_folder = os.path.join(codeunit_folder, "Other", "Artifacts", artifact_name_of_zip)
|
|
1449
|
+
manifest_folder = os.path.join(codeunit_folder, "Other", "Artifacts", "WinGet-Manifest")
|
|
1450
|
+
GeneralUtilities.assert_folder_exists(artifacts_folder)
|
|
1451
|
+
artifacts_file = self.__sc.find_file_by_extension(artifacts_folder, "zip")
|
|
1452
|
+
winget_template_file = os.path.join(build_folder, "WinGet-Template.yaml")
|
|
1453
|
+
winget_manifest_file = os.path.join(manifest_folder, "WinGet-Manifest.yaml")
|
|
1454
|
+
GeneralUtilities.assert_file_exists(winget_template_file)
|
|
1455
|
+
GeneralUtilities.ensure_directory_exists(manifest_folder)
|
|
1456
|
+
GeneralUtilities.ensure_file_exists(winget_manifest_file)
|
|
1457
|
+
manifest_content = GeneralUtilities.read_text_from_file(winget_template_file)
|
|
1458
|
+
manifest_content = GeneralUtilities.replace_variable_in_string(manifest_content, "version", codeunit_version)
|
|
1459
|
+
manifest_content = GeneralUtilities.replace_variable_in_string(manifest_content, "sha256_hashvalue", GeneralUtilities.get_sha256_of_file(artifacts_file))
|
|
1460
|
+
GeneralUtilities.write_text_to_file(winget_manifest_file, manifest_content)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ScriptCollection
|
|
3
|
-
Version: 4.2.
|
|
3
|
+
Version: 4.2.43
|
|
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
|
|
@@ -36,7 +36,7 @@ Requires-Dist: pycdlib>=1.14.0
|
|
|
36
36
|
Requires-Dist: Pygments>=2.19.2
|
|
37
37
|
Requires-Dist: pylint>=4.0.5
|
|
38
38
|
Requires-Dist: pyOpenSSL>=25.3.0
|
|
39
|
-
Requires-Dist: PyPDF>=6.7.
|
|
39
|
+
Requires-Dist: PyPDF>=6.7.3
|
|
40
40
|
Requires-Dist: pytest>=8.4.2
|
|
41
41
|
Requires-Dist: PyYAML>=6.0.3
|
|
42
42
|
Requires-Dist: qrcode>=8.2.0
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
ScriptCollection/AnionBuildPlatform.py,sha256=Sw35p6gKZ4qjvaDWtrnWW3iCHdUpHSUjtq5tc2iL_AI,11522
|
|
2
2
|
ScriptCollection/CertificateUpdater.py,sha256=aCBF-bym5renP5joL32ev7WZW8HHh6hNm_mz6_hQKLc,9617
|
|
3
|
-
ScriptCollection/CultureChooser.py,sha256=TX5DdFzu5645ir9SI80rkRHDtf3cQ9zeZrpYj3HJLZs,1653
|
|
4
3
|
ScriptCollection/Executables.py,sha256=zP8EUkcl5q31AwHdYrADQRru2Wxwv2m67O-3m6PoGbs,43378
|
|
5
|
-
ScriptCollection/GeneralUtilities.py,sha256=
|
|
4
|
+
ScriptCollection/GeneralUtilities.py,sha256=FfUGXUKTTVh6bWPqC39qkwPBolM2ICAMt8REpD66HKQ,58740
|
|
5
|
+
ScriptCollection/HTTPMaintenanceOverheadHelper.py,sha256=TToNtyO1XzsMbBsTBf3o0xgOK0v4Jf03qw2Z0xb2nCk,2007
|
|
6
6
|
ScriptCollection/ImageUpdater.py,sha256=fxyz3oZkKlqyieYiyj0Yi1dQjOJEuHhu0WvL_JHsB90,38905
|
|
7
7
|
ScriptCollection/ProcessesRunner.py,sha256=o5raxIt3lknNPoPrjNzJ2bprRPJ3SnL0rrR7crraD7E,1523
|
|
8
8
|
ScriptCollection/ProgramRunnerBase.py,sha256=4A2eQgSg_rRgQcgSi-LYtUlM-uSQEpS7qFWn0tWt4uo,2171
|
|
@@ -10,7 +10,7 @@ ScriptCollection/ProgramRunnerMock.py,sha256=uTu-aFle1W_oKjeQEmuPsFPQpvo0kRf2FrR
|
|
|
10
10
|
ScriptCollection/ProgramRunnerPopen.py,sha256=BPY7-ZMIlqT7JOKz8qlB5c0laF2Js-ijzqk09GxZC48,3821
|
|
11
11
|
ScriptCollection/ProgramRunnerSudo.py,sha256=_khC3xuTdrPoLluBJZWfldltmmuKltABJPcbjZSFW-4,4835
|
|
12
12
|
ScriptCollection/SCLog.py,sha256=8TRy1LeYMsPOIuWUcnUNNbO5pd-cNBS-3cn-kdzP8FU,4768
|
|
13
|
-
ScriptCollection/ScriptCollectionCore.py,sha256=
|
|
13
|
+
ScriptCollection/ScriptCollectionCore.py,sha256=CnpKBw38cqjp66erQbJavnIzuhxR45FeekQgejFjihg,156819
|
|
14
14
|
ScriptCollection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
15
|
ScriptCollection/OCIImages/AbstractImageHandler.py,sha256=Pa72cRybzBroy-OzzxZqKpFB58iY2kcf5yFfIAIPfXk,1627
|
|
16
16
|
ScriptCollection/OCIImages/OCIImageManager.py,sha256=xTYnj68CRDkTjJiibSov1HSI0djmmcY6mwP6_fD0kCM,7141
|
|
@@ -22,15 +22,16 @@ ScriptCollection/OCIImages/ConcreteImageHandlers/ImageHandlerGenericV.py,sha256=
|
|
|
22
22
|
ScriptCollection/OCIImages/ConcreteImageHandlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
23
|
ScriptCollection/Resources/CultureChooser/CultureChooser.js,sha256=5-4pwGDq5j1UnpTZy850ZMoxlM9tYPeu781QpZBtCWM,951
|
|
24
24
|
ScriptCollection/Resources/CultureChooser/index.html,sha256=gxQzbrSp4WU52TqN-gcBEtz2gJXmmM14OwTSFtFVRvw,276
|
|
25
|
+
ScriptCollection/Resources/MaintenanceSite/MaintenanceSite.html,sha256=CX9S1bdOz6xU2aGfr03tJRGczQrlpn-IeODc15d5kc0,232
|
|
25
26
|
ScriptCollection/TFCPS/TFCPS_CodeUnitSpecific_Base.py,sha256=xpt-Z_jztEaKgpT1DDSX7wezWX0VKS5LQb7IKAzvi4U,27860
|
|
26
27
|
ScriptCollection/TFCPS/TFCPS_CodeUnit_BuildCodeUnit.py,sha256=vnNrwvNePvW2dQhnSusBjgvOssI3a1P3g94bNxNIr3o,8069
|
|
27
|
-
ScriptCollection/TFCPS/TFCPS_CodeUnit_BuildCodeUnits.py,sha256=
|
|
28
|
+
ScriptCollection/TFCPS/TFCPS_CodeUnit_BuildCodeUnits.py,sha256=GRLayAR2rEk_rnb0UDFfTPr6MD5YRxC8oVU25MZC2J8,15266
|
|
28
29
|
ScriptCollection/TFCPS/TFCPS_CreateRelease.py,sha256=yqGstRjRfVVGbqrcBgtYStqth2x2SvBb3y2Ht8GsuMQ,6554
|
|
29
30
|
ScriptCollection/TFCPS/TFCPS_Generic.py,sha256=O-0guM_LJCcZmPZJhMgTvXD2RXUJEBWWv6Bt6hDFhvM,1943
|
|
30
31
|
ScriptCollection/TFCPS/TFCPS_MergeToMain.py,sha256=-Ev9D3bZDlUk2WFQhcmvzQ3FCS97OdsVUd0koAdmpZc,7474
|
|
31
32
|
ScriptCollection/TFCPS/TFCPS_MergeToStable.py,sha256=Ajfy2pLajTuU6UpwItHt4C2a-gLF3gPc4z6BktL3Cio,22163
|
|
32
33
|
ScriptCollection/TFCPS/TFCPS_PreBuildCodeunitsScript.py,sha256=f0Uq1cA_4LvmL72cal0crrbKF6PcxL13D9wBKuQ1YBw,2328
|
|
33
|
-
ScriptCollection/TFCPS/TFCPS_Tools_General.py,sha256=
|
|
34
|
+
ScriptCollection/TFCPS/TFCPS_Tools_General.py,sha256=z3KL8R_Ni9YwTd3imBm2-B49GDJOP5HwK8N79D8Kuuc,93966
|
|
34
35
|
ScriptCollection/TFCPS/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
36
|
ScriptCollection/TFCPS/Docker/TFCPS_CodeUnitSpecific_Docker.py,sha256=krF-SYvXyG1cAepj-5witV76suBvEumTApn7nY6Zin0,10564
|
|
36
37
|
ScriptCollection/TFCPS/Docker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -43,12 +44,12 @@ ScriptCollection/TFCPS/Flutter/TFCPS_CodeUnitSpecific_Flutter.py,sha256=U8oBAOLR
|
|
|
43
44
|
ScriptCollection/TFCPS/Flutter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
44
45
|
ScriptCollection/TFCPS/Go/TFCPS_CodeUnitSpecific_Go.py,sha256=kyx26AnT1-LySFA46wfJ9yZUKYdMWTD0U2XZfSQbuB0,3497
|
|
45
46
|
ScriptCollection/TFCPS/Go/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
|
-
ScriptCollection/TFCPS/NodeJS/TFCPS_CodeUnitSpecific_NodeJS.py,sha256=
|
|
47
|
+
ScriptCollection/TFCPS/NodeJS/TFCPS_CodeUnitSpecific_NodeJS.py,sha256=wKB5t-K7p3U6WhxZALGrKipU71c20YuL9f8twQaLrAA,9101
|
|
47
48
|
ScriptCollection/TFCPS/NodeJS/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
48
49
|
ScriptCollection/TFCPS/Python/TFCPS_CodeUnitSpecific_Python.py,sha256=nLw_eSUd_56jjgfcAvtUyzecSZ14mYmNJl0iu-1YNVk,13496
|
|
49
50
|
ScriptCollection/TFCPS/Python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
50
|
-
scriptcollection-4.2.
|
|
51
|
-
scriptcollection-4.2.
|
|
52
|
-
scriptcollection-4.2.
|
|
53
|
-
scriptcollection-4.2.
|
|
54
|
-
scriptcollection-4.2.
|
|
51
|
+
scriptcollection-4.2.43.dist-info/METADATA,sha256=uuDLYdS0gGlYbD0Xf9ZpmPpkoAUdaltq8MNYnOMa5wg,7690
|
|
52
|
+
scriptcollection-4.2.43.dist-info/WHEEL,sha256=YCfwYGOYMi5Jhw2fU4yNgwErybb2IX5PEwBKV4ZbdBo,91
|
|
53
|
+
scriptcollection-4.2.43.dist-info/entry_points.txt,sha256=m_HqkdaPXThWnd2chMMhs8dA5aRJu1ifrcwUnvw5SBE,4572
|
|
54
|
+
scriptcollection-4.2.43.dist-info/top_level.txt,sha256=hY2hOVH0V0Ce51WB76zKkIWTUNwMUdHo4XDkR2vYVwg,17
|
|
55
|
+
scriptcollection-4.2.43.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|