PKDevTools 0.13.20250214.234__cp310-cp310-macosx_10_9_x86_64.whl → 0.13.20250218.236__cp310-cp310-macosx_10_9_x86_64.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/DBManager.py +122 -3
  2. PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/__init__.py +1 -0
  3. {PKDevTools-0.13.20250214.234.dist-info → PKDevTools-0.13.20250218.236.dist-info}/METADATA +2 -2
  4. PKDevTools-0.13.20250218.236.dist-info/RECORD +48 -0
  5. PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/__init__.py +0 -1
  6. PKDevTools-0.13.20250214.234.dist-info/RECORD +0 -48
  7. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/LICENSE.txt +0 -0
  8. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/README.txt +0 -0
  9. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/__init__.py +0 -0
  10. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/Archiver.py +0 -0
  11. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/ColorText.py +0 -0
  12. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/Committer.py +0 -0
  13. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/CookieHelper.py +0 -0
  14. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/Environment.py +0 -0
  15. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/Fetcher.py +0 -0
  16. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/FunctionTimeouts.py +0 -0
  17. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/GmailReader.py +0 -0
  18. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/MarketHours.py +0 -0
  19. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/MenuOptions.py +0 -0
  20. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/NSEMarketStatus.py +0 -0
  21. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/OutputControls.py +0 -0
  22. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/PKDateUtilities.py +0 -0
  23. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/PKGitFolderDownloader.py +0 -0
  24. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/PKJoinableQueue.py +0 -0
  25. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/PKMultiProcessorClient.py +0 -0
  26. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/PKPickler.py +0 -0
  27. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/PKTimer.py +0 -0
  28. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/Pikey.py +0 -0
  29. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/Singleton.py +0 -0
  30. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/SuppressOutput.py +0 -0
  31. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/System.py +0 -0
  32. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/Telegram.py +0 -0
  33. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/UserSubscriptions.py +0 -0
  34. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/Utils.py +0 -0
  35. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/WorkflowManager.py +0 -0
  36. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/githubutilities.py +0 -0
  37. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/log.py +0 -0
  38. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/multiprocessing_logging.py +0 -0
  39. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/pubsub/__init__.py +0 -0
  40. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/pubsub/events.py +0 -0
  41. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/pubsub/publisher.py +0 -0
  42. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/pubsub/subscriber.py +0 -0
  43. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/squash.py +0 -0
  44. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/classes/updater.py +0 -0
  45. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/release.md +0 -0
  46. {PKDevTools-0.13.20250214.234.data → PKDevTools-0.13.20250218.236.data}/purelib/PKDevTools/requirements.txt +0 -0
  47. {PKDevTools-0.13.20250214.234.dist-info → PKDevTools-0.13.20250218.236.dist-info}/LICENSE +0 -0
  48. {PKDevTools-0.13.20250214.234.dist-info → PKDevTools-0.13.20250218.236.dist-info}/WHEEL +0 -0
  49. {PKDevTools-0.13.20250214.234.dist-info → PKDevTools-0.13.20250218.236.dist-info}/entry_points.txt +0 -0
  50. {PKDevTools-0.13.20250214.234.dist-info → PKDevTools-0.13.20250218.236.dist-info}/top_level.txt +0 -0
@@ -88,7 +88,14 @@ class PKUser:
88
88
  user.subscriptionmodel= row[7] if len(row) > 7 else None
89
89
  user.lastotp= row[8] if len(row) > 8 else None
90
90
  return user
91
-
91
+
92
+ def payingUserFromDBRecord(row):
93
+ user = PKUser()
94
+ user.userid= row[0] if len(row) > 0 else None
95
+ user.subscriptionmodel = row[1] if len(row) > 1 else None
96
+ user.balance= row[2] if len(row) > 2 else None
97
+ return user
98
+
92
99
  def userFromAlertsRecord(row,user=None):
93
100
  if user is None:
94
101
  user = PKUser()
@@ -338,7 +345,7 @@ class DBManager:
338
345
  self.conn.close()
339
346
  self.conn = None
340
347
 
341
- def getUsers(self,fieldName=None):
348
+ def getUsers(self,fieldName=None,where=None):
342
349
  """
343
350
  Returns all active PKUser instances in the database or an empty list if none is found.
344
351
  Returns only the fieldName if requested.
@@ -346,7 +353,7 @@ class DBManager:
346
353
  try:
347
354
  users = []
348
355
  cursor = self.connection() #.cursor()
349
- records = cursor.execute(f"SELECT {'*' if fieldName is None else fieldName} FROM users") #.fetchall()
356
+ records = cursor.execute(f"SELECT {'*' if fieldName is None else fieldName} FROM users {where if where is not None else ''}") #.fetchall()
350
357
  for row in records.rows:
351
358
  users.append(PKUser.userFromDBRecord(row))
352
359
  # cursor.close()
@@ -555,3 +562,115 @@ class DBManager:
555
562
  self.conn.close()
556
563
  self.conn = None
557
564
  return success1 and success2
565
+
566
+ def removeScannerJob(self,userID, scanId):
567
+ """
568
+ Removes scanId from scannerJobs column in alertsubscriptions
569
+
570
+ Removes userID from the users column in scannerJobs
571
+
572
+ Deletes the row in scannerJobs if no more userIds are left
573
+ """
574
+ try:
575
+ success = False
576
+ # Step 1: Remove job from user's alertsubscriptions table
577
+ query_alertsubscriptions = """
578
+ UPDATE alertsubscriptions
579
+ SET scannerJobs =
580
+ CASE
581
+ WHEN scannerJobs = ? THEN '' -- If the only job, set to empty string
582
+ ELSE
583
+ TRIM(
584
+ REPLACE(
585
+ REPLACE(
586
+ ';' || scannerJobs || ';', -- Add extra delimiters to prevent partial replacements
587
+ ';' || ? || ';',
588
+ ';'
589
+ ),
590
+ ';;', ';' -- Fix extra semicolons
591
+ ),
592
+ ';'
593
+ ) -- Trim leading/trailing semicolon
594
+ END
595
+ WHERE userId = ?;
596
+ """
597
+ result = self.connection().execute(query_alertsubscriptions, (scanId,scanId,userID))
598
+ if result.rows_affected > 0:
599
+ default_logger().debug(f"User: {userID} removed {scanId} from alertsubscriptions!")
600
+ success = True
601
+ if success:
602
+ # Step 2: Remove userId from scannerJobs table
603
+ query_scanner_jobs = """
604
+ UPDATE scannerJobs
605
+ SET users =
606
+ CASE
607
+ WHEN users = ? THEN '' -- If the only user, set to empty string
608
+ ELSE
609
+ TRIM(
610
+ REPLACE(
611
+ REPLACE(
612
+ ';' || users || ';',
613
+ ';' || ? || ';',
614
+ ';'
615
+ ),
616
+ ';;', ';'
617
+ ),
618
+ ';'
619
+ ) -- Trim leading/trailing semicolon
620
+ END
621
+ WHERE scannerId = ?;
622
+ """
623
+ result = self.connection().execute(query_scanner_jobs, (str(userID),str(userID),scanId))
624
+ if result.rows_affected > 0:
625
+ default_logger().debug(f"User: {userID} removed {scanId} from scannerJobs!")
626
+ success = True
627
+ if success:
628
+ # Step 3: Delete row from scannerJobs if users column is empty
629
+ query_delete_empty = """
630
+ DELETE FROM scannerJobs WHERE scannerId = ? AND (users IS NULL OR users = '');
631
+ """
632
+ result = self.connection().execute(query_delete_empty, (scanId,))
633
+ if result.rows_affected > 0:
634
+ default_logger().debug(f"{scanId} deleted from scannerJobs by User: {userID} !")
635
+ success = True
636
+ except Exception as e: # pragma: no cover
637
+ print(f"Could not removeScannerJob: {scanId} for UserID: {userID}\n{e}")
638
+ default_logger().debug(e, exc_info=True)
639
+ pass
640
+ finally:
641
+ if self.conn is not None:
642
+ self.conn.close()
643
+ self.conn = None
644
+ return success
645
+
646
+ def getPayingUsers(self):
647
+ """
648
+ Returns all active PKUser instances in the database who either have a subscription model
649
+ or have a alerts balance.
650
+ """
651
+ try:
652
+ users = []
653
+ cursor = self.connection() #.cursor()
654
+ query_paying_users = """
655
+ SELECT DISTINCT u.userId, u.subscriptionmodel, a.balance
656
+ FROM users u
657
+ LEFT JOIN alertsubscriptions a ON u.userId = a.userId
658
+ WHERE COALESCE(a.balance, 0) > 0 OR (u.subscriptionmodel != '' and u.subscriptionmodel != '0');
659
+
660
+ """
661
+ records = cursor.execute(query_paying_users)
662
+ for row in records.rows:
663
+ users.append(PKUser.payingUserFromDBRecord(row))
664
+ # cursor.close()
665
+ if len(records.columns) > 0 and len(records.rows) <= 0:
666
+ # Let's tell the user
667
+ default_logger().debug(f"Paying Users not found!")
668
+ except Exception as e: # pragma: no cover
669
+ print(f"Could not getPayingUsers\n{e}")
670
+ default_logger().debug(e, exc_info=True)
671
+ pass
672
+ finally:
673
+ if self.conn is not None:
674
+ self.conn.close()
675
+ self.conn = None
676
+ return users
@@ -0,0 +1 @@
1
+ VERSION='0.13.20250218.236'
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PKDevTools
3
- Version: 0.13.20250214.234
3
+ Version: 0.13.20250218.236
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.20250214.234.zip
6
+ Download-URL: https://github.com/pkjmesra/PKDevTools/archive/v0.13.20250218.236.zip
7
7
  Author: pkjmesra
8
8
  Author-email: pkjmesra@gmail.com
9
9
  License: OSI Approved (MIT)
@@ -0,0 +1,48 @@
1
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/LICENSE.txt,sha256=5kDneOnQ4s9IktVsbcPcs6o0GhW7Rw_ySDac6TA2Cw4,1065
2
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/README.txt,sha256=xw2oGRJ1M9lmJqEYw3VBh7ZjlNx7hIZw6fcDzC0shu8,4233
3
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/__init__.py,sha256=QyaxuW4OGDxF6KXLC5avvZyLhfMt9KnKAb4m9j1XUls,1152
4
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/release.md,sha256=NcfNPeUU9uaz8mRiRZRqPWkSpwoHVShdrXJqOJdKbnQ,1729
5
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/requirements.txt,sha256=9jmqyzA5fSuYakmU3g3jNrUvSc7sM0tTKt4z9yVGNTw,369
6
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/Archiver.py,sha256=0D2wMp3a913QOsPXc0K_frtvpldDU7uIsP8DRAvaIQ0,6301
7
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/ColorText.py,sha256=sIsXd75jMtA44mdZQd6EO1MdFYQaH2IYukLEH9fZuEw,8585
8
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/Committer.py,sha256=cHsIe9DonzQULOZwrXGuodatFSDNm5UiQafjVlWn-BE,4536
9
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/CookieHelper.py,sha256=PxW1_VanZ7AY7o7jMYxISBj9yhs69L0Sd8wvXYCRXAo,6212
10
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/DBManager.py,sha256=RQCDrZE0hfWz_mtnunqqntpzNAkqxvpk_5G9qPidqJ0,30642
11
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/Environment.py,sha256=hvQwkjz9QunX0-3Dcuw5E76fjaejmHvrmiAOME9TqE4,1978
12
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/Fetcher.py,sha256=W-yCSSujFie58lYAZ4HVo1gZey9R3Qpe3JL16F-eo9I,9011
13
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/FunctionTimeouts.py,sha256=xbxp-txDqiQOzVjazbrEPITMGvUIXQ0HqfFh8vYr4WU,2541
14
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/GmailReader.py,sha256=brgcUCfk-8DApUWuqgqIVp5sC5G_pq7iONEPV3kYbCw,7426
15
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/MarketHours.py,sha256=2aRzd8JfCmxc3UryvrpUS7DvHuctpz_U-E0nv72gEaY,2159
16
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/MenuOptions.py,sha256=MC_OblDzSMCENVEZCQQX4whmY3vQAhE2oBZOL69JzyA,11606
17
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/NSEMarketStatus.py,sha256=fpWLKod5HxgJIilu1G5a7FcSwmuGq1DmwBx2k-MDHs0,5552
18
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/OutputControls.py,sha256=cXI8l2ZIJAZbTbVbG7wu7iNgMBFfs51XapCS27lNjmU,3472
19
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/PKDateUtilities.py,sha256=QIjCGyTMkax5mv0qGC9gjLxaz4zTFX2oRqDhXAbQ8Gk,17873
20
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/PKGitFolderDownloader.py,sha256=RM7ZQCERKl_ttlAoo5Nt9FKuWWUirQxCxL1thZ12_hE,2936
21
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/PKJoinableQueue.py,sha256=8eWkWiOaqGCAegV30-bgpPsfmhVVpuxLHdyrJNY3_OY,5122
22
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/PKMultiProcessorClient.py,sha256=Y5t_f14z6ygzPUHDH6YJIqLrm9s7TFk5ayLxK8MeTgw,13214
23
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/PKPickler.py,sha256=M2F2_Z7XAmo7qfzOEiVLq3RzpldfU8Y-MfMPrMZbNGU,14082
24
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/PKTimer.py,sha256=Y0jmvrXKLkwNH3j5qIwpL_th-Nf26oCHnxsZ7_AuV8U,3345
25
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/Pikey.py,sha256=wDiOUIRSxYOIO7GGUw1eGrbDuVvJ-YAU6_dfQWRp2Fk,2744
26
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/Singleton.py,sha256=tBIFCgVKqs5-K6w_wx0FNNT5aks1QmOLjE_xTMHbb10,4432
27
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/SuppressOutput.py,sha256=yAsdxsVJCbVi-irsxa_ClY7JutbRU_eAEMhw4NW4QdE,1951
28
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/System.py,sha256=tMNnGUQdhUjkysJ2b9EI8dy8iXdaHkshRXpeKZlyPf8,4005
29
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/Telegram.py,sha256=_BnnsgUZL1pYZdcJensbUcvW6bi_tqvt6miTQf6OCY8,15505
30
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/UserSubscriptions.py,sha256=P52b-a-UzFWKpQsT4zQFyfKcXhAZS6uyQ2yeIUqHWeQ,11067
31
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/Utils.py,sha256=P_kJnTgMK6fA6SwIvNLThvHxYVcazhD5Zo5WL_kpC3Y,24264
32
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/WorkflowManager.py,sha256=rDamQR0fF-YSzOQTjMJnksJ6dxKs-PazW6fVFlAQ_Sk,9759
33
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/__init__.py,sha256=DpzW3Iz2oAF9dbp-LZmWra4eBwu2dxX-4AgKLGWV9zE,28
34
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/githubutilities.py,sha256=UNSJzx8Ybn_x6zaSk497KQsMyDX7MYnQjjV-F0KP_Z0,3650
35
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/log.py,sha256=r-KBSGYXJ67Uzw51cNisB3x3uB5mlQWSOO_E6c_m1F8,15616
36
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/multiprocessing_logging.py,sha256=8W4fHL1Kstp2FIML6N6ghT--8HE4bmak3sZ1fsWF52U,7212
37
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/squash.py,sha256=iZ4MsOW_evD4VoWjO9pEHd2gWeswthM7uWSgVRpFvDw,2782
38
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/updater.py,sha256=NQ46ulqswdXkjljFwPiwufgGoCZB-Fc7DdYYh9LyS-0,4709
39
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/pubsub/__init__.py,sha256=QyaxuW4OGDxF6KXLC5avvZyLhfMt9KnKAb4m9j1XUls,1152
40
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/pubsub/events.py,sha256=hjkGmZF51WmR9dQ81vZPAoiVuCKGwNABvYbcFKB3FKA,1236
41
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/pubsub/publisher.py,sha256=08wlR55GRCtLAt4uSuz78XqS6_2O70FGTFJmnvOFnko,1513
42
+ PKDevTools-0.13.20250218.236.data/purelib/PKDevTools/classes/pubsub/subscriber.py,sha256=ucDZbJal3iUzEfiA6UlcZIOKVtN5YvYRISiqWJ4753w,2407
43
+ PKDevTools-0.13.20250218.236.dist-info/LICENSE,sha256=5kDneOnQ4s9IktVsbcPcs6o0GhW7Rw_ySDac6TA2Cw4,1065
44
+ PKDevTools-0.13.20250218.236.dist-info/METADATA,sha256=uWXCApxFM7myB-TGl1Usyn8ZKjZCHMAnfY8wXX1SE24,5776
45
+ PKDevTools-0.13.20250218.236.dist-info/WHEEL,sha256=qW9xlwewyQBufEUzmM-8CIjZ7fR659LOSrcgouui4Z4,111
46
+ PKDevTools-0.13.20250218.236.dist-info/entry_points.txt,sha256=itdAnPuy8DO45uGuAEms0UJcoa2nGJVAUwm7NIL4-Yw,353
47
+ PKDevTools-0.13.20250218.236.dist-info/top_level.txt,sha256=WTig-LzPiEcyuyhbNRhJz1mX_RB-fojodPK48k3NmPg,11
48
+ PKDevTools-0.13.20250218.236.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- VERSION='0.13.20250214.234'
@@ -1,48 +0,0 @@
1
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/LICENSE.txt,sha256=5kDneOnQ4s9IktVsbcPcs6o0GhW7Rw_ySDac6TA2Cw4,1065
2
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/README.txt,sha256=xw2oGRJ1M9lmJqEYw3VBh7ZjlNx7hIZw6fcDzC0shu8,4233
3
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/__init__.py,sha256=QyaxuW4OGDxF6KXLC5avvZyLhfMt9KnKAb4m9j1XUls,1152
4
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/release.md,sha256=NcfNPeUU9uaz8mRiRZRqPWkSpwoHVShdrXJqOJdKbnQ,1729
5
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/requirements.txt,sha256=9jmqyzA5fSuYakmU3g3jNrUvSc7sM0tTKt4z9yVGNTw,369
6
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/Archiver.py,sha256=0D2wMp3a913QOsPXc0K_frtvpldDU7uIsP8DRAvaIQ0,6301
7
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/ColorText.py,sha256=sIsXd75jMtA44mdZQd6EO1MdFYQaH2IYukLEH9fZuEw,8585
8
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/Committer.py,sha256=cHsIe9DonzQULOZwrXGuodatFSDNm5UiQafjVlWn-BE,4536
9
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/CookieHelper.py,sha256=PxW1_VanZ7AY7o7jMYxISBj9yhs69L0Sd8wvXYCRXAo,6212
10
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/DBManager.py,sha256=aAkRZWvU6q8ngLuffy7jY4s9XCvpipjziH2qy6iiz3Y,25301
11
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/Environment.py,sha256=hvQwkjz9QunX0-3Dcuw5E76fjaejmHvrmiAOME9TqE4,1978
12
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/Fetcher.py,sha256=W-yCSSujFie58lYAZ4HVo1gZey9R3Qpe3JL16F-eo9I,9011
13
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/FunctionTimeouts.py,sha256=xbxp-txDqiQOzVjazbrEPITMGvUIXQ0HqfFh8vYr4WU,2541
14
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/GmailReader.py,sha256=brgcUCfk-8DApUWuqgqIVp5sC5G_pq7iONEPV3kYbCw,7426
15
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/MarketHours.py,sha256=2aRzd8JfCmxc3UryvrpUS7DvHuctpz_U-E0nv72gEaY,2159
16
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/MenuOptions.py,sha256=MC_OblDzSMCENVEZCQQX4whmY3vQAhE2oBZOL69JzyA,11606
17
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/NSEMarketStatus.py,sha256=fpWLKod5HxgJIilu1G5a7FcSwmuGq1DmwBx2k-MDHs0,5552
18
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/OutputControls.py,sha256=cXI8l2ZIJAZbTbVbG7wu7iNgMBFfs51XapCS27lNjmU,3472
19
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/PKDateUtilities.py,sha256=QIjCGyTMkax5mv0qGC9gjLxaz4zTFX2oRqDhXAbQ8Gk,17873
20
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/PKGitFolderDownloader.py,sha256=RM7ZQCERKl_ttlAoo5Nt9FKuWWUirQxCxL1thZ12_hE,2936
21
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/PKJoinableQueue.py,sha256=8eWkWiOaqGCAegV30-bgpPsfmhVVpuxLHdyrJNY3_OY,5122
22
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/PKMultiProcessorClient.py,sha256=Y5t_f14z6ygzPUHDH6YJIqLrm9s7TFk5ayLxK8MeTgw,13214
23
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/PKPickler.py,sha256=M2F2_Z7XAmo7qfzOEiVLq3RzpldfU8Y-MfMPrMZbNGU,14082
24
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/PKTimer.py,sha256=Y0jmvrXKLkwNH3j5qIwpL_th-Nf26oCHnxsZ7_AuV8U,3345
25
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/Pikey.py,sha256=wDiOUIRSxYOIO7GGUw1eGrbDuVvJ-YAU6_dfQWRp2Fk,2744
26
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/Singleton.py,sha256=tBIFCgVKqs5-K6w_wx0FNNT5aks1QmOLjE_xTMHbb10,4432
27
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/SuppressOutput.py,sha256=yAsdxsVJCbVi-irsxa_ClY7JutbRU_eAEMhw4NW4QdE,1951
28
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/System.py,sha256=tMNnGUQdhUjkysJ2b9EI8dy8iXdaHkshRXpeKZlyPf8,4005
29
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/Telegram.py,sha256=_BnnsgUZL1pYZdcJensbUcvW6bi_tqvt6miTQf6OCY8,15505
30
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/UserSubscriptions.py,sha256=P52b-a-UzFWKpQsT4zQFyfKcXhAZS6uyQ2yeIUqHWeQ,11067
31
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/Utils.py,sha256=P_kJnTgMK6fA6SwIvNLThvHxYVcazhD5Zo5WL_kpC3Y,24264
32
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/WorkflowManager.py,sha256=rDamQR0fF-YSzOQTjMJnksJ6dxKs-PazW6fVFlAQ_Sk,9759
33
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/__init__.py,sha256=j_LpS1WuZSxHWhLlpkBTMGWisE_BZAPAjGtiZ3ZrH-Y,28
34
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/githubutilities.py,sha256=UNSJzx8Ybn_x6zaSk497KQsMyDX7MYnQjjV-F0KP_Z0,3650
35
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/log.py,sha256=r-KBSGYXJ67Uzw51cNisB3x3uB5mlQWSOO_E6c_m1F8,15616
36
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/multiprocessing_logging.py,sha256=8W4fHL1Kstp2FIML6N6ghT--8HE4bmak3sZ1fsWF52U,7212
37
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/squash.py,sha256=iZ4MsOW_evD4VoWjO9pEHd2gWeswthM7uWSgVRpFvDw,2782
38
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/updater.py,sha256=NQ46ulqswdXkjljFwPiwufgGoCZB-Fc7DdYYh9LyS-0,4709
39
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/pubsub/__init__.py,sha256=QyaxuW4OGDxF6KXLC5avvZyLhfMt9KnKAb4m9j1XUls,1152
40
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/pubsub/events.py,sha256=hjkGmZF51WmR9dQ81vZPAoiVuCKGwNABvYbcFKB3FKA,1236
41
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/pubsub/publisher.py,sha256=08wlR55GRCtLAt4uSuz78XqS6_2O70FGTFJmnvOFnko,1513
42
- PKDevTools-0.13.20250214.234.data/purelib/PKDevTools/classes/pubsub/subscriber.py,sha256=ucDZbJal3iUzEfiA6UlcZIOKVtN5YvYRISiqWJ4753w,2407
43
- PKDevTools-0.13.20250214.234.dist-info/LICENSE,sha256=5kDneOnQ4s9IktVsbcPcs6o0GhW7Rw_ySDac6TA2Cw4,1065
44
- PKDevTools-0.13.20250214.234.dist-info/METADATA,sha256=nYnXSqJVUw_9LjjhHynCZQrT4_2X3UTBLyh5LEOt988,5776
45
- PKDevTools-0.13.20250214.234.dist-info/WHEEL,sha256=qW9xlwewyQBufEUzmM-8CIjZ7fR659LOSrcgouui4Z4,111
46
- PKDevTools-0.13.20250214.234.dist-info/entry_points.txt,sha256=itdAnPuy8DO45uGuAEms0UJcoa2nGJVAUwm7NIL4-Yw,353
47
- PKDevTools-0.13.20250214.234.dist-info/top_level.txt,sha256=WTig-LzPiEcyuyhbNRhJz1mX_RB-fojodPK48k3NmPg,11
48
- PKDevTools-0.13.20250214.234.dist-info/RECORD,,