pkscreener 0.46.20250225.739__cp312-cp312-manylinux2014_x86_64.whl → 0.46.20250225.743__cp312-cp312-manylinux2014_x86_64.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.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/README.txt +5 -5
  2. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/AssetsManager.py +1 -1
  3. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/ConfigManager.py +1 -1
  4. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/Fetcher.py +27 -2
  5. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/Utility.py +6 -1
  6. pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/__init__.py +1 -0
  7. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/globals.py +2 -1
  8. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/pkscreenerbot.py +2 -1
  9. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/pkscreenercli.py +8 -0
  10. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/requirements.txt +3 -1
  11. {pkscreener-0.46.20250225.739.dist-info → pkscreener-0.46.20250225.743.dist-info}/METADATA +10 -8
  12. pkscreener-0.46.20250225.743.dist-info/RECORD +58 -0
  13. {pkscreener-0.46.20250225.739.dist-info → pkscreener-0.46.20250225.743.dist-info}/WHEEL +1 -1
  14. pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/__init__.py +0 -1
  15. pkscreener-0.46.20250225.739.dist-info/RECORD +0 -58
  16. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/Disclaimer.txt +0 -0
  17. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/LICENSE-Others.txt +0 -0
  18. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/LICENSE.txt +0 -0
  19. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/LogoWM.txt +0 -0
  20. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/__init__.py +0 -0
  21. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/ArtTexts.py +0 -0
  22. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/Backtest.py +0 -0
  23. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/Barometer.py +0 -0
  24. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/BaseScreeningStatistics.py +0 -0
  25. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/CandlePatterns.py +0 -0
  26. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/Changelog.py +0 -0
  27. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/ConsoleMenuUtility.py +0 -0
  28. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/ConsoleUtility.py +0 -0
  29. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/GlobalStore.py +0 -0
  30. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/ImageUtility.py +0 -0
  31. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/MarketMonitor.py +0 -0
  32. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/MarketStatus.py +0 -0
  33. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/MenuOptions.py +0 -0
  34. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/Messenger.py +0 -0
  35. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/OtaUpdater.py +0 -0
  36. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/PKAnalytics.py +0 -0
  37. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/PKDataService.py +0 -0
  38. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/PKDemoHandler.py +0 -0
  39. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/PKMarketOpenCloseAnalyser.py +0 -0
  40. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/PKPremiumHandler.py +0 -0
  41. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/PKScanRunner.py +0 -0
  42. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/PKScheduledTaskProgress.py +0 -0
  43. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/PKScheduler.py +0 -0
  44. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/PKSpreadsheets.py +0 -0
  45. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/PKTask.py +0 -0
  46. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/PKUserRegistration.py +0 -0
  47. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/Pktalib.py +0 -0
  48. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/Portfolio.py +0 -0
  49. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/PortfolioXRay.py +0 -0
  50. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/ScreeningStatistics.py +0 -0
  51. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/StockScreener.py +0 -0
  52. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/StockSentiment.py +0 -0
  53. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/UserMenuChoicesHandler.py +0 -0
  54. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/WorkflowManager.py +0 -0
  55. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/classes/keys.py +0 -0
  56. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/courbd.ttf +0 -0
  57. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.743.data}/purelib/pkscreener/pkscreener.ini +0 -0
  58. {pkscreener-0.46.20250225.739.dist-info → pkscreener-0.46.20250225.743.dist-info}/LICENSE +0 -0
  59. {pkscreener-0.46.20250225.739.dist-info → pkscreener-0.46.20250225.743.dist-info}/entry_points.txt +0 -0
  60. {pkscreener-0.46.20250225.739.dist-info → pkscreener-0.46.20250225.743.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.20250224.738/pkscreenercli.exe
331
+ [Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250225.741/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.20250224.738/pkscreenercli_x64.bin
333
+ [Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250225.741/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.20250224.738/pkscreenercli_arm64.bin
335
+ [Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250225.741/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.20250224.738/pkscreenercli_x64.run
337
+ [Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250225.741/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.20250224.738/pkscreenercli_arm64.run
339
+ [Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250225.741/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
@@ -562,7 +562,7 @@ class PKAssetsManager:
562
562
  f"Stock data cache file:{cache_file} on server has length ->{filesize} {'Mb' if chunksize >= MB else ('Kb' if chunksize >= KB else 'bytes')}"
563
563
  )
564
564
  if not retrial and not stockDataLoaded:
565
- # Don't try for more than once.
565
+ # Don't try for more than once.
566
566
  stockDict = PKAssetsManager.loadStockData(
567
567
  stockDict,
568
568
  configManager,
@@ -105,7 +105,7 @@ class tools(SingletonMixin, metaclass=SingletonType):
105
105
  self.vcpLegsToCheckForConsolidation = 3
106
106
  self.enableAdditionalVCPFilters = True
107
107
  self.enableAdditionalVCPEMAFilters = False
108
- self.enableUsageAnalytics = False
108
+ self.enableUsageAnalytics = True
109
109
  # This determines how many days apart the backtest calculations are run.
110
110
  # For example, for weekly backtest calculations, set this to 5 (5 days = 1 week)
111
111
  # For fortnightly, set this to 10 and so on (10 trading sessions = 2 weeks)
@@ -26,7 +26,7 @@
26
26
  import os
27
27
  import sys
28
28
  import warnings
29
-
29
+ import logging
30
30
  from time import sleep
31
31
  warnings.simplefilter("ignore", DeprecationWarning)
32
32
  warnings.simplefilter("ignore", FutureWarning)
@@ -59,7 +59,26 @@ from pkscreener.classes.PKTask import PKTask
59
59
  from PKDevTools.classes.OutputControls import OutputControls
60
60
  # This Class Handles Fetching of Stock Data over the internet
61
61
 
62
+ from requests import Session
63
+ from requests_cache import CacheMixin, SQLiteCache
64
+ from requests_ratelimiter import LimiterMixin, MemoryQueueBucket
65
+ from pyrate_limiter import Duration, RequestRate, Limiter
66
+ class CachedLimiterSession(CacheMixin, LimiterMixin, Session):
67
+ pass
62
68
 
69
+ # https://help.yahooinc.com/dsp-api/docs/rate-limits
70
+ # Define multiple rate limits
71
+ TRY_FACTOR = 50
72
+ yf_limiter = Limiter(
73
+ RequestRate(60*TRY_FACTOR, Duration.MINUTE), # Max 60 requests per minute
74
+ RequestRate(360*TRY_FACTOR, Duration.HOUR), # Max 360 requests per hour
75
+ RequestRate(8000*TRY_FACTOR, Duration.DAY) # Max 8000 requests per day
76
+ )
77
+ yf_session = CachedLimiterSession(
78
+ limiter=yf_limiter,
79
+ bucket_class=MemoryQueueBucket,
80
+ backend=SQLiteCache("yfinance.cache"),
81
+ )
63
82
  class screenerStockDataFetcher(nseStockDataFetcher):
64
83
  _tickersInfoDict={}
65
84
  def fetchStockDataWithArgs(self, *args):
@@ -132,6 +151,10 @@ class screenerStockDataFetcher(nseStockDataFetcher):
132
151
  if yfVersion == "0.2.28":
133
152
  YfData.user_agent_headers = {
134
153
  'User-Agent': random.choice(USER_AGENTS)}
154
+ if "PKDevTools_Default_Log_Level" in os.environ.keys():
155
+ from yfinance import utils
156
+ yflogger = utils.get_yf_logger()
157
+ yflogger.setLevel(int(os.environ.get("PKDevTools_Default_Log_Level"),logging.DEBUG))
135
158
  data = yf.download(
136
159
  tickers=stockCode,
137
160
  period=period,
@@ -144,7 +167,8 @@ class screenerStockDataFetcher(nseStockDataFetcher):
144
167
  start=start,
145
168
  end=end,
146
169
  auto_adjust=True,
147
- threads=len(stockCode) if not isinstance(stockCode,str) else True
170
+ threads=len(stockCode) if not isinstance(stockCode,str) else True,
171
+ session=yf_session
148
172
  )
149
173
  if isinstance(stockCode,str):
150
174
  if (data is None or data.empty):
@@ -188,6 +212,7 @@ class screenerStockDataFetcher(nseStockDataFetcher):
188
212
  default_logger().debug(e,exc_info=True)
189
213
  pass
190
214
  except YFRateLimitError as e:
215
+ default_logger().debug(f"YFRateLimitError Hit! \n{e}")
191
216
  # if attempt <= 2:
192
217
  # default_logger().debug(f"YFRateLimitError Hit! Going for attempt : {attempt+1}")
193
218
  # sleep(attempt*2) # Exponential backoff
@@ -173,7 +173,12 @@ class tools:
173
173
  #'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
174
174
  }
175
175
  resp = fetcher.fetchURL(cache_url, headers=headers, stream=True)
176
- if (resp is None or (resp is not None and resp.status_code != 200)) and (repoOwner=="pkjmesra" and directory=="actions-data-download"):
176
+ filesize = 0
177
+ if resp is not None and resp.status_code == 200:
178
+ contentLength = resp.headers.get("content-length")
179
+ filesize = int(contentLength) if contentLength is not None else 0
180
+ # File size should be more than at least 10 MB
181
+ if (resp is None or (resp is not None and resp.status_code != 200) or filesize <= 10*1024*1024) and (repoOwner=="pkjmesra" and directory=="actions-data-download"):
177
182
  return tools.tryFetchFromServer(cache_file,repoOwner=repoName)
178
183
  return resp
179
184
 
@@ -0,0 +1 @@
1
+ VERSION='0.46.20250225.743'
@@ -1897,7 +1897,8 @@ def main(userArgs=None,optionalFinalOutcome_df=None):
1897
1897
  userPassedArgs.options = (f"{userPassedArgs.options}:" if len(userPassedArgs.options) > 0 else '') + f"{selectedChoice[choice]}"
1898
1898
  if userPassedArgs.pipedmenus is not None:
1899
1899
  return addOrRunPipedMenus()
1900
-
1900
+
1901
+ loadedStockData = loadedStockData and stockDictPrimary is not None and len(stockDictPrimary) > 0
1901
1902
  if (menuOption in ["X", "B", "G", "S", "F"] and not loadedStockData) or (
1902
1903
  # not downloadOnly
1903
1904
  # and not PKDateUtilities.isTradingTime()
@@ -2264,7 +2264,7 @@ def addCommandsForMenuItems(application):
2264
2264
  # message_id=job.context.message_id
2265
2265
  # )
2266
2266
 
2267
- @ping(interval=300,instance=PKAnalyticsService())
2267
+ @ping(interval=300,instance=PKAnalyticsService(),prefix="bot_")
2268
2268
  def runpkscreenerbot(availability=True) -> None:
2269
2269
  """Run the bot."""
2270
2270
  # Create the Application and pass it your bot's token.
@@ -2291,6 +2291,7 @@ def runpkscreenerbot(availability=True) -> None:
2291
2291
  states={
2292
2292
  START_ROUTES: [
2293
2293
  CallbackQueryHandler(XScanners, pattern="^" + str("CX") + "$"),
2294
+ CallbackQueryHandler(otp, pattern="^" + str("OTP") + "$"),
2294
2295
  CallbackQueryHandler(XScanners, pattern="^" + str("CB") + "$"),
2295
2296
  CallbackQueryHandler(PScanners, pattern="^" + str("CP") + "$"),
2296
2297
  CallbackQueryHandler(XScanners, pattern="^" + str("CMI_")),
@@ -1220,6 +1220,14 @@ def scheduleNextRun():
1220
1220
  cron_runs += 1
1221
1221
 
1222
1222
  if __name__ == "__main__":
1223
+ if "RUNNER" in os.environ.keys():
1224
+ try:
1225
+ owner = os.popen('git ls-remote --get-url origin | cut -d/ -f4').read().replace("\n","")
1226
+ repo = os.popen('git ls-remote --get-url origin | cut -d/ -f5').read().replace(".git","").replace("\n","")
1227
+ if owner.lower() not in ["pkjmesra","pkscreener"]:
1228
+ sys.exit(0)
1229
+ except:
1230
+ pass
1223
1231
  try:
1224
1232
  pkscreenercli()
1225
1233
  except KeyboardInterrupt: # pragma: no cover
@@ -19,13 +19,15 @@ 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.245
22
+ PKDevTools>=0.13.20250126.251
23
23
  PKNSETools>=0.1.20250122.139
24
24
  Pyarrow #>=17.0.0
25
25
  pyppeteer #>=2.0.0
26
26
  pytz #>=2024.2
27
27
  python-telegram-bot>=13.4,<20.0
28
28
  requests_cache #>=1.2.1
29
+ requests_ratelimiter
30
+ pyrate_limiter
29
31
  rich #>=13.9.2
30
32
  scikit-learn #>=1.5.2
31
33
  scipy #<=1.12.0 # cdflib removed from #>=1.13.0 which breaks the build
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pkscreener
3
- Version: 0.46.20250225.739
3
+ Version: 0.46.20250225.743
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.20250225.739.zip
6
+ Download-URL: https://github.com/pkjmesra/pkscreener/archive/v0.46.20250225.743.zip
7
7
  Author: pkjmesra
8
8
  Author-email: pkjmesra@gmail.com
9
9
  License: OSI Approved (MIT)
@@ -33,13 +33,15 @@ Requires-Dist: pandas
33
33
  Requires-Dist: pandas_ta
34
34
  Requires-Dist: pefile<2024.8.26,>=2023.2.7
35
35
  Requires-Dist: Pillow
36
- Requires-Dist: PKDevTools>=0.13.20250126.245
36
+ Requires-Dist: PKDevTools>=0.13.20250126.251
37
37
  Requires-Dist: PKNSETools>=0.1.20250122.139
38
38
  Requires-Dist: Pyarrow
39
39
  Requires-Dist: pyppeteer
40
40
  Requires-Dist: pytz
41
41
  Requires-Dist: python-telegram-bot<20.0,>=13.4
42
42
  Requires-Dist: requests_cache
43
+ Requires-Dist: requests_ratelimiter
44
+ Requires-Dist: pyrate_limiter
43
45
  Requires-Dist: rich
44
46
  Requires-Dist: scikit-learn
45
47
  Requires-Dist: scipy
@@ -392,15 +394,15 @@ After you have finished the run, go to that copied path, zip the contents of the
392
394
  [MADE-IN-INDIA-badge]: https://img.shields.io/badge/MADE%20WITH%20%E2%9D%A4%20IN-INDIA-orange
393
395
  [MADE-IN-INDIA]: https://en.wikipedia.org/wiki/India
394
396
  [Windows-badge]: https://img.shields.io/badge/Windows-0078D6?logo=windows&logoColor=white
395
- [Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250224.738/pkscreenercli.exe
397
+ [Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250225.741/pkscreenercli.exe
396
398
  [Linux-badge_x64]: https://img.shields.io/badge/Linux(x64)-FCC624?logo=linux&logoColor=black
397
- [Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250224.738/pkscreenercli_x64.bin
399
+ [Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250225.741/pkscreenercli_x64.bin
398
400
  [Linux-badge_arm64]: https://img.shields.io/badge/Linux(arm64)-FCC624?logo=linux&logoColor=black
399
- [Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250224.738/pkscreenercli_arm64.bin
401
+ [Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250225.741/pkscreenercli_arm64.bin
400
402
  [Mac OS-badge_x64]: https://img.shields.io/badge/mac%20os(x64)-D3D3D3?logo=apple&logoColor=000000
401
- [Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250224.738/pkscreenercli_x64.run
403
+ [Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250225.741/pkscreenercli_x64.run
402
404
  [Mac OS-badge_arm64]: https://img.shields.io/badge/mac%20os(arm64)-D3D3D3?logo=apple&logoColor=000000
403
- [Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250224.738/pkscreenercli_arm64.run
405
+ [Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250225.741/pkscreenercli_arm64.run
404
406
  [GitHub release (latest by date)-badge]: https://img.shields.io/github/v/release/pkjmesra/PKScreener
405
407
  [GitHub release (latest by date)]: https://github.com/pkjmesra/PKScreener/releases/latest
406
408
  [pypi-badge]: https://img.shields.io/pypi/v/pkscreener.svg?style=flat-square
@@ -0,0 +1,58 @@
1
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/Disclaimer.txt,sha256=kBZQSQCFfL2kc1bijXWndZzkjMTtnpH_B7XtDPPMcuw,1396
2
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/LICENSE-Others.txt,sha256=WBslRYLBoqYg-vr25sS1c_UI7cuUnsGk0nIQLBzTWEE,271830
3
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/LICENSE.txt,sha256=CdnyGrl-xRYX67ZkdERZWHr6BlTxOyg8Z8sK1XQ5Xsg,1078
4
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/LogoWM.txt,sha256=7Njnavpy_FKY4Iwbzv1JqsYMcOdkDSKAKXP3SAItKV0,14868
5
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/README.txt,sha256=MHzdSRZ0xl1F7tKTGsbPxkogTDY8E2qZUCyGr2fz_fw,32802
6
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/__init__.py,sha256=aZ62qYACxsU8m8_5JkzNzos1lVFNcMGPRMgeddnUUiQ,1633
7
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/courbd.ttf,sha256=SKpnp-BRs7AZcdI83nencS3Q7xe0anbbP1YMOxLlEhU,791436
8
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/globals.py,sha256=5fH-6qujZ14hct8UyLazBc8TyQVjKBGwfZcdHIVkMAE,246083
9
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/pkscreener.ini,sha256=QKs6j4qhyH37L_MdG3ztAIwgqs4c3qihuqDIoex-V2g,2391
10
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/pkscreenerbot.py,sha256=v3qXmMNNTzYG9xN_8NLLJKTsbJJv3zBlbh2i92cXeeo,117874
11
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/pkscreenercli.py,sha256=UvGW6Aittsw64_lCgO8sN9jiK9KYrMwobMQJRNYIUUQ,58639
12
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/requirements.txt,sha256=fY5vwTcWi62AXDp4fMX-SZYNkVRZpzWvUyvURcrW3MM,1493
13
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/ArtTexts.py,sha256=LZ8ynyS8woliv8bM9Nq4aU0VCoJDJU0FgZk8V5zYPmg,19504
14
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/AssetsManager.py,sha256=HRZ29hSiWpJo0Cc1AN9cMq4maA6ieuq6WjNPYCPMx0o,33147
15
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/Backtest.py,sha256=wobBQgqVQhFNZlyJ2hgMXQqofrICc_3F0I5D66DUvGI,10530
16
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/Barometer.py,sha256=WPrgtIXb1nIbb-FnuRs-yvOQ5baNQRBgUR_zWg1moxk,9464
17
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/BaseScreeningStatistics.py,sha256=u5t1wf-HsZ8xEtprON55ehIR3F2LNNq8LvwgIrhYRmU,3000
18
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/CandlePatterns.py,sha256=gaswU2OeDa3JXjEafR2clUpKW5v8_1_tJuNPuTWsAss,17066
19
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/Changelog.py,sha256=vUOpca28OACNhavAmjBm4xco3u6fcHqWlnlmCJqO5Lk,1469
20
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/ConfigManager.py,sha256=AyIsuS3j3XGlypO9O3d53ICpmOUCwvABgO131IilwyY,53564
21
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/ConsoleMenuUtility.py,sha256=fyR7dEsAaEWEe5SyaVgwLPdU4h4pI8SozUhsPZXShpg,10037
22
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/ConsoleUtility.py,sha256=uyVVi1gtI7My-ADbiYpxXQMhAR5DiR5g9DJJ1fqTK-w,12181
23
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/Fetcher.py,sha256=LRSLusHOCcZomCkcQhHi_v9u4vc1C1Ein87KC6APNe4,16326
24
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/GlobalStore.py,sha256=IzoYMybXpVVf6YwZi7j34rP-hNd7sMened8TAMu_-A8,3709
25
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/ImageUtility.py,sha256=mgJUzjrOKQ1mYV5P_ylhBnaF7ZgOO6ogjy22Rt49TNI,37032
26
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/MarketMonitor.py,sha256=uO4A84j_0wpfdjbwfAxTWjsmji4kHSjz5L8lshNOs-U,22141
27
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/MarketStatus.py,sha256=dNg8znbRpt7ID3U_1nmclD4zSLtveJeYeRbS0l6HLtE,3737
28
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/MenuOptions.py,sha256=iZb0zBs7lcP60cmuP7Z5xmXfNtTFcFH6ZWOuoileErE,64552
29
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/Messenger.py,sha256=peyY-YiqdC1bp-3DlJXILRa9HGYbqGVzf1wil0fYv98,8396
30
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/OtaUpdater.py,sha256=_7-nFAC-vAcmZ1Nwi5g5tfp7hKQQPuLUnBCOzrwC39g,13491
31
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/PKAnalytics.py,sha256=qLXibEx18kMjZno7EVhyZBblnXWWo1bC2Kjrd8OskgE,7526
32
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/PKDataService.py,sha256=BipM8Z4rS6h12cF6VWv_u4Z8ee7psMFd1yUojejW1Ag,3393
33
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/PKDemoHandler.py,sha256=r4KrZF8TaOu1J0nu8sUsgWEvnbndboWQQvz69GOy1Fk,2207
34
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/PKMarketOpenCloseAnalyser.py,sha256=zUsJEGB4NHo0ftozOBrT2ZFakU35oTSUjtAja2rA0v0,34157
35
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/PKPremiumHandler.py,sha256=r16-u9fyc0ftgnSnZnz-JusTfEzyQIyKkvgbPuSd7W4,5611
36
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/PKScanRunner.py,sha256=zFsg2oW3vjlZYtEW3jsUS9XCTXPrL47dY5psQ9iJoIA,26795
37
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/PKScheduledTaskProgress.py,sha256=h19ZuxoalB50pnZjntFh12b9mBozvMqhKYq6TL18vo4,1657
38
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/PKScheduler.py,sha256=qThoz0yXLmHEWAiD_TdkIrzJb37b_m830JJFrkN1Tio,8814
39
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/PKSpreadsheets.py,sha256=1I7YGGPPY879K5JeTZ_d1FNCpjloh6TZrx91JlwT20o,8298
40
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/PKTask.py,sha256=4q87uD2cXvp0AbP6I73xPP39F0mfnpHQutsxxqpnxJM,1867
41
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/PKUserRegistration.py,sha256=SIEpkMscmUav7dXDcRUDZmlb5LeRo6b-Tx-h15ED_88,11589
42
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/Pktalib.py,sha256=xketnpMVDGHOFg47LFavaU-agWy370VanYWyzzuLY8c,33386
43
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/Portfolio.py,sha256=JZ93n3Zk9nkSFaX-lHyQiFnavHVmHPFoy-L_4gugj54,13895
44
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/PortfolioXRay.py,sha256=4MjXqBAVUlfN4w5tTmgEnQGMoy0hFu_uaVgrmai1fN4,48339
45
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/ScreeningStatistics.py,sha256=YSg4cynnDcn7cUK6VUBRpMmcNsKG3_CCzTSyobiCk2k,221479
46
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/StockScreener.py,sha256=vng1HlO5iB48-SoaCcxJMbKRpnKCJmyULLZg411wskQ,67563
47
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/StockSentiment.py,sha256=WL7TBAHDSIN5cgZ9uTbbEFnUPo4G-YIzEv16RpPGaro,3546
48
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/UserMenuChoicesHandler.py,sha256=_fTCscTLEjoU-n12V9237uDN6Jf8nGCvGdBVkpD3Ap4,4947
49
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/Utility.py,sha256=vLW6foXhUmj5mY4wedlqIcB-zT8O9kUm79vDR6c_LwQ,13868
50
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/WorkflowManager.py,sha256=YRUiZSq83SEx2qB0wTBDE4KFaYqEz1Qu4FSCAzl6xzU,5663
51
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/__init__.py,sha256=Mrycwkn9AfigMvDBGbqGiJruGj914YKmtXAfUKl44IM,28
52
+ pkscreener-0.46.20250225.743.data/purelib/pkscreener/classes/keys.py,sha256=LQq_t1lSh0x4TbRCIDhoCil3xctgLLeVk5f2vgrl1tk,6789
53
+ pkscreener-0.46.20250225.743.dist-info/LICENSE,sha256=CdnyGrl-xRYX67ZkdERZWHr6BlTxOyg8Z8sK1XQ5Xsg,1078
54
+ pkscreener-0.46.20250225.743.dist-info/METADATA,sha256=7tm99FPulKkwMJxZx66YrYSs510dewLIX7qYP49puNo,34806
55
+ pkscreener-0.46.20250225.743.dist-info/WHEEL,sha256=sSFyKywBJwdWCC2df2hrZuZBSWX42jKxIeb_iGXlFM8,104
56
+ pkscreener-0.46.20250225.743.dist-info/entry_points.txt,sha256=Pm30xm4sU7YFtFJUC-Te8VlqOvYAvWKFFA5AfQE0xGY,120
57
+ pkscreener-0.46.20250225.743.dist-info/top_level.txt,sha256=oIfcPPw58Q4KU-GDqp25dXbrtvxYXJBCo_em6i5aVvY,11
58
+ pkscreener-0.46.20250225.743.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.0)
2
+ Generator: setuptools (75.8.1)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp312-cp312-linux_x86_64
5
5
 
@@ -1 +0,0 @@
1
- VERSION='0.46.20250225.739'
@@ -1,58 +0,0 @@
1
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/Disclaimer.txt,sha256=kBZQSQCFfL2kc1bijXWndZzkjMTtnpH_B7XtDPPMcuw,1396
2
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/LICENSE-Others.txt,sha256=WBslRYLBoqYg-vr25sS1c_UI7cuUnsGk0nIQLBzTWEE,271830
3
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/LICENSE.txt,sha256=CdnyGrl-xRYX67ZkdERZWHr6BlTxOyg8Z8sK1XQ5Xsg,1078
4
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/LogoWM.txt,sha256=7Njnavpy_FKY4Iwbzv1JqsYMcOdkDSKAKXP3SAItKV0,14868
5
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/README.txt,sha256=c3EBsMqFcTNndiFR6Q46OKXg7re_nWLczpuncpqUZ6k,32802
6
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/__init__.py,sha256=aZ62qYACxsU8m8_5JkzNzos1lVFNcMGPRMgeddnUUiQ,1633
7
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/courbd.ttf,sha256=SKpnp-BRs7AZcdI83nencS3Q7xe0anbbP1YMOxLlEhU,791436
8
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/globals.py,sha256=YWiPzgRsHkB_JV_4Cp1z4T9sNgEszgSahFyAEH31c-4,245970
9
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/pkscreener.ini,sha256=QKs6j4qhyH37L_MdG3ztAIwgqs4c3qihuqDIoex-V2g,2391
10
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/pkscreenerbot.py,sha256=gMuQPriQeAyWtep_cI1RYS7n_BTlprTCndwUOEenrJ4,117785
11
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/pkscreenercli.py,sha256=qtoY8PVFzxgHa7I8wQeTngM-Yyjwlq6fjMDGjwy7jck,58244
12
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/requirements.txt,sha256=aqlY8euCkfAfmM3iZtUnNJZMrNqfmJB2aXFzxHm0KLM,1457
13
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/ArtTexts.py,sha256=LZ8ynyS8woliv8bM9Nq4aU0VCoJDJU0FgZk8V5zYPmg,19504
14
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/AssetsManager.py,sha256=1QpIz-8cFdSPupAqaYeEJhZIaNLG-Fhmcp0FEOhix3Y,33151
15
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/Backtest.py,sha256=wobBQgqVQhFNZlyJ2hgMXQqofrICc_3F0I5D66DUvGI,10530
16
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/Barometer.py,sha256=WPrgtIXb1nIbb-FnuRs-yvOQ5baNQRBgUR_zWg1moxk,9464
17
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/BaseScreeningStatistics.py,sha256=u5t1wf-HsZ8xEtprON55ehIR3F2LNNq8LvwgIrhYRmU,3000
18
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/CandlePatterns.py,sha256=gaswU2OeDa3JXjEafR2clUpKW5v8_1_tJuNPuTWsAss,17066
19
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/Changelog.py,sha256=vUOpca28OACNhavAmjBm4xco3u6fcHqWlnlmCJqO5Lk,1469
20
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/ConfigManager.py,sha256=THcfBgua5hr1Pv7AwEDBu2yurCNteGM04jY3Fr_MeBg,53565
21
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/ConsoleMenuUtility.py,sha256=fyR7dEsAaEWEe5SyaVgwLPdU4h4pI8SozUhsPZXShpg,10037
22
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/ConsoleUtility.py,sha256=uyVVi1gtI7My-ADbiYpxXQMhAR5DiR5g9DJJ1fqTK-w,12181
23
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/Fetcher.py,sha256=kPnLndeH6OYdoMRxUPjamDTXYUIsU5QjyaYEp-uNu0M,15143
24
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/GlobalStore.py,sha256=IzoYMybXpVVf6YwZi7j34rP-hNd7sMened8TAMu_-A8,3709
25
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/ImageUtility.py,sha256=mgJUzjrOKQ1mYV5P_ylhBnaF7ZgOO6ogjy22Rt49TNI,37032
26
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/MarketMonitor.py,sha256=uO4A84j_0wpfdjbwfAxTWjsmji4kHSjz5L8lshNOs-U,22141
27
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/MarketStatus.py,sha256=dNg8znbRpt7ID3U_1nmclD4zSLtveJeYeRbS0l6HLtE,3737
28
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/MenuOptions.py,sha256=iZb0zBs7lcP60cmuP7Z5xmXfNtTFcFH6ZWOuoileErE,64552
29
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/Messenger.py,sha256=peyY-YiqdC1bp-3DlJXILRa9HGYbqGVzf1wil0fYv98,8396
30
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/OtaUpdater.py,sha256=_7-nFAC-vAcmZ1Nwi5g5tfp7hKQQPuLUnBCOzrwC39g,13491
31
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKAnalytics.py,sha256=qLXibEx18kMjZno7EVhyZBblnXWWo1bC2Kjrd8OskgE,7526
32
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKDataService.py,sha256=BipM8Z4rS6h12cF6VWv_u4Z8ee7psMFd1yUojejW1Ag,3393
33
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKDemoHandler.py,sha256=r4KrZF8TaOu1J0nu8sUsgWEvnbndboWQQvz69GOy1Fk,2207
34
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKMarketOpenCloseAnalyser.py,sha256=zUsJEGB4NHo0ftozOBrT2ZFakU35oTSUjtAja2rA0v0,34157
35
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKPremiumHandler.py,sha256=r16-u9fyc0ftgnSnZnz-JusTfEzyQIyKkvgbPuSd7W4,5611
36
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKScanRunner.py,sha256=zFsg2oW3vjlZYtEW3jsUS9XCTXPrL47dY5psQ9iJoIA,26795
37
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKScheduledTaskProgress.py,sha256=h19ZuxoalB50pnZjntFh12b9mBozvMqhKYq6TL18vo4,1657
38
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKScheduler.py,sha256=qThoz0yXLmHEWAiD_TdkIrzJb37b_m830JJFrkN1Tio,8814
39
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKSpreadsheets.py,sha256=1I7YGGPPY879K5JeTZ_d1FNCpjloh6TZrx91JlwT20o,8298
40
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKTask.py,sha256=4q87uD2cXvp0AbP6I73xPP39F0mfnpHQutsxxqpnxJM,1867
41
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKUserRegistration.py,sha256=SIEpkMscmUav7dXDcRUDZmlb5LeRo6b-Tx-h15ED_88,11589
42
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/Pktalib.py,sha256=xketnpMVDGHOFg47LFavaU-agWy370VanYWyzzuLY8c,33386
43
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/Portfolio.py,sha256=JZ93n3Zk9nkSFaX-lHyQiFnavHVmHPFoy-L_4gugj54,13895
44
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PortfolioXRay.py,sha256=4MjXqBAVUlfN4w5tTmgEnQGMoy0hFu_uaVgrmai1fN4,48339
45
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/ScreeningStatistics.py,sha256=YSg4cynnDcn7cUK6VUBRpMmcNsKG3_CCzTSyobiCk2k,221479
46
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/StockScreener.py,sha256=vng1HlO5iB48-SoaCcxJMbKRpnKCJmyULLZg411wskQ,67563
47
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/StockSentiment.py,sha256=WL7TBAHDSIN5cgZ9uTbbEFnUPo4G-YIzEv16RpPGaro,3546
48
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/UserMenuChoicesHandler.py,sha256=_fTCscTLEjoU-n12V9237uDN6Jf8nGCvGdBVkpD3Ap4,4947
49
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/Utility.py,sha256=Cn_QrVH40rQWkHW2e2NolE0b18qszvGXfVLdwAqD7sM,13562
50
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/WorkflowManager.py,sha256=YRUiZSq83SEx2qB0wTBDE4KFaYqEz1Qu4FSCAzl6xzU,5663
51
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/__init__.py,sha256=PBpHtk1InmtKJMg0SV5DFgFWJhUv5qYfPxYtawm1q1E,28
52
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/keys.py,sha256=LQq_t1lSh0x4TbRCIDhoCil3xctgLLeVk5f2vgrl1tk,6789
53
- pkscreener-0.46.20250225.739.dist-info/LICENSE,sha256=CdnyGrl-xRYX67ZkdERZWHr6BlTxOyg8Z8sK1XQ5Xsg,1078
54
- pkscreener-0.46.20250225.739.dist-info/METADATA,sha256=Aqw2N8gxCxOtcN61LmSdenRDX-YC37KPzZH8bjrzYc8,34740
55
- pkscreener-0.46.20250225.739.dist-info/WHEEL,sha256=aDUArjEbIuDQzblE24IvdIsBzRhJEjiXmuNUYQ-gpaA,104
56
- pkscreener-0.46.20250225.739.dist-info/entry_points.txt,sha256=Pm30xm4sU7YFtFJUC-Te8VlqOvYAvWKFFA5AfQE0xGY,120
57
- pkscreener-0.46.20250225.739.dist-info/top_level.txt,sha256=oIfcPPw58Q4KU-GDqp25dXbrtvxYXJBCo_em6i5aVvY,11
58
- pkscreener-0.46.20250225.739.dist-info/RECORD,,