pkscreener 0.46.20250220.726__tar.gz → 0.46.20250221.728__tar.gz
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.
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/PKG-INFO +7 -7
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/README.md +5 -5
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/README.txt +5 -5
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/AssetsManager.py +23 -3
- pkscreener-0.46.20250221.728/pkscreener/classes/__init__.py +1 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/globals.py +5 -1
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener.egg-info/PKG-INFO +7 -7
- pkscreener-0.46.20250220.726/pkscreener/classes/__init__.py +0 -1
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/LICENSE +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/Disclaimer.txt +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/LICENSE-Others.txt +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/LICENSE.txt +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/LogoWM.txt +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/__init__.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/ArtTexts.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/Backtest.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/Barometer.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/BaseScreeningStatistics.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/CandlePatterns.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/Changelog.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/ConfigManager.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/ConsoleMenuUtility.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/ConsoleUtility.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/Fetcher.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/GlobalStore.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/ImageUtility.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/MarketMonitor.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/MarketStatus.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/MenuOptions.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/Messenger.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/OtaUpdater.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PKAnalytics.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PKDataService.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PKDemoHandler.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PKMarketOpenCloseAnalyser.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PKPremiumHandler.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PKScanRunner.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PKScheduledTaskProgress.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PKScheduler.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PKSpreadsheets.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PKTask.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PKUserRegistration.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/Pktalib.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/Portfolio.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PortfolioXRay.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/ScreeningStatistics.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/StockScreener.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/StockSentiment.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/UserMenuChoicesHandler.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/Utility.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/WorkflowManager.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/keys.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/courbd.ttf +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/pkscreener.ini +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/pkscreenerbot.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/pkscreenercli.py +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/requirements.txt +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener.egg-info/SOURCES.txt +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener.egg-info/dependency_links.txt +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener.egg-info/entry_points.txt +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener.egg-info/not-zip-safe +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener.egg-info/requires.txt +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener.egg-info/top_level.txt +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/setup.cfg +0 -0
- {pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/setup.py +0 -0
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: pkscreener
|
3
|
-
Version: 0.46.
|
3
|
+
Version: 0.46.20250221.728
|
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.
|
6
|
+
Download-URL: https://github.com/pkjmesra/pkscreener/archive/v0.46.20250221.728.zip
|
7
7
|
Author: pkjmesra
|
8
8
|
Author-email: pkjmesra@gmail.com
|
9
9
|
License: OSI Approved (MIT)
|
@@ -392,15 +392,15 @@ After you have finished the run, go to that copied path, zip the contents of the
|
|
392
392
|
[MADE-IN-INDIA-badge]: https://img.shields.io/badge/MADE%20WITH%20%E2%9D%A4%20IN-INDIA-orange
|
393
393
|
[MADE-IN-INDIA]: https://en.wikipedia.org/wiki/India
|
394
394
|
[Windows-badge]: https://img.shields.io/badge/Windows-0078D6?logo=windows&logoColor=white
|
395
|
-
[Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
395
|
+
[Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/pkscreenercli.exe
|
396
396
|
[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.
|
397
|
+
[Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/pkscreenercli_x64.bin
|
398
398
|
[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.
|
399
|
+
[Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/pkscreenercli_arm64.bin
|
400
400
|
[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.
|
401
|
+
[Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/pkscreenercli_x64.run
|
402
402
|
[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.
|
403
|
+
[Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/pkscreenercli_arm64.run
|
404
404
|
[GitHub release (latest by date)-badge]: https://img.shields.io/github/v/release/pkjmesra/PKScreener
|
405
405
|
[GitHub release (latest by date)]: https://github.com/pkjmesra/PKScreener/releases/latest
|
406
406
|
[pypi-badge]: https://img.shields.io/pypi/v/pkscreener.svg?style=flat-square
|
@@ -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.
|
331
|
+
[Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/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.
|
333
|
+
[Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/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.
|
335
|
+
[Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/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.
|
337
|
+
[Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/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.
|
339
|
+
[Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/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
|
@@ -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.
|
331
|
+
[Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/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.
|
333
|
+
[Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/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.
|
335
|
+
[Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/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.
|
337
|
+
[Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/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.
|
339
|
+
[Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/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
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/AssetsManager.py
RENAMED
@@ -32,6 +32,7 @@ import pandas as pd
|
|
32
32
|
import numpy as np
|
33
33
|
from halo import Halo
|
34
34
|
from alive_progress import alive_bar
|
35
|
+
from yfinance import shared
|
35
36
|
|
36
37
|
from PKDevTools.classes.log import default_logger
|
37
38
|
from PKDevTools.classes import Archiver
|
@@ -264,8 +265,21 @@ class PKAssetsManager:
|
|
264
265
|
OutputControls().printOutput(colorText.GREEN + f"=> {cache_file}" + colorText.END)
|
265
266
|
return cache_file
|
266
267
|
|
268
|
+
def had_rate_limit_errors():
|
269
|
+
"""Checks if any stored errors are YFRateLimitError."""
|
270
|
+
err = ",".join(list(shared._ERRORS.values()))
|
271
|
+
hitRateLimit = "YFRateLimitError" in err
|
272
|
+
if hitRateLimit:
|
273
|
+
OutputControls().printOutput(
|
274
|
+
colorText.FAIL
|
275
|
+
+ " [+] We hit a rate limit error in the previous request(s)!"
|
276
|
+
+ colorText.END
|
277
|
+
)
|
278
|
+
return hitRateLimit
|
279
|
+
|
267
280
|
@Halo(text=' [+] Downloading fresh data from Data Providers...', spinner='dots')
|
268
281
|
def downloadLatestData(stockDict,configManager,stockCodes=[],exchangeSuffix=".NS",downloadOnly=False,numStocksPerIteration=0):
|
282
|
+
shared._ERRORS.clear() # Clear previous errors
|
269
283
|
# if numStocksPerIteration == 0:
|
270
284
|
maxParallelProcesses = 17
|
271
285
|
numStocksPerIteration = (int(len(stockCodes)/int(len(stockCodes)/maxParallelProcesses)) if len(stockCodes) >= maxParallelProcesses else len(stockCodes)) + 1
|
@@ -335,7 +349,9 @@ class PKAssetsManager:
|
|
335
349
|
if (stockCodes is not None and len(stockCodes) > 0) and (isTrading or downloadOnly):
|
336
350
|
recentDownloadFromOriginAttempted = True
|
337
351
|
stockDict, leftOutStocks = PKAssetsManager.downloadLatestData(stockDict,configManager,stockCodes,exchangeSuffix=exchangeSuffix,downloadOnly=downloadOnly,numStocksPerIteration=len(stockCodes) if stockCodes is not None else 0)
|
338
|
-
if len(leftOutStocks) > int(len(stockCodes)*0.05):
|
352
|
+
if len(leftOutStocks) > int(len(stockCodes)*0.05) and not PKAssetsManager.had_rate_limit_errors():
|
353
|
+
# During live market hours, we may not really get additional data if we didn't
|
354
|
+
# get it the first time
|
339
355
|
# More than 5 % of stocks are still remaining
|
340
356
|
stockDict, _ = PKAssetsManager.downloadLatestData(stockDict,configManager,leftOutStocks,exchangeSuffix=exchangeSuffix,downloadOnly=downloadOnly,numStocksPerIteration=len(leftOutStocks) if leftOutStocks is not None else 0)
|
341
357
|
# return stockDict
|
@@ -367,12 +383,16 @@ class PKAssetsManager:
|
|
367
383
|
+ " [+] Cache unavailable on pkscreener server, Continuing.."
|
368
384
|
+ colorText.END
|
369
385
|
)
|
370
|
-
if not stockDataLoaded and not recentDownloadFromOriginAttempted:
|
386
|
+
if not stockDataLoaded and not recentDownloadFromOriginAttempted and not PKAssetsManager.had_rate_limit_errors():
|
371
387
|
stockDict, _ = PKAssetsManager.downloadLatestData(stockDict,configManager,stockCodes,exchangeSuffix=exchangeSuffix,downloadOnly=downloadOnly,numStocksPerIteration=len(stockCodes) if stockCodes is not None else 0)
|
372
388
|
# See if we need to save stock data
|
373
389
|
stockDataLoaded = stockDataLoaded or (len(stockDict) > 0 and (len(stockDict) != initialLoadCount))
|
374
390
|
if stockDataLoaded:
|
375
391
|
PKAssetsManager.saveStockData(stockDict,configManager,initialLoadCount,isIntraday,downloadOnly, forceSave=stockDataLoaded)
|
392
|
+
leftOutStocks = list(set(stockCodes)-set(list(stockDict.keys())))
|
393
|
+
if len(leftOutStocks) > int(len(stockCodes)*0.05) and not PKAssetsManager.had_rate_limit_errors():
|
394
|
+
# More than 5 % of stocks are still remaining
|
395
|
+
stockDict, _ = PKAssetsManager.downloadLatestData(stockDict,configManager,leftOutStocks,exchangeSuffix=exchangeSuffix,downloadOnly=downloadOnly,numStocksPerIteration=len(leftOutStocks) if leftOutStocks is not None else 0)
|
376
396
|
return stockDict
|
377
397
|
|
378
398
|
@Halo(text=' [+] Loading data from local cache...', spinner='dots')
|
@@ -385,7 +405,7 @@ class PKAssetsManager:
|
|
385
405
|
if not downloadOnly:
|
386
406
|
OutputControls().printOutput(
|
387
407
|
colorText.GREEN
|
388
|
-
+ f"\n [+] Automatically Using Cached Stock Data {'due to After-Market hours' if not PKDateUtilities.isTradingTime() else ''}!"
|
408
|
+
+ f"\n [+] Automatically Using [{len(stockData)}] Tickers' Cached Stock Data {'due to After-Market hours' if not PKDateUtilities.isTradingTime() else ''}!"
|
389
409
|
+ colorText.END
|
390
410
|
)
|
391
411
|
if stockData is not None and len(stockData) > 0:
|
@@ -0,0 +1 @@
|
|
1
|
+
VERSION='0.46.20250221.728'
|
@@ -1887,7 +1887,11 @@ def main(userArgs=None,optionalFinalOutcome_df=None):
|
|
1887
1887
|
pass
|
1888
1888
|
|
1889
1889
|
loadCount = len(stockDictPrimary) if stockDictPrimary is not None else 0
|
1890
|
-
|
1890
|
+
# Let's use screening only for the stocks for which we could get the data.
|
1891
|
+
savedOrDownloadedKeys = list(stockDictPrimary.keys())
|
1892
|
+
missingStocks = set(listStockCodes) - set(savedOrDownloadedKeys)
|
1893
|
+
OutputControls().printOutput(f"{colorText.GREEN} [+] Adding {len(listStockCodes)-len(missingStocks)} stocks out of {len(listStockCodes)} to the queue...{colorText.END}")
|
1894
|
+
listStockCodes = list(set(listStockCodes)-set(missingStocks)) if not downloadOnly else listStockCodes
|
1891
1895
|
if downloadOnly:
|
1892
1896
|
OutputControls().printOutput(
|
1893
1897
|
colorText.WARN
|
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: pkscreener
|
3
|
-
Version: 0.46.
|
3
|
+
Version: 0.46.20250221.728
|
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.
|
6
|
+
Download-URL: https://github.com/pkjmesra/pkscreener/archive/v0.46.20250221.728.zip
|
7
7
|
Author: pkjmesra
|
8
8
|
Author-email: pkjmesra@gmail.com
|
9
9
|
License: OSI Approved (MIT)
|
@@ -392,15 +392,15 @@ After you have finished the run, go to that copied path, zip the contents of the
|
|
392
392
|
[MADE-IN-INDIA-badge]: https://img.shields.io/badge/MADE%20WITH%20%E2%9D%A4%20IN-INDIA-orange
|
393
393
|
[MADE-IN-INDIA]: https://en.wikipedia.org/wiki/India
|
394
394
|
[Windows-badge]: https://img.shields.io/badge/Windows-0078D6?logo=windows&logoColor=white
|
395
|
-
[Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
395
|
+
[Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/pkscreenercli.exe
|
396
396
|
[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.
|
397
|
+
[Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/pkscreenercli_x64.bin
|
398
398
|
[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.
|
399
|
+
[Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/pkscreenercli_arm64.bin
|
400
400
|
[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.
|
401
|
+
[Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/pkscreenercli_x64.run
|
402
402
|
[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.
|
403
|
+
[Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250220.727/pkscreenercli_arm64.run
|
404
404
|
[GitHub release (latest by date)-badge]: https://img.shields.io/github/v/release/pkjmesra/PKScreener
|
405
405
|
[GitHub release (latest by date)]: https://github.com/pkjmesra/PKScreener/releases/latest
|
406
406
|
[pypi-badge]: https://img.shields.io/pypi/v/pkscreener.svg?style=flat-square
|
@@ -1 +0,0 @@
|
|
1
|
-
VERSION='0.46.20250220.726'
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/ArtTexts.py
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/Backtest.py
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/Barometer.py
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/CandlePatterns.py
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/Changelog.py
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/ConfigManager.py
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/ConsoleUtility.py
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/GlobalStore.py
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/ImageUtility.py
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/MarketMonitor.py
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/MarketStatus.py
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/MenuOptions.py
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/Messenger.py
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/OtaUpdater.py
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PKAnalytics.py
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PKDataService.py
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PKDemoHandler.py
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PKPremiumHandler.py
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PKScanRunner.py
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PKScheduler.py
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PKSpreadsheets.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/Portfolio.py
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/PortfolioXRay.py
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/StockScreener.py
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/StockSentiment.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener/classes/WorkflowManager.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener.egg-info/SOURCES.txt
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener.egg-info/entry_points.txt
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener.egg-info/not-zip-safe
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener.egg-info/requires.txt
RENAMED
File without changes
|
{pkscreener-0.46.20250220.726 → pkscreener-0.46.20250221.728}/pkscreener.egg-info/top_level.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|