pkscreener 0.46.20250213.709__cp312-cp312-win_amd64.whl → 0.46.20250213.711__cp312-cp312-win_amd64.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.
Files changed (60) hide show
  1. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/README.txt +5 -5
  2. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/MarketMonitor.py +4 -4
  3. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/WorkflowManager.py +23 -0
  4. pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/__init__.py +1 -0
  5. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/pkscreenerbot.py +18 -6
  6. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/requirements.txt +1 -1
  7. {pkscreener-0.46.20250213.709.dist-info → pkscreener-0.46.20250213.711.dist-info}/METADATA +7 -7
  8. pkscreener-0.46.20250213.711.dist-info/RECORD +58 -0
  9. pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/__init__.py +0 -1
  10. pkscreener-0.46.20250213.709.dist-info/RECORD +0 -58
  11. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/Disclaimer.txt +0 -0
  12. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/LICENSE-Others.txt +0 -0
  13. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/LICENSE.txt +0 -0
  14. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/LogoWM.txt +0 -0
  15. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/__init__.py +0 -0
  16. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/ArtTexts.py +0 -0
  17. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/AssetsManager.py +0 -0
  18. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/Backtest.py +0 -0
  19. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/Barometer.py +0 -0
  20. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/BaseScreeningStatistics.py +0 -0
  21. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/CandlePatterns.py +0 -0
  22. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/Changelog.py +0 -0
  23. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/ConfigManager.py +0 -0
  24. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/ConsoleMenuUtility.py +0 -0
  25. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/ConsoleUtility.py +0 -0
  26. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/Fetcher.py +0 -0
  27. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/GlobalStore.py +0 -0
  28. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/ImageUtility.py +0 -0
  29. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/MarketStatus.py +0 -0
  30. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/MenuOptions.py +0 -0
  31. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/Messenger.py +0 -0
  32. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/OtaUpdater.py +0 -0
  33. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/PKAnalytics.py +0 -0
  34. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/PKDataService.py +0 -0
  35. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/PKDemoHandler.py +0 -0
  36. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/PKMarketOpenCloseAnalyser.py +0 -0
  37. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/PKPremiumHandler.py +0 -0
  38. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/PKScanRunner.py +0 -0
  39. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/PKScheduledTaskProgress.py +0 -0
  40. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/PKScheduler.py +0 -0
  41. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/PKSpreadsheets.py +0 -0
  42. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/PKTask.py +0 -0
  43. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/PKUserRegistration.py +0 -0
  44. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/Pktalib.py +0 -0
  45. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/Portfolio.py +0 -0
  46. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/PortfolioXRay.py +0 -0
  47. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/ScreeningStatistics.py +0 -0
  48. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/StockScreener.py +0 -0
  49. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/StockSentiment.py +0 -0
  50. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/UserMenuChoicesHandler.py +0 -0
  51. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/Utility.py +0 -0
  52. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/classes/keys.py +0 -0
  53. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/courbd.ttf +0 -0
  54. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/globals.py +0 -0
  55. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/pkscreener.ini +0 -0
  56. {pkscreener-0.46.20250213.709.data → pkscreener-0.46.20250213.711.data}/purelib/pkscreener/pkscreenercli.py +0 -0
  57. {pkscreener-0.46.20250213.709.dist-info → pkscreener-0.46.20250213.711.dist-info}/LICENSE +0 -0
  58. {pkscreener-0.46.20250213.709.dist-info → pkscreener-0.46.20250213.711.dist-info}/WHEEL +0 -0
  59. {pkscreener-0.46.20250213.709.dist-info → pkscreener-0.46.20250213.711.dist-info}/entry_points.txt +0 -0
  60. {pkscreener-0.46.20250213.709.dist-info → pkscreener-0.46.20250213.711.dist-info}/top_level.txt +0 -0
@@ -328,15 +328,15 @@ After you have finished the run, go to that copied path, zip the contents of the
328
328
  [MADE-IN-INDIA-badge]: https://img.shields.io/badge/MADE%20WITH%20%E2%9D%A4%20IN-INDIA-orange
329
329
  [MADE-IN-INDIA]: https://en.wikipedia.org/wiki/India
330
330
  [Windows-badge]: https://img.shields.io/badge/Windows-0078D6?logo=windows&logoColor=white
331
- [Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.708/pkscreenercli.exe
331
+ [Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.710/pkscreenercli.exe
332
332
  [Linux-badge_x64]: https://img.shields.io/badge/Linux(x64)-FCC624?logo=linux&logoColor=black
333
- [Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.708/pkscreenercli_x64.bin
333
+ [Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.710/pkscreenercli_x64.bin
334
334
  [Linux-badge_arm64]: https://img.shields.io/badge/Linux(arm64)-FCC624?logo=linux&logoColor=black
335
- [Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.708/pkscreenercli_arm64.bin
335
+ [Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.710/pkscreenercli_arm64.bin
336
336
  [Mac OS-badge_x64]: https://img.shields.io/badge/mac%20os(x64)-D3D3D3?logo=apple&logoColor=000000
337
- [Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.708/pkscreenercli_x64.run
337
+ [Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.710/pkscreenercli_x64.run
338
338
  [Mac OS-badge_arm64]: https://img.shields.io/badge/mac%20os(arm64)-D3D3D3?logo=apple&logoColor=000000
339
- [Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.708/pkscreenercli_arm64.run
339
+ [Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.710/pkscreenercli_arm64.run
340
340
  [GitHub release (latest by date)-badge]: https://img.shields.io/github/v/release/pkjmesra/PKScreener
341
341
  [GitHub release (latest by date)]: https://github.com/pkjmesra/PKScreener/releases/latest
342
342
  [pypi-badge]: https://img.shields.io/pypi/v/pkscreener.svg?style=flat-square
@@ -350,16 +350,16 @@ class MarketMonitor(SingletonMixin, metaclass=SingletonType):
350
350
  if screenOptions is None:
351
351
  return ""
352
352
  baseIndex = 12
353
- baseIndices = screenOptions.split(":")
353
+ baseIndices = str(screenOptions).split(":")
354
354
  if len(baseIndices) > 1:
355
355
  baseIndex = baseIndices[1]
356
- choices = f"--systemlaunched -a y -e -o '{screenOptions.replace('C:','X:').replace('D:','')}'"
356
+ choices = f"--systemlaunched -a y -e -o '{str(screenOptions).replace('C:','X:').replace('D:','')}'"
357
357
  indexNum = -1
358
358
  try:
359
359
  indexNum = PREDEFINED_SCAN_MENU_VALUES.index(choices)
360
360
  except: # pragma: no cover
361
361
  pass
362
- optionName = ""
362
+ optionName = str(screenOptions).replace(':D','').replace(':','_')
363
363
  if indexNum >= 0:
364
- optionName = f"{('P_1_'+str(indexNum +1)+'_'+str(baseIndex)) if '>|' in choices else screenOptions.replace(':D','').replace(':','_')}"
364
+ optionName = f"{('P_1_'+str(indexNum +1)+'_'+str(baseIndex)) if '>|' in choices else str(screenOptions).replace(':D','').replace(':','_')}"
365
365
  return optionName
@@ -91,6 +91,29 @@ def run_workflow(command=None, user=None, options=None, workflowType="B",repo=No
91
91
  if workflow_name is None or workflow_postData is None or ghp_token is None:
92
92
  raise Exception("workflow_name, workflow_postData, and ghp_token must NOT be blank!")
93
93
  data = workflow_postData
94
+ elif workflowType == "S": # Scanner job kick off for 1-on-1 alerts
95
+ cmd_options = options.replace("_",":")
96
+ if workflow_name is None:
97
+ workflow_name = "w8-workflow-alert-scan_generic.yml"
98
+ if 'ALERT_TRIGGER' in os.environ.keys() and os.environ["ALERT_TRIGGER"] == 'Y':
99
+ alertTrigger = 'Y'
100
+ else:
101
+ alertTrigger = 'N'
102
+ if user is None or len(user) == 0:
103
+ user = ""
104
+ data = (
105
+ '{"ref":"'
106
+ + branch
107
+ + '","inputs":{"user":"'
108
+ + f"{user}"
109
+ + '","params":"'
110
+ + f'{cmd_options}'
111
+ + f'","ref":"{branch}","alertTrigger":"'
112
+ + f"{alertTrigger}"
113
+ + '","name":"'
114
+ + f"{command}"
115
+ + '"}}'
116
+ )
94
117
 
95
118
  if ghp_token is None:
96
119
  _, _, _, ghp_token = PKEnvironment().secrets
@@ -0,0 +1 @@
1
+ VERSION='0.46.20250213.711'
@@ -648,17 +648,13 @@ def subscribeToScannerAlerts(update: Update, context: CallbackContext) -> str:
648
648
  # User is already subscribed to some alerts
649
649
  if str(scanId) in alertUser.scannerJobs:
650
650
  menuText = f"You are already subscribed to {scanId} ! Alerts will be delivered as and when they are raised."
651
+ kickOffScannerJobIfNotKickedOff(scanId,user,dbManager,requiredBalance)
651
652
  else:
652
653
  if alertUser.balance < requiredBalance:
653
654
  # Insufficient balance
654
655
  menuText = f"You need at least <b>₹ {requiredBalance}</b> to subscribe to <b>{scanId} alerts for a day</b> ! Your current balance <b>₹ {alertUser.balance}</b> is <b>insufficient</b>. {payWall}"
655
656
  else:
656
- # Sufficient balance to subscribe to scanId
657
- subscribed = dbManager.updateAlertSubscriptionModel(user.id,requiredBalance,scanId)
658
- if subscribed:
659
- menuText = f"You have been added to receive the alerts for {scanId}. Please note that it is valid only for today during Market Hours and resets right after that. You will need to re-subscribe again if you need it on the next day. Thank you for trusting PKScreener!"
660
- else:
661
- menuText = "We encountered an error updating your subscription! Please reach out to @ItsOnlyPK on Telegram with your UTR and subscription scanner details."
657
+ menuText = kickOffScannerJobIfNotKickedOff(scanId,user,dbManager,requiredBalance)
662
658
 
663
659
  elif alertUser is None or alertUser.balance == 0:
664
660
  # Either user is not subscribed or has 0 balance
@@ -668,6 +664,22 @@ def subscribeToScannerAlerts(update: Update, context: CallbackContext) -> str:
668
664
  editMessageText(query=query,editedText=sanitiseTexts(menuText),reply_markup=default_markup(user=user))
669
665
  return START_ROUTES
670
666
 
667
+ def kickOffScannerJobIfNotKickedOff(scanId,user,dbManager,requiredBalance):
668
+ # Sufficient balance to subscribe to scanId
669
+ needsNewJobKickedOff = False
670
+ menuText = ""
671
+ subscribedUsers = dbManager.usersForScannerJobId(scannerJobId=scanId)
672
+ if subscribedUsers is None or len(subscribedUsers) == 0:
673
+ # This is the first user who's requesting this scanner
674
+ needsNewJobKickedOff = True
675
+ subscribed = dbManager.updateAlertSubscriptionModel(user.id,requiredBalance,scanId)
676
+ if subscribed:
677
+ menuText = f"You have been added to receive the alerts for {scanId}. Please note that it is valid only for today during Market Hours and resets right after that. You will need to re-subscribe again if you need it on the next day. Thank you for trusting PKScreener!"
678
+ if needsNewJobKickedOff:
679
+ run_workflow(f"{scanId}_{user.id}", str(user.id), f'--systemlaunched -a y -m {str(scanId).upper().replace("_",":")}', workflowType="S")
680
+ else:
681
+ menuText = "We encountered an error updating your subscription! Please reach out to @ItsOnlyPK on Telegram with your UTR and subscription scanner details."
682
+ return menuText
671
683
 
672
684
  def XScanners(update: Update, context: CallbackContext) -> str:
673
685
  """Show new choice of buttons"""
@@ -19,7 +19,7 @@ pandas_ta #>=0.3.14b0
19
19
  # and https://github.com/pyinstaller/pyinstaller/issues/7269
20
20
  pefile>=2023.2.7,<2024.8.26
21
21
  Pillow #>=9.5.0,<=9.5.0 # Keep at this version because getsize_multiline is deprecated/removed in higher versions
22
- PKDevTools>=0.13.20250126.232
22
+ PKDevTools>=0.13.20250126.233
23
23
  PKNSETools>=0.1.20250122.137
24
24
  Pyarrow #>=17.0.0
25
25
  pyppeteer #>=2.0.0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pkscreener
3
- Version: 0.46.20250213.709
3
+ Version: 0.46.20250213.711
4
4
  Summary: A Python-based stock screener for NSE, India with alerts to Telegram Channel (pkscreener)
5
5
  Home-page: https://github.com/pkjmesra/pkscreener
6
- Download-URL: https://github.com/pkjmesra/pkscreener/archive/v0.46.20250213.709.zip
6
+ Download-URL: https://github.com/pkjmesra/pkscreener/archive/v0.46.20250213.711.zip
7
7
  Author: pkjmesra
8
8
  Author-email: pkjmesra@gmail.com
9
9
  License: OSI Approved (MIT)
@@ -357,15 +357,15 @@ After you have finished the run, go to that copied path, zip the contents of the
357
357
  [MADE-IN-INDIA-badge]: https://img.shields.io/badge/MADE%20WITH%20%E2%9D%A4%20IN-INDIA-orange
358
358
  [MADE-IN-INDIA]: https://en.wikipedia.org/wiki/India
359
359
  [Windows-badge]: https://img.shields.io/badge/Windows-0078D6?logo=windows&logoColor=white
360
- [Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.708/pkscreenercli.exe
360
+ [Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.710/pkscreenercli.exe
361
361
  [Linux-badge_x64]: https://img.shields.io/badge/Linux(x64)-FCC624?logo=linux&logoColor=black
362
- [Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.708/pkscreenercli_x64.bin
362
+ [Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.710/pkscreenercli_x64.bin
363
363
  [Linux-badge_arm64]: https://img.shields.io/badge/Linux(arm64)-FCC624?logo=linux&logoColor=black
364
- [Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.708/pkscreenercli_arm64.bin
364
+ [Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.710/pkscreenercli_arm64.bin
365
365
  [Mac OS-badge_x64]: https://img.shields.io/badge/mac%20os(x64)-D3D3D3?logo=apple&logoColor=000000
366
- [Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.708/pkscreenercli_x64.run
366
+ [Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.710/pkscreenercli_x64.run
367
367
  [Mac OS-badge_arm64]: https://img.shields.io/badge/mac%20os(arm64)-D3D3D3?logo=apple&logoColor=000000
368
- [Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.708/pkscreenercli_arm64.run
368
+ [Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.710/pkscreenercli_arm64.run
369
369
  [GitHub release (latest by date)-badge]: https://img.shields.io/github/v/release/pkjmesra/PKScreener
370
370
  [GitHub release (latest by date)]: https://github.com/pkjmesra/PKScreener/releases/latest
371
371
  [pypi-badge]: https://img.shields.io/pypi/v/pkscreener.svg?style=flat-square
@@ -0,0 +1,58 @@
1
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/Disclaimer.txt,sha256=x7M9Clrb9qACqOa-Vnwh9wliISLgudW5Kv_dgEk3N_Q,1405
2
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/LICENSE-Others.txt,sha256=0put8oIYbAYz98IGnp2F1CpHoyR_iyk0PRYG5D-U1K0,277059
3
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/LICENSE.txt,sha256=q80QYQZCkhPymkaQKXZJwOFYU6X-4lUHRzCGYERdLpA,1099
4
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/LogoWM.txt,sha256=7Njnavpy_FKY4Iwbzv1JqsYMcOdkDSKAKXP3SAItKV0,14868
5
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/README.txt,sha256=N6hSaIm2fF2nTxVCD58RstbOE7t8ADicEdzy0x-V1y0,33085
6
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/__init__.py,sha256=cH0zxpSdH-dhmZihoe5mpE2NRRmF2Na_KaGMO9u33Rg,1669
7
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/courbd.ttf,sha256=SKpnp-BRs7AZcdI83nencS3Q7xe0anbbP1YMOxLlEhU,791436
8
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/globals.py,sha256=h7gRVI1ljj5AQp-KvOMGz9LqXYvt0v2YaWdxFeP-rqg,245088
9
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/pkscreener.ini,sha256=v0MV7kLxi0ehh1a013wg6TLXDeeLRO8PKapICSU1u-k,2451
10
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/pkscreenerbot.py,sha256=J4rrCuE6hL77OXZYxVBkYJMjEdfnGD-JP1_lZ-ox5m8,108812
11
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/pkscreenercli.py,sha256=NtW0PGiMKgkBfQk6jZ8WE_ipTRrZP7v1020xQNHZdUE,58213
12
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/requirements.txt,sha256=TJVfdV2FVMH2KO5lPX_i1PrMOLFRtFMzGDsbhElMqJI,1503
13
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/ArtTexts.py,sha256=UzU0v3LX4PsWcx_ATv5M-T4v93uLz2hmvyDtew6qzZk,19708
14
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/AssetsManager.py,sha256=0__n99u7SD0KHmpnybm_msu35CAlv5W6WwtT5LrSkNc,34313
15
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/Backtest.py,sha256=VoNronl--07E477I9lhwfEjI4vK5VHu_tcDRO1K96hU,10784
16
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/Barometer.py,sha256=aZWu0TFbwRBvnkyN_Ws4a_2FYNhKKuqEpoQAqokthPc,9640
17
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/BaseScreeningStatistics.py,sha256=Dev8eCx8eGNqDsbXj-t68hLSDpKDICcyb9yH_n_IbYg,3086
18
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/CandlePatterns.py,sha256=IFVUXzx175aqZlL7JlmNl308aeIkSD6Hugl4M9zg9Io,17419
19
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/Changelog.py,sha256=S0hNTDYptWUxFrdTzqinjFLIywVAuKlYR1aCjepADn0,1511
20
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/ConfigManager.py,sha256=ZIxZ-IqWjIXpo_7SWRLx5e8sc0b92gGnc4qqMZVproM,54426
21
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/ConsoleMenuUtility.py,sha256=QZLPA0li0bfs1zNijfq_utovulY5fl4vXWk89CBpL5Q,10291
22
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/ConsoleUtility.py,sha256=gNMAm4iQF0ClmVPBe6ZnsjWQ-rfnTq6R_mLBjA6GgyI,12330
23
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/Fetcher.py,sha256=ZwU9iW0nbGAgM0mKZNjYgy9sm8jRSw9PvYmyhuY7Pos,12620
24
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/GlobalStore.py,sha256=UCYctbau2ZAShkWOLA7-p52Pg_irghCWRoa6UrIKYQQ,3799
25
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/ImageUtility.py,sha256=DKPiM7u-fGPujD63VLCWUsvesgflVYDiLqyw_KWOK8g,37629
26
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/MarketMonitor.py,sha256=m_fKqZ5_BhZYGTCsnO81FFerrfDzyrLWILnD_aed5V8,22180
27
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/MarketStatus.py,sha256=oBDTCTGazzOEhcclugxOOtyhu2VVT2XQ-t-GmY_pT7g,3823
28
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/MenuOptions.py,sha256=RIPQ9mVC9I07GZubrmOtUAQg10GbCoYwF3fnvV1dvqY,65741
29
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/Messenger.py,sha256=yKqq3eE2JkvTOeKcNZoPpCgxQ9FjcEeB1iHIKwwq8dA,8572
30
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/OtaUpdater.py,sha256=jSjVqgiZ4CGVkieJMekNLHZGx_eOGN-Xg4RF3eZO_Nk,13816
31
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/PKAnalytics.py,sha256=4LdzjSjbJExBpD2DM9wXWuFqKiC8QEr9HT2XFiJq7oA,5368
32
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/PKDataService.py,sha256=InEI3AGt_ykYfbwq2v1_NWUefTqPluKHSh_4ksFSUzE,3456
33
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/PKDemoHandler.py,sha256=wh48WLLFxBAFHML5Sq5G5-UFP96snJ9yKJgpKWuQ2Zs,2253
34
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/PKMarketOpenCloseAnalyser.py,sha256=zscdvHwDb5GQttqnR4Ed0SsVfOFeqKQgfIo6LWukgH0,34366
35
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/PKPremiumHandler.py,sha256=L3O3EwIZBE9PpdDFIGH-2Ec9Gi3IlzCd6RfQSXUd6So,5695
36
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/PKScanRunner.py,sha256=9Qy6xouK6qkNExeWF8LrxYXynI3Ju9UrSY5kI5W81Ok,27313
37
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/PKScheduledTaskProgress.py,sha256=wDMORWmyglcu06woVNpgDlESsMIiYX96MXO0VoBlLYg,1694
38
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/PKScheduler.py,sha256=Od3Niv6Q_aHarau9agCVt7h194votlaDX4j1Xv-_ru4,8994
39
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/PKSpreadsheets.py,sha256=BIICJx79QjGFPrnmQ34357jOGp79vuiknx6A_kC9y8Y,8466
40
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/PKTask.py,sha256=YPxzn0dA5ty7CtRFi1wQphC9vCdK8tB2_3DYHje9jgc,1907
41
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/PKUserRegistration.py,sha256=ff98UhcEtZ6QPC4jwJuoJtExTH9mKRqfEcXx3XzJfE4,11391
42
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/Pktalib.py,sha256=tmbiVVYh4RoSkI-o5a4q1C7hScDp5Jai2QmpyRMwXvs,29676
43
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/Portfolio.py,sha256=dxviO0G3OqJza4Nbpj5OCph8PZlfkRCkL3LfLJYgqu0,14196
44
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/PortfolioXRay.py,sha256=cMQ-yZrBPWo4gACxFqj3HNG9rqmyqXkS88qpy77JP_s,49612
45
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/ScreeningStatistics.py,sha256=j5pjp7rzUsYoyJOSL0Gkk3hfsdUIUFf4a21JXleI5A8,225304
46
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/StockScreener.py,sha256=wL6RjojBvTqo9XUlh2qoCpERrKdGNTlcDtCTReA0jkI,68437
47
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/StockSentiment.py,sha256=kc5jdXRGm2nIvDK-2y4i_Y1w47_2zWpunjlQsKB7IBY,3640
48
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/UserMenuChoicesHandler.py,sha256=MXJrQPD4yvKSI4p_RcnHt5oZg8AZ59ME7Jf-Nryoy5g,5055
49
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/Utility.py,sha256=6JpIich2-knaZ4sjsjyMoO_4S622KK-Jte2Hi4eYIOs,13870
50
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/WorkflowManager.py,sha256=GgxHCWOOEUv4M7xbIZtcoxndzII4eInex24U99uEWcI,5769
51
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/__init__.py,sha256=7IsZkbDpfjAJQe-21XnMPZSx6J8Mm4LzqJlol68tEBo,28
52
+ pkscreener-0.46.20250213.711.data/purelib/pkscreener/classes/keys.py,sha256=tygV0iu8bKmSPo6HGj1Cb-rTtEWErGrsYRZY7SoCb1g,6957
53
+ pkscreener-0.46.20250213.711.dist-info/LICENSE,sha256=q80QYQZCkhPymkaQKXZJwOFYU6X-4lUHRzCGYERdLpA,1099
54
+ pkscreener-0.46.20250213.711.dist-info/METADATA,sha256=p7oAbSCLy2wIBd4zXE6WmEdmTDw4gKrH2c3ocYn2rtM,34107
55
+ pkscreener-0.46.20250213.711.dist-info/WHEEL,sha256=cRmSBGD-cl98KkuHMNqv9Ac9L9_VqTvcBYwpIvxN0cg,101
56
+ pkscreener-0.46.20250213.711.dist-info/entry_points.txt,sha256=Pm30xm4sU7YFtFJUC-Te8VlqOvYAvWKFFA5AfQE0xGY,120
57
+ pkscreener-0.46.20250213.711.dist-info/top_level.txt,sha256=oIfcPPw58Q4KU-GDqp25dXbrtvxYXJBCo_em6i5aVvY,11
58
+ pkscreener-0.46.20250213.711.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- VERSION='0.46.20250213.709'
@@ -1,58 +0,0 @@
1
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/Disclaimer.txt,sha256=x7M9Clrb9qACqOa-Vnwh9wliISLgudW5Kv_dgEk3N_Q,1405
2
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/LICENSE-Others.txt,sha256=0put8oIYbAYz98IGnp2F1CpHoyR_iyk0PRYG5D-U1K0,277059
3
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/LICENSE.txt,sha256=q80QYQZCkhPymkaQKXZJwOFYU6X-4lUHRzCGYERdLpA,1099
4
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/LogoWM.txt,sha256=7Njnavpy_FKY4Iwbzv1JqsYMcOdkDSKAKXP3SAItKV0,14868
5
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/README.txt,sha256=fOOx_kDi5vLICGgRV1fQW_Gk_AmZk0TV6ecmtYsmqeU,33085
6
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/__init__.py,sha256=cH0zxpSdH-dhmZihoe5mpE2NRRmF2Na_KaGMO9u33Rg,1669
7
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/courbd.ttf,sha256=SKpnp-BRs7AZcdI83nencS3Q7xe0anbbP1YMOxLlEhU,791436
8
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/globals.py,sha256=h7gRVI1ljj5AQp-KvOMGz9LqXYvt0v2YaWdxFeP-rqg,245088
9
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/pkscreener.ini,sha256=v0MV7kLxi0ehh1a013wg6TLXDeeLRO8PKapICSU1u-k,2451
10
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/pkscreenerbot.py,sha256=XFNQaca9H9aRPPSkbiaSlRI9OQjDl46zVx9x-zrqiz4,108145
11
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/pkscreenercli.py,sha256=NtW0PGiMKgkBfQk6jZ8WE_ipTRrZP7v1020xQNHZdUE,58213
12
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/requirements.txt,sha256=hWbtInreN7d1Lkq36RXAQRwPbO_OjyZF59HkIJt87MY,1503
13
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/ArtTexts.py,sha256=UzU0v3LX4PsWcx_ATv5M-T4v93uLz2hmvyDtew6qzZk,19708
14
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/AssetsManager.py,sha256=0__n99u7SD0KHmpnybm_msu35CAlv5W6WwtT5LrSkNc,34313
15
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/Backtest.py,sha256=VoNronl--07E477I9lhwfEjI4vK5VHu_tcDRO1K96hU,10784
16
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/Barometer.py,sha256=aZWu0TFbwRBvnkyN_Ws4a_2FYNhKKuqEpoQAqokthPc,9640
17
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/BaseScreeningStatistics.py,sha256=Dev8eCx8eGNqDsbXj-t68hLSDpKDICcyb9yH_n_IbYg,3086
18
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/CandlePatterns.py,sha256=IFVUXzx175aqZlL7JlmNl308aeIkSD6Hugl4M9zg9Io,17419
19
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/Changelog.py,sha256=S0hNTDYptWUxFrdTzqinjFLIywVAuKlYR1aCjepADn0,1511
20
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/ConfigManager.py,sha256=ZIxZ-IqWjIXpo_7SWRLx5e8sc0b92gGnc4qqMZVproM,54426
21
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/ConsoleMenuUtility.py,sha256=QZLPA0li0bfs1zNijfq_utovulY5fl4vXWk89CBpL5Q,10291
22
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/ConsoleUtility.py,sha256=gNMAm4iQF0ClmVPBe6ZnsjWQ-rfnTq6R_mLBjA6GgyI,12330
23
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/Fetcher.py,sha256=ZwU9iW0nbGAgM0mKZNjYgy9sm8jRSw9PvYmyhuY7Pos,12620
24
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/GlobalStore.py,sha256=UCYctbau2ZAShkWOLA7-p52Pg_irghCWRoa6UrIKYQQ,3799
25
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/ImageUtility.py,sha256=DKPiM7u-fGPujD63VLCWUsvesgflVYDiLqyw_KWOK8g,37629
26
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/MarketMonitor.py,sha256=O4U4mBCcGThpRxLcpZefQyCBz4q5LAQwVBRYngmvZ-A,22115
27
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/MarketStatus.py,sha256=oBDTCTGazzOEhcclugxOOtyhu2VVT2XQ-t-GmY_pT7g,3823
28
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/MenuOptions.py,sha256=RIPQ9mVC9I07GZubrmOtUAQg10GbCoYwF3fnvV1dvqY,65741
29
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/Messenger.py,sha256=yKqq3eE2JkvTOeKcNZoPpCgxQ9FjcEeB1iHIKwwq8dA,8572
30
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/OtaUpdater.py,sha256=jSjVqgiZ4CGVkieJMekNLHZGx_eOGN-Xg4RF3eZO_Nk,13816
31
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/PKAnalytics.py,sha256=4LdzjSjbJExBpD2DM9wXWuFqKiC8QEr9HT2XFiJq7oA,5368
32
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/PKDataService.py,sha256=InEI3AGt_ykYfbwq2v1_NWUefTqPluKHSh_4ksFSUzE,3456
33
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/PKDemoHandler.py,sha256=wh48WLLFxBAFHML5Sq5G5-UFP96snJ9yKJgpKWuQ2Zs,2253
34
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/PKMarketOpenCloseAnalyser.py,sha256=zscdvHwDb5GQttqnR4Ed0SsVfOFeqKQgfIo6LWukgH0,34366
35
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/PKPremiumHandler.py,sha256=L3O3EwIZBE9PpdDFIGH-2Ec9Gi3IlzCd6RfQSXUd6So,5695
36
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/PKScanRunner.py,sha256=9Qy6xouK6qkNExeWF8LrxYXynI3Ju9UrSY5kI5W81Ok,27313
37
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/PKScheduledTaskProgress.py,sha256=wDMORWmyglcu06woVNpgDlESsMIiYX96MXO0VoBlLYg,1694
38
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/PKScheduler.py,sha256=Od3Niv6Q_aHarau9agCVt7h194votlaDX4j1Xv-_ru4,8994
39
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/PKSpreadsheets.py,sha256=BIICJx79QjGFPrnmQ34357jOGp79vuiknx6A_kC9y8Y,8466
40
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/PKTask.py,sha256=YPxzn0dA5ty7CtRFi1wQphC9vCdK8tB2_3DYHje9jgc,1907
41
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/PKUserRegistration.py,sha256=ff98UhcEtZ6QPC4jwJuoJtExTH9mKRqfEcXx3XzJfE4,11391
42
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/Pktalib.py,sha256=tmbiVVYh4RoSkI-o5a4q1C7hScDp5Jai2QmpyRMwXvs,29676
43
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/Portfolio.py,sha256=dxviO0G3OqJza4Nbpj5OCph8PZlfkRCkL3LfLJYgqu0,14196
44
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/PortfolioXRay.py,sha256=cMQ-yZrBPWo4gACxFqj3HNG9rqmyqXkS88qpy77JP_s,49612
45
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/ScreeningStatistics.py,sha256=j5pjp7rzUsYoyJOSL0Gkk3hfsdUIUFf4a21JXleI5A8,225304
46
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/StockScreener.py,sha256=wL6RjojBvTqo9XUlh2qoCpERrKdGNTlcDtCTReA0jkI,68437
47
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/StockSentiment.py,sha256=kc5jdXRGm2nIvDK-2y4i_Y1w47_2zWpunjlQsKB7IBY,3640
48
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/UserMenuChoicesHandler.py,sha256=MXJrQPD4yvKSI4p_RcnHt5oZg8AZ59ME7Jf-Nryoy5g,5055
49
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/Utility.py,sha256=6JpIich2-knaZ4sjsjyMoO_4S622KK-Jte2Hi4eYIOs,13870
50
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/WorkflowManager.py,sha256=JO4JLmBq2Mfnj7leyXGFfsz3C7LY0QV0qFKMtjewzSk,4853
51
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/__init__.py,sha256=7iKSngVNm9qhIROotRHmOJaFb_AkMaUhz1pAXsAd3JE,28
52
- pkscreener-0.46.20250213.709.data/purelib/pkscreener/classes/keys.py,sha256=tygV0iu8bKmSPo6HGj1Cb-rTtEWErGrsYRZY7SoCb1g,6957
53
- pkscreener-0.46.20250213.709.dist-info/LICENSE,sha256=q80QYQZCkhPymkaQKXZJwOFYU6X-4lUHRzCGYERdLpA,1099
54
- pkscreener-0.46.20250213.709.dist-info/METADATA,sha256=sia9dQVDSR_B336QyTXjA2I7JWd1O4_A3QMWMP2bKkQ,34107
55
- pkscreener-0.46.20250213.709.dist-info/WHEEL,sha256=cRmSBGD-cl98KkuHMNqv9Ac9L9_VqTvcBYwpIvxN0cg,101
56
- pkscreener-0.46.20250213.709.dist-info/entry_points.txt,sha256=Pm30xm4sU7YFtFJUC-Te8VlqOvYAvWKFFA5AfQE0xGY,120
57
- pkscreener-0.46.20250213.709.dist-info/top_level.txt,sha256=oIfcPPw58Q4KU-GDqp25dXbrtvxYXJBCo_em6i5aVvY,11
58
- pkscreener-0.46.20250213.709.dist-info/RECORD,,