neurostats-API 0.0.22__py3-none-any.whl → 0.0.23__py3-none-any.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.
@@ -191,7 +191,11 @@ class StatsProcessor:
191
191
  @classmethod
192
192
  def cal_percentage(cls, value, postfix="%"):
193
193
  if (isinstance(value, (float, int))):
194
+ if (np.isnan(value)):
195
+ return None
194
196
  value = np.round(value * 100, 2).item()
197
+ if (value != value): # nan值發生
198
+ return None
195
199
  value = f"{value:.2f}{postfix}"
196
200
 
197
201
  return value
@@ -202,10 +206,11 @@ class StatsProcessor:
202
206
  @classmethod
203
207
  def cal_non_percentage(cls, value, to_str=False, postfix="元"):
204
208
  if (isinstance(value, (float, int))):
205
-
209
+ if (np.isnan(value)):
210
+ return None
206
211
  value = np.round(value, 2).item()
207
212
  if (postfix == "千元"):
208
- value *= 1000
213
+ value = value * 1000
209
214
  try:
210
215
  value = int(value)
211
216
  except Exception as e:
@@ -283,7 +288,7 @@ class StatsProcessor:
283
288
  if (key):
284
289
  keys = [key]
285
290
  for data in data_list:
286
- data = data['data']
291
+ data = data.get("data")
287
292
 
288
293
  pop_keys = []
289
294
 
@@ -292,7 +297,8 @@ class StatsProcessor:
292
297
  pop_keys.append(str(data.pop(key)))
293
298
 
294
299
  pop_key = delimeter.join(pop_keys)
295
- return_dict[pop_key] = data[data_key]
300
+ target_data = data.get(data_key)
301
+ return_dict[pop_key] = target_data
296
302
 
297
303
  return return_dict
298
304
 
@@ -302,5 +308,5 @@ class StatsProcessor:
302
308
  value = value.replace("%", "")
303
309
  try:
304
310
  return float(value)
305
- except (ValueError, TypeError):
311
+ except (ValueError, TypeError) as e:
306
312
  return None
@@ -0,0 +1,21 @@
1
+ import logging
2
+ from functools import wraps
3
+
4
+ class StatsLogger:
5
+
6
+ @classmethod
7
+ def exception_log(cls, default_return=None, level='error'):
8
+ def decorator(func):
9
+ @wraps(func)
10
+ def wrapper(*args, **kwargs):
11
+ try:
12
+ return func(*args, **kwargs)
13
+ except Exception as e:
14
+ log_fn = getattr(logging, level, logging.error)
15
+ log_fn(
16
+ f"{func.__name__} failed | args={args}, kwargs={kwargs} | error={e}",
17
+ exc_info=True
18
+ )
19
+ return default_return
20
+ return wrapper
21
+ return decorator
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: neurostats_API
3
- Version: 0.0.22
3
+ Version: 0.0.23
4
4
  Summary: The service of NeuroStats website
5
5
  Home-page: https://github.com/NeurowattStats/NeuroStats_API.git
6
6
  Author: JasonWang@Neurowatt
@@ -89,7 +89,7 @@ pip install neurostats-API
89
89
  ```Python
90
90
  >>> import neurostats_API
91
91
  >>> print(neurostats_API.__version__)
92
- 0.0.22
92
+ 0.0.23
93
93
  ```
94
94
 
95
95
  ### 得到最新一期的評價資料與歷年評價
@@ -0,0 +1,35 @@
1
+ neurostats_API/__init__.py,sha256=0pjIrvtZhJd0auAFx4I4qYYyZ_HkE_94paLzWPLv7E8,288
2
+ neurostats_API/cli.py,sha256=UJSWLIw03P24p-gkBb6JSEI5dW5U12UvLf1L8HjQD-o,873
3
+ neurostats_API/main.py,sha256=QcsfmWivg2Dnqw3MTJWiI0QvEiRs0VuH-BjwQHFCv00,677
4
+ neurostats_API/fetchers/__init__.py,sha256=KCw-yRSDFa3fw83u73LJ9OVop7gRl_YQYlQq-cITxuo,511
5
+ neurostats_API/fetchers/balance_sheet.py,sha256=j2bDFk_IwdNhGRy32wfVGz8Y8-S-gtyIZmT-uRNzH80,6889
6
+ neurostats_API/fetchers/base.py,sha256=fHdZJtBZ6OD1IUbW6sUTXsPJVWrj41Ay4TOJChp2keI,7236
7
+ neurostats_API/fetchers/cash_flow.py,sha256=7VznJBKwGyc4EBL9uB7x19zg0JRgZcNrvBAviTNns6k,7978
8
+ neurostats_API/fetchers/finance_overview.py,sha256=xRn4UF2iMS13ztsFgBFj4UykyJsWMriuUevNeZHQR7E,27815
9
+ neurostats_API/fetchers/institution.py,sha256=f-Z_Kd6-gnOM8bE7tqWKFnvlMGiE-pGZbsc0JCIobcU,14786
10
+ neurostats_API/fetchers/margin_trading.py,sha256=0enMPpq0J55uts0nJFHOylXvLEMWZYSb-gt1BH5_gBM,11430
11
+ neurostats_API/fetchers/month_revenue.py,sha256=K1WZct6vLU3y_8uaXR3po5jzx2w3EYb2v3XkIX2_pBE,8313
12
+ neurostats_API/fetchers/profit_lose.py,sha256=M-Ngn1l6FbulRurrs2BzlrP0iAeeNF9n5TdIoDa4G_s,9164
13
+ neurostats_API/fetchers/tech.py,sha256=TsS8m25Otc3_2jTYITFe-wNHlDWcfWsHIxhOrqL8qMY,16016
14
+ neurostats_API/fetchers/tej_finance_report.py,sha256=NHBqs1xbJ_IuXcBluNJyoZO4BYqmFN76UW201ss3R14,11936
15
+ neurostats_API/fetchers/value_invest.py,sha256=QxQS2GcoLIU9ZBDEo8iRK2yHd8YLmBS70Bq42F3IsSw,8295
16
+ neurostats_API/tools/company_list/tw.json,sha256=VWaDFvd0ACCVSWItcHHpmVuM_RzP71jLZl9RBHztu-0,51332
17
+ neurostats_API/tools/tej_db/tej_db_index.yaml,sha256=lu-cmbB6dhx0eUlBSkyzXWqPKlwRtEvqlMTAh2y0oHs,969
18
+ neurostats_API/tools/tej_db/tej_db_percent_index.yaml,sha256=xSgmamEK0DUBKRllUb94p9TxhJln_BzFoFYK9OJ0fkM,302
19
+ neurostats_API/tools/tej_db/tej_db_skip_index.yaml,sha256=6UtMfPL7XvkKvEWTFXIIUZMJWZSagIduLYJb-r3HEg8,246
20
+ neurostats_API/tools/tej_db/tej_db_thousand_index.yaml,sha256=K2YFBSrxqX1V2upy0IUeQ4ung4aPrjtlqYSvCGaaO8I,479
21
+ neurostats_API/tools/twse/balance_sheet.yaml,sha256=6XygNG_Ybb1Xkk1e39LMLKr7ATvaCP3xxuwFbgNl6dA,673
22
+ neurostats_API/tools/twse/cash_flow_percentage.yaml,sha256=fk2Z4eb1JjGFvP134eJatHacB7BgTkBenhDJr83w8RE,1345
23
+ neurostats_API/tools/twse/finance_overview_dict.yaml,sha256=B9nV75StXkrF3yv2-eezzitlJ38eEK86RD_VY6588gQ,2884
24
+ neurostats_API/tools/twse/profit_lose.yaml,sha256=iyp9asYJ04vAxk_HBUDse_IBy5oVvYHpwsyACg5YEeg,3029
25
+ neurostats_API/tools/twse/seasonal_data_field_dict.txt,sha256=X8yc_el6p8BH_3FikTqBVFGsvWdXT6MHXLfKfi44334,8491
26
+ neurostats_API/utils/__init__.py,sha256=uZk08lGPvVIc7MKAvRdZ2FJzgfa8GzsWG_hWAhF6C5U,152
27
+ neurostats_API/utils/calculate_value.py,sha256=ioPV5VWitJ2NylBi5vwfs-payAUYxWhAiS7aaJjzQKQ,4305
28
+ neurostats_API/utils/data_process.py,sha256=UlDjKPQHO2JklBQ0402rL6dCPIExyY90gvcLJ1de7sQ,10228
29
+ neurostats_API/utils/datetime.py,sha256=XJya4G8b_-ZOaBbMXgQjWh2MC4wc-o6goQ7EQJQMWrQ,773
30
+ neurostats_API/utils/db_client.py,sha256=OYe6yazcR4Aa6jYmy47JrryUeh2NnKGqY2K_lSZe6i8,455
31
+ neurostats_API/utils/logger.py,sha256=egBiiPGTi5l1FoX_o6EvdGh81R0_k8hFPctSxq8RCoo,693
32
+ neurostats_API-0.0.23.dist-info/METADATA,sha256=cowuJT-lpruk2usQAIE1K1NoWqgYcRalikHQkb897-w,31618
33
+ neurostats_API-0.0.23.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
34
+ neurostats_API-0.0.23.dist-info/top_level.txt,sha256=nSlQPMG0VtXivJyedp4Bkf86EOy2TpW10VGxolXrqnU,15
35
+ neurostats_API-0.0.23.dist-info/RECORD,,
@@ -1,34 +0,0 @@
1
- neurostats_API/__init__.py,sha256=bOEodI1kq0xK8AR_160U9DasXGcjCEZHi7BQGh6Ib-4,288
2
- neurostats_API/cli.py,sha256=UJSWLIw03P24p-gkBb6JSEI5dW5U12UvLf1L8HjQD-o,873
3
- neurostats_API/main.py,sha256=QcsfmWivg2Dnqw3MTJWiI0QvEiRs0VuH-BjwQHFCv00,677
4
- neurostats_API/fetchers/__init__.py,sha256=KCw-yRSDFa3fw83u73LJ9OVop7gRl_YQYlQq-cITxuo,511
5
- neurostats_API/fetchers/balance_sheet.py,sha256=RgiX5wp9UoS7HcXHqwO_NMAFr2ESJSWJenyCwJj6rxU,6060
6
- neurostats_API/fetchers/base.py,sha256=BcGpwlA0TD8y-Uped68xPf-cZYHP9PB4UyDWgPcURe4,7155
7
- neurostats_API/fetchers/cash_flow.py,sha256=0it4hnKLKRLAFgrxrsrK2rk7dom7HvQi96z5LXh2w_c,7013
8
- neurostats_API/fetchers/finance_overview.py,sha256=dDe6THJg1UJffnJ25xwXd4K99s2DBTdGaxmCT3O-xdA,27763
9
- neurostats_API/fetchers/institution.py,sha256=UrcBc6t7u7CnEwUsf6YmLbbJ8VncdWpq8bCz17q2dgs,11168
10
- neurostats_API/fetchers/margin_trading.py,sha256=lQImtNdvaBoSlKhJvQ3DkH3HjSSgKRJz4ZZpyR5-Z4I,10433
11
- neurostats_API/fetchers/month_revenue.py,sha256=DZeOblfSz7NhQXVvL5xfMHZ1rv2B8pgqu-U-o_gcAuc,6323
12
- neurostats_API/fetchers/profit_lose.py,sha256=ZvSG4vx4gBrWMKmcyuSaoNyW6JGiOtIpFxRIeyCAeDY,7705
13
- neurostats_API/fetchers/tech.py,sha256=AyxdOjStVJIPFTVcofVOJknXPpv_D9dqkFPjEFXo6iY,14937
14
- neurostats_API/fetchers/tej_finance_report.py,sha256=5ERpg1kq2wSPdLMBYXX5MUWRxOrwwFHSBXNidSKeuRo,11233
15
- neurostats_API/fetchers/value_invest.py,sha256=b_x2Dpgs8VBU5HdG8ocKtfIEkqhU-Q0S5n6RxuFuM2g,7467
16
- neurostats_API/tools/company_list/tw.json,sha256=VWaDFvd0ACCVSWItcHHpmVuM_RzP71jLZl9RBHztu-0,51332
17
- neurostats_API/tools/tej_db/tej_db_index.yaml,sha256=lu-cmbB6dhx0eUlBSkyzXWqPKlwRtEvqlMTAh2y0oHs,969
18
- neurostats_API/tools/tej_db/tej_db_percent_index.yaml,sha256=-rBSdOoYs5UB9H6Y3FE5PTqV9meXEFZD2KhSlAQ_4Eg,323
19
- neurostats_API/tools/tej_db/tej_db_skip_index.yaml,sha256=nSbrflaJrWCIjL5WeHT3UDKZyN0WegVElUKVYA4YSa0,169
20
- neurostats_API/tools/tej_db/tej_db_thousand_index.yaml,sha256=S1k4PFZ7NsjGUgeCb89dyaojkOcvGPRdBr45hz3wlWY,507
21
- neurostats_API/tools/twse/balance_sheet.yaml,sha256=6XygNG_Ybb1Xkk1e39LMLKr7ATvaCP3xxuwFbgNl6dA,673
22
- neurostats_API/tools/twse/cash_flow_percentage.yaml,sha256=fk2Z4eb1JjGFvP134eJatHacB7BgTkBenhDJr83w8RE,1345
23
- neurostats_API/tools/twse/finance_overview_dict.yaml,sha256=B9nV75StXkrF3yv2-eezzitlJ38eEK86RD_VY6588gQ,2884
24
- neurostats_API/tools/twse/profit_lose.yaml,sha256=iyp9asYJ04vAxk_HBUDse_IBy5oVvYHpwsyACg5YEeg,3029
25
- neurostats_API/tools/twse/seasonal_data_field_dict.txt,sha256=X8yc_el6p8BH_3FikTqBVFGsvWdXT6MHXLfKfi44334,8491
26
- neurostats_API/utils/__init__.py,sha256=uZk08lGPvVIc7MKAvRdZ2FJzgfa8GzsWG_hWAhF6C5U,152
27
- neurostats_API/utils/calculate_value.py,sha256=Zc5DG_qXnHZLkCjUYdoMWka3KVXu2o9AmDnEYixiXYQ,4197
28
- neurostats_API/utils/data_process.py,sha256=LdDmhQMGBg1UI6cIWCdsj9YTkixtf1cyrN1xq2JZmPo,9971
29
- neurostats_API/utils/datetime.py,sha256=XJya4G8b_-ZOaBbMXgQjWh2MC4wc-o6goQ7EQJQMWrQ,773
30
- neurostats_API/utils/db_client.py,sha256=OYe6yazcR4Aa6jYmy47JrryUeh2NnKGqY2K_lSZe6i8,455
31
- neurostats_API-0.0.22.dist-info/METADATA,sha256=yLp6sTftp5SaxhXZxtLfE7Fvd7OmtZYd3XjwyR4yoG4,31618
32
- neurostats_API-0.0.22.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
33
- neurostats_API-0.0.22.dist-info/top_level.txt,sha256=nSlQPMG0VtXivJyedp4Bkf86EOy2TpW10VGxolXrqnU,15
34
- neurostats_API-0.0.22.dist-info/RECORD,,