PKDevTools 0.13.20250221.238__tar.gz → 0.13.20250222.240__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/FunctionTimeouts.py +31 -1
- pkdevtools-0.13.20250222.240/PKDevTools/classes/__init__.py +1 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools.egg-info/PKG-INFO +2 -2
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKG-INFO +2 -2
- pkdevtools-0.13.20250221.238/PKDevTools/classes/__init__.py +0 -1
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/LICENSE +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/LICENSE.txt +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/README.txt +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/__init__.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/Archiver.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/ColorText.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/Committer.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/CookieHelper.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/DBManager.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/Environment.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/Fetcher.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/GmailReader.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/MarketHours.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/MenuOptions.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/NSEMarketStatus.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/OutputControls.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/PKDateUtilities.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/PKGitFolderDownloader.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/PKJoinableQueue.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/PKMultiProcessorClient.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/PKPickler.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/PKTimer.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/Pikey.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/Singleton.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/SuppressOutput.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/System.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/Telegram.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/UserSubscriptions.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/Utils.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/WorkflowManager.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/githubutilities.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/log.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/multiprocessing_logging.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/pubsub/__init__.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/pubsub/events.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/pubsub/publisher.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/pubsub/subscriber.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/squash.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/updater.py +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/release.md +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/requirements.txt +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools.egg-info/SOURCES.txt +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools.egg-info/dependency_links.txt +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools.egg-info/entry_points.txt +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools.egg-info/not-zip-safe +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools.egg-info/requires.txt +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools.egg-info/top_level.txt +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/README.md +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/setup.cfg +0 -0
- {pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/setup.py +0 -0
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/FunctionTimeouts.py
RENAMED
@@ -27,6 +27,8 @@ from __future__ import print_function
|
|
27
27
|
|
28
28
|
import sys
|
29
29
|
import threading
|
30
|
+
import time
|
31
|
+
import functools
|
30
32
|
from time import sleep
|
31
33
|
try:
|
32
34
|
import thread
|
@@ -65,4 +67,32 @@ def exit_after(s):
|
|
65
67
|
timer_mid.cancel()
|
66
68
|
return result
|
67
69
|
return inner
|
68
|
-
return outer
|
70
|
+
return outer
|
71
|
+
|
72
|
+
def ping(interval=60,instance=None):
|
73
|
+
"""Decorator to run a ping function in a background thread."""
|
74
|
+
def decorator(func):
|
75
|
+
@functools.wraps(func)
|
76
|
+
def wrapper(*args, **kwargs):
|
77
|
+
stop_event = threading.Event()
|
78
|
+
|
79
|
+
def send_ping():
|
80
|
+
while not stop_event.is_set():
|
81
|
+
time.sleep(interval)
|
82
|
+
if instance is not None and hasattr(instance, "send_event"):
|
83
|
+
instance.send_event("ping")
|
84
|
+
|
85
|
+
# Start ping thread
|
86
|
+
ping_thread = threading.Thread(target=send_ping, daemon=True)
|
87
|
+
ping_thread.start()
|
88
|
+
|
89
|
+
try:
|
90
|
+
return func(*args, **kwargs) # Run the main function
|
91
|
+
except (KeyboardInterrupt, SystemExit):
|
92
|
+
stop_event.set()
|
93
|
+
ping_thread.join()
|
94
|
+
finally:
|
95
|
+
stop_event.set() # Ensure ping thread stops even if func exits normally
|
96
|
+
|
97
|
+
return wrapper
|
98
|
+
return decorator
|
@@ -0,0 +1 @@
|
|
1
|
+
VERSION='0.13.20250222.240'
|
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: PKDevTools
|
3
|
-
Version: 0.13.
|
3
|
+
Version: 0.13.20250222.240
|
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.
|
6
|
+
Download-URL: https://github.com/pkjmesra/PKDevTools/archive/v0.13.20250222.240.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.2
|
2
2
|
Name: PKDevTools
|
3
|
-
Version: 0.13.
|
3
|
+
Version: 0.13.20250222.240
|
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.
|
6
|
+
Download-URL: https://github.com/pkjmesra/PKDevTools/archive/v0.13.20250222.240.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.20250221.238'
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/Archiver.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/ColorText.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/Committer.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/CookieHelper.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/DBManager.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/Environment.py
RENAMED
File without changes
|
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/GmailReader.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/MarketHours.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/MenuOptions.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/NSEMarketStatus.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/OutputControls.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/PKDateUtilities.py
RENAMED
File without changes
|
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/PKJoinableQueue.py
RENAMED
File without changes
|
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/PKPickler.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/Singleton.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/SuppressOutput.py
RENAMED
File without changes
|
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/Telegram.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/WorkflowManager.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/githubutilities.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/pubsub/__init__.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/pubsub/events.py
RENAMED
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools/classes/pubsub/publisher.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools.egg-info/SOURCES.txt
RENAMED
File without changes
|
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools.egg-info/entry_points.txt
RENAMED
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools.egg-info/not-zip-safe
RENAMED
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools.egg-info/requires.txt
RENAMED
File without changes
|
{pkdevtools-0.13.20250221.238 → pkdevtools-0.13.20250222.240}/PKDevTools.egg-info/top_level.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|