ScriptCollection 4.2.39__py3-none-any.whl → 4.2.41__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/CultureChooser.py +2 -2
- ScriptCollection/Executables.py +5 -3
- ScriptCollection/GeneralUtilities.py +35 -26
- ScriptCollection/Resources/CultureChooser/CultureChooser.js +18 -12
- ScriptCollection/Resources/CultureChooser/index.html +3 -0
- ScriptCollection/ScriptCollectionCore.py +14 -1
- ScriptCollection/TFCPS/DotNet/TFCPS_CodeUnitSpecific_DotNet.py +1 -1
- ScriptCollection/TFCPS/NodeJS/TFCPS_CodeUnitSpecific_NodeJS.py +7 -2
- {scriptcollection-4.2.39.dist-info → scriptcollection-4.2.41.dist-info}/METADATA +4 -4
- {scriptcollection-4.2.39.dist-info → scriptcollection-4.2.41.dist-info}/RECORD +13 -13
- {scriptcollection-4.2.39.dist-info → scriptcollection-4.2.41.dist-info}/WHEEL +0 -0
- {scriptcollection-4.2.39.dist-info → scriptcollection-4.2.41.dist-info}/entry_points.txt +0 -0
- {scriptcollection-4.2.39.dist-info → scriptcollection-4.2.41.dist-info}/top_level.txt +0 -0
|
@@ -23,7 +23,7 @@ class CultureChooser:
|
|
|
23
23
|
GeneralUtilities.assert_condition("en" in supported_languages, "The default language 'en' must be included in the list of supported languages.")
|
|
24
24
|
for supported_language in supported_languages:
|
|
25
25
|
GeneralUtilities.assert_condition(self.is_valid_culture(supported_language), f"Invalid language code '{supported_language}'. Supported languages must be in the format 'en' or 'en-US'.")
|
|
26
|
-
content = GeneralUtilities._internal_load_resource("CultureChooser/
|
|
26
|
+
content = GeneralUtilities._internal_load_resource("CultureChooser/CultureChooser.js")
|
|
27
27
|
content_as_string = content.decode("utf-8")
|
|
28
|
-
result=GeneralUtilities.replace_variable("/*","supportedCultures","*/", ",".join([f"\"{supported_language}\"" for supported_language in supported_languages]), content_as_string)
|
|
28
|
+
result=GeneralUtilities.replace_variable("/*","supportedCultures","*/", ", ".join([f"\"{supported_language}\"" for supported_language in supported_languages]), content_as_string)
|
|
29
29
|
return result
|
ScriptCollection/Executables.py
CHANGED
|
@@ -654,10 +654,12 @@ def Espoc() -> int:
|
|
|
654
654
|
time.sleep(1)
|
|
655
655
|
GeneralUtilities.write_message_to_stdout(f"Process with id {process_id} is not running anymore. Start terminating remaining processes.")
|
|
656
656
|
if os.path.exists(process_list_file):
|
|
657
|
-
for line in GeneralUtilities.
|
|
658
|
-
|
|
659
|
-
|
|
657
|
+
for line in GeneralUtilities.read_nonempty_lines_from_file(process_list_file):
|
|
658
|
+
current_process_id = int(line.strip())
|
|
659
|
+
try:
|
|
660
660
|
GeneralUtilities.kill_process(current_process_id, True)
|
|
661
|
+
except Exception as exception:
|
|
662
|
+
GeneralUtilities.write_exception_to_stderr(exception,"Error while terminating process with id "+str(current_process_id))
|
|
661
663
|
GeneralUtilities.ensure_file_does_not_exist(process_list_file)
|
|
662
664
|
GeneralUtilities.write_message_to_stdout("All started processes terminated.")
|
|
663
665
|
else:
|
|
@@ -2,7 +2,6 @@ import re
|
|
|
2
2
|
import os
|
|
3
3
|
from os import listdir
|
|
4
4
|
from os.path import isfile, join, isdir
|
|
5
|
-
import codecs
|
|
6
5
|
import platform
|
|
7
6
|
import inspect
|
|
8
7
|
import ctypes
|
|
@@ -527,6 +526,7 @@ class GeneralUtilities:
|
|
|
527
526
|
@staticmethod
|
|
528
527
|
@check_arguments
|
|
529
528
|
def file_ends_with_newline(file: str) -> bool:
|
|
529
|
+
file=GeneralUtilities.normaliza_path(file)
|
|
530
530
|
with open(file, "rb") as file_object:
|
|
531
531
|
return GeneralUtilities.ends_with_newline_character(file_object.read())
|
|
532
532
|
|
|
@@ -559,11 +559,13 @@ class GeneralUtilities:
|
|
|
559
559
|
@staticmethod
|
|
560
560
|
@check_arguments
|
|
561
561
|
def append_line_to_file(file: str, line: str, encoding: str = "utf-8") -> None:
|
|
562
|
+
file=GeneralUtilities.normaliza_path(file)
|
|
562
563
|
GeneralUtilities.append_lines_to_file(file, [line], encoding)
|
|
563
564
|
|
|
564
565
|
@staticmethod
|
|
565
566
|
@check_arguments
|
|
566
567
|
def append_lines_to_file(file: str, lines: list[str], encoding: str = "utf-8") -> None:
|
|
568
|
+
file=GeneralUtilities.normaliza_path(file)
|
|
567
569
|
if len(lines) == 0:
|
|
568
570
|
return
|
|
569
571
|
is_first_line = True
|
|
@@ -586,6 +588,7 @@ class GeneralUtilities:
|
|
|
586
588
|
@staticmethod
|
|
587
589
|
@check_arguments
|
|
588
590
|
def append_to_file(file: str, content: str, encoding: str = "utf-8") -> None:
|
|
591
|
+
file=GeneralUtilities.normaliza_path(file)
|
|
589
592
|
GeneralUtilities.assert_condition(not "\n" in content, "Appending multiple lines is not allowed. Use append_lines_to_file instead.")
|
|
590
593
|
with open(file, "a", encoding=encoding) as fileObject:
|
|
591
594
|
fileObject.write(content)
|
|
@@ -593,12 +596,14 @@ class GeneralUtilities:
|
|
|
593
596
|
@staticmethod
|
|
594
597
|
@check_arguments
|
|
595
598
|
def ensure_directory_exists(path: str) -> None:
|
|
599
|
+
path=GeneralUtilities.normaliza_path(path)
|
|
596
600
|
if not os.path.isdir(path):
|
|
597
601
|
os.makedirs(path)
|
|
598
602
|
|
|
599
603
|
@staticmethod
|
|
600
604
|
@check_arguments
|
|
601
605
|
def ensure_file_exists(path: str) -> None:
|
|
606
|
+
path=GeneralUtilities.normaliza_path(path)
|
|
602
607
|
if (not os.path.isfile(path)):
|
|
603
608
|
with open(path, "a+", encoding="utf-8"):
|
|
604
609
|
pass
|
|
@@ -662,10 +667,10 @@ class GeneralUtilities:
|
|
|
662
667
|
@staticmethod
|
|
663
668
|
@check_arguments
|
|
664
669
|
def format_xml_file_with_encoding(filepath: str, encoding: str) -> None:
|
|
665
|
-
with
|
|
670
|
+
with open(filepath, 'r', encoding=encoding) as file:
|
|
666
671
|
text = file.read()
|
|
667
672
|
text = parse(text).toprettyxml()
|
|
668
|
-
with
|
|
673
|
+
with open(filepath, 'w', encoding=encoding) as file:
|
|
669
674
|
file.write(text)
|
|
670
675
|
|
|
671
676
|
@staticmethod
|
|
@@ -765,6 +770,7 @@ class GeneralUtilities:
|
|
|
765
770
|
@staticmethod
|
|
766
771
|
@check_arguments
|
|
767
772
|
def read_binary_from_file(file: str) -> bytes:
|
|
773
|
+
file=GeneralUtilities.normaliza_path(file)
|
|
768
774
|
with open(file, "rb") as file_object:
|
|
769
775
|
return file_object.read()
|
|
770
776
|
|
|
@@ -1330,32 +1336,35 @@ class GeneralUtilities:
|
|
|
1330
1336
|
"""For each log file in this folder this function looks for log-rotation-files and merges them together again into one file."""
|
|
1331
1337
|
all_files=GeneralUtilities.get_direct_files_of_folder(folder)
|
|
1332
1338
|
for log_file in all_files:
|
|
1339
|
+
if "AutoRename" in log_file:
|
|
1340
|
+
continue
|
|
1333
1341
|
filename=os.path.basename(log_file)
|
|
1334
1342
|
filename_without_extension=Path(log_file).stem
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1343
|
+
if not ".archive." in filename:
|
|
1344
|
+
|
|
1345
|
+
#merge with rotated logs
|
|
1346
|
+
if filename.endswith(".log") and not ".archive." in filename:
|
|
1347
|
+
rotated_log_files=sorted([f for f in all_files if os.path.basename(f).startswith(filename_without_extension+".archive.")], key=GeneralUtilities._internal_extract_log_file_number)
|
|
1348
|
+
result=GeneralUtilities.empty_string
|
|
1349
|
+
if 0<len(rotated_log_files):
|
|
1350
|
+
for rotated_log_file in rotated_log_files:
|
|
1351
|
+
result+="\n"+GeneralUtilities.read_text_from_file(rotated_log_file)
|
|
1342
1352
|
result+="\n"+GeneralUtilities.read_text_from_file(log_file)
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
@
|
|
1357
|
-
|
|
1358
|
-
def __extract_log_file_number(filename: str) -> int:
|
|
1353
|
+
GeneralUtilities.write_text_to_file(log_file, result)
|
|
1354
|
+
for rotated_log_file in rotated_log_files:
|
|
1355
|
+
GeneralUtilities.ensure_file_does_not_exist(rotated_log_file)
|
|
1356
|
+
|
|
1357
|
+
#normalize
|
|
1358
|
+
logs=GeneralUtilities.read_text_from_file(log_file)
|
|
1359
|
+
logs=logs.replace("\r\n", "\n")
|
|
1360
|
+
logs=logs.replace("\r", GeneralUtilities.empty_string)
|
|
1361
|
+
logs=re.sub(r"\n+", "\n", logs)
|
|
1362
|
+
logs=GeneralUtilities.trim_newlines(logs)
|
|
1363
|
+
GeneralUtilities.write_text_to_file(log_file, logs)
|
|
1364
|
+
|
|
1365
|
+
@staticmethod
|
|
1366
|
+
@check_arguments
|
|
1367
|
+
def _internal_extract_log_file_number(filename: str) -> int:
|
|
1359
1368
|
m = re.search(r"\.archive\.(\d+)\.log$", filename)
|
|
1360
1369
|
if m:
|
|
1361
1370
|
return int(m.group(1))
|
|
@@ -1,23 +1,29 @@
|
|
|
1
1
|
function getBrowserCulture() {
|
|
2
|
+
//returns a culture in the format "en", "fr" and "fr-FR".
|
|
2
3
|
let lang = navigator.language || navigator.userLanguage || "en";
|
|
3
4
|
const match = lang.match(/^[a-zA-Z]{2}(?:-[a-zA-Z]{2})?/);
|
|
4
5
|
return match ? match[0] : "en";
|
|
5
6
|
}
|
|
6
|
-
function redirectToCulture() {
|
|
7
|
-
const supportedCultures = [
|
|
8
|
-
/*__supportedCultures__*/
|
|
9
|
-
];
|
|
10
7
|
|
|
8
|
+
function getCultureToRedirect() {
|
|
9
|
+
const supportedCultures = [/*__supportedCultures__*/];//contains values like "en", "fr" and "fr-FR".
|
|
11
10
|
let culture = getBrowserCulture();
|
|
12
11
|
if (supportedCultures.includes(culture)) {
|
|
13
|
-
window.location.replace(
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
window.location.replace(`/${culture}/index.html`);
|
|
13
|
+
} else {
|
|
14
|
+
if (0 < culture.indexOf('-')) {
|
|
15
|
+
languageOnly = culture.split('-')[0];
|
|
16
|
+
if (supportedCultures.includes(languageOnly)) {
|
|
17
|
+
return languageOnly;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
return "en";
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function redirectToCulture() {
|
|
25
|
+
const culture = getCultureToRedirect();
|
|
26
|
+
window.location.replace(`/${culture}/index.html`);
|
|
22
27
|
}
|
|
28
|
+
|
|
23
29
|
redirectToCulture();
|
|
@@ -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.41"
|
|
39
39
|
__version__ = version
|
|
40
40
|
|
|
41
41
|
|
|
@@ -2783,3 +2783,16 @@ OCR-content:
|
|
|
2783
2783
|
#TODO add cli-script to call this function
|
|
2784
2784
|
if network_name in self.get_docker_networks():
|
|
2785
2785
|
self.run_program("docker",f"network rm {network_name}")
|
|
2786
|
+
|
|
2787
|
+
@GeneralUtilities.check_arguments
|
|
2788
|
+
def get_available_cultures_for_angular_app(self,angular_json_file:str)->list[str]:
|
|
2789
|
+
languages = ["en"]
|
|
2790
|
+
with open(angular_json_file, "r", encoding="utf-8") as f:
|
|
2791
|
+
data = json.load(f)
|
|
2792
|
+
for project in data.get("projects", {}).values():
|
|
2793
|
+
i18n = project.get("i18n", {})
|
|
2794
|
+
locales = i18n.get("locales", {})
|
|
2795
|
+
languages.extend(locales.keys())
|
|
2796
|
+
|
|
2797
|
+
languages=list(languages)
|
|
2798
|
+
return languages
|
|
@@ -184,7 +184,7 @@ class TFCPS_CodeUnitSpecific_DotNet_Functions(TFCPS_CodeUnitSpecific_Base):
|
|
|
184
184
|
self._protected_sc.log.log("Generate SBOM...")
|
|
185
185
|
codeunit_name = os.path.basename(codeunit_folder)
|
|
186
186
|
bomfile_folder = "Other\\Artifacts\\BOM"
|
|
187
|
-
self._protected_sc.run_program_argsasarray("dotnet", ["CycloneDX", f"{codeunit_name}\\{codeunit_name}.csproj", "-o", bomfile_folder
|
|
187
|
+
self._protected_sc.run_program_argsasarray("dotnet", ["CycloneDX", f"{codeunit_name}\\{codeunit_name}.csproj", "-o", bomfile_folder], codeunit_folder)
|
|
188
188
|
codeunitversion = self.tfcps_Tools_General.get_version_of_codeunit(os.path.join(codeunit_folder, f"{codeunit_name}.codeunit.xml"))
|
|
189
189
|
target = f"{codeunit_folder}\\{bomfile_folder}\\{codeunit_name}.{codeunitversion}.sbom.xml"
|
|
190
190
|
GeneralUtilities.ensure_file_does_not_exist(target)
|
|
@@ -124,8 +124,9 @@ class TFCPS_CodeUnitSpecific_NodeJS_Functions(TFCPS_CodeUnitSpecific_Base):
|
|
|
124
124
|
|
|
125
125
|
@GeneralUtilities.check_arguments
|
|
126
126
|
def add_culture_chooser(self,site_title:str,supported_cultures:list[str])->None:
|
|
127
|
+
output_folder=self.get_codeunit_folder()+"/Other/Artifacts/BuildResult_WebApplication/browser"
|
|
128
|
+
GeneralUtilities.assert_folder_exists(output_folder)
|
|
127
129
|
cc:CultureChooser=CultureChooser()
|
|
128
|
-
output_folder=self.get_codeunit_folder()+"/Other/Artifacts/Build_WebApplication"
|
|
129
130
|
|
|
130
131
|
index_html_file=output_folder+"/index.html"
|
|
131
132
|
GeneralUtilities.ensure_file_exists(index_html_file)
|
|
@@ -137,8 +138,12 @@ class TFCPS_CodeUnitSpecific_NodeJS_Functions(TFCPS_CodeUnitSpecific_Base):
|
|
|
137
138
|
cc_script_content=cc.get_culture_chooser_script(supported_cultures)
|
|
138
139
|
GeneralUtilities.write_text_to_file(cc_script_file, cc_script_content)
|
|
139
140
|
|
|
141
|
+
@GeneralUtilities.check_arguments
|
|
142
|
+
def get_available_cultures_for_angular_app(self)->None:
|
|
143
|
+
return self._protected_sc.get_available_cultures_for_angular_app(self.get_codeunit_folder()+"/angular.json")
|
|
144
|
+
|
|
140
145
|
class TFCPS_CodeUnitSpecific_NodeJS_CLI:
|
|
141
|
-
|
|
146
|
+
|
|
142
147
|
@staticmethod
|
|
143
148
|
@GeneralUtilities.check_arguments
|
|
144
149
|
def parse(file:str)->TFCPS_CodeUnitSpecific_NodeJS_Functions:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ScriptCollection
|
|
3
|
-
Version: 4.2.
|
|
3
|
+
Version: 4.2.41
|
|
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
|
|
@@ -23,7 +23,7 @@ Classifier: Topic :: Utilities
|
|
|
23
23
|
Requires-Python: >=3.10
|
|
24
24
|
Description-Content-Type: text/markdown
|
|
25
25
|
Requires-Dist: build>=1.4.0
|
|
26
|
-
Requires-Dist: coverage>=7.13.
|
|
26
|
+
Requires-Dist: coverage>=7.13.4
|
|
27
27
|
Requires-Dist: cyclonedx-bom>=7.1.0
|
|
28
28
|
Requires-Dist: defusedxml>=0.7.1
|
|
29
29
|
Requires-Dist: keyboard>=0.13.5
|
|
@@ -34,9 +34,9 @@ Requires-Dist: Pillow>=11.3.0
|
|
|
34
34
|
Requires-Dist: psutil>=7.2.2
|
|
35
35
|
Requires-Dist: pycdlib>=1.14.0
|
|
36
36
|
Requires-Dist: Pygments>=2.19.2
|
|
37
|
-
Requires-Dist: pylint>=4.0.
|
|
37
|
+
Requires-Dist: pylint>=4.0.5
|
|
38
38
|
Requires-Dist: pyOpenSSL>=25.3.0
|
|
39
|
-
Requires-Dist: PyPDF>=6.
|
|
39
|
+
Requires-Dist: PyPDF>=6.7.2
|
|
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=
|
|
4
|
-
ScriptCollection/Executables.py,sha256=
|
|
5
|
-
ScriptCollection/GeneralUtilities.py,sha256=
|
|
3
|
+
ScriptCollection/CultureChooser.py,sha256=TX5DdFzu5645ir9SI80rkRHDtf3cQ9zeZrpYj3HJLZs,1653
|
|
4
|
+
ScriptCollection/Executables.py,sha256=zP8EUkcl5q31AwHdYrADQRru2Wxwv2m67O-3m6PoGbs,43378
|
|
5
|
+
ScriptCollection/GeneralUtilities.py,sha256=g0oBL8aFbvoIFwcAW93z2s5BAjJbrsFEMTQwLJesmZM,58667
|
|
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=5q1jImWNzVG5Q5EUboBvSrXTBJQF_VgOs3Ufe1GpZoM,156757
|
|
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
|
|
@@ -20,8 +20,8 @@ ScriptCollection/OCIImages/ConcreteImageHandlers/ImageHandlerDebianSlim.py,sha25
|
|
|
20
20
|
ScriptCollection/OCIImages/ConcreteImageHandlers/ImageHandlerGeneric.py,sha256=xyE4wYK6s17NrBJiat1ohMKlTjygC402QIUwvFNf0ao,604
|
|
21
21
|
ScriptCollection/OCIImages/ConcreteImageHandlers/ImageHandlerGenericV.py,sha256=T5vMwIDFEpm6JzSJVS2oRnc2Z7QbPWonld0LEUpHoMg,605
|
|
22
22
|
ScriptCollection/OCIImages/ConcreteImageHandlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
|
-
ScriptCollection/Resources/CultureChooser/CultureChooser.js,sha256=
|
|
24
|
-
ScriptCollection/Resources/CultureChooser/index.html,sha256=
|
|
23
|
+
ScriptCollection/Resources/CultureChooser/CultureChooser.js,sha256=5-4pwGDq5j1UnpTZy850ZMoxlM9tYPeu781QpZBtCWM,951
|
|
24
|
+
ScriptCollection/Resources/CultureChooser/index.html,sha256=gxQzbrSp4WU52TqN-gcBEtz2gJXmmM14OwTSFtFVRvw,276
|
|
25
25
|
ScriptCollection/TFCPS/TFCPS_CodeUnitSpecific_Base.py,sha256=xpt-Z_jztEaKgpT1DDSX7wezWX0VKS5LQb7IKAzvi4U,27860
|
|
26
26
|
ScriptCollection/TFCPS/TFCPS_CodeUnit_BuildCodeUnit.py,sha256=vnNrwvNePvW2dQhnSusBjgvOssI3a1P3g94bNxNIr3o,8069
|
|
27
27
|
ScriptCollection/TFCPS/TFCPS_CodeUnit_BuildCodeUnits.py,sha256=YfyO1aSBnlKOpzEkqya0rLXQmZ3gw-mdwUqSXVQBbRE,14918
|
|
@@ -37,18 +37,18 @@ ScriptCollection/TFCPS/Docker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
|
|
|
37
37
|
ScriptCollection/TFCPS/DotNet/CertificateGeneratorInformationBase.py,sha256=bT6Gd5pQpZCw4OQz6HWkPCSn5z__eUUEisABLDSxd0o,200
|
|
38
38
|
ScriptCollection/TFCPS/DotNet/CertificateGeneratorInformationGenerate.py,sha256=QyjOfMY22JWCvKjMelHiDWbJiWqotOfebpJpgDUaoO4,237
|
|
39
39
|
ScriptCollection/TFCPS/DotNet/CertificateGeneratorInformationNoGenerate.py,sha256=i0zEGehj0sttxjjZtoq2KFSKp_ulxVyWp_ZgAhIY_So,241
|
|
40
|
-
ScriptCollection/TFCPS/DotNet/TFCPS_CodeUnitSpecific_DotNet.py,sha256
|
|
40
|
+
ScriptCollection/TFCPS/DotNet/TFCPS_CodeUnitSpecific_DotNet.py,sha256=0_IRUZE9YzIpSKaj-JRXjHS1pshqYSICNKLXzVbYK_w,31958
|
|
41
41
|
ScriptCollection/TFCPS/DotNet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
42
42
|
ScriptCollection/TFCPS/Flutter/TFCPS_CodeUnitSpecific_Flutter.py,sha256=U8oBAOLR2vJpVfc9631Rhb8a04nrnjUMMX-U7pvXjok,7342
|
|
43
43
|
ScriptCollection/TFCPS/Flutter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
44
44
|
ScriptCollection/TFCPS/Go/TFCPS_CodeUnitSpecific_Go.py,sha256=kyx26AnT1-LySFA46wfJ9yZUKYdMWTD0U2XZfSQbuB0,3497
|
|
45
45
|
ScriptCollection/TFCPS/Go/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
|
-
ScriptCollection/TFCPS/NodeJS/TFCPS_CodeUnitSpecific_NodeJS.py,sha256=
|
|
46
|
+
ScriptCollection/TFCPS/NodeJS/TFCPS_CodeUnitSpecific_NodeJS.py,sha256=5YNFOBY54IjTNFW52GaryYq5c1MDjhjxNUcjM3TAqLk,8281
|
|
47
47
|
ScriptCollection/TFCPS/NodeJS/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
48
48
|
ScriptCollection/TFCPS/Python/TFCPS_CodeUnitSpecific_Python.py,sha256=nLw_eSUd_56jjgfcAvtUyzecSZ14mYmNJl0iu-1YNVk,13496
|
|
49
49
|
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.
|
|
50
|
+
scriptcollection-4.2.41.dist-info/METADATA,sha256=XpDhiRL0yE3myjIEC4HyYUQJwdY4PQG1-Jb-qcc9Phg,7690
|
|
51
|
+
scriptcollection-4.2.41.dist-info/WHEEL,sha256=YCfwYGOYMi5Jhw2fU4yNgwErybb2IX5PEwBKV4ZbdBo,91
|
|
52
|
+
scriptcollection-4.2.41.dist-info/entry_points.txt,sha256=m_HqkdaPXThWnd2chMMhs8dA5aRJu1ifrcwUnvw5SBE,4572
|
|
53
|
+
scriptcollection-4.2.41.dist-info/top_level.txt,sha256=hY2hOVH0V0Ce51WB76zKkIWTUNwMUdHo4XDkR2vYVwg,17
|
|
54
|
+
scriptcollection-4.2.41.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|