pkscreener 0.46.20250214.715__cp312-cp312-win_amd64.whl → 0.46.20250214.716__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.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/README.txt +5 -5
  2. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/PKUserRegistration.py +4 -1
  3. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/Pktalib.py +76 -0
  4. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/ScreeningStatistics.py +2 -0
  5. pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/__init__.py +1 -0
  6. {pkscreener-0.46.20250214.715.dist-info → pkscreener-0.46.20250214.716.dist-info}/METADATA +7 -7
  7. pkscreener-0.46.20250214.716.dist-info/RECORD +58 -0
  8. pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/__init__.py +0 -1
  9. pkscreener-0.46.20250214.715.dist-info/RECORD +0 -58
  10. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/Disclaimer.txt +0 -0
  11. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/LICENSE-Others.txt +0 -0
  12. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/LICENSE.txt +0 -0
  13. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/LogoWM.txt +0 -0
  14. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/__init__.py +0 -0
  15. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/ArtTexts.py +0 -0
  16. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/AssetsManager.py +0 -0
  17. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/Backtest.py +0 -0
  18. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/Barometer.py +0 -0
  19. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/BaseScreeningStatistics.py +0 -0
  20. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/CandlePatterns.py +0 -0
  21. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/Changelog.py +0 -0
  22. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/ConfigManager.py +0 -0
  23. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/ConsoleMenuUtility.py +0 -0
  24. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/ConsoleUtility.py +0 -0
  25. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/Fetcher.py +0 -0
  26. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/GlobalStore.py +0 -0
  27. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/ImageUtility.py +0 -0
  28. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/MarketMonitor.py +0 -0
  29. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/MarketStatus.py +0 -0
  30. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/MenuOptions.py +0 -0
  31. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/Messenger.py +0 -0
  32. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/OtaUpdater.py +0 -0
  33. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/PKAnalytics.py +0 -0
  34. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/PKDataService.py +0 -0
  35. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/PKDemoHandler.py +0 -0
  36. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/PKMarketOpenCloseAnalyser.py +0 -0
  37. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/PKPremiumHandler.py +0 -0
  38. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/PKScanRunner.py +0 -0
  39. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/PKScheduledTaskProgress.py +0 -0
  40. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/PKScheduler.py +0 -0
  41. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/PKSpreadsheets.py +0 -0
  42. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/PKTask.py +0 -0
  43. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/Portfolio.py +0 -0
  44. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/PortfolioXRay.py +0 -0
  45. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/StockScreener.py +0 -0
  46. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/StockSentiment.py +0 -0
  47. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/UserMenuChoicesHandler.py +0 -0
  48. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/Utility.py +0 -0
  49. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/WorkflowManager.py +0 -0
  50. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/classes/keys.py +0 -0
  51. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/courbd.ttf +0 -0
  52. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/globals.py +0 -0
  53. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/pkscreener.ini +0 -0
  54. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/pkscreenerbot.py +0 -0
  55. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/pkscreenercli.py +0 -0
  56. {pkscreener-0.46.20250214.715.data → pkscreener-0.46.20250214.716.data}/purelib/pkscreener/requirements.txt +0 -0
  57. {pkscreener-0.46.20250214.715.dist-info → pkscreener-0.46.20250214.716.dist-info}/LICENSE +0 -0
  58. {pkscreener-0.46.20250214.715.dist-info → pkscreener-0.46.20250214.716.dist-info}/WHEEL +0 -0
  59. {pkscreener-0.46.20250214.715.dist-info → pkscreener-0.46.20250214.716.dist-info}/entry_points.txt +0 -0
  60. {pkscreener-0.46.20250214.715.dist-info → pkscreener-0.46.20250214.716.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.20250214.714/pkscreenercli.exe
331
+ [Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250214.715/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.20250214.714/pkscreenercli_x64.bin
333
+ [Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250214.715/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.20250214.714/pkscreenercli_arm64.bin
335
+ [Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250214.715/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.20250214.714/pkscreenercli_x64.run
337
+ [Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250214.715/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.20250214.714/pkscreenercli_arm64.run
339
+ [Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250214.715/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
@@ -180,8 +180,11 @@ class PKUserRegistration(SingletonMixin, metaclass=SingletonType):
180
180
  @classmethod
181
181
  def presentTrialOptions(self):
182
182
  m = menus()
183
+ multilineOutputEnabled = OutputControls().enableMultipleLineOutput
184
+ OutputControls().enableMultipleLineOutput = True
183
185
  m.renderUserType()
184
- userTypeOption = input(colorText.FAIL + " [+] Select option: ") or "1"
186
+ userTypeOption = OutputControls().takeUserInput(colorText.FAIL + " [+] Select option: ",enableUserInput=True,defaultInput="1")
187
+ OutputControls().enableMultipleLineOutput = multilineOutputEnabled
185
188
  if str(userTypeOption).upper() in ["1"]:
186
189
  return PKUserRegistration.login(trialCount=0)
187
190
  elif str(userTypeOption).upper() in ["2"]:
@@ -78,6 +78,18 @@ else:
78
78
 
79
79
 
80
80
  class pktalib:
81
+
82
+ @classmethod
83
+ def align_series(*series_list, fill_value=0):
84
+ """
85
+ Aligns multiple Pandas Series to have the same index and returns them.
86
+ Missing values are filled with the given fill_value.
87
+ """
88
+ if all(isinstance(s, pd.Series) for s in series_list):
89
+ aligned_series = pd.concat(series_list, axis=1).fillna(fill_value)
90
+ return [aligned_series[col] for col in aligned_series.columns]
91
+ return series_list
92
+
81
93
  @classmethod
82
94
  def AVWAP(self,df,anchored_date:pd.Timestamp):
83
95
  # anchored_date = pd.to_datetime('2022-01-30')
@@ -121,6 +133,8 @@ class pktalib:
121
133
  def VWAP(self, high, low, close, volume,anchor=None):
122
134
  try:
123
135
  import pandas_ta as talib
136
+ # Aligning the series
137
+ # high,low,close = pktalib.align_series(high, low, close, fill_value=0)
124
138
  return talib.vwap(high, low, close, volume,anchor=anchor)
125
139
  except Exception: # pragma: no cover
126
140
  # default_logger().debug(e, exc_info=True)
@@ -131,6 +145,8 @@ class pktalib:
131
145
  try:
132
146
  low_kel = None
133
147
  upp_kel = None
148
+ # Aligning the series
149
+ # high,low,close = pktalib.align_series(high, low, close, fill_value=0)
134
150
  tr = pktalib.TRUERANGE(high, low, close)
135
151
  atr = pktalib.ATR(high, low, close, timeperiod=timeperiod)
136
152
  sma = pktalib.SMA(close=close, timeperiod=timeperiod)
@@ -160,6 +176,8 @@ class pktalib:
160
176
  @classmethod
161
177
  def ATR(self, high, low, close, timeperiod=14):
162
178
  try:
179
+ # Aligning the series
180
+ # high,low,close = pktalib.align_series(high, low, close, fill_value=0)
163
181
  return talib.atr(high, low, close, length= timeperiod)
164
182
  except Exception: # pragma: no cover
165
183
  # default_logger().debug(e, exc_info=True)
@@ -168,6 +186,8 @@ class pktalib:
168
186
  @classmethod
169
187
  def TRUERANGE(self, high, low, close):
170
188
  try:
189
+ # Aligning the series
190
+ # high,low,close = pktalib.align_series(high, low, close, fill_value=0)
171
191
  return talib.true_range(high, low, close)
172
192
  except Exception: # pragma: no cover
173
193
  # default_logger().debug(e, exc_info=True)
@@ -202,6 +222,8 @@ class pktalib:
202
222
  @classmethod
203
223
  def MFI(self, high, low, close,volume, timeperiod=14):
204
224
  try:
225
+ # Aligning the series
226
+ # high,low,close,volume = pktalib.align_series(high, low, close,volume, fill_value=0)
205
227
  return talib.mfi(high, low, close,volume, length= timeperiod)
206
228
  except Exception: # pragma: no cover
207
229
  # default_logger().debug(e, exc_info=True)
@@ -218,6 +240,8 @@ class pktalib:
218
240
  @classmethod
219
241
  def CCI(self, high, low, close, timeperiod):
220
242
  try:
243
+ # Aligning the series
244
+ # high,low,close = pktalib.align_series(high, low, close, fill_value=0)
221
245
  return talib.cci(high, low, close, timeperiod)
222
246
  except Exception: # pragma: no cover
223
247
  # default_logger().debug(e, exc_info=True)
@@ -226,6 +250,8 @@ class pktalib:
226
250
  @classmethod
227
251
  def Aroon(self, high, low, timeperiod):
228
252
  try:
253
+ # Aligning the series
254
+ # high,low = pktalib.align_series(high, low, fill_value=0)
229
255
  return talib.aroon(high, low, timeperiod)
230
256
  except Exception: # pragma: no cover
231
257
  # default_logger().debug(e, exc_info=True)
@@ -240,6 +266,8 @@ class pktalib:
240
266
 
241
267
  @classmethod
242
268
  def STOCHF(self, high, low, close, fastk_period, fastd_period, fastd_matype):
269
+ # Aligning the series
270
+ # high,low,close = pktalib.align_series(high, low, close, fill_value=0)
243
271
  fastk, fastd = talib.STOCHF(high,
244
272
  low,
245
273
  close,
@@ -280,6 +308,8 @@ class pktalib:
280
308
 
281
309
  @classmethod
282
310
  def RVM(self, high, low, close, timeperiod):
311
+ # Aligning the series
312
+ # high,low,close = pktalib.align_series(high, low, close, fill_value=0)
283
313
  # Relative Volatality Measure
284
314
  #Short-term ATRs
285
315
  short1 = pktalib.ATR(high, low, close,3)
@@ -336,6 +366,8 @@ class pktalib:
336
366
 
337
367
  @classmethod
338
368
  def psar(self, high, low, acceleration=0.02, maximum=0.2):
369
+ # Aligning the series
370
+ # high,low = pktalib.align_series(high, low, fill_value=0)
339
371
  psar = talib.SAR(high, low, acceleration=acceleration, maximum=maximum)
340
372
  return psar
341
373
 
@@ -449,6 +481,8 @@ class pktalib:
449
481
  @classmethod
450
482
  def get_ppsr_df(self, high, low, close,pivotPoint=None):
451
483
  try:
484
+ # Aligning the series
485
+ # high,low,close = pktalib.align_series(high, low, close, fill_value=0)
452
486
  PSR = None
453
487
  if pivotPoint is None:
454
488
  return PSR
@@ -480,6 +514,8 @@ class pktalib:
480
514
  @classmethod
481
515
  def CDLMORNINGSTAR(self, open, high, low, close):
482
516
  try:
517
+ # Aligning the series
518
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
483
519
  return talib.cdl_pattern(open, high, low, close, "morningstar")
484
520
  except Exception: # pragma: no cover
485
521
  # default_logger().debug(e, exc_info=True)
@@ -499,6 +535,8 @@ class pktalib:
499
535
  @classmethod
500
536
  def CDLMORNINGDOJISTAR(self, open, high, low, close):
501
537
  try:
538
+ # Aligning the series
539
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
502
540
  return talib.cdl_pattern(open, high, low, close, "morningdojistar")
503
541
  except Exception: # pragma: no cover
504
542
  # default_logger().debug(e, exc_info=True)
@@ -507,6 +545,8 @@ class pktalib:
507
545
  @classmethod
508
546
  def CDLEVENINGSTAR(self, open, high, low, close):
509
547
  try:
548
+ # Aligning the series
549
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
510
550
  return talib.cdl_pattern(open, high, low, close, "eveningstar")
511
551
  except Exception: # pragma: no cover
512
552
  # default_logger().debug(e, exc_info=True)
@@ -515,6 +555,8 @@ class pktalib:
515
555
  @classmethod
516
556
  def CDLEVENINGDOJISTAR(self, open, high, low, close):
517
557
  try:
558
+ # Aligning the series
559
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
518
560
  return talib.cdl_pattern(open, high, low, close, "eveningdojistar")
519
561
  except Exception: # pragma: no cover
520
562
  # default_logger().debug(e, exc_info=True)
@@ -523,6 +565,8 @@ class pktalib:
523
565
  @classmethod
524
566
  def CDLLADDERBOTTOM(self, open, high, low, close):
525
567
  try:
568
+ # Aligning the series
569
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
526
570
  return talib.cdl_pattern(open, high, low, close, "ladderbottom")
527
571
  except Exception: # pragma: no cover
528
572
  # default_logger().debug(e, exc_info=True)
@@ -531,6 +575,8 @@ class pktalib:
531
575
  @classmethod
532
576
  def CDL3LINESTRIKE(self, open, high, low, close):
533
577
  try:
578
+ # Aligning the series
579
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
534
580
  return talib.cdl_pattern(open, high, low, close, "3linestrike")
535
581
  except Exception: # pragma: no cover
536
582
  # default_logger().debug(e, exc_info=True)
@@ -539,6 +585,8 @@ class pktalib:
539
585
  @classmethod
540
586
  def CDL3BLACKCROWS(self, open, high, low, close):
541
587
  try:
588
+ # Aligning the series
589
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
542
590
  return talib.cdl_pattern(open, high, low, close, "3blackcrows")
543
591
  except Exception: # pragma: no cover
544
592
  # default_logger().debug(e, exc_info=True)
@@ -547,6 +595,8 @@ class pktalib:
547
595
  @classmethod
548
596
  def CDL3INSIDE(self, open, high, low, close):
549
597
  try:
598
+ # Aligning the series
599
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
550
600
  return talib.cdl_pattern(open, high, low, close, "3inside")
551
601
  except Exception: # pragma: no cover
552
602
  # default_logger().debug(e, exc_info=True)
@@ -555,6 +605,8 @@ class pktalib:
555
605
  @classmethod
556
606
  def CDL3OUTSIDE(self, open, high, low, close):
557
607
  try:
608
+ # Aligning the series
609
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
558
610
  return talib.cdl_pattern(open, high, low, close, "3outside")
559
611
  except Exception: # pragma: no cover
560
612
  # default_logger().debug(e, exc_info=True)
@@ -563,6 +615,8 @@ class pktalib:
563
615
  @classmethod
564
616
  def CDL3WHITESOLDIERS(self, open, high, low, close):
565
617
  try:
618
+ # Aligning the series
619
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
566
620
  return talib.cdl_pattern(open, high, low, close, "3whitesoldiers")
567
621
  except Exception: # pragma: no cover
568
622
  # default_logger().debug(e, exc_info=True)
@@ -571,6 +625,8 @@ class pktalib:
571
625
  @classmethod
572
626
  def CDLHARAMI(self, open, high, low, close):
573
627
  try:
628
+ # Aligning the series
629
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
574
630
  return talib.cdl_pattern(open, high, low, close, "harami")
575
631
  except Exception: # pragma: no cover
576
632
  # default_logger().debug(e, exc_info=True)
@@ -579,6 +635,8 @@ class pktalib:
579
635
  @classmethod
580
636
  def CDLHARAMICROSS(self, open, high, low, close):
581
637
  try:
638
+ # Aligning the series
639
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
582
640
  return talib.cdl_pattern(open, high, low, close, "haramicross")
583
641
  except Exception: # pragma: no cover
584
642
  # default_logger().debug(e, exc_info=True)
@@ -587,6 +645,8 @@ class pktalib:
587
645
  @classmethod
588
646
  def CDLMARUBOZU(self, open, high, low, close):
589
647
  try:
648
+ # Aligning the series
649
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
590
650
  return talib.cdl_pattern(open, high, low, close, "marubozu")
591
651
  except Exception: # pragma: no cover
592
652
  # default_logger().debug(e, exc_info=True)
@@ -595,6 +655,8 @@ class pktalib:
595
655
  @classmethod
596
656
  def CDLHANGINGMAN(self, open, high, low, close):
597
657
  try:
658
+ # Aligning the series
659
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
598
660
  return talib.cdl_pattern(open, high, low, close, "hangingman")
599
661
  except Exception: # pragma: no cover
600
662
  # default_logger().debug(e, exc_info=True)
@@ -603,6 +665,8 @@ class pktalib:
603
665
  @classmethod
604
666
  def CDLHAMMER(self, open, high, low, close):
605
667
  try:
668
+ # Aligning the series
669
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
606
670
  return talib.cdl_pattern(open, high, low, close, "hammer")
607
671
  except Exception: # pragma: no cover
608
672
  # default_logger().debug(e, exc_info=True)
@@ -611,6 +675,8 @@ class pktalib:
611
675
  @classmethod
612
676
  def CDLINVERTEDHAMMER(self, open, high, low, close):
613
677
  try:
678
+ # Aligning the series
679
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
614
680
  return talib.cdl_pattern(open, high, low, close, "invertedhammer")
615
681
  except Exception: # pragma: no cover
616
682
  # default_logger().debug(e, exc_info=True)
@@ -619,6 +685,8 @@ class pktalib:
619
685
  @classmethod
620
686
  def CDLSHOOTINGSTAR(self, open, high, low, close):
621
687
  try:
688
+ # Aligning the series
689
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
622
690
  return talib.cdl_pattern(open, high, low, close, "shootingstar")
623
691
  except Exception: # pragma: no cover
624
692
  # default_logger().debug(e, exc_info=True)
@@ -627,6 +695,8 @@ class pktalib:
627
695
  @classmethod
628
696
  def CDLDRAGONFLYDOJI(self, open, high, low, close):
629
697
  try:
698
+ # Aligning the series
699
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
630
700
  return talib.cdl_pattern(open, high, low, close, "dragonflydoji")
631
701
  except Exception: # pragma: no cover
632
702
  # default_logger().debug(e, exc_info=True)
@@ -635,6 +705,8 @@ class pktalib:
635
705
  @classmethod
636
706
  def CDLGRAVESTONEDOJI(self, open, high, low, close):
637
707
  try:
708
+ # Aligning the series
709
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
638
710
  return talib.cdl_pattern(open, high, low, close, "gravestonedoji")
639
711
  except Exception: # pragma: no cover
640
712
  # default_logger().debug(e, exc_info=True)
@@ -643,6 +715,8 @@ class pktalib:
643
715
  @classmethod
644
716
  def CDLDOJI(self, open, high, low, close):
645
717
  try:
718
+ # Aligning the series
719
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
646
720
  return talib.cdl_pattern(open, high, low, close, "doji")
647
721
  except Exception: # pragma: no cover
648
722
  # default_logger().debug(e, exc_info=True)
@@ -651,6 +725,8 @@ class pktalib:
651
725
  @classmethod
652
726
  def CDLENGULFING(self, open, high, low, close):
653
727
  try:
728
+ # Aligning the series
729
+ # open,high,low,close = pktalib.align_series(open,high, low, close, fill_value=0)
654
730
  return talib.cdl_pattern(open, high, low, close, "engulfing")
655
731
  except Exception: # pragma: no cover
656
732
  # default_logger().debug(e, exc_info=True)
@@ -2734,6 +2734,8 @@ class ScreeningStatistics:
2734
2734
  data = df.copy()
2735
2735
  try:
2736
2736
  data = data.replace(np.inf, np.nan).replace(-np.inf, np.nan).dropna(how="all")
2737
+ if data.empty:
2738
+ return (data,data)
2737
2739
  # self.default_logger.info(f"Preprocessing data:\n{data.head(1)}\n")
2738
2740
  if daysToLookback is None:
2739
2741
  daysToLookback = self.configManager.daysToLookback
@@ -0,0 +1 @@
1
+ VERSION='0.46.20250214.716'
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pkscreener
3
- Version: 0.46.20250214.715
3
+ Version: 0.46.20250214.716
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.20250214.715.zip
6
+ Download-URL: https://github.com/pkjmesra/pkscreener/archive/v0.46.20250214.716.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.20250214.714/pkscreenercli.exe
360
+ [Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250214.715/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.20250214.714/pkscreenercli_x64.bin
362
+ [Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250214.715/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.20250214.714/pkscreenercli_arm64.bin
364
+ [Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250214.715/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.20250214.714/pkscreenercli_x64.run
366
+ [Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250214.715/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.20250214.714/pkscreenercli_arm64.run
368
+ [Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250214.715/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.20250214.716.data/purelib/pkscreener/Disclaimer.txt,sha256=x7M9Clrb9qACqOa-Vnwh9wliISLgudW5Kv_dgEk3N_Q,1405
2
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/LICENSE-Others.txt,sha256=0put8oIYbAYz98IGnp2F1CpHoyR_iyk0PRYG5D-U1K0,277059
3
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/LICENSE.txt,sha256=q80QYQZCkhPymkaQKXZJwOFYU6X-4lUHRzCGYERdLpA,1099
4
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/LogoWM.txt,sha256=7Njnavpy_FKY4Iwbzv1JqsYMcOdkDSKAKXP3SAItKV0,14868
5
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/README.txt,sha256=Q-j3aiQ1vOEtNgDkrxfbxnsMhmhG87GM_tJHRFkJ7U4,33085
6
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/__init__.py,sha256=cH0zxpSdH-dhmZihoe5mpE2NRRmF2Na_KaGMO9u33Rg,1669
7
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/courbd.ttf,sha256=SKpnp-BRs7AZcdI83nencS3Q7xe0anbbP1YMOxLlEhU,791436
8
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/globals.py,sha256=h7gRVI1ljj5AQp-KvOMGz9LqXYvt0v2YaWdxFeP-rqg,245088
9
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/pkscreener.ini,sha256=v0MV7kLxi0ehh1a013wg6TLXDeeLRO8PKapICSU1u-k,2451
10
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/pkscreenerbot.py,sha256=UudYgPFr0yrp4PqSyqWZxw2L2jQMHXCFgOygvOxQ9B0,109998
11
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/pkscreenercli.py,sha256=NtW0PGiMKgkBfQk6jZ8WE_ipTRrZP7v1020xQNHZdUE,58213
12
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/requirements.txt,sha256=TJVfdV2FVMH2KO5lPX_i1PrMOLFRtFMzGDsbhElMqJI,1503
13
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/ArtTexts.py,sha256=UzU0v3LX4PsWcx_ATv5M-T4v93uLz2hmvyDtew6qzZk,19708
14
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/AssetsManager.py,sha256=0__n99u7SD0KHmpnybm_msu35CAlv5W6WwtT5LrSkNc,34313
15
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/Backtest.py,sha256=VoNronl--07E477I9lhwfEjI4vK5VHu_tcDRO1K96hU,10784
16
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/Barometer.py,sha256=aZWu0TFbwRBvnkyN_Ws4a_2FYNhKKuqEpoQAqokthPc,9640
17
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/BaseScreeningStatistics.py,sha256=Dev8eCx8eGNqDsbXj-t68hLSDpKDICcyb9yH_n_IbYg,3086
18
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/CandlePatterns.py,sha256=IFVUXzx175aqZlL7JlmNl308aeIkSD6Hugl4M9zg9Io,17419
19
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/Changelog.py,sha256=S0hNTDYptWUxFrdTzqinjFLIywVAuKlYR1aCjepADn0,1511
20
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/ConfigManager.py,sha256=ZIxZ-IqWjIXpo_7SWRLx5e8sc0b92gGnc4qqMZVproM,54426
21
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/ConsoleMenuUtility.py,sha256=QZLPA0li0bfs1zNijfq_utovulY5fl4vXWk89CBpL5Q,10291
22
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/ConsoleUtility.py,sha256=gNMAm4iQF0ClmVPBe6ZnsjWQ-rfnTq6R_mLBjA6GgyI,12330
23
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/Fetcher.py,sha256=ZwU9iW0nbGAgM0mKZNjYgy9sm8jRSw9PvYmyhuY7Pos,12620
24
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/GlobalStore.py,sha256=UCYctbau2ZAShkWOLA7-p52Pg_irghCWRoa6UrIKYQQ,3799
25
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/ImageUtility.py,sha256=DKPiM7u-fGPujD63VLCWUsvesgflVYDiLqyw_KWOK8g,37629
26
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/MarketMonitor.py,sha256=m_fKqZ5_BhZYGTCsnO81FFerrfDzyrLWILnD_aed5V8,22180
27
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/MarketStatus.py,sha256=oBDTCTGazzOEhcclugxOOtyhu2VVT2XQ-t-GmY_pT7g,3823
28
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/MenuOptions.py,sha256=RIPQ9mVC9I07GZubrmOtUAQg10GbCoYwF3fnvV1dvqY,65741
29
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/Messenger.py,sha256=yKqq3eE2JkvTOeKcNZoPpCgxQ9FjcEeB1iHIKwwq8dA,8572
30
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/OtaUpdater.py,sha256=jSjVqgiZ4CGVkieJMekNLHZGx_eOGN-Xg4RF3eZO_Nk,13816
31
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/PKAnalytics.py,sha256=4LdzjSjbJExBpD2DM9wXWuFqKiC8QEr9HT2XFiJq7oA,5368
32
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/PKDataService.py,sha256=InEI3AGt_ykYfbwq2v1_NWUefTqPluKHSh_4ksFSUzE,3456
33
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/PKDemoHandler.py,sha256=wh48WLLFxBAFHML5Sq5G5-UFP96snJ9yKJgpKWuQ2Zs,2253
34
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/PKMarketOpenCloseAnalyser.py,sha256=zscdvHwDb5GQttqnR4Ed0SsVfOFeqKQgfIo6LWukgH0,34366
35
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/PKPremiumHandler.py,sha256=L3O3EwIZBE9PpdDFIGH-2Ec9Gi3IlzCd6RfQSXUd6So,5695
36
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/PKScanRunner.py,sha256=9Qy6xouK6qkNExeWF8LrxYXynI3Ju9UrSY5kI5W81Ok,27313
37
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/PKScheduledTaskProgress.py,sha256=wDMORWmyglcu06woVNpgDlESsMIiYX96MXO0VoBlLYg,1694
38
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/PKScheduler.py,sha256=Od3Niv6Q_aHarau9agCVt7h194votlaDX4j1Xv-_ru4,8994
39
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/PKSpreadsheets.py,sha256=BIICJx79QjGFPrnmQ34357jOGp79vuiknx6A_kC9y8Y,8466
40
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/PKTask.py,sha256=YPxzn0dA5ty7CtRFi1wQphC9vCdK8tB2_3DYHje9jgc,1907
41
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/PKUserRegistration.py,sha256=q5V3GChPEFl4-je4VFJDGDT4GK37t3sBT0UY9GT6L8s,11657
42
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/Pktalib.py,sha256=yko7TZMOsLoBv-LbTuT903CsGdyckhypXldh7uoAXmo,34179
43
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/Portfolio.py,sha256=dxviO0G3OqJza4Nbpj5OCph8PZlfkRCkL3LfLJYgqu0,14196
44
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/PortfolioXRay.py,sha256=cMQ-yZrBPWo4gACxFqj3HNG9rqmyqXkS88qpy77JP_s,49612
45
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/ScreeningStatistics.py,sha256=LHPQLinxcvIFCJE6vWN-l50bamJCexbfLn9HP4JNRn0,225368
46
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/StockScreener.py,sha256=wL6RjojBvTqo9XUlh2qoCpERrKdGNTlcDtCTReA0jkI,68437
47
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/StockSentiment.py,sha256=kc5jdXRGm2nIvDK-2y4i_Y1w47_2zWpunjlQsKB7IBY,3640
48
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/UserMenuChoicesHandler.py,sha256=MXJrQPD4yvKSI4p_RcnHt5oZg8AZ59ME7Jf-Nryoy5g,5055
49
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/Utility.py,sha256=6JpIich2-knaZ4sjsjyMoO_4S622KK-Jte2Hi4eYIOs,13870
50
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/WorkflowManager.py,sha256=GgxHCWOOEUv4M7xbIZtcoxndzII4eInex24U99uEWcI,5769
51
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/__init__.py,sha256=RKCuCWX5EoEWDwiTjiaJtbcL_tu8vFQnrlxK-Kt9zW8,28
52
+ pkscreener-0.46.20250214.716.data/purelib/pkscreener/classes/keys.py,sha256=tygV0iu8bKmSPo6HGj1Cb-rTtEWErGrsYRZY7SoCb1g,6957
53
+ pkscreener-0.46.20250214.716.dist-info/LICENSE,sha256=q80QYQZCkhPymkaQKXZJwOFYU6X-4lUHRzCGYERdLpA,1099
54
+ pkscreener-0.46.20250214.716.dist-info/METADATA,sha256=7mF19cgH-4IZ55UeCWatIHoMK2nZVtr0LJlLjk_pbSc,34107
55
+ pkscreener-0.46.20250214.716.dist-info/WHEEL,sha256=cRmSBGD-cl98KkuHMNqv9Ac9L9_VqTvcBYwpIvxN0cg,101
56
+ pkscreener-0.46.20250214.716.dist-info/entry_points.txt,sha256=Pm30xm4sU7YFtFJUC-Te8VlqOvYAvWKFFA5AfQE0xGY,120
57
+ pkscreener-0.46.20250214.716.dist-info/top_level.txt,sha256=oIfcPPw58Q4KU-GDqp25dXbrtvxYXJBCo_em6i5aVvY,11
58
+ pkscreener-0.46.20250214.716.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- VERSION='0.46.20250214.715'
@@ -1,58 +0,0 @@
1
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/Disclaimer.txt,sha256=x7M9Clrb9qACqOa-Vnwh9wliISLgudW5Kv_dgEk3N_Q,1405
2
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/LICENSE-Others.txt,sha256=0put8oIYbAYz98IGnp2F1CpHoyR_iyk0PRYG5D-U1K0,277059
3
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/LICENSE.txt,sha256=q80QYQZCkhPymkaQKXZJwOFYU6X-4lUHRzCGYERdLpA,1099
4
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/LogoWM.txt,sha256=7Njnavpy_FKY4Iwbzv1JqsYMcOdkDSKAKXP3SAItKV0,14868
5
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/README.txt,sha256=mU1g83EThviarDnbStWFhcuvwX4F6jEA80UX3e6cRBM,33085
6
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/__init__.py,sha256=cH0zxpSdH-dhmZihoe5mpE2NRRmF2Na_KaGMO9u33Rg,1669
7
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/courbd.ttf,sha256=SKpnp-BRs7AZcdI83nencS3Q7xe0anbbP1YMOxLlEhU,791436
8
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/globals.py,sha256=h7gRVI1ljj5AQp-KvOMGz9LqXYvt0v2YaWdxFeP-rqg,245088
9
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/pkscreener.ini,sha256=v0MV7kLxi0ehh1a013wg6TLXDeeLRO8PKapICSU1u-k,2451
10
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/pkscreenerbot.py,sha256=UudYgPFr0yrp4PqSyqWZxw2L2jQMHXCFgOygvOxQ9B0,109998
11
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/pkscreenercli.py,sha256=NtW0PGiMKgkBfQk6jZ8WE_ipTRrZP7v1020xQNHZdUE,58213
12
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/requirements.txt,sha256=TJVfdV2FVMH2KO5lPX_i1PrMOLFRtFMzGDsbhElMqJI,1503
13
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/ArtTexts.py,sha256=UzU0v3LX4PsWcx_ATv5M-T4v93uLz2hmvyDtew6qzZk,19708
14
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/AssetsManager.py,sha256=0__n99u7SD0KHmpnybm_msu35CAlv5W6WwtT5LrSkNc,34313
15
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/Backtest.py,sha256=VoNronl--07E477I9lhwfEjI4vK5VHu_tcDRO1K96hU,10784
16
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/Barometer.py,sha256=aZWu0TFbwRBvnkyN_Ws4a_2FYNhKKuqEpoQAqokthPc,9640
17
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/BaseScreeningStatistics.py,sha256=Dev8eCx8eGNqDsbXj-t68hLSDpKDICcyb9yH_n_IbYg,3086
18
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/CandlePatterns.py,sha256=IFVUXzx175aqZlL7JlmNl308aeIkSD6Hugl4M9zg9Io,17419
19
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/Changelog.py,sha256=S0hNTDYptWUxFrdTzqinjFLIywVAuKlYR1aCjepADn0,1511
20
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/ConfigManager.py,sha256=ZIxZ-IqWjIXpo_7SWRLx5e8sc0b92gGnc4qqMZVproM,54426
21
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/ConsoleMenuUtility.py,sha256=QZLPA0li0bfs1zNijfq_utovulY5fl4vXWk89CBpL5Q,10291
22
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/ConsoleUtility.py,sha256=gNMAm4iQF0ClmVPBe6ZnsjWQ-rfnTq6R_mLBjA6GgyI,12330
23
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/Fetcher.py,sha256=ZwU9iW0nbGAgM0mKZNjYgy9sm8jRSw9PvYmyhuY7Pos,12620
24
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/GlobalStore.py,sha256=UCYctbau2ZAShkWOLA7-p52Pg_irghCWRoa6UrIKYQQ,3799
25
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/ImageUtility.py,sha256=DKPiM7u-fGPujD63VLCWUsvesgflVYDiLqyw_KWOK8g,37629
26
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/MarketMonitor.py,sha256=m_fKqZ5_BhZYGTCsnO81FFerrfDzyrLWILnD_aed5V8,22180
27
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/MarketStatus.py,sha256=oBDTCTGazzOEhcclugxOOtyhu2VVT2XQ-t-GmY_pT7g,3823
28
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/MenuOptions.py,sha256=RIPQ9mVC9I07GZubrmOtUAQg10GbCoYwF3fnvV1dvqY,65741
29
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/Messenger.py,sha256=yKqq3eE2JkvTOeKcNZoPpCgxQ9FjcEeB1iHIKwwq8dA,8572
30
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/OtaUpdater.py,sha256=jSjVqgiZ4CGVkieJMekNLHZGx_eOGN-Xg4RF3eZO_Nk,13816
31
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/PKAnalytics.py,sha256=4LdzjSjbJExBpD2DM9wXWuFqKiC8QEr9HT2XFiJq7oA,5368
32
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/PKDataService.py,sha256=InEI3AGt_ykYfbwq2v1_NWUefTqPluKHSh_4ksFSUzE,3456
33
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/PKDemoHandler.py,sha256=wh48WLLFxBAFHML5Sq5G5-UFP96snJ9yKJgpKWuQ2Zs,2253
34
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/PKMarketOpenCloseAnalyser.py,sha256=zscdvHwDb5GQttqnR4Ed0SsVfOFeqKQgfIo6LWukgH0,34366
35
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/PKPremiumHandler.py,sha256=L3O3EwIZBE9PpdDFIGH-2Ec9Gi3IlzCd6RfQSXUd6So,5695
36
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/PKScanRunner.py,sha256=9Qy6xouK6qkNExeWF8LrxYXynI3Ju9UrSY5kI5W81Ok,27313
37
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/PKScheduledTaskProgress.py,sha256=wDMORWmyglcu06woVNpgDlESsMIiYX96MXO0VoBlLYg,1694
38
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/PKScheduler.py,sha256=Od3Niv6Q_aHarau9agCVt7h194votlaDX4j1Xv-_ru4,8994
39
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/PKSpreadsheets.py,sha256=BIICJx79QjGFPrnmQ34357jOGp79vuiknx6A_kC9y8Y,8466
40
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/PKTask.py,sha256=YPxzn0dA5ty7CtRFi1wQphC9vCdK8tB2_3DYHje9jgc,1907
41
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/PKUserRegistration.py,sha256=ff98UhcEtZ6QPC4jwJuoJtExTH9mKRqfEcXx3XzJfE4,11391
42
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/Pktalib.py,sha256=tmbiVVYh4RoSkI-o5a4q1C7hScDp5Jai2QmpyRMwXvs,29676
43
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/Portfolio.py,sha256=dxviO0G3OqJza4Nbpj5OCph8PZlfkRCkL3LfLJYgqu0,14196
44
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/PortfolioXRay.py,sha256=cMQ-yZrBPWo4gACxFqj3HNG9rqmyqXkS88qpy77JP_s,49612
45
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/ScreeningStatistics.py,sha256=j5pjp7rzUsYoyJOSL0Gkk3hfsdUIUFf4a21JXleI5A8,225304
46
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/StockScreener.py,sha256=wL6RjojBvTqo9XUlh2qoCpERrKdGNTlcDtCTReA0jkI,68437
47
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/StockSentiment.py,sha256=kc5jdXRGm2nIvDK-2y4i_Y1w47_2zWpunjlQsKB7IBY,3640
48
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/UserMenuChoicesHandler.py,sha256=MXJrQPD4yvKSI4p_RcnHt5oZg8AZ59ME7Jf-Nryoy5g,5055
49
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/Utility.py,sha256=6JpIich2-knaZ4sjsjyMoO_4S622KK-Jte2Hi4eYIOs,13870
50
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/WorkflowManager.py,sha256=GgxHCWOOEUv4M7xbIZtcoxndzII4eInex24U99uEWcI,5769
51
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/__init__.py,sha256=ujZ7GhIrp1jORfBup0DgUEPHparo5wss0-_ETvgLtMs,28
52
- pkscreener-0.46.20250214.715.data/purelib/pkscreener/classes/keys.py,sha256=tygV0iu8bKmSPo6HGj1Cb-rTtEWErGrsYRZY7SoCb1g,6957
53
- pkscreener-0.46.20250214.715.dist-info/LICENSE,sha256=q80QYQZCkhPymkaQKXZJwOFYU6X-4lUHRzCGYERdLpA,1099
54
- pkscreener-0.46.20250214.715.dist-info/METADATA,sha256=xt3JlDJm3JmLry6cSZQ3-81gK1-sGccwd7PA8bzl8d0,34107
55
- pkscreener-0.46.20250214.715.dist-info/WHEEL,sha256=cRmSBGD-cl98KkuHMNqv9Ac9L9_VqTvcBYwpIvxN0cg,101
56
- pkscreener-0.46.20250214.715.dist-info/entry_points.txt,sha256=Pm30xm4sU7YFtFJUC-Te8VlqOvYAvWKFFA5AfQE0xGY,120
57
- pkscreener-0.46.20250214.715.dist-info/top_level.txt,sha256=oIfcPPw58Q4KU-GDqp25dXbrtvxYXJBCo_em6i5aVvY,11
58
- pkscreener-0.46.20250214.715.dist-info/RECORD,,