ScriptCollection 3.5.120__py3-none-any.whl → 3.5.122__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.
@@ -22,6 +22,7 @@ from os.path import isfile, join, isdir
22
22
  from pathlib import Path
23
23
  from shutil import copyfile
24
24
  import typing
25
+ from typing import TextIO
25
26
  import psutil
26
27
  from defusedxml.minidom import parse
27
28
  from OpenSSL import crypto
@@ -211,6 +212,7 @@ class GeneralUtilities:
211
212
  @staticmethod
212
213
  @check_arguments
213
214
  def replace_xmltag_in_file(file: str, tag: str, new_value: str, encoding="utf-8") -> None:
215
+ GeneralUtilities.assert_condition(tag.isalnum(tag), f"Invalid tag: \"{tag}\"")
214
216
  GeneralUtilities.replace_regex_in_file(file, f"<{tag}>.*</{tag}>", f"<{tag}>{new_value}</{tag}>", encoding)
215
217
 
216
218
  @staticmethod
@@ -241,30 +243,43 @@ class GeneralUtilities:
241
243
  GeneralUtilities.write_text_to_file(file, text, encoding)
242
244
 
243
245
  @staticmethod
246
+ @check_arguments
244
247
  def print_text(text: str, print_to_stdout: bool = True):
245
248
  GeneralUtilities.__print_text_to_console(text, print_to_stdout)
246
249
 
247
250
  @staticmethod
248
- def print_text_in_green(text: str, print_to_stdout: bool = True):
249
- GeneralUtilities.__print_text_to_console(f"\033[32m{text}\033[0m", print_to_stdout)
251
+ @check_arguments
252
+ def print_text_in_green(text: str, print_to_stdout: bool = True, print_as_color: bool = True):
253
+ GeneralUtilities.print_text_in_color(text, 32, print_to_stdout, print_as_color)
250
254
 
251
255
  @staticmethod
252
- def print_text_in_yellow(text: str, print_to_stdout: bool = True):
253
- GeneralUtilities.__print_text_to_console(f"\033[33m{text}\033[0m", print_to_stdout)
256
+ @check_arguments
257
+ def print_text_in_yellow(text: str, print_to_stdout: bool = True, print_as_color: bool = True):
258
+ GeneralUtilities.print_text_in_color(text, 33, print_to_stdout, print_as_color)
254
259
 
255
260
  @staticmethod
256
- def print_text_in_red(text: str, print_to_stdout: bool = True):
257
- GeneralUtilities.__print_text_to_console(f"\033[31m{text}\033[0m", print_to_stdout)
261
+ @check_arguments
262
+ def print_text_in_red(text: str, print_to_stdout: bool = True, print_as_color: bool = True):
263
+ GeneralUtilities.print_text_in_color(text, 31, print_to_stdout, print_as_color)
258
264
 
259
265
  @staticmethod
260
- def print_text_in_cyan(text: str, print_to_stdout: bool = True):
261
- GeneralUtilities.__print_text_to_console(f"\033[36m{text}\033[0m", print_to_stdout)
266
+ @check_arguments
267
+ def print_text_in_cyan(text: str, print_to_stdout: bool = True, print_as_color: bool = True):
268
+ GeneralUtilities.print_text_in_color(text, 36, print_to_stdout, print_as_color)
262
269
 
263
270
  @staticmethod
264
- def __print_text_to_console(text: str, print_to_stdout: bool = True):
265
- output = sys.stdout if print_to_stdout else sys.stderr
266
- output.write(text)
267
- output.flush()
271
+ @check_arguments
272
+ def print_text_in_color(text: str, colorcode: int, print_to_stdout: bool = True, print_as_color: bool = True):
273
+ stream: TextIO = sys.stdout if print_to_stdout else sys.stderr
274
+ if print_as_color:
275
+ text = f"\033[{colorcode}m{text}\033[0m"
276
+ GeneralUtilities.__print_text_to_console(text, stream, print_to_stdout)
277
+
278
+ @staticmethod
279
+ @check_arguments
280
+ def __print_text_to_console(text: str, stream: TextIO, print_to_stdout: bool = True):
281
+ stream.write(text)
282
+ stream.flush()
268
283
 
269
284
  @staticmethod
270
285
  @check_arguments
@@ -276,7 +291,7 @@ class GeneralUtilities:
276
291
  @staticmethod
277
292
  @check_arguments
278
293
  def write_message_to_stdout_advanced(message: str, add_empty_lines: bool = True, adapt_lines: bool = True, append_linebreak: bool = True):
279
- new_line_character: str = "\n" if append_linebreak else ""
294
+ new_line_character: str = "\n" if append_linebreak else GeneralUtilities.empty_string
280
295
  for line in GeneralUtilities.string_to_lines(message, add_empty_lines, adapt_lines):
281
296
  sys.stdout.write(GeneralUtilities.str_none_safe(line)+new_line_character)
282
297
  sys.stdout.flush()
@@ -289,7 +304,7 @@ class GeneralUtilities:
289
304
  @staticmethod
290
305
  @check_arguments
291
306
  def write_message_to_stderr_advanced(message: str, add_empty_lines: bool = True, adapt_lines: bool = True, append_linebreak: bool = True):
292
- new_line_character: str = "\n" if append_linebreak else ""
307
+ new_line_character: str = "\n" if append_linebreak else GeneralUtilities.empty_string
293
308
  for line in GeneralUtilities.string_to_lines(message, add_empty_lines, adapt_lines):
294
309
  sys.stderr.write(GeneralUtilities.str_none_safe(line)+new_line_character)
295
310
  sys.stderr.flush()
@@ -532,6 +547,7 @@ class GeneralUtilities:
532
547
  @staticmethod
533
548
  @check_arguments
534
549
  def get_clusters_and_sectors_of_disk(diskpath: str) -> None:
550
+ GeneralUtilities.assert_condition(GeneralUtilities.current_system_is_windows(), "get_clusters_and_sectors_of_disk(diskpath) is only available on windows.")
535
551
  sectorsPerCluster = ctypes.c_ulonglong(0)
536
552
  bytesPerSector = ctypes.c_ulonglong(0)
537
553
  rootPathName = ctypes.c_wchar_p(diskpath)
ScriptCollection/SCLog.py CHANGED
@@ -1,10 +1,11 @@
1
1
 
2
2
  from enum import Enum
3
- from datetime import datetime
3
+ from datetime import datetime, timezone
4
4
  from .GeneralUtilities import GeneralUtilities
5
5
 
6
6
 
7
7
  class LogLevel(Enum):
8
+ Quiet = 0
8
9
  Error = 1
9
10
  Warning = 2
10
11
  Information = 3
@@ -18,11 +19,14 @@ class SCLog:
18
19
  loglevel: LogLevel
19
20
  log_file: str
20
21
  add_overhead: bool
22
+ print_as_color: bool
23
+ zone_of_time: timezone = None
21
24
 
22
- def __init__(self, log_file: str = None):
23
- self.add_overhead = False
24
- self.loglevel = LogLevel.Information
25
+ def __init__(self, log_file: str = None, loglevel: LogLevel = None, add_overhead: bool = False, print_as_color: bool = True):
25
26
  self.log_file = log_file
27
+ self.loglevel = loglevel
28
+ self.add_overhead = add_overhead
29
+ self.print_as_color = print_as_color
26
30
 
27
31
  @GeneralUtilities.check_arguments
28
32
  def log_exception(self, message: str, ex: Exception, current_traceback):
@@ -41,8 +45,8 @@ class SCLog:
41
45
  if int(loglevel) > int(self.loglevel):
42
46
  return
43
47
 
44
- part1: str = ""
45
- part2: str = ""
48
+ part1: str = GeneralUtilities.empty_string
49
+ part2: str = GeneralUtilities.empty_string
46
50
  part3: str = message
47
51
 
48
52
  if loglevel == LogLevel.Warning:
@@ -50,7 +54,12 @@ class SCLog:
50
54
  if loglevel == LogLevel.Debug:
51
55
  part3 = f"Debug: {message}"
52
56
  if self.add_overhead:
53
- part1 = f"[{GeneralUtilities.datetime_to_string_for_logfile_entry(datetime.now())}] ["
57
+ moment: datetime = None
58
+ if self.zone_of_time is None:
59
+ moment = datetime.now()
60
+ else:
61
+ moment = datetime.now(self.zone_of_time)
62
+ part1 = f"[{GeneralUtilities.datetime_to_string_for_logfile_entry(moment)}] ["
54
63
  if loglevel == LogLevel.Information:
55
64
  part2 = f"Information"
56
65
  elif loglevel == LogLevel.Error:
@@ -65,15 +74,14 @@ class SCLog:
65
74
 
66
75
  print_to_std_out: bool = loglevel in (LogLevel.Debug, LogLevel.Information)
67
76
  GeneralUtilities.print_text(part1, print_to_std_out)
68
- # if the control-characters for colors cause problems then maybe it can be checked with sys.stdout.isatty() if colors should be printed
69
77
  if loglevel == LogLevel.Information:
70
- GeneralUtilities.print_text_in_green(part2, print_to_std_out)
78
+ GeneralUtilities.print_text_in_green(part2, print_to_std_out, self.print_as_color)
71
79
  elif loglevel == LogLevel.Error:
72
- GeneralUtilities.print_text_in_red(part2, print_to_std_out)
80
+ GeneralUtilities.print_text_in_red(part2, print_to_std_out, self.print_as_color)
73
81
  elif loglevel == LogLevel.Warning:
74
- GeneralUtilities.print_text_in_yellow(part2, print_to_std_out)
82
+ GeneralUtilities.print_text_in_yellow(part2, print_to_std_out, self.print_as_color)
75
83
  elif loglevel == LogLevel.Debug:
76
- GeneralUtilities.print_text_in_cyan(part2, print_to_std_out)
84
+ GeneralUtilities.print_text_in_cyan(part2, print_to_std_out, self.print_as_color)
77
85
  else:
78
86
  raise ValueError("Unknown loglevel.")
79
87
  GeneralUtilities.print_text(part3+"\n", print_to_std_out)
@@ -1,4 +1,3 @@
1
- import sys
2
1
  from datetime import timedelta, datetime
3
2
  import json
4
3
  import binascii
@@ -32,8 +31,9 @@ from .GeneralUtilities import GeneralUtilities
32
31
  from .ProgramRunnerBase import ProgramRunnerBase
33
32
  from .ProgramRunnerPopen import ProgramRunnerPopen
34
33
  from .ProgramRunnerEpew import ProgramRunnerEpew, CustomEpewArgument
34
+ from .SCLog import SCLog, LogLevel
35
35
 
36
- version = "3.5.120"
36
+ version = "3.5.122"
37
37
  __version__ = version
38
38
 
39
39
 
@@ -47,11 +47,13 @@ class ScriptCollectionCore:
47
47
  __mocked_program_calls: list = None
48
48
  program_runner: ProgramRunnerBase = None
49
49
  call_program_runner_directly: bool = None
50
+ log: SCLog = None
50
51
 
51
52
  def __init__(self):
52
53
  self.program_runner = ProgramRunnerPopen()
53
54
  self.call_program_runner_directly = None
54
55
  self.__mocked_program_calls = list[ScriptCollectionCore.__MockProgramCall]()
56
+ self.log = SCLog(None, LogLevel.Quiet, False)
55
57
 
56
58
  @staticmethod
57
59
  @GeneralUtilities.check_arguments
@@ -428,10 +430,10 @@ class ScriptCollectionCore:
428
430
  self.git_stage_all_changes(directory)
429
431
  else:
430
432
  if no_changes_behavior == 0:
431
- GeneralUtilities.write_message_to_stdout(f"Commit '{message}' will not be done because there are no changes to commit in repository '{directory}'")
433
+ self.log.log(f"Commit '{message}' will not be done because there are no changes to commit in repository '{directory}'", LogLevel.Debug)
432
434
  do_commit = False
433
435
  elif no_changes_behavior == 1:
434
- GeneralUtilities.write_message_to_stdout(f"There are no changes to commit in repository '{directory}'. Commit '{message}' will be done anyway.")
436
+ self.log.log(f"There are no changes to commit in repository '{directory}'. Commit '{message}' will be done anyway.", LogLevel.Debug)
435
437
  do_commit = True
436
438
  elif no_changes_behavior == 2:
437
439
  raise RuntimeError(f"There are no changes to commit in repository '{directory}'. Commit '{message}' will not be done.")
@@ -439,7 +441,7 @@ class ScriptCollectionCore:
439
441
  raise ValueError(f"Unknown value for no_changes_behavior: {GeneralUtilities.str_none_safe(no_changes_behavior)}")
440
442
 
441
443
  if do_commit:
442
- GeneralUtilities.write_message_to_stdout(f"Commit changes in '{directory}'")
444
+ self.log.log(f"Commit changes in '{directory}'", LogLevel.Information)
443
445
  self.run_program_argsasarray("git", argument, directory, throw_exception_if_exitcode_is_not_zero=True, verbosity=0)
444
446
 
445
447
  return self.git_get_commit_id(directory)
@@ -581,7 +583,7 @@ class ScriptCollectionCore:
581
583
  counter = 0
582
584
  for tag in tags:
583
585
  counter = counter+1
584
- GeneralUtilities.write_message_to_stdout(f"Process tag {counter}/{tags_count}.")
586
+ self.log.log(f"Process tag {counter}/{tags_count}.", LogLevel.Information)
585
587
  # tag is on source-branch
586
588
  if self.git_commit_is_ancestor(repository, tag, tag_source_branch):
587
589
  commit_id_old = self.git_get_commitid_of_tag(repository, tag)
@@ -1048,10 +1050,10 @@ class ScriptCollectionCore:
1048
1050
  elif (size_string.endswith("gib")):
1049
1051
  size = int(size_string[:-3]) * pow(2, 30)
1050
1052
  else:
1051
- GeneralUtilities.write_message_to_stderr("Wrong format")
1053
+ self.log.log("Wrong format", LogLevel.Error)
1052
1054
  return 1
1053
1055
  else:
1054
- GeneralUtilities.write_message_to_stderr("Wrong format")
1056
+ self.log.log("Wrong format", LogLevel.Error)
1055
1057
  return 1
1056
1058
  with open(name, "wb") as f:
1057
1059
  f.seek(size-1)
@@ -1115,7 +1117,7 @@ class ScriptCollectionCore:
1115
1117
 
1116
1118
  return 0
1117
1119
  else:
1118
- GeneralUtilities.write_message_to_stdout(f"File '{file}' does not exist")
1120
+ self.log.log(f"File '{file}' does not exist.", LogLevel.Error)
1119
1121
  return 1
1120
1122
 
1121
1123
  @GeneralUtilities.check_arguments
@@ -1194,8 +1196,7 @@ class ScriptCollectionCore:
1194
1196
  @GeneralUtilities.check_arguments
1195
1197
  def __print_qr_code_by_csv_line(self, displayname: str, website: str, emailaddress: str, key: str, period: str) -> None:
1196
1198
  qrcode_content = f"otpauth://totp/{website}:{emailaddress}?secret={key}&issuer={displayname}&period={period}"
1197
- GeneralUtilities.write_message_to_stdout(
1198
- f"{displayname} ({emailaddress}):")
1199
+ GeneralUtilities.write_message_to_stdout(f"{displayname} ({emailaddress}):")
1199
1200
  GeneralUtilities.write_message_to_stdout(qrcode_content)
1200
1201
  qr = qrcode.QRCode()
1201
1202
  qr.add_data(qrcode_content)
@@ -1447,7 +1448,6 @@ class ScriptCollectionCore:
1447
1448
  ls_result = self.run_program_argsasarray("ls", ["-ld", file_or_folder])
1448
1449
  GeneralUtilities.assert_condition(ls_result[0] == 0, f"'ls -ld {file_or_folder}' resulted in exitcode {str(ls_result[0])}. StdErr: {ls_result[2]}")
1449
1450
  GeneralUtilities.assert_condition(not GeneralUtilities.string_is_none_or_whitespace(ls_result[1]), f"'ls -ld' of '{file_or_folder}' had an empty output. StdErr: '{ls_result[2]}'")
1450
- GeneralUtilities.write_message_to_stdout(ls_result[1])
1451
1451
  output = ls_result[1]
1452
1452
  result = output.replace("\n", GeneralUtilities.empty_string)
1453
1453
  result = ' '.join(result.split()) # reduce multiple whitespaces to one
@@ -1460,7 +1460,6 @@ class ScriptCollectionCore:
1460
1460
  ls_result = self.run_program_argsasarray("ls", ["-la", file_or_folder])
1461
1461
  GeneralUtilities.assert_condition(ls_result[0] == 0, f"'ls -la {file_or_folder}' resulted in exitcode {str(ls_result[0])}. StdErr: {ls_result[2]}")
1462
1462
  GeneralUtilities.assert_condition(not GeneralUtilities.string_is_none_or_whitespace(ls_result[1]), f"'ls -la' of '{file_or_folder}' had an empty output. StdErr: '{ls_result[2]}'")
1463
- GeneralUtilities.write_message_to_stdout(ls_result[1])
1464
1463
  output = ls_result[1]
1465
1464
  result = output.split("\n")[3:] # skip the lines with "Total", "." and ".."
1466
1465
  result = [' '.join(line.split()) for line in result] # reduce multiple whitespaces to one
@@ -1520,7 +1519,7 @@ class ScriptCollectionCore:
1520
1519
  return False
1521
1520
 
1522
1521
  @staticmethod
1523
- def __read_popen_pipes(p: Popen, print_live_output: bool, print_errors_as_information: bool) -> tuple[list[str], list[str]]:
1522
+ def __read_popen_pipes(p: Popen, print_live_output: bool, print_errors_as_information: bool, log: SCLog) -> tuple[list[str], list[str]]:
1524
1523
  p_id = p.pid
1525
1524
  with ThreadPoolExecutor(2) as pool:
1526
1525
  q_stdout = Queue()
@@ -1543,9 +1542,10 @@ class ScriptCollectionCore:
1543
1542
  stdout_result.append(out_line)
1544
1543
  reading_stdout_last_time_resulted_in_exception = False
1545
1544
  if print_live_output:
1546
- print(out_line, end='\n', file=sys.stdout, flush=False)
1547
- if print_live_output:
1548
- sys.stdout.flush()
1545
+ # print(out_line, end='\n', file=sys.stdout, flush=False)
1546
+ log.log(out_line+"\n", LogLevel.Information)
1547
+ # if print_live_output:
1548
+ # sys.stdout.flush()
1549
1549
  except Empty:
1550
1550
  reading_stdout_last_time_resulted_in_exception = True
1551
1551
 
@@ -1557,12 +1557,13 @@ class ScriptCollectionCore:
1557
1557
  stderr_result.append(err_line)
1558
1558
  reading_stderr_last_time_resulted_in_exception = False
1559
1559
  if print_live_output:
1560
- print(err_line, end='\n', file=sys.stdout if print_errors_as_information else sys.stderr, flush=False)
1561
- if print_live_output:
1562
- if print_errors_as_information:
1563
- sys.stdout.flush()
1564
- else:
1565
- sys.stderr.flush()
1560
+ # print(err_line, end='\n', file=sys.stdout if print_errors_as_information else sys.stderr, flush=False)
1561
+ log.log(err_line+"\n", LogLevel.Error if print_errors_as_information else LogLevel.Information)
1562
+ # if print_live_output:
1563
+ # if print_errors_as_information:
1564
+ # sys.stdout.flush()
1565
+ # else:
1566
+ # sys.stderr.flush()
1566
1567
  except Empty:
1567
1568
  reading_stderr_last_time_resulted_in_exception = True
1568
1569
 
@@ -1597,7 +1598,7 @@ class ScriptCollectionCore:
1597
1598
 
1598
1599
  verbose = verbosity > 2
1599
1600
  if verbose:
1600
- GeneralUtilities.write_message_to_stdout(f"Run '{info_for_log}'.")
1601
+ self.log.log(f"Run '{info_for_log}'.", LogLevel.Debug)
1601
1602
 
1602
1603
  exit_code: int = None
1603
1604
  stdout: str = GeneralUtilities.empty_string
@@ -1610,7 +1611,7 @@ class ScriptCollectionCore:
1610
1611
  GeneralUtilities.ensure_file_exists(log_file)
1611
1612
  pid = process.pid
1612
1613
 
1613
- outputs: tuple[list[str], list[str]] = ScriptCollectionCore.__read_popen_pipes(process, print_live_output, print_errors_as_information)
1614
+ outputs: tuple[list[str], list[str]] = ScriptCollectionCore.__read_popen_pipes(process, print_live_output, print_errors_as_information, self.log)
1614
1615
 
1615
1616
  for out_line_plain in outputs[0]:
1616
1617
  if out_line_plain is not None:
@@ -1655,7 +1656,7 @@ class ScriptCollectionCore:
1655
1656
  result_message = f"Program '{info_for_log}' resulted in exitcode {exit_code}."
1656
1657
 
1657
1658
  if verbose:
1658
- GeneralUtilities.write_message_to_stdout(result_message)
1659
+ self.log.log(result_message, LogLevel.Debug)
1659
1660
 
1660
1661
  if throw_exception_if_exitcode_is_not_zero and exit_code != 0:
1661
1662
  raise ValueError(f"{result_message} (StdOut: '{stdout}', StdErr: '{stderr}')")
@@ -1969,56 +1970,16 @@ DNS = {domain}
1969
1970
  def update_dependencies_of_dotnet_project(self, csproj_file: str, verbosity: int, ignored_dependencies: list[str]):
1970
1971
  folder = os.path.dirname(csproj_file)
1971
1972
  csproj_filename = os.path.basename(csproj_file)
1972
- GeneralUtilities.write_message_to_stdout(f"Check for updates in {csproj_filename}")
1973
+ self.log.log(f"Check for updates in {csproj_filename}", LogLevel.Information)
1973
1974
  result = self.run_program_with_retry("dotnet", f"list {csproj_filename} package --outdated", folder, print_errors_as_information=True)
1974
1975
  for line in result[1].replace("\r", GeneralUtilities.empty_string).split("\n"):
1975
1976
  # Relevant output-lines are something like " > NJsonSchema 10.7.0 10.7.0 10.9.0"
1976
1977
  if ">" in line:
1977
1978
  package_name = line.replace(">", GeneralUtilities.empty_string).strip().split(" ")[0]
1978
1979
  if not (package_name in ignored_dependencies):
1979
- GeneralUtilities.write_message_to_stdout(f"Update package {package_name}...")
1980
+ self.log.log(f"Update package {package_name}...", LogLevel.Debug)
1980
1981
  self.run_program("dotnet", f"add {csproj_filename} package {package_name}", folder, print_errors_as_information=True)
1981
1982
 
1982
- @GeneralUtilities.check_arguments
1983
- def dotnet_package_is_available(self, package_name: str, package_version: str, source: str):
1984
- default_source_address = "nuget.org"
1985
- if source == default_source_address:
1986
- GeneralUtilities.write_message_to_stdout(f"Wait until package {package_name} v{package_version} is available on {source}.")
1987
- headers = {'Cache-Control': 'no-cache'}
1988
- r = requests.get(f"https://api.{default_source_address}/v3-flatcontainer/{package_name.lower()}/{package_version}/{package_name.lower()}.nuspec", timeout=5, headers=headers)
1989
- return r.status_code == 200
1990
- else:
1991
- raise ValueError(f"dotnet_package_is_available is not implemented yet for other sources than {default_source_address}.")
1992
-
1993
- @GeneralUtilities.check_arguments
1994
- def wait_until_dotnet_package_is_available(self, package_name: str, package_version: str, source: str):
1995
- return # TODO fix this
1996
- try: # pylint: disable=unreachable
1997
- while not self.dotnet_package_is_available(package_name, package_version, source):
1998
- time.sleep(30)
1999
- except:
2000
- pass
2001
-
2002
- @GeneralUtilities.check_arguments
2003
- def python_package_is_available(self, package_name: str, package_version: str, source: str):
2004
- default_source_address = "pypi.org"
2005
- if source == default_source_address:
2006
- GeneralUtilities.write_message_to_stdout(f"Wait until package {package_name} v{package_version} is available on {source}.")
2007
- headers = {'Cache-Control': 'no-cache'}
2008
- r = requests.get(f"https://{default_source_address}/pypi/{package_name}/{package_version}/json", timeout=5, headers=headers)
2009
- return r.status_code == 200
2010
- else:
2011
- raise ValueError(f"python_package_is_available is not implemented yet for other sources than {default_source_address}.")
2012
-
2013
- @GeneralUtilities.check_arguments
2014
- def wait_until_python_package_is_available(self, package_name: str, package_version: str, source: str):
2015
- return # TODO fix this
2016
- try: # pylint: disable=unreachable
2017
- while not self.python_package_is_available(package_name, package_version, source):
2018
- time.sleep(30)
2019
- except:
2020
- pass
2021
-
2022
1983
  @GeneralUtilities.check_arguments
2023
1984
  def create_deb_package(self, toolname: str, binary_folder: str, control_file_content: str, deb_output_folder: str, verbosity: int, permission_of_executable_file_as_octet_triple: int) -> None:
2024
1985
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ScriptCollection
3
- Version: 3.5.120
3
+ Version: 3.5.122
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
@@ -1,17 +1,17 @@
1
1
  ScriptCollection/CertificateUpdater.py,sha256=OAxrG21k_o3W3niOOGNSZzUPJlvolOWc1lRB2dMhc3g,9212
2
2
  ScriptCollection/Executables.py,sha256=ht-RZFu4g34Sr09b_L0c2QpKcjLWX-wFtKSMDMZYqsw,32266
3
- ScriptCollection/GeneralUtilities.py,sha256=hqAKRF99uu2RCSBgjX4qjYn3IlImwm6rehRvt8hbNFQ,46407
3
+ ScriptCollection/GeneralUtilities.py,sha256=j-8AgY-aK4MFgEg5vl2VcuahW-vCeHm3rcGbru117pM,47319
4
4
  ScriptCollection/ImageUpdater.py,sha256=lel1nevTN7fgdoCDE6Xg8YY6XPsZaOQiCIyWXbmVnh0,20882
5
5
  ScriptCollection/ProcessesRunner.py,sha256=3mu4ZxzZleQo0Op6o9EYTCFiJfb6kx5ov2YfZfT89mU,1395
6
6
  ScriptCollection/ProgramRunnerBase.py,sha256=2kMIAqdc65UjBAddOZkzy_aFx9h5roZ5a4bQNM6RV6Y,2480
7
7
  ScriptCollection/ProgramRunnerEpew.py,sha256=4pjEd0r9Fcz3TTDv0MdTSd5KkigYXcWUVI1X43regfU,6477
8
8
  ScriptCollection/ProgramRunnerPopen.py,sha256=BPY7-ZMIlqT7JOKz8qlB5c0laF2Js-ijzqk09GxZC48,3821
9
- ScriptCollection/SCLog.py,sha256=lTNw2Th5xvjf9V_pQw6DSsZPdeLAdqOelfZPW8fCC-s,3063
10
- ScriptCollection/ScriptCollectionCore.py,sha256=9kyDdGMDZNKR7j579zjUSt3vvTLHA-vPw4_Sd2YhWmc,130059
9
+ ScriptCollection/SCLog.py,sha256=6AIeza7KJ-9q13cNnbNTXgVlJqW6EAexowyni0hKTnQ,3450
10
+ ScriptCollection/ScriptCollectionCore.py,sha256=LKmQ3Yh6SKW_Z_BVFICbisdEkxaPCiTLOEhDEFxk0p0,127859
11
11
  ScriptCollection/TasksForCommonProjectStructure.py,sha256=4aEuIf89jbgKE4uMYm4DlPDe9Iu1Zujo8wPOzDld09w,234867
12
12
  ScriptCollection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
- scriptcollection-3.5.120.dist-info/METADATA,sha256=PbbVXi9-z9CwClIIuMdlLWkxve1wKz53TMNJYiLsdMA,7694
14
- scriptcollection-3.5.120.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
15
- scriptcollection-3.5.120.dist-info/entry_points.txt,sha256=3qMbfZEMhc_VTJj-bcLwB8AWcn9iXSB3l0AWpuu52Bs,3689
16
- scriptcollection-3.5.120.dist-info/top_level.txt,sha256=hY2hOVH0V0Ce51WB76zKkIWTUNwMUdHo4XDkR2vYVwg,17
17
- scriptcollection-3.5.120.dist-info/RECORD,,
13
+ scriptcollection-3.5.122.dist-info/METADATA,sha256=k388tO8xs4bpHohNp39DFKsTYg45SaFzOzLtYrkdd6Q,7694
14
+ scriptcollection-3.5.122.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
15
+ scriptcollection-3.5.122.dist-info/entry_points.txt,sha256=3qMbfZEMhc_VTJj-bcLwB8AWcn9iXSB3l0AWpuu52Bs,3689
16
+ scriptcollection-3.5.122.dist-info/top_level.txt,sha256=hY2hOVH0V0Ce51WB76zKkIWTUNwMUdHo4XDkR2vYVwg,17
17
+ scriptcollection-3.5.122.dist-info/RECORD,,