PKDevTools 0.13.20250208.218__cp312-cp312-win_amd64.whl → 0.13.20250208.220__cp312-cp312-win_amd64.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/DBManager.py +117 -0
  2. PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/__init__.py +1 -0
  3. {PKDevTools-0.13.20250208.218.dist-info → PKDevTools-0.13.20250208.220.dist-info}/METADATA +2 -2
  4. PKDevTools-0.13.20250208.220.dist-info/RECORD +44 -0
  5. PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/__init__.py +0 -1
  6. PKDevTools-0.13.20250208.218.dist-info/RECORD +0 -44
  7. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/LICENSE.txt +0 -0
  8. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/README.txt +0 -0
  9. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/__init__.py +0 -0
  10. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/Archiver.py +0 -0
  11. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/ColorText.py +0 -0
  12. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/Committer.py +0 -0
  13. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/CookieHelper.py +0 -0
  14. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/Environment.py +0 -0
  15. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/Fetcher.py +0 -0
  16. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/FunctionTimeouts.py +0 -0
  17. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/GmailReader.py +0 -0
  18. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/MarketHours.py +0 -0
  19. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/MenuOptions.py +0 -0
  20. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/NSEMarketStatus.py +0 -0
  21. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/OutputControls.py +0 -0
  22. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/PKDateUtilities.py +0 -0
  23. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/PKGitFolderDownloader.py +0 -0
  24. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/PKJoinableQueue.py +0 -0
  25. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/PKMultiProcessorClient.py +0 -0
  26. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/PKPickler.py +0 -0
  27. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/PKTimer.py +0 -0
  28. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/Pikey.py +0 -0
  29. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/Singleton.py +0 -0
  30. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/SuppressOutput.py +0 -0
  31. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/System.py +0 -0
  32. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/Telegram.py +0 -0
  33. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/UserSubscriptions.py +0 -0
  34. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/Utils.py +0 -0
  35. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/WorkflowManager.py +0 -0
  36. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/githubutilities.py +0 -0
  37. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/log.py +0 -0
  38. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/multiprocessing_logging.py +0 -0
  39. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/squash.py +0 -0
  40. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/classes/updater.py +0 -0
  41. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/release.md +0 -0
  42. {PKDevTools-0.13.20250208.218.data → PKDevTools-0.13.20250208.220.data}/purelib/PKDevTools/requirements.txt +0 -0
  43. {PKDevTools-0.13.20250208.218.dist-info → PKDevTools-0.13.20250208.220.dist-info}/LICENSE +0 -0
  44. {PKDevTools-0.13.20250208.218.dist-info → PKDevTools-0.13.20250208.220.dist-info}/WHEEL +0 -0
  45. {PKDevTools-0.13.20250208.218.dist-info → PKDevTools-0.13.20250208.220.dist-info}/entry_points.txt +0 -0
  46. {PKDevTools-0.13.20250208.218.dist-info → PKDevTools-0.13.20250208.220.dist-info}/top_level.txt +0 -0
@@ -410,3 +410,120 @@ class DBManager:
410
410
  self.conn.close()
411
411
  self.conn = None
412
412
  return scanners[0].userIds if len(scanners) > 0 else []
413
+
414
+ def updateAlertSubscriptionModel(self,userID,charge:float,scanId:str):
415
+ try:
416
+ success = False
417
+ result = self.connection().execute("""
418
+ UPDATE alertsubscriptions
419
+ SET
420
+ balance = balance - ?,
421
+ scannerJobs = scannerJobs || ';' || ?
422
+ WHERE userId = ?;
423
+ """, (charge, scanId, userID))
424
+ if result.rows_affected > 0:
425
+ default_logger().debug(f"User: {userID} updated with balance and scannerJobs!")
426
+ success = self.topUpScannerJobs(scanId,userID)
427
+ except Exception as e: # pragma: no cover
428
+ print(f"Could not updateAlertSubscriptionModel UserID: {userID}\n{e}")
429
+ default_logger().debug(e, exc_info=True)
430
+ pass
431
+ finally:
432
+ if self.conn is not None:
433
+ self.conn.close()
434
+ self.conn = None
435
+ return success
436
+
437
+ def topUpAlertSubscriptionBalance(self,userID,topup:float):
438
+ """
439
+ Handles a new user insertion as well as update.
440
+
441
+ If UserID does not exist, a new row is inserted with the given Balance.
442
+ If UserID already exists, only the Balance is updated by adding the new amount
443
+ (Balance + excluded.Balance).
444
+ """
445
+ try:
446
+ success = False
447
+ result = self.connection().execute("""
448
+ INSERT INTO alertsubscriptions (userId, balance)
449
+ VALUES (?, ?)
450
+ ON CONFLICT(userId) DO UPDATE
451
+ SET balance = balance + excluded.balance;
452
+ """, (userID,topup))
453
+ if result.rows_affected > 0:
454
+ default_logger().debug(f"User: {userID} topped up with balance !")
455
+ success = True
456
+ except Exception as e: # pragma: no cover
457
+ print(f"Could not topUpAlertSubscriptionBalance UserID: {userID}\n{e}")
458
+ default_logger().debug(e, exc_info=True)
459
+ pass
460
+ finally:
461
+ if self.conn is not None:
462
+ self.conn.close()
463
+ self.conn = None
464
+ return success
465
+
466
+ def topUpScannerJobs(self,scanId,userID):
467
+ """
468
+ Handles a new user insertion as well as update for a given scanId.
469
+
470
+ If scanId does not exist, a new row is inserted with the given userId.
471
+ If scanId already exists, only the users is updated by adding the new userId
472
+ """
473
+ try:
474
+ success = False
475
+ result = self.connection().execute("""
476
+ INSERT INTO scannerjobs (scannerId, users)
477
+ VALUES (?, ?)
478
+ ON CONFLICT(scannerId) DO UPDATE
479
+ SET users = users || ';' || excluded.users;
480
+ """, (scanId,userID))
481
+ if result.rows_affected > 0:
482
+ default_logger().debug(f"User: {userID} added to scanId !")
483
+ success = True
484
+ except Exception as e: # pragma: no cover
485
+ print(f"Could not topUpScannerJobs UserID: {userID}\n{e}")
486
+ default_logger().debug(e, exc_info=True)
487
+ pass
488
+ finally:
489
+ if self.conn is not None:
490
+ self.conn.close()
491
+ self.conn = None
492
+ return success
493
+
494
+ def resetScannerJobs(self):
495
+ """
496
+ Truncates scannerJobs and clears all jobs from users' alert subscriptions
497
+ """
498
+ try:
499
+ success1 = False
500
+ result = self.connection().execute("DELETE from scannerjobs")
501
+ if result.rows_affected > 0:
502
+ default_logger().debug(f"scannerJobs truncated !")
503
+ success1 = True
504
+ except Exception as e: # pragma: no cover
505
+ print(f"Could not deleteScannerJobs \n{e}")
506
+ default_logger().debug(e, exc_info=True)
507
+ pass
508
+ finally:
509
+ if self.conn is not None:
510
+ self.conn.close()
511
+ self.conn = None
512
+ try:
513
+ success2 = False
514
+ result = self.connection().execute("""
515
+ UPDATE alertsubscriptions
516
+ SET scannerJobs = ''
517
+ """)
518
+ if result.rows_affected > 0:
519
+ default_logger().debug(f"alertsubscriptions updated with cleaned up scannerJobs!")
520
+ success2 = True
521
+ except Exception as e: # pragma: no cover
522
+ print(f"Could not deleteScannerJobs \n{e}")
523
+ default_logger().debug(e, exc_info=True)
524
+ pass
525
+ finally:
526
+ if self.conn is not None:
527
+ self.conn.close()
528
+ self.conn = None
529
+ return success1 and success2
@@ -0,0 +1 @@
1
+ VERSION='0.13.20250208.220'
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: PKDevTools
3
- Version: 0.13.20250208.218
3
+ Version: 0.13.20250208.220
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.20250208.218.zip
6
+ Download-URL: https://github.com/pkjmesra/PKDevTools/archive/v0.13.20250208.220.zip
7
7
  Author: pkjmesra
8
8
  Author-email: pkjmesra@gmail.com
9
9
  License: OSI Approved (MIT)
@@ -0,0 +1,44 @@
1
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/LICENSE.txt,sha256=wrl88eUZgDW6osq1UZIU4s4uZCgqGcLa46dS_sMVLik,1086
2
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/README.txt,sha256=9wsN1KwyM_gfEN7__AHy6iS-OMjN7dId3E2egalqIpw,4290
3
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/__init__.py,sha256=IFxLtOl_ylBuZt4nqrHkgZg4uuyeuLjHRaBgTuZey8U,1176
4
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/release.md,sha256=FfltoyIaP9mdbGYgPFnZyuI_rSjkuKn4NoyO4jNCqtI,1767
5
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/requirements.txt,sha256=771vBujug-uuZ5EiZhV9PHLtckaeDaMERaEGZPYzglY,384
6
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/Archiver.py,sha256=lT-ybDUYRBQ26WkCy53yf5f2iV6RJEtaiB9Lu8Lb0Og,6469
7
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/ColorText.py,sha256=UDqA229ujXwGDB1PkkMT-ZTu6VIWgZyIaq4XXPjFmsI,8789
8
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/Committer.py,sha256=L3sYt6a09T7sxapeFhAErVTe93HDZ8vbxsZREadsGJ8,4629
9
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/CookieHelper.py,sha256=b781bqVWVgIot9n-KhJja31Qrcwow4iVqpxeav30f4k,6376
10
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/DBManager.py,sha256=INQq6PMPdKjgBQskFG4sxIShGqWhZBb4Rly_lru-q7o,24256
11
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/Environment.py,sha256=xhKosR8odmENok7rZ8CwmSp_fn0d6RhnZY2bHUxlS1U,2030
12
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/Fetcher.py,sha256=LCBaakl5LcktasnO7rvrVY4AEOIl6fzeWPZPjkER2lo,9202
13
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/FunctionTimeouts.py,sha256=1HyzFWasJ2Rvhj8TJvGq3IcAg5naU3Fe-70LLRMkrfQ,2608
14
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/GmailReader.py,sha256=LUf44gOD4xhMlPTstECzb7dY1_28SVIT3NYx_embX0s,6982
15
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/MarketHours.py,sha256=8hpCEEAC3fMseURaaYkVGMm3Nbju3L_tdTOsMZsY7kg,2216
16
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/MenuOptions.py,sha256=4t60fcsvwM7-Yr-_xtH3eiu_ll4Rrb1ScafMt3BHQNU,11963
17
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/NSEMarketStatus.py,sha256=WTo9e3la8nAXt5EGfAIZWvMyHLCsiad7YZTKaNuzE7o,5549
18
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/OutputControls.py,sha256=CbeDN9Vq-N_0sMCpkn5LrqWEvITBLmwuUPaXb7SSXtU,3554
19
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/PKDateUtilities.py,sha256=W4qF_Rr3f6ad5qbdfRu0MY4b2ScBkE1TzKtLn1Gw7MU,18263
20
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/PKGitFolderDownloader.py,sha256=470KcaCH1jTyJnTt3RmPhKrgHFOcYx42uPFL-NHM3AM,2988
21
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/PKJoinableQueue.py,sha256=WTfeqKh82_DcnSFYvkmx9WjM-RMeXBEmSmeYkD8e58E,5243
22
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/PKMultiProcessorClient.py,sha256=tUeZ7vQzs2SX7WbGfOGlq-SOLgKq2CZyeLPlsFbF6QI,13505
23
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/PKPickler.py,sha256=AkvQKQY-aowtu_TqAUg_7m_bTSxt7NvGYN4CkJymvmg,14369
24
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/PKTimer.py,sha256=tdJhODrs8zzxb12tc4BGzxGgY9xRWXNqtjYBD2PNOts,3433
25
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/Pikey.py,sha256=jgm9xLfRk4DCPLO5MgEui76IrMiPGUl2XvsnxO0qmJc,2813
26
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/Singleton.py,sha256=dbFRNdaVceUp7gb7Or7Xa2u3Id8H1Ce8-DyOG32zS-Q,4556
27
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/SuppressOutput.py,sha256=gjgByErulUjsZ1JVgkSNFmXC9qdkg4V0YrhT1tFmJuE,2004
28
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/System.py,sha256=UBM7A86NQhlRInCItb0mFs4plFE7ewXOXLn4KUtMiNg,4092
29
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/Telegram.py,sha256=AGR7LQCLGRId8S16bN6JA_YrYtjHJqpG6w4KvOVhHiw,15877
30
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/UserSubscriptions.py,sha256=i0ILGibwRQa9l3YKeJQt3yYu1wQiyxP4eg_pguWMu7I,9243
31
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/Utils.py,sha256=7a19Gb1SPGPQxa6bhNW-DncvDpEVTdrCuDttAjV4uc8,24543
32
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/WorkflowManager.py,sha256=UdNZ_iGXLxO1K13Dv7do4w6ecyAoxaPlBLETFuXyGbc,9984
33
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/__init__.py,sha256=BoiDBQscr1f1DzdbHTLRc_QbmrlKlFUYqaPm3YCjDFU,28
34
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/githubutilities.py,sha256=yRkJX2W3i3yCpFEUjEBGrk_2UX4vbscBvoJJoLDaD_k,3738
35
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/log.py,sha256=aDA5bd8L2bKAGLZzTFCD2gvXq6MbfceEkE-t_J89V40,16136
36
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/multiprocessing_logging.py,sha256=Lrzn9w4lsOWwUN7Z4lHoXkD7f8DNR8Za2S4zzAvUqvo,7430
37
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/squash.py,sha256=tNNLO2BuieZm9AlKzVYesY7p2yCUeJX1rtkZxbnlGRg,2864
38
+ PKDevTools-0.13.20250208.220.data/purelib/PKDevTools/classes/updater.py,sha256=yuHsGBVI-mm9_YrdCCRoKZ8HGro370UszM4s0zwZMC8,4846
39
+ PKDevTools-0.13.20250208.220.dist-info/LICENSE,sha256=wrl88eUZgDW6osq1UZIU4s4uZCgqGcLa46dS_sMVLik,1086
40
+ PKDevTools-0.13.20250208.220.dist-info/METADATA,sha256=tdDOk3XcmyrjeOL8lQ7sJJWERULViuivxOEfBll4Syk,6095
41
+ PKDevTools-0.13.20250208.220.dist-info/WHEEL,sha256=cRmSBGD-cl98KkuHMNqv9Ac9L9_VqTvcBYwpIvxN0cg,101
42
+ PKDevTools-0.13.20250208.220.dist-info/entry_points.txt,sha256=itdAnPuy8DO45uGuAEms0UJcoa2nGJVAUwm7NIL4-Yw,353
43
+ PKDevTools-0.13.20250208.220.dist-info/top_level.txt,sha256=WTig-LzPiEcyuyhbNRhJz1mX_RB-fojodPK48k3NmPg,11
44
+ PKDevTools-0.13.20250208.220.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- VERSION='0.13.20250208.218'
@@ -1,44 +0,0 @@
1
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/LICENSE.txt,sha256=wrl88eUZgDW6osq1UZIU4s4uZCgqGcLa46dS_sMVLik,1086
2
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/README.txt,sha256=9wsN1KwyM_gfEN7__AHy6iS-OMjN7dId3E2egalqIpw,4290
3
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/__init__.py,sha256=IFxLtOl_ylBuZt4nqrHkgZg4uuyeuLjHRaBgTuZey8U,1176
4
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/release.md,sha256=FfltoyIaP9mdbGYgPFnZyuI_rSjkuKn4NoyO4jNCqtI,1767
5
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/requirements.txt,sha256=771vBujug-uuZ5EiZhV9PHLtckaeDaMERaEGZPYzglY,384
6
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/Archiver.py,sha256=lT-ybDUYRBQ26WkCy53yf5f2iV6RJEtaiB9Lu8Lb0Og,6469
7
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/ColorText.py,sha256=UDqA229ujXwGDB1PkkMT-ZTu6VIWgZyIaq4XXPjFmsI,8789
8
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/Committer.py,sha256=L3sYt6a09T7sxapeFhAErVTe93HDZ8vbxsZREadsGJ8,4629
9
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/CookieHelper.py,sha256=b781bqVWVgIot9n-KhJja31Qrcwow4iVqpxeav30f4k,6376
10
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/DBManager.py,sha256=y-vaylbcCfwuRIiObKqVT4obwW0FUZcTG0yKHEZ1DPU,18957
11
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/Environment.py,sha256=xhKosR8odmENok7rZ8CwmSp_fn0d6RhnZY2bHUxlS1U,2030
12
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/Fetcher.py,sha256=LCBaakl5LcktasnO7rvrVY4AEOIl6fzeWPZPjkER2lo,9202
13
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/FunctionTimeouts.py,sha256=1HyzFWasJ2Rvhj8TJvGq3IcAg5naU3Fe-70LLRMkrfQ,2608
14
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/GmailReader.py,sha256=LUf44gOD4xhMlPTstECzb7dY1_28SVIT3NYx_embX0s,6982
15
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/MarketHours.py,sha256=8hpCEEAC3fMseURaaYkVGMm3Nbju3L_tdTOsMZsY7kg,2216
16
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/MenuOptions.py,sha256=4t60fcsvwM7-Yr-_xtH3eiu_ll4Rrb1ScafMt3BHQNU,11963
17
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/NSEMarketStatus.py,sha256=WTo9e3la8nAXt5EGfAIZWvMyHLCsiad7YZTKaNuzE7o,5549
18
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/OutputControls.py,sha256=CbeDN9Vq-N_0sMCpkn5LrqWEvITBLmwuUPaXb7SSXtU,3554
19
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/PKDateUtilities.py,sha256=W4qF_Rr3f6ad5qbdfRu0MY4b2ScBkE1TzKtLn1Gw7MU,18263
20
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/PKGitFolderDownloader.py,sha256=470KcaCH1jTyJnTt3RmPhKrgHFOcYx42uPFL-NHM3AM,2988
21
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/PKJoinableQueue.py,sha256=WTfeqKh82_DcnSFYvkmx9WjM-RMeXBEmSmeYkD8e58E,5243
22
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/PKMultiProcessorClient.py,sha256=tUeZ7vQzs2SX7WbGfOGlq-SOLgKq2CZyeLPlsFbF6QI,13505
23
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/PKPickler.py,sha256=AkvQKQY-aowtu_TqAUg_7m_bTSxt7NvGYN4CkJymvmg,14369
24
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/PKTimer.py,sha256=tdJhODrs8zzxb12tc4BGzxGgY9xRWXNqtjYBD2PNOts,3433
25
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/Pikey.py,sha256=jgm9xLfRk4DCPLO5MgEui76IrMiPGUl2XvsnxO0qmJc,2813
26
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/Singleton.py,sha256=dbFRNdaVceUp7gb7Or7Xa2u3Id8H1Ce8-DyOG32zS-Q,4556
27
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/SuppressOutput.py,sha256=gjgByErulUjsZ1JVgkSNFmXC9qdkg4V0YrhT1tFmJuE,2004
28
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/System.py,sha256=UBM7A86NQhlRInCItb0mFs4plFE7ewXOXLn4KUtMiNg,4092
29
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/Telegram.py,sha256=AGR7LQCLGRId8S16bN6JA_YrYtjHJqpG6w4KvOVhHiw,15877
30
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/UserSubscriptions.py,sha256=i0ILGibwRQa9l3YKeJQt3yYu1wQiyxP4eg_pguWMu7I,9243
31
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/Utils.py,sha256=7a19Gb1SPGPQxa6bhNW-DncvDpEVTdrCuDttAjV4uc8,24543
32
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/WorkflowManager.py,sha256=UdNZ_iGXLxO1K13Dv7do4w6ecyAoxaPlBLETFuXyGbc,9984
33
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/__init__.py,sha256=7Sgmf-ESD9ipt6sGba_cr_KiHnp9mYGv4NoiClMBMbw,28
34
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/githubutilities.py,sha256=yRkJX2W3i3yCpFEUjEBGrk_2UX4vbscBvoJJoLDaD_k,3738
35
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/log.py,sha256=aDA5bd8L2bKAGLZzTFCD2gvXq6MbfceEkE-t_J89V40,16136
36
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/multiprocessing_logging.py,sha256=Lrzn9w4lsOWwUN7Z4lHoXkD7f8DNR8Za2S4zzAvUqvo,7430
37
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/squash.py,sha256=tNNLO2BuieZm9AlKzVYesY7p2yCUeJX1rtkZxbnlGRg,2864
38
- PKDevTools-0.13.20250208.218.data/purelib/PKDevTools/classes/updater.py,sha256=yuHsGBVI-mm9_YrdCCRoKZ8HGro370UszM4s0zwZMC8,4846
39
- PKDevTools-0.13.20250208.218.dist-info/LICENSE,sha256=wrl88eUZgDW6osq1UZIU4s4uZCgqGcLa46dS_sMVLik,1086
40
- PKDevTools-0.13.20250208.218.dist-info/METADATA,sha256=D2Z6m9MtpcB2R4xj4jC2YyvPloj62Y7JqneCVRtZTUI,6095
41
- PKDevTools-0.13.20250208.218.dist-info/WHEEL,sha256=cRmSBGD-cl98KkuHMNqv9Ac9L9_VqTvcBYwpIvxN0cg,101
42
- PKDevTools-0.13.20250208.218.dist-info/entry_points.txt,sha256=itdAnPuy8DO45uGuAEms0UJcoa2nGJVAUwm7NIL4-Yw,353
43
- PKDevTools-0.13.20250208.218.dist-info/top_level.txt,sha256=WTig-LzPiEcyuyhbNRhJz1mX_RB-fojodPK48k3NmPg,11
44
- PKDevTools-0.13.20250208.218.dist-info/RECORD,,