pkdevtools 0.13.20260406.332__tar.gz → 0.13.20260428.334__tar.gz

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.
Files changed (68) hide show
  1. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/Environment.py +8 -4
  2. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/OutputControls.py +7 -0
  3. pkdevtools-0.13.20260428.334/PKDevTools/classes/__init__.py +1 -0
  4. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKG-INFO +2 -2
  5. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/pkdevtools.egg-info/PKG-INFO +2 -2
  6. pkdevtools-0.13.20260406.332/PKDevTools/classes/__init__.py +0 -1
  7. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/LICENSE +0 -0
  8. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/LICENSE.txt +0 -0
  9. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/README.txt +0 -0
  10. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/__init__.py +0 -0
  11. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/Archiver.py +0 -0
  12. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/ColorText.py +0 -0
  13. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/Committer.py +0 -0
  14. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/CookieHelper.py +0 -0
  15. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/DBManager.py +0 -0
  16. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/DatabaseSyncChecker.py +0 -0
  17. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/DebugConfig.py +0 -0
  18. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/Fetcher.py +0 -0
  19. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/Fileinfo.py +0 -0
  20. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/FunctionTimeouts.py +0 -0
  21. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/GitHubCommitFetcher.py +0 -0
  22. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/GitHubSecrets.py +0 -0
  23. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/GmailReader.py +0 -0
  24. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/MarketHours.py +0 -0
  25. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/MenuOptions.py +0 -0
  26. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/NSEMarketStatus.py +0 -0
  27. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/PKBackupRestore.py +0 -0
  28. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/PKDataProvider.py +0 -0
  29. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/PKDateUtilities.py +0 -0
  30. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/PKGitFolderDownloader.py +0 -0
  31. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/PKJoinableQueue.py +0 -0
  32. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/PKMultiProcessorClient.py +0 -0
  33. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/PKPickler.py +0 -0
  34. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/PKScalableDataFetcher.py +0 -0
  35. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/PKTimer.py +0 -0
  36. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/Pikey.py +0 -0
  37. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/RepairDB.py +0 -0
  38. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/Singleton.py +0 -0
  39. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/SuppressOutput.py +0 -0
  40. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/System.py +0 -0
  41. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/Telegram.py +0 -0
  42. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/UserSubscriptions.py +0 -0
  43. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/Utils.py +0 -0
  44. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/WorkflowManager.py +0 -0
  45. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/dictModel.py +0 -0
  46. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/githubutilities.py +0 -0
  47. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/log.py +0 -0
  48. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/multiprocessing_logging.py +0 -0
  49. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/pubsub/__init__.py +0 -0
  50. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/pubsub/events.py +0 -0
  51. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/pubsub/publisher.py +0 -0
  52. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/pubsub/subscriber.py +0 -0
  53. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/squash.py +0 -0
  54. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/test_PKDataProvider.py +0 -0
  55. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/test_PKScalableDataFetcher.py +0 -0
  56. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/turso.py +0 -0
  57. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/classes/updater.py +0 -0
  58. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/release.md +0 -0
  59. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/PKDevTools/requirements.txt +0 -0
  60. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/README.md +0 -0
  61. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/pkdevtools.egg-info/SOURCES.txt +0 -0
  62. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/pkdevtools.egg-info/dependency_links.txt +0 -0
  63. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/pkdevtools.egg-info/entry_points.txt +0 -0
  64. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/pkdevtools.egg-info/not-zip-safe +0 -0
  65. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/pkdevtools.egg-info/requires.txt +0 -0
  66. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/pkdevtools.egg-info/top_level.txt +0 -0
  67. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/setup.cfg +0 -0
  68. {pkdevtools-0.13.20260406.332 → pkdevtools-0.13.20260428.334}/setup.py +0 -0
@@ -62,15 +62,19 @@ class PKEnvironment(metaclass=SingletonType):
62
62
  # Replace invalid characters with underscore
63
63
  sanitized = "".join([c if c.isalnum() else "_" for c in key])
64
64
  # Ensure it doesn't start with number
65
- if sanitized[0].isdigit():
65
+ if sanitized and sanitized[0].isdigit():
66
66
  sanitized = f"_{sanitized}"
67
67
  return sanitized
68
68
 
69
69
  def __getattr__(self, name):
70
- """Handle access to undefined attributes (for new keys added later)"""
70
+ """
71
+ Handle access to undefined attributes by returning empty string.
72
+ This prevents AttributeError and allows callers to safely check values.
73
+ """
71
74
  if name in self._allSecrets:
72
75
  return self._allSecrets[name]
73
- raise AttributeError(f"'{self.__class__.__name__}' has no attribute '{name}'")
76
+ default_logger().debug(f"Accessing undefined environment variable '{name}', returning empty string")
77
+ return "0"
74
78
 
75
79
  @property
76
80
  def secrets(self):
@@ -85,7 +89,7 @@ class PKEnvironment(metaclass=SingletonType):
85
89
  @property
86
90
  def allSecrets(self):
87
91
  """Property returning all secrets as dict"""
88
- return self._allSecrets
92
+ return self._allSecrets.copy()
89
93
 
90
94
  def refresh(self):
91
95
  """Reload secrets from file (for detecting new keys)"""
@@ -41,6 +41,7 @@ class OutputControls(SingletonMixin, metaclass=SingletonType):
41
41
  self.enableUserInput = enableUserInput or (
42
42
  "PKDevTools_Default_Log_Level" in os.environ.keys()
43
43
  )
44
+ self.env_keys = os.environ.keys()
44
45
  self.lines = 0
45
46
  self.timeit = "timeit" in os.environ.keys()
46
47
  if self.timeit:
@@ -61,6 +62,8 @@ class OutputControls(SingletonMixin, metaclass=SingletonType):
61
62
  flush: Literal[False] | bool = False,
62
63
  enableMultipleLineOutput=False,
63
64
  ) -> None:
65
+ if "RUNNER" in self.env_keys:
66
+ return
64
67
  # end = '\r' if (not enableMultipleLineOutput) else end
65
68
  # flush = True if (not enableMultipleLineOutput) else flush
66
69
  if self.timeit:
@@ -82,12 +85,16 @@ class OutputControls(SingletonMixin, metaclass=SingletonType):
82
85
  self.lines -= 1
83
86
 
84
87
  def moveCursorToStartPosition(self):
88
+ if "RUNNER" in self.env_keys:
89
+ return
85
90
  for _ in range(self.lines):
86
91
  self.moveCursorUpLines(1)
87
92
  self.lines -= 1
88
93
 
89
94
  def moveCursorUpLines(self, lines):
90
95
  try:
96
+ if "RUNNER" in self.env_keys:
97
+ return
91
98
  for _ in range(lines):
92
99
  if sys.stdout is not None:
93
100
  sys.stdout.write("\x1b[1A") # cursor up one line
@@ -0,0 +1 @@
1
+ VERSION='0.13.20260428.334'
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pkdevtools
3
- Version: 0.13.20260406.332
3
+ Version: 0.13.20260428.334
4
4
  Summary: A general day-to-day toolset for PKScreener repos
5
5
  Home-page: https://github.com/pkjmesra/PKDevTools
6
- Download-URL: https://github.com/pkjmesra/PKDevTools/archive/v0.13.20260406.332.zip
6
+ Download-URL: https://github.com/pkjmesra/PKDevTools/archive/v0.13.20260428.334.zip
7
7
  Author: pkjmesra
8
8
  Author-email: pkjmesra@gmail.com
9
9
  License: OSI Approved (MIT)
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pkdevtools
3
- Version: 0.13.20260406.332
3
+ Version: 0.13.20260428.334
4
4
  Summary: A general day-to-day toolset for PKScreener repos
5
5
  Home-page: https://github.com/pkjmesra/PKDevTools
6
- Download-URL: https://github.com/pkjmesra/PKDevTools/archive/v0.13.20260406.332.zip
6
+ Download-URL: https://github.com/pkjmesra/PKDevTools/archive/v0.13.20260428.334.zip
7
7
  Author: pkjmesra
8
8
  Author-email: pkjmesra@gmail.com
9
9
  License: OSI Approved (MIT)
@@ -1 +0,0 @@
1
- VERSION='0.13.20260406.332'