pkscreener 0.46.20250210.702__tar.gz → 0.46.20250212.704__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.
Files changed (65) hide show
  1. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/PKG-INFO +12 -10
  2. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/README.md +9 -7
  3. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/README.txt +9 -7
  4. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/MarketMonitor.py +16 -5
  5. pkscreener-0.46.20250212.704/pkscreener/classes/__init__.py +1 -0
  6. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/globals.py +3 -3
  7. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/pkscreenerbot.py +331 -243
  8. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/requirements.txt +1 -1
  9. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener.egg-info/PKG-INFO +12 -10
  10. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener.egg-info/requires.txt +1 -1
  11. pkscreener-0.46.20250210.702/pkscreener/classes/__init__.py +0 -1
  12. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/LICENSE +0 -0
  13. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/Disclaimer.txt +0 -0
  14. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/LICENSE-Others.txt +0 -0
  15. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/LICENSE.txt +0 -0
  16. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/LogoWM.txt +0 -0
  17. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/__init__.py +0 -0
  18. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/ArtTexts.py +0 -0
  19. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/AssetsManager.py +0 -0
  20. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/Backtest.py +0 -0
  21. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/Barometer.py +0 -0
  22. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/BaseScreeningStatistics.py +0 -0
  23. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/CandlePatterns.py +0 -0
  24. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/Changelog.py +0 -0
  25. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/ConfigManager.py +0 -0
  26. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/ConsoleMenuUtility.py +0 -0
  27. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/ConsoleUtility.py +0 -0
  28. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/Fetcher.py +0 -0
  29. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/GlobalStore.py +0 -0
  30. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/ImageUtility.py +0 -0
  31. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/MarketStatus.py +0 -0
  32. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/MenuOptions.py +0 -0
  33. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/Messenger.py +0 -0
  34. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/OtaUpdater.py +0 -0
  35. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/PKAnalytics.py +0 -0
  36. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/PKDataService.py +0 -0
  37. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/PKDemoHandler.py +0 -0
  38. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/PKMarketOpenCloseAnalyser.py +0 -0
  39. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/PKPremiumHandler.py +0 -0
  40. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/PKScanRunner.py +0 -0
  41. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/PKScheduledTaskProgress.py +0 -0
  42. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/PKScheduler.py +0 -0
  43. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/PKSpreadsheets.py +0 -0
  44. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/PKTask.py +0 -0
  45. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/PKUserRegistration.py +0 -0
  46. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/Pktalib.py +0 -0
  47. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/Portfolio.py +0 -0
  48. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/PortfolioXRay.py +0 -0
  49. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/ScreeningStatistics.py +0 -0
  50. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/StockScreener.py +0 -0
  51. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/StockSentiment.py +0 -0
  52. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/UserMenuChoicesHandler.py +0 -0
  53. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/Utility.py +0 -0
  54. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/WorkflowManager.py +0 -0
  55. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/classes/keys.py +0 -0
  56. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/courbd.ttf +0 -0
  57. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/pkscreener.ini +0 -0
  58. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener/pkscreenercli.py +0 -0
  59. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener.egg-info/SOURCES.txt +0 -0
  60. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener.egg-info/dependency_links.txt +0 -0
  61. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener.egg-info/entry_points.txt +0 -0
  62. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener.egg-info/not-zip-safe +0 -0
  63. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/pkscreener.egg-info/top_level.txt +0 -0
  64. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/setup.cfg +0 -0
  65. {pkscreener-0.46.20250210.702 → pkscreener-0.46.20250212.704}/setup.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pkscreener
3
- Version: 0.46.20250210.702
3
+ Version: 0.46.20250212.704
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.20250210.702.zip
6
+ Download-URL: https://github.com/pkjmesra/pkscreener/archive/v0.46.20250212.704.zip
7
7
  Author: pkjmesra
8
8
  Author-email: pkjmesra@gmail.com
9
9
  License: OSI Approved (MIT)
@@ -33,7 +33,7 @@ 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.221
36
+ Requires-Dist: PKDevTools>=0.13.20250126.229
37
37
  Requires-Dist: PKNSETools>=0.1.20250122.136
38
38
  Requires-Dist: Pyarrow
39
39
  Requires-Dist: pyppeteer
@@ -68,8 +68,8 @@ Dynamic: summary
68
68
  | [![MADE-IN-INDIA][MADE-IN-INDIA-badge]][MADE-IN-INDIA] | [![GitHub release (latest by date)][GitHub release (latest by date)-badge]][GitHub release (latest by date)] | [![Downloads][Downloads-badge]][Downloads] | ![latest download][Latest-Downloads-badge] | [![Docker Pulls][Docker Pulls-badge]][Docker Status] |
69
69
  | :-------------: | :-----------------: | :-----------------: | :-----------------: | :-----------------: |
70
70
  | Platforms | [![Windows][Windows-badge]][Windows] | [![Linux(x64)][Linux-badge_x64]][Linux_x64] [![Linux(arm64)][Linux-badge_arm64]][Linux_arm64] | [![Mac OS(x64)][Mac OS-badge_x64]][Mac OS_x64] [![Mac OS(arm64)][Mac OS-badge_arm64]][Mac OS_arm64] | [![Docker Status][Docker Status-badge]][Docker Status] |
71
- | Package / Docs | [![Documentation][Documentation-badge]][Documentation] | [![PyPI][pypi-badge]][pypi] | [![is wheel][wheel-badge]][pypi] | ![github license][github-license] |
72
- | Tests | [![CodeFactor][Codefactor-badge]][Codefactor] | [![Coverage Status][Coverage-Status-badge]][Coverage-Status] | [![codecov][codecov-badge]][codecov] | [![After Market][After Market-badge]][After Market] |
71
+ | Package / Docs | [![Documentation][Documentation-badge]][Documentation] [![OpenSSF Best Practices][OpenSSF-Badge]][OpenSSF-pkscreener] | [![PyPI][pypi-badge]][pypi] | [![is wheel][wheel-badge]][pypi] | ![github license][github-license] |
72
+ | Tests/Code-Quality | [![CodeFactor][Codefactor-badge]][Codefactor] | [![Coverage Status][Coverage-Status-badge]][Coverage-Status] | [![codecov][codecov-badge]][codecov] | [![After Market][After Market-badge]][After Market] |
73
73
 
74
74
  ## What is PKScreener?
75
75
  | Telegram Alerts | Nifty AI Prediction | Scheduling Cron Jobs | On-Demand Telegram Bot | Backtesting / Growth of 10k|
@@ -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.20250210.701/pkscreenercli.exe
395
+ [Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250210.703/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.20250210.701/pkscreenercli_x64.bin
397
+ [Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250210.703/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.20250210.701/pkscreenercli_arm64.bin
399
+ [Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250210.703/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.20250210.701/pkscreenercli_x64.run
401
+ [Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250210.703/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.20250210.701/pkscreenercli_arm64.run
403
+ [Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250210.703/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
@@ -436,6 +436,8 @@ After you have finished the run, go to that copied path, zip the contents of the
436
436
  [New Release]: https://github.com/pkjmesra/PKScreener/actions/workflows/w1-workflow-build-matrix.yml
437
437
  [Docker-Build-badge]: https://github.com/pkjmesra/PKScreener/actions/workflows/w15-docker-image.yml/badge.svg
438
438
  [Docker-Build]: https://github.com/pkjmesra/PKScreener/actions/workflows/w15-docker-image.yml
439
+ [OpenSSF-Badge]:https://www.bestpractices.dev/projects/10011/badge
440
+ [OpenSSF-pkscreener]: https://www.bestpractices.dev/projects/10011
439
441
 
440
442
  <!-- [![Docker Build][Docker-Build-badge]][Docker-Build] [![PKScreener Test - New Features][New Features-badge]][New Features] [![w9. After-Market Data Gen][After Market-badge]][After Market] [![1. PKScreener Build - New Release][New Release-badge]][New Release] [![Documentation][Documentation-badge]][Documentation]
441
443
 
@@ -4,8 +4,8 @@
4
4
  | [![MADE-IN-INDIA][MADE-IN-INDIA-badge]][MADE-IN-INDIA] | [![GitHub release (latest by date)][GitHub release (latest by date)-badge]][GitHub release (latest by date)] | [![Downloads][Downloads-badge]][Downloads] | ![latest download][Latest-Downloads-badge] | [![Docker Pulls][Docker Pulls-badge]][Docker Status] |
5
5
  | :-------------: | :-----------------: | :-----------------: | :-----------------: | :-----------------: |
6
6
  | Platforms | [![Windows][Windows-badge]][Windows] | [![Linux(x64)][Linux-badge_x64]][Linux_x64] [![Linux(arm64)][Linux-badge_arm64]][Linux_arm64] | [![Mac OS(x64)][Mac OS-badge_x64]][Mac OS_x64] [![Mac OS(arm64)][Mac OS-badge_arm64]][Mac OS_arm64] | [![Docker Status][Docker Status-badge]][Docker Status] |
7
- | Package / Docs | [![Documentation][Documentation-badge]][Documentation] | [![PyPI][pypi-badge]][pypi] | [![is wheel][wheel-badge]][pypi] | ![github license][github-license] |
8
- | Tests | [![CodeFactor][Codefactor-badge]][Codefactor] | [![Coverage Status][Coverage-Status-badge]][Coverage-Status] | [![codecov][codecov-badge]][codecov] | [![After Market][After Market-badge]][After Market] |
7
+ | Package / Docs | [![Documentation][Documentation-badge]][Documentation] [![OpenSSF Best Practices][OpenSSF-Badge]][OpenSSF-pkscreener] | [![PyPI][pypi-badge]][pypi] | [![is wheel][wheel-badge]][pypi] | ![github license][github-license] |
8
+ | Tests/Code-Quality | [![CodeFactor][Codefactor-badge]][Codefactor] | [![Coverage Status][Coverage-Status-badge]][Coverage-Status] | [![codecov][codecov-badge]][codecov] | [![After Market][After Market-badge]][After Market] |
9
9
 
10
10
  ## What is PKScreener?
11
11
  | Telegram Alerts | Nifty AI Prediction | Scheduling Cron Jobs | On-Demand Telegram Bot | Backtesting / Growth of 10k|
@@ -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.20250210.701/pkscreenercli.exe
331
+ [Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250210.703/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.20250210.701/pkscreenercli_x64.bin
333
+ [Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250210.703/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.20250210.701/pkscreenercli_arm64.bin
335
+ [Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250210.703/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.20250210.701/pkscreenercli_x64.run
337
+ [Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250210.703/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.20250210.701/pkscreenercli_arm64.run
339
+ [Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250210.703/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
@@ -372,6 +372,8 @@ After you have finished the run, go to that copied path, zip the contents of the
372
372
  [New Release]: https://github.com/pkjmesra/PKScreener/actions/workflows/w1-workflow-build-matrix.yml
373
373
  [Docker-Build-badge]: https://github.com/pkjmesra/PKScreener/actions/workflows/w15-docker-image.yml/badge.svg
374
374
  [Docker-Build]: https://github.com/pkjmesra/PKScreener/actions/workflows/w15-docker-image.yml
375
+ [OpenSSF-Badge]:https://www.bestpractices.dev/projects/10011/badge
376
+ [OpenSSF-pkscreener]: https://www.bestpractices.dev/projects/10011
375
377
 
376
378
  <!-- [![Docker Build][Docker-Build-badge]][Docker-Build] [![PKScreener Test - New Features][New Features-badge]][New Features] [![w9. After-Market Data Gen][After Market-badge]][After Market] [![1. PKScreener Build - New Release][New Release-badge]][New Release] [![Documentation][Documentation-badge]][Documentation]
377
379
 
@@ -4,8 +4,8 @@
4
4
  | [![MADE-IN-INDIA][MADE-IN-INDIA-badge]][MADE-IN-INDIA] | [![GitHub release (latest by date)][GitHub release (latest by date)-badge]][GitHub release (latest by date)] | [![Downloads][Downloads-badge]][Downloads] | ![latest download][Latest-Downloads-badge] | [![Docker Pulls][Docker Pulls-badge]][Docker Status] |
5
5
  | :-------------: | :-----------------: | :-----------------: | :-----------------: | :-----------------: |
6
6
  | Platforms | [![Windows][Windows-badge]][Windows] | [![Linux(x64)][Linux-badge_x64]][Linux_x64] [![Linux(arm64)][Linux-badge_arm64]][Linux_arm64] | [![Mac OS(x64)][Mac OS-badge_x64]][Mac OS_x64] [![Mac OS(arm64)][Mac OS-badge_arm64]][Mac OS_arm64] | [![Docker Status][Docker Status-badge]][Docker Status] |
7
- | Package / Docs | [![Documentation][Documentation-badge]][Documentation] | [![PyPI][pypi-badge]][pypi] | [![is wheel][wheel-badge]][pypi] | ![github license][github-license] |
8
- | Tests | [![CodeFactor][Codefactor-badge]][Codefactor] | [![Coverage Status][Coverage-Status-badge]][Coverage-Status] | [![codecov][codecov-badge]][codecov] | [![After Market][After Market-badge]][After Market] |
7
+ | Package / Docs | [![Documentation][Documentation-badge]][Documentation] [![OpenSSF Best Practices][OpenSSF-Badge]][OpenSSF-pkscreener] | [![PyPI][pypi-badge]][pypi] | [![is wheel][wheel-badge]][pypi] | ![github license][github-license] |
8
+ | Tests/Code-Quality | [![CodeFactor][Codefactor-badge]][Codefactor] | [![Coverage Status][Coverage-Status-badge]][Coverage-Status] | [![codecov][codecov-badge]][codecov] | [![After Market][After Market-badge]][After Market] |
9
9
 
10
10
  ## What is PKScreener?
11
11
  | Telegram Alerts | Nifty AI Prediction | Scheduling Cron Jobs | On-Demand Telegram Bot | Backtesting / Growth of 10k|
@@ -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.20250210.701/pkscreenercli.exe
331
+ [Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250210.703/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.20250210.701/pkscreenercli_x64.bin
333
+ [Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250210.703/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.20250210.701/pkscreenercli_arm64.bin
335
+ [Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250210.703/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.20250210.701/pkscreenercli_x64.run
337
+ [Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250210.703/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.20250210.701/pkscreenercli_arm64.run
339
+ [Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250210.703/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
@@ -372,6 +372,8 @@ After you have finished the run, go to that copied path, zip the contents of the
372
372
  [New Release]: https://github.com/pkjmesra/PKScreener/actions/workflows/w1-workflow-build-matrix.yml
373
373
  [Docker-Build-badge]: https://github.com/pkjmesra/PKScreener/actions/workflows/w15-docker-image.yml/badge.svg
374
374
  [Docker-Build]: https://github.com/pkjmesra/PKScreener/actions/workflows/w15-docker-image.yml
375
+ [OpenSSF-Badge]:https://www.bestpractices.dev/projects/10011/badge
376
+ [OpenSSF-pkscreener]: https://www.bestpractices.dev/projects/10011
375
377
 
376
378
  <!-- [![Docker Build][Docker-Build-badge]][Docker-Build] [![PKScreener Test - New Features][New Features-badge]][New Features] [![w9. After-Market Data Gen][After Market-badge]][After Market] [![1. PKScreener Build - New Release][New Release-badge]][New Release] [![Documentation][Documentation-badge]][Documentation]
377
379
 
@@ -241,6 +241,14 @@ class MarketMonitor(SingletonMixin, metaclass=SingletonType):
241
241
  if telegram:
242
242
  self.updateIfRunningInTelegramBotMode(screenOptions, chosenMenu, dbTimestamp, telegram, telegram_df)
243
243
  else:
244
+ if ((screenOptions in self.alertOptions and numRecords > 1) or len(self.alertStocks) > 0): # Alert conditions met? Sound alert!
245
+ notify_df = telegram_df[telegram_df["Stock"].isin(self.alertStocks)]
246
+ notify_output = self.updateIfRunningInTelegramBotMode(screenOptions, chosenMenu, dbTimestamp, False, notify_df)
247
+ if len(notify_output) > 0:
248
+ from PKDevTools.classes.pubsub.publisher import PKUserService
249
+ PKUserService().notify_user(scannerID=screenOptions.replace(":D","").replace(":","_"),notification=notify_output)
250
+ # notify_df = self.monitor_df.reindex(self.alertStocks) # Includes missing stocks, if any. Returns NaN for such cases
251
+ Utility.tools.alertSound(beeps=5)
244
252
  sleep(self.pinnedIntervalWaitSeconds)
245
253
 
246
254
  def updateDataFrameForTelegramMode(self, telegram, screen_monitor_df):
@@ -273,7 +281,8 @@ class MarketMonitor(SingletonMixin, metaclass=SingletonType):
273
281
  return telegram_df
274
282
 
275
283
  def updateIfRunningInTelegramBotMode(self, screenOptions, chosenMenu, dbTimestamp, telegram, telegram_df):
276
- if telegram and telegram_df is not None:
284
+ result_output = ""
285
+ if telegram_df is not None:
277
286
  STD_ENCODING=sys.stdout.encoding if sys.stdout is not None else 'utf-8'
278
287
 
279
288
  telegram_df_tabulated = colorText.miniTabulator().tabulate(
@@ -289,12 +298,14 @@ class MarketMonitor(SingletonMixin, metaclass=SingletonType):
289
298
  chosenMenu = f"{choiceSegments[-2]}>{choiceSegments[-1]}" if (len(choiceSegments)>=4 or len(choiceSegments[-1]) <= 10) else f"{choiceSegments[-1]}"
290
299
  result_output = f"Latest data as of:{dbTimestamp}\n<b>{optionName}{chosenMenu}</b> [{screenOptions}]\n<pre>{telegram_df_tabulated}</pre>"
291
300
  try:
292
- filePath = os.path.join(Archiver.get_user_data_dir(), f"monitor_outputs_{self.monitorIndex}.txt")
293
- f = open(filePath, "w")
294
- f.write(result_output)
295
- f.close()
301
+ if telegram:
302
+ filePath = os.path.join(Archiver.get_user_data_dir(), f"monitor_outputs_{self.monitorIndex}.txt")
303
+ f = open(filePath, "w")
304
+ f.write(result_output)
305
+ f.close()
296
306
  except: # pragma: no cover
297
307
  pass
308
+ return result_output
298
309
 
299
310
  def getScanOptionName(self, screenOptions):
300
311
  from pkscreener.classes.MenuOptions import PREDEFINED_SCAN_MENU_VALUES
@@ -0,0 +1 @@
1
+ VERSION='0.46.20250212.704'
@@ -3995,9 +3995,9 @@ def sendMessageToTelegramChannel(
3995
3995
  os.remove(f)
3996
3996
  except: # pragma: no cover
3997
3997
  pass
3998
- if message is None and mediagroup:
3999
- sendMessageToTelegramChannel(message=f"No scan results found for {menuChoiceHierarchy}", user=user)
4000
- return
3998
+ # if message is None and mediagroup:
3999
+ # sendMessageToTelegramChannel(message=f"No scan results found for {menuChoiceHierarchy}", user=user)
4000
+ # return
4001
4001
  handleAlertSubscriptions(user,message)
4002
4002
  if user is not None:
4003
4003
  if str(user) != str(DEV_CHANNEL_ID) and userPassedArgs is not None and not userPassedArgs.monitor: