pkscreener 0.46.20250225.739__cp312-cp312-win_amd64.whl → 0.46.20250225.741__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.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/README.txt +5 -5
  2. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/AssetsManager.py +1 -1
  3. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/ConfigManager.py +1 -1
  4. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/Fetcher.py +27 -2
  5. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/Utility.py +6 -1
  6. pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/__init__.py +1 -0
  7. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/globals.py +2 -1
  8. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/pkscreenerbot.py +1 -0
  9. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/requirements.txt +2 -0
  10. {pkscreener-0.46.20250225.739.dist-info → pkscreener-0.46.20250225.741.dist-info}/METADATA +7 -7
  11. pkscreener-0.46.20250225.741.dist-info/RECORD +58 -0
  12. {pkscreener-0.46.20250225.739.dist-info → pkscreener-0.46.20250225.741.dist-info}/WHEEL +1 -1
  13. pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/__init__.py +0 -1
  14. pkscreener-0.46.20250225.739.dist-info/RECORD +0 -58
  15. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/Disclaimer.txt +0 -0
  16. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/LICENSE-Others.txt +0 -0
  17. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/LICENSE.txt +0 -0
  18. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/LogoWM.txt +0 -0
  19. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/__init__.py +0 -0
  20. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/ArtTexts.py +0 -0
  21. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/Backtest.py +0 -0
  22. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/Barometer.py +0 -0
  23. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/BaseScreeningStatistics.py +0 -0
  24. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/CandlePatterns.py +0 -0
  25. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/Changelog.py +0 -0
  26. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/ConsoleMenuUtility.py +0 -0
  27. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/ConsoleUtility.py +0 -0
  28. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/GlobalStore.py +0 -0
  29. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/ImageUtility.py +0 -0
  30. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/MarketMonitor.py +0 -0
  31. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/MarketStatus.py +0 -0
  32. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/MenuOptions.py +0 -0
  33. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/Messenger.py +0 -0
  34. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/OtaUpdater.py +0 -0
  35. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/PKAnalytics.py +0 -0
  36. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/PKDataService.py +0 -0
  37. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/PKDemoHandler.py +0 -0
  38. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/PKMarketOpenCloseAnalyser.py +0 -0
  39. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/PKPremiumHandler.py +0 -0
  40. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/PKScanRunner.py +0 -0
  41. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/PKScheduledTaskProgress.py +0 -0
  42. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/PKScheduler.py +0 -0
  43. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/PKSpreadsheets.py +0 -0
  44. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/PKTask.py +0 -0
  45. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/PKUserRegistration.py +0 -0
  46. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/Pktalib.py +0 -0
  47. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/Portfolio.py +0 -0
  48. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/PortfolioXRay.py +0 -0
  49. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/ScreeningStatistics.py +0 -0
  50. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/StockScreener.py +0 -0
  51. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/StockSentiment.py +0 -0
  52. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/UserMenuChoicesHandler.py +0 -0
  53. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/WorkflowManager.py +0 -0
  54. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/classes/keys.py +0 -0
  55. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/courbd.ttf +0 -0
  56. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/pkscreener.ini +0 -0
  57. {pkscreener-0.46.20250225.739.data → pkscreener-0.46.20250225.741.data}/purelib/pkscreener/pkscreenercli.py +0 -0
  58. {pkscreener-0.46.20250225.739.dist-info → pkscreener-0.46.20250225.741.dist-info}/LICENSE +0 -0
  59. {pkscreener-0.46.20250225.739.dist-info → pkscreener-0.46.20250225.741.dist-info}/entry_points.txt +0 -0
  60. {pkscreener-0.46.20250225.739.dist-info → pkscreener-0.46.20250225.741.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.739/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.739/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.739/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.739/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.739/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.741'
@@ -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()
@@ -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_")),
@@ -26,6 +26,8 @@ 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.741
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.741.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.20250224.738/pkscreenercli.exe
360
+ [Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250225.739/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.20250224.738/pkscreenercli_x64.bin
362
+ [Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250225.739/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.20250224.738/pkscreenercli_arm64.bin
364
+ [Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250225.739/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.20250224.738/pkscreenercli_x64.run
366
+ [Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250225.739/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.20250224.738/pkscreenercli_arm64.run
368
+ [Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250225.739/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.20250225.741.data/purelib/pkscreener/Disclaimer.txt,sha256=x7M9Clrb9qACqOa-Vnwh9wliISLgudW5Kv_dgEk3N_Q,1405
2
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/LICENSE-Others.txt,sha256=0put8oIYbAYz98IGnp2F1CpHoyR_iyk0PRYG5D-U1K0,277059
3
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/LICENSE.txt,sha256=q80QYQZCkhPymkaQKXZJwOFYU6X-4lUHRzCGYERdLpA,1099
4
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/LogoWM.txt,sha256=7Njnavpy_FKY4Iwbzv1JqsYMcOdkDSKAKXP3SAItKV0,14868
5
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/README.txt,sha256=ThJ06jUaleSXE17Ci1bokxJDkSunoNCZ8yKi_QSqhyY,33186
6
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/__init__.py,sha256=cH0zxpSdH-dhmZihoe5mpE2NRRmF2Na_KaGMO9u33Rg,1669
7
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/courbd.ttf,sha256=SKpnp-BRs7AZcdI83nencS3Q7xe0anbbP1YMOxLlEhU,791436
8
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/globals.py,sha256=ppg71W7M-xbVND_IG7xo-OxrAuC4GXxjRsemY3bGRpk,250393
9
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/pkscreener.ini,sha256=v0MV7kLxi0ehh1a013wg6TLXDeeLRO8PKapICSU1u-k,2451
10
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/pkscreenerbot.py,sha256=CGwUt-RIDHBPtkjujPgYQ6CMoZ33vN8pj3FACoVuq5Q,120208
11
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/pkscreenercli.py,sha256=5a6u2Fdpr_I6vjwu15pkr-jhKOB2zl7RlARl96sX7Yo,59473
12
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/requirements.txt,sha256=7cekKi3NBgfvsh3hLQxwEUIU5Twd9xQRFKIaT7R7ebI,1541
13
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/ArtTexts.py,sha256=UzU0v3LX4PsWcx_ATv5M-T4v93uLz2hmvyDtew6qzZk,19708
14
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/AssetsManager.py,sha256=tZsmVNNIdxzTtDBhWo6M_7KoTOHAnkkvAFPdRlHOzkc,33744
15
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/Backtest.py,sha256=VoNronl--07E477I9lhwfEjI4vK5VHu_tcDRO1K96hU,10784
16
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/Barometer.py,sha256=aZWu0TFbwRBvnkyN_Ws4a_2FYNhKKuqEpoQAqokthPc,9640
17
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/BaseScreeningStatistics.py,sha256=Dev8eCx8eGNqDsbXj-t68hLSDpKDICcyb9yH_n_IbYg,3086
18
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/CandlePatterns.py,sha256=IFVUXzx175aqZlL7JlmNl308aeIkSD6Hugl4M9zg9Io,17419
19
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/Changelog.py,sha256=S0hNTDYptWUxFrdTzqinjFLIywVAuKlYR1aCjepADn0,1511
20
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/ConfigManager.py,sha256=PSR1FSrbfWMPgZGu5sSo2y6Aw9054XIXDl6_o1T_WWs,54425
21
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/ConsoleMenuUtility.py,sha256=QZLPA0li0bfs1zNijfq_utovulY5fl4vXWk89CBpL5Q,10291
22
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/ConsoleUtility.py,sha256=y4TSXhT1FxKOSJ4fvEnVmXthtU870j9IFDh0vkNOxC4,12418
23
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/Fetcher.py,sha256=PBslFZmEm1TR3aYcX3h-FplecJxeMXQDn4lnA6iHe4w,16674
24
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/GlobalStore.py,sha256=UCYctbau2ZAShkWOLA7-p52Pg_irghCWRoa6UrIKYQQ,3799
25
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/ImageUtility.py,sha256=DKPiM7u-fGPujD63VLCWUsvesgflVYDiLqyw_KWOK8g,37629
26
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/MarketMonitor.py,sha256=eu1B6Zl9SIQCSB43D3z7I1laKCp7NKTGSgIzv-4G1U4,22512
27
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/MarketStatus.py,sha256=oBDTCTGazzOEhcclugxOOtyhu2VVT2XQ-t-GmY_pT7g,3823
28
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/MenuOptions.py,sha256=RIPQ9mVC9I07GZubrmOtUAQg10GbCoYwF3fnvV1dvqY,65741
29
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/Messenger.py,sha256=yKqq3eE2JkvTOeKcNZoPpCgxQ9FjcEeB1iHIKwwq8dA,8572
30
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/OtaUpdater.py,sha256=jSjVqgiZ4CGVkieJMekNLHZGx_eOGN-Xg4RF3eZO_Nk,13816
31
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/PKAnalytics.py,sha256=dCBXn2pw2WVdBcG8OjzW_2jJVtO2UTcBRBJmEuVUwYY,7695
32
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/PKDataService.py,sha256=InEI3AGt_ykYfbwq2v1_NWUefTqPluKHSh_4ksFSUzE,3456
33
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/PKDemoHandler.py,sha256=wh48WLLFxBAFHML5Sq5G5-UFP96snJ9yKJgpKWuQ2Zs,2253
34
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/PKMarketOpenCloseAnalyser.py,sha256=2-J3vqdEJ_PRoU6CPw4BLOFLl1R5loivCG80Ywe7pWs,34696
35
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/PKPremiumHandler.py,sha256=L3O3EwIZBE9PpdDFIGH-2Ec9Gi3IlzCd6RfQSXUd6So,5695
36
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/PKScanRunner.py,sha256=Vlv5snbT6vA7t6jO2WBvxV0JDPHQf2iTbrT2ndkSnVQ,27317
37
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/PKScheduledTaskProgress.py,sha256=wDMORWmyglcu06woVNpgDlESsMIiYX96MXO0VoBlLYg,1694
38
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/PKScheduler.py,sha256=Od3Niv6Q_aHarau9agCVt7h194votlaDX4j1Xv-_ru4,8994
39
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/PKSpreadsheets.py,sha256=BIICJx79QjGFPrnmQ34357jOGp79vuiknx6A_kC9y8Y,8466
40
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/PKTask.py,sha256=YPxzn0dA5ty7CtRFi1wQphC9vCdK8tB2_3DYHje9jgc,1907
41
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/PKUserRegistration.py,sha256=VftNCzv44NyeLLOhuxUzzgre8zpT-nRL75B0jv-udDI,11783
42
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/Pktalib.py,sha256=yko7TZMOsLoBv-LbTuT903CsGdyckhypXldh7uoAXmo,34179
43
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/Portfolio.py,sha256=dxviO0G3OqJza4Nbpj5OCph8PZlfkRCkL3LfLJYgqu0,14196
44
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/PortfolioXRay.py,sha256=cMQ-yZrBPWo4gACxFqj3HNG9rqmyqXkS88qpy77JP_s,49612
45
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/ScreeningStatistics.py,sha256=CoV2i5jJPL2hm4sIhQAPHbbfWw3vqgoShVmq4uir7k4,225756
46
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/StockScreener.py,sha256=frSJw1Dix0BGuXoitnfTm06b_G8asxnzQuuoNYG9mgk,68752
47
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/StockSentiment.py,sha256=kc5jdXRGm2nIvDK-2y4i_Y1w47_2zWpunjlQsKB7IBY,3640
48
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/UserMenuChoicesHandler.py,sha256=MXJrQPD4yvKSI4p_RcnHt5oZg8AZ59ME7Jf-Nryoy5g,5055
49
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/Utility.py,sha256=TvYaN_kj9-zqis7ayS9ACq6gfU41NiYIG-gGqYDhHZw,14181
50
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/WorkflowManager.py,sha256=GS1Q_jwulpOjZv0w9ZDySRa5w51gJ8xDabbUpQGKVO0,5800
51
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/__init__.py,sha256=yYpkt7JRLCjt_ubNJYE1wDS6KYs_KEqMArjtlzCDK6Y,28
52
+ pkscreener-0.46.20250225.741.data/purelib/pkscreener/classes/keys.py,sha256=tygV0iu8bKmSPo6HGj1Cb-rTtEWErGrsYRZY7SoCb1g,6957
53
+ pkscreener-0.46.20250225.741.dist-info/LICENSE,sha256=q80QYQZCkhPymkaQKXZJwOFYU6X-4lUHRzCGYERdLpA,1099
54
+ pkscreener-0.46.20250225.741.dist-info/METADATA,sha256=EnuJnLR0aIgjwQJPk9S-tb4JE7miev1yzOWb9emAP14,34208
55
+ pkscreener-0.46.20250225.741.dist-info/WHEEL,sha256=SrHotcziYeA3Bbq3oh1aPgJQQxcMgZpb6O0Mt2GSXHc,101
56
+ pkscreener-0.46.20250225.741.dist-info/entry_points.txt,sha256=Pm30xm4sU7YFtFJUC-Te8VlqOvYAvWKFFA5AfQE0xGY,120
57
+ pkscreener-0.46.20250225.741.dist-info/top_level.txt,sha256=oIfcPPw58Q4KU-GDqp25dXbrtvxYXJBCo_em6i5aVvY,11
58
+ pkscreener-0.46.20250225.741.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-win_amd64
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=x7M9Clrb9qACqOa-Vnwh9wliISLgudW5Kv_dgEk3N_Q,1405
2
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/LICENSE-Others.txt,sha256=0put8oIYbAYz98IGnp2F1CpHoyR_iyk0PRYG5D-U1K0,277059
3
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/LICENSE.txt,sha256=q80QYQZCkhPymkaQKXZJwOFYU6X-4lUHRzCGYERdLpA,1099
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=DA19v_0fzu0g4uKFcqpuzhy88b9BhhtLy95qvgGtP10,33186
6
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/__init__.py,sha256=cH0zxpSdH-dhmZihoe5mpE2NRRmF2Na_KaGMO9u33Rg,1669
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=CAxG4U6Y14QJPByfeHZrUV4yhWADqFkiHdzftmG4D2M,250279
9
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/pkscreener.ini,sha256=v0MV7kLxi0ehh1a013wg6TLXDeeLRO8PKapICSU1u-k,2451
10
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/pkscreenerbot.py,sha256=1qspz8zHv0j6OUzF7DTyKlVE0gcuZDJFXgtVh0KUv5Y,120132
11
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/pkscreenercli.py,sha256=5a6u2Fdpr_I6vjwu15pkr-jhKOB2zl7RlARl96sX7Yo,59473
12
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/requirements.txt,sha256=hAdcLXQsZf4M21zn1iQ_dQzTxnUC4fGTEWNrtS4grqU,1503
13
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/ArtTexts.py,sha256=UzU0v3LX4PsWcx_ATv5M-T4v93uLz2hmvyDtew6qzZk,19708
14
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/AssetsManager.py,sha256=knkEvuR-QGD7DZUrhheAXgwM8L_Te-ks9-ENRF2yUCc,33748
15
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/Backtest.py,sha256=VoNronl--07E477I9lhwfEjI4vK5VHu_tcDRO1K96hU,10784
16
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/Barometer.py,sha256=aZWu0TFbwRBvnkyN_Ws4a_2FYNhKKuqEpoQAqokthPc,9640
17
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/BaseScreeningStatistics.py,sha256=Dev8eCx8eGNqDsbXj-t68hLSDpKDICcyb9yH_n_IbYg,3086
18
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/CandlePatterns.py,sha256=IFVUXzx175aqZlL7JlmNl308aeIkSD6Hugl4M9zg9Io,17419
19
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/Changelog.py,sha256=S0hNTDYptWUxFrdTzqinjFLIywVAuKlYR1aCjepADn0,1511
20
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/ConfigManager.py,sha256=ZIxZ-IqWjIXpo_7SWRLx5e8sc0b92gGnc4qqMZVproM,54426
21
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/ConsoleMenuUtility.py,sha256=QZLPA0li0bfs1zNijfq_utovulY5fl4vXWk89CBpL5Q,10291
22
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/ConsoleUtility.py,sha256=y4TSXhT1FxKOSJ4fvEnVmXthtU870j9IFDh0vkNOxC4,12418
23
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/Fetcher.py,sha256=fw5dANIakYYkKySRbROpcumZT2f7zSETWiA-T1Oh7GQ,15466
24
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/GlobalStore.py,sha256=UCYctbau2ZAShkWOLA7-p52Pg_irghCWRoa6UrIKYQQ,3799
25
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/ImageUtility.py,sha256=DKPiM7u-fGPujD63VLCWUsvesgflVYDiLqyw_KWOK8g,37629
26
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/MarketMonitor.py,sha256=eu1B6Zl9SIQCSB43D3z7I1laKCp7NKTGSgIzv-4G1U4,22512
27
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/MarketStatus.py,sha256=oBDTCTGazzOEhcclugxOOtyhu2VVT2XQ-t-GmY_pT7g,3823
28
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/MenuOptions.py,sha256=RIPQ9mVC9I07GZubrmOtUAQg10GbCoYwF3fnvV1dvqY,65741
29
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/Messenger.py,sha256=yKqq3eE2JkvTOeKcNZoPpCgxQ9FjcEeB1iHIKwwq8dA,8572
30
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/OtaUpdater.py,sha256=jSjVqgiZ4CGVkieJMekNLHZGx_eOGN-Xg4RF3eZO_Nk,13816
31
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKAnalytics.py,sha256=dCBXn2pw2WVdBcG8OjzW_2jJVtO2UTcBRBJmEuVUwYY,7695
32
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKDataService.py,sha256=InEI3AGt_ykYfbwq2v1_NWUefTqPluKHSh_4ksFSUzE,3456
33
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKDemoHandler.py,sha256=wh48WLLFxBAFHML5Sq5G5-UFP96snJ9yKJgpKWuQ2Zs,2253
34
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKMarketOpenCloseAnalyser.py,sha256=2-J3vqdEJ_PRoU6CPw4BLOFLl1R5loivCG80Ywe7pWs,34696
35
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKPremiumHandler.py,sha256=L3O3EwIZBE9PpdDFIGH-2Ec9Gi3IlzCd6RfQSXUd6So,5695
36
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKScanRunner.py,sha256=Vlv5snbT6vA7t6jO2WBvxV0JDPHQf2iTbrT2ndkSnVQ,27317
37
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKScheduledTaskProgress.py,sha256=wDMORWmyglcu06woVNpgDlESsMIiYX96MXO0VoBlLYg,1694
38
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKScheduler.py,sha256=Od3Niv6Q_aHarau9agCVt7h194votlaDX4j1Xv-_ru4,8994
39
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKSpreadsheets.py,sha256=BIICJx79QjGFPrnmQ34357jOGp79vuiknx6A_kC9y8Y,8466
40
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKTask.py,sha256=YPxzn0dA5ty7CtRFi1wQphC9vCdK8tB2_3DYHje9jgc,1907
41
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PKUserRegistration.py,sha256=VftNCzv44NyeLLOhuxUzzgre8zpT-nRL75B0jv-udDI,11783
42
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/Pktalib.py,sha256=yko7TZMOsLoBv-LbTuT903CsGdyckhypXldh7uoAXmo,34179
43
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/Portfolio.py,sha256=dxviO0G3OqJza4Nbpj5OCph8PZlfkRCkL3LfLJYgqu0,14196
44
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/PortfolioXRay.py,sha256=cMQ-yZrBPWo4gACxFqj3HNG9rqmyqXkS88qpy77JP_s,49612
45
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/ScreeningStatistics.py,sha256=CoV2i5jJPL2hm4sIhQAPHbbfWw3vqgoShVmq4uir7k4,225756
46
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/StockScreener.py,sha256=frSJw1Dix0BGuXoitnfTm06b_G8asxnzQuuoNYG9mgk,68752
47
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/StockSentiment.py,sha256=kc5jdXRGm2nIvDK-2y4i_Y1w47_2zWpunjlQsKB7IBY,3640
48
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/UserMenuChoicesHandler.py,sha256=MXJrQPD4yvKSI4p_RcnHt5oZg8AZ59ME7Jf-Nryoy5g,5055
49
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/Utility.py,sha256=6JpIich2-knaZ4sjsjyMoO_4S622KK-Jte2Hi4eYIOs,13870
50
- pkscreener-0.46.20250225.739.data/purelib/pkscreener/classes/WorkflowManager.py,sha256=GS1Q_jwulpOjZv0w9ZDySRa5w51gJ8xDabbUpQGKVO0,5800
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=tygV0iu8bKmSPo6HGj1Cb-rTtEWErGrsYRZY7SoCb1g,6957
53
- pkscreener-0.46.20250225.739.dist-info/LICENSE,sha256=q80QYQZCkhPymkaQKXZJwOFYU6X-4lUHRzCGYERdLpA,1099
54
- pkscreener-0.46.20250225.739.dist-info/METADATA,sha256=lfd9WHYD3Dxt0jvjt3nm_QFhMaNAdJkVhYlY81hGGug,34208
55
- pkscreener-0.46.20250225.739.dist-info/WHEEL,sha256=cRmSBGD-cl98KkuHMNqv9Ac9L9_VqTvcBYwpIvxN0cg,101
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,,