pkscreener 0.46.20250213.708__tar.gz → 0.46.20250213.710__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.20250213.708 → pkscreener-0.46.20250213.710}/PKG-INFO +9 -9
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/README.md +5 -5
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/README.txt +5 -5
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/MarketMonitor.py +18 -14
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/WorkflowManager.py +23 -0
- pkscreener-0.46.20250213.710/pkscreener/classes/__init__.py +1 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/pkscreenerbot.py +7 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/requirements.txt +2 -2
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener.egg-info/PKG-INFO +9 -9
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener.egg-info/requires.txt +2 -2
- pkscreener-0.46.20250213.708/pkscreener/classes/__init__.py +0 -1
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/LICENSE +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/Disclaimer.txt +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/LICENSE-Others.txt +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/LICENSE.txt +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/LogoWM.txt +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/__init__.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/ArtTexts.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/AssetsManager.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/Backtest.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/Barometer.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/BaseScreeningStatistics.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/CandlePatterns.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/Changelog.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/ConfigManager.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/ConsoleMenuUtility.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/ConsoleUtility.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/Fetcher.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/GlobalStore.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/ImageUtility.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/MarketStatus.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/MenuOptions.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/Messenger.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/OtaUpdater.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PKAnalytics.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PKDataService.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PKDemoHandler.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PKMarketOpenCloseAnalyser.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PKPremiumHandler.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PKScanRunner.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PKScheduledTaskProgress.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PKScheduler.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PKSpreadsheets.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PKTask.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PKUserRegistration.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/Pktalib.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/Portfolio.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PortfolioXRay.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/ScreeningStatistics.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/StockScreener.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/StockSentiment.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/UserMenuChoicesHandler.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/Utility.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/keys.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/courbd.ttf +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/globals.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/pkscreener.ini +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/pkscreenercli.py +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener.egg-info/SOURCES.txt +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener.egg-info/dependency_links.txt +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener.egg-info/entry_points.txt +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener.egg-info/not-zip-safe +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener.egg-info/top_level.txt +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/setup.cfg +0 -0
- {pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/setup.py +0 -0
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: pkscreener
|
3
|
-
Version: 0.46.20250213.
|
3
|
+
Version: 0.46.20250213.710
|
4
4
|
Summary: A Python-based stock screener for NSE, India with alerts to Telegram Channel (pkscreener)
|
5
5
|
Home-page: https://github.com/pkjmesra/pkscreener
|
6
|
-
Download-URL: https://github.com/pkjmesra/pkscreener/archive/v0.46.20250213.
|
6
|
+
Download-URL: https://github.com/pkjmesra/pkscreener/archive/v0.46.20250213.710.zip
|
7
7
|
Author: pkjmesra
|
8
8
|
Author-email: pkjmesra@gmail.com
|
9
9
|
License: OSI Approved (MIT)
|
@@ -33,8 +33,8 @@ 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.
|
37
|
-
Requires-Dist: PKNSETools>=0.1.20250122.
|
36
|
+
Requires-Dist: PKDevTools>=0.13.20250126.233
|
37
|
+
Requires-Dist: PKNSETools>=0.1.20250122.137
|
38
38
|
Requires-Dist: Pyarrow
|
39
39
|
Requires-Dist: pyppeteer
|
40
40
|
Requires-Dist: pytz
|
@@ -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.20250213.
|
395
|
+
[Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/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.20250213.
|
397
|
+
[Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/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.20250213.
|
399
|
+
[Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/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.20250213.
|
401
|
+
[Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/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.20250213.
|
403
|
+
[Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/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.20250213.
|
331
|
+
[Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/pkscreenercli.exe
|
332
332
|
[Linux-badge_x64]: https://img.shields.io/badge/Linux(x64)-FCC624?logo=linux&logoColor=black
|
333
|
-
[Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.
|
333
|
+
[Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/pkscreenercli_x64.bin
|
334
334
|
[Linux-badge_arm64]: https://img.shields.io/badge/Linux(arm64)-FCC624?logo=linux&logoColor=black
|
335
|
-
[Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.
|
335
|
+
[Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/pkscreenercli_arm64.bin
|
336
336
|
[Mac OS-badge_x64]: https://img.shields.io/badge/mac%20os(x64)-D3D3D3?logo=apple&logoColor=000000
|
337
|
-
[Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.
|
337
|
+
[Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/pkscreenercli_x64.run
|
338
338
|
[Mac OS-badge_arm64]: https://img.shields.io/badge/mac%20os(arm64)-D3D3D3?logo=apple&logoColor=000000
|
339
|
-
[Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.
|
339
|
+
[Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/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.20250213.
|
331
|
+
[Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/pkscreenercli.exe
|
332
332
|
[Linux-badge_x64]: https://img.shields.io/badge/Linux(x64)-FCC624?logo=linux&logoColor=black
|
333
|
-
[Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.
|
333
|
+
[Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/pkscreenercli_x64.bin
|
334
334
|
[Linux-badge_arm64]: https://img.shields.io/badge/Linux(arm64)-FCC624?logo=linux&logoColor=black
|
335
|
-
[Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.
|
335
|
+
[Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/pkscreenercli_arm64.bin
|
336
336
|
[Mac OS-badge_x64]: https://img.shields.io/badge/mac%20os(x64)-D3D3D3?logo=apple&logoColor=000000
|
337
|
-
[Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.
|
337
|
+
[Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/pkscreenercli_x64.run
|
338
338
|
[Mac OS-badge_arm64]: https://img.shields.io/badge/mac%20os(arm64)-D3D3D3?logo=apple&logoColor=000000
|
339
|
-
[Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.
|
339
|
+
[Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/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.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/MarketMonitor.py
RENAMED
@@ -95,31 +95,35 @@ class MarketMonitor(SingletonMixin, metaclass=SingletonType):
|
|
95
95
|
return option
|
96
96
|
|
97
97
|
def saveMonitorResultStocks(self, results_df):
|
98
|
+
try:
|
99
|
+
self.alertStocks = []
|
100
|
+
lastSavedResults = self.monitorResultStocks[str(self.monitorIndex)]
|
101
|
+
lastSavedResults = lastSavedResults.split(",")
|
102
|
+
except:
|
103
|
+
lastSavedResults = []
|
104
|
+
pass
|
105
|
+
prevOutput_results = ""
|
98
106
|
if results_df is None or results_df.empty:
|
99
107
|
prevOutput_results = "NONE"
|
100
108
|
else:
|
101
109
|
prevOutput_results = results_df[~results_df.index.duplicated(keep='first')]
|
102
110
|
prevOutput_results = prevOutput_results.index
|
103
|
-
# # Maybe the index is an int ?
|
104
|
-
# prevOutput_results = [str(stock) for stock in prevOutput_results]
|
105
|
-
try:
|
106
|
-
lastSavedResults = self.monitorResultStocks[str(self.monitorIndex)]
|
107
|
-
if lastSavedResults is not None and len(lastSavedResults) > 0:
|
108
|
-
lastSavedResults = lastSavedResults.split(",")
|
109
|
-
s = set(lastSavedResults)
|
110
|
-
self.alertStocks = [x for x in prevOutput_results if x not in s]
|
111
|
-
else:
|
112
|
-
self.alertStocks = []
|
113
|
-
except: # pragma: no cover
|
114
|
-
pass
|
115
111
|
prevOutput_results = ",".join(prevOutput_results)
|
116
|
-
if len(self.monitorResultStocks.keys()) >
|
112
|
+
if len(self.monitorResultStocks.keys()) > self.monitorIndex and len(self.monitorResultStocks[str(self.monitorIndex)]) > 0 and prevOutput_results == "NONE":
|
117
113
|
prevOutput_results = self.monitorResultStocks[str(self.monitorIndex)]
|
118
|
-
|
114
|
+
addedStocks = list(set(prevOutput_results.split(',')) - set(lastSavedResults)) # Elements in new df but not in the saved df
|
115
|
+
if len(self.alertStocks) != len(addedStocks) and len(addedStocks) > 0:
|
116
|
+
self.alertStocks = addedStocks
|
117
|
+
diffAlerts = list(set(self.alertStocks) - set(addedStocks))
|
118
|
+
if len(diffAlerts) > 0:
|
119
|
+
self.alertStocks = addedStocks
|
120
|
+
if len(addedStocks) > 0:
|
121
|
+
self.monitorResultStocks[str(self.monitorIndex)] = prevOutput_results
|
119
122
|
|
120
123
|
def refresh(self, screen_df:pd.DataFrame=None, screenOptions=None, chosenMenu="", dbTimestamp="", telegram=False):
|
121
124
|
highlightRows = []
|
122
125
|
highlightCols = []
|
126
|
+
telegram_df = None
|
123
127
|
if screen_df is None or screen_df.empty or screenOptions is None:
|
124
128
|
return
|
125
129
|
screen_monitor_df = screen_df.copy()
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/WorkflowManager.py
RENAMED
@@ -91,6 +91,29 @@ def run_workflow(command=None, user=None, options=None, workflowType="B",repo=No
|
|
91
91
|
if workflow_name is None or workflow_postData is None or ghp_token is None:
|
92
92
|
raise Exception("workflow_name, workflow_postData, and ghp_token must NOT be blank!")
|
93
93
|
data = workflow_postData
|
94
|
+
elif workflowType == "S": # Scanner job kick off for 1-on-1 alerts
|
95
|
+
cmd_options = options.replace("_",":")
|
96
|
+
if workflow_name is None:
|
97
|
+
workflow_name = "w8-workflow-alert-scan_generic.yml"
|
98
|
+
if 'ALERT_TRIGGER' in os.environ.keys() and os.environ["ALERT_TRIGGER"] == 'Y':
|
99
|
+
alertTrigger = 'Y'
|
100
|
+
else:
|
101
|
+
alertTrigger = 'N'
|
102
|
+
if user is None or len(user) == 0:
|
103
|
+
user = ""
|
104
|
+
data = (
|
105
|
+
'{"ref":"'
|
106
|
+
+ branch
|
107
|
+
+ '","inputs":{"user":"'
|
108
|
+
+ f"{user}"
|
109
|
+
+ '","params":"'
|
110
|
+
+ f'{cmd_options}'
|
111
|
+
+ f'","ref":"{branch}","alertTrigger":"'
|
112
|
+
+ f"{alertTrigger}"
|
113
|
+
+ '","name":"'
|
114
|
+
+ f"{command}"
|
115
|
+
+ '"}}'
|
116
|
+
)
|
94
117
|
|
95
118
|
if ghp_token is None:
|
96
119
|
_, _, _, ghp_token = PKEnvironment().secrets
|
@@ -0,0 +1 @@
|
|
1
|
+
VERSION='0.46.20250213.710'
|
@@ -654,9 +654,16 @@ def subscribeToScannerAlerts(update: Update, context: CallbackContext) -> str:
|
|
654
654
|
menuText = f"You need at least <b>₹ {requiredBalance}</b> to subscribe to <b>{scanId} alerts for a day</b> ! Your current balance <b>₹ {alertUser.balance}</b> is <b>insufficient</b>. {payWall}"
|
655
655
|
else:
|
656
656
|
# Sufficient balance to subscribe to scanId
|
657
|
+
needsNewJobKickedOff = False
|
658
|
+
subscribedUsers = dbManager.usersForScannerJobId(scannerJobId=scanId)
|
659
|
+
if subscribedUsers is None or len(subscribedUsers) == 0:
|
660
|
+
# This is the first user who's requesting this scanner
|
661
|
+
needsNewJobKickedOff = True
|
657
662
|
subscribed = dbManager.updateAlertSubscriptionModel(user.id,requiredBalance,scanId)
|
658
663
|
if subscribed:
|
659
664
|
menuText = f"You have been added to receive the alerts for {scanId}. Please note that it is valid only for today during Market Hours and resets right after that. You will need to re-subscribe again if you need it on the next day. Thank you for trusting PKScreener!"
|
665
|
+
if needsNewJobKickedOff:
|
666
|
+
run_workflow(f"{scanId}_{user.id}", str(user.id), f'--systemlaunched -a y -m {str(scanId).upper().replace("_",":")}', workflowType="S")
|
660
667
|
else:
|
661
668
|
menuText = "We encountered an error updating your subscription! Please reach out to @ItsOnlyPK on Telegram with your UTR and subscription scanner details."
|
662
669
|
|
@@ -19,8 +19,8 @@ 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.
|
23
|
-
PKNSETools>=0.1.20250122.
|
22
|
+
PKDevTools>=0.13.20250126.233
|
23
|
+
PKNSETools>=0.1.20250122.137
|
24
24
|
Pyarrow #>=17.0.0
|
25
25
|
pyppeteer #>=2.0.0
|
26
26
|
pytz #>=2024.2
|
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: pkscreener
|
3
|
-
Version: 0.46.20250213.
|
3
|
+
Version: 0.46.20250213.710
|
4
4
|
Summary: A Python-based stock screener for NSE, India with alerts to Telegram Channel (pkscreener)
|
5
5
|
Home-page: https://github.com/pkjmesra/pkscreener
|
6
|
-
Download-URL: https://github.com/pkjmesra/pkscreener/archive/v0.46.20250213.
|
6
|
+
Download-URL: https://github.com/pkjmesra/pkscreener/archive/v0.46.20250213.710.zip
|
7
7
|
Author: pkjmesra
|
8
8
|
Author-email: pkjmesra@gmail.com
|
9
9
|
License: OSI Approved (MIT)
|
@@ -33,8 +33,8 @@ 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.
|
37
|
-
Requires-Dist: PKNSETools>=0.1.20250122.
|
36
|
+
Requires-Dist: PKDevTools>=0.13.20250126.233
|
37
|
+
Requires-Dist: PKNSETools>=0.1.20250122.137
|
38
38
|
Requires-Dist: Pyarrow
|
39
39
|
Requires-Dist: pyppeteer
|
40
40
|
Requires-Dist: pytz
|
@@ -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.20250213.
|
395
|
+
[Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/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.20250213.
|
397
|
+
[Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/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.20250213.
|
399
|
+
[Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/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.20250213.
|
401
|
+
[Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/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.20250213.
|
403
|
+
[Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250213.709/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.20250213.708'
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/ArtTexts.py
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/AssetsManager.py
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/Backtest.py
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/Barometer.py
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/CandlePatterns.py
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/Changelog.py
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/ConfigManager.py
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/ConsoleUtility.py
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/GlobalStore.py
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/ImageUtility.py
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/MarketStatus.py
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/MenuOptions.py
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/Messenger.py
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/OtaUpdater.py
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PKAnalytics.py
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PKDataService.py
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PKDemoHandler.py
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PKPremiumHandler.py
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PKScanRunner.py
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PKScheduler.py
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PKSpreadsheets.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/Portfolio.py
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/PortfolioXRay.py
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/StockScreener.py
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener/classes/StockSentiment.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener.egg-info/SOURCES.txt
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener.egg-info/entry_points.txt
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener.egg-info/not-zip-safe
RENAMED
File without changes
|
{pkscreener-0.46.20250213.708 → pkscreener-0.46.20250213.710}/pkscreener.egg-info/top_level.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|