neurostats-API 0.0.23b2__py3-none-any.whl → 0.0.24.post1__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.
- neurostats_API/__init__.py +1 -1
- neurostats_API/fetchers/balance_sheet.py +64 -40
- neurostats_API/fetchers/base.py +6 -2
- neurostats_API/fetchers/cash_flow.py +91 -70
- neurostats_API/fetchers/finance_overview.py +26 -26
- neurostats_API/fetchers/institution.py +80 -7
- neurostats_API/fetchers/macro_daily_event.py +8 -0
- neurostats_API/fetchers/margin_trading.py +0 -3
- neurostats_API/fetchers/month_revenue.py +139 -105
- neurostats_API/fetchers/profit_lose.py +103 -83
- neurostats_API/fetchers/tech.py +0 -58
- neurostats_API/fetchers/tej_finance_report.py +101 -69
- neurostats_API/fetchers/value_invest.py +26 -9
- neurostats_API/utils/calculate_value.py +5 -2
- neurostats_API/utils/data_process.py +12 -6
- neurostats_API/utils/logger.py +21 -0
- {neurostats_API-0.0.23b2.dist-info → neurostats_API-0.0.24.post1.dist-info}/METADATA +2 -2
- neurostats_API-0.0.24.post1.dist-info/RECORD +36 -0
- neurostats_API-0.0.23b2.dist-info/RECORD +0 -34
- {neurostats_API-0.0.23b2.dist-info → neurostats_API-0.0.24.post1.dist-info}/WHEEL +0 -0
- {neurostats_API-0.0.23b2.dist-info → neurostats_API-0.0.24.post1.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,5 @@
|
|
1
1
|
from .data_process import StatsProcessor
|
2
|
+
import numpy as np
|
2
3
|
class YoY_Calculator:
|
3
4
|
def __init__(self):
|
4
5
|
pass
|
@@ -23,6 +24,9 @@ class YoY_Calculator:
|
|
23
24
|
|
24
25
|
if (isinstance(YoY, complex)): # 年化成長率有複數問題
|
25
26
|
return None
|
27
|
+
|
28
|
+
if YoY != YoY: # 確認是否為nan (Python 中 nan不等於自己)
|
29
|
+
return None
|
26
30
|
|
27
31
|
return YoY
|
28
32
|
@classmethod
|
@@ -91,7 +95,6 @@ class YoY_Calculator:
|
|
91
95
|
for key in list(this_data.keys()):
|
92
96
|
if key == "season":
|
93
97
|
continue
|
94
|
-
|
95
98
|
|
96
99
|
value = this_data.get(key, None)
|
97
100
|
|
@@ -102,7 +105,7 @@ class YoY_Calculator:
|
|
102
105
|
temp_dict = {"value": value}
|
103
106
|
this_value = value
|
104
107
|
|
105
|
-
this_value = StatsProcessor.process_str_to_float(
|
108
|
+
this_value = StatsProcessor.process_str_to_float(this_value)
|
106
109
|
|
107
110
|
last_value = data_dict.get(
|
108
111
|
f"{last_year}Q{last_season}",{}
|
@@ -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
|
213
|
+
value = value * 1000
|
209
214
|
try:
|
210
215
|
value = int(value)
|
211
216
|
except Exception as e:
|
@@ -283,16 +288,17 @@ class StatsProcessor:
|
|
283
288
|
if (key):
|
284
289
|
keys = [key]
|
285
290
|
for data in data_list:
|
286
|
-
data = data['data']
|
287
291
|
|
288
292
|
pop_keys = []
|
289
293
|
|
290
294
|
for key in keys:
|
291
295
|
assert (key in data.keys())
|
292
296
|
pop_keys.append(str(data.pop(key)))
|
293
|
-
|
297
|
+
|
294
298
|
pop_key = delimeter.join(pop_keys)
|
295
|
-
|
299
|
+
target_data = data.get(data_key, data)
|
300
|
+
|
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.
|
3
|
+
Version: 0.0.24.post1
|
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.
|
92
|
+
0.0.24.post1
|
93
93
|
```
|
94
94
|
|
95
95
|
### 得到最新一期的評價資料與歷年評價
|
@@ -0,0 +1,36 @@
|
|
1
|
+
neurostats_API/__init__.py,sha256=lYF7ey7_nMl3RVbdVbykA2oabq6uqbtV_eVXU4aDurI,294
|
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=5DxcG8Ux2e0WRmPp-7eIK33oiipoQVRlXMtvtH0bknI,6934
|
6
|
+
neurostats_API/fetchers/base.py,sha256=fHdZJtBZ6OD1IUbW6sUTXsPJVWrj41Ay4TOJChp2keI,7236
|
7
|
+
neurostats_API/fetchers/cash_flow.py,sha256=OmimJ1afsU8hyJr5GSBhIWvYjtldnoPLSmjuJ1XXriQ,8003
|
8
|
+
neurostats_API/fetchers/finance_overview.py,sha256=xRn4UF2iMS13ztsFgBFj4UykyJsWMriuUevNeZHQR7E,27815
|
9
|
+
neurostats_API/fetchers/institution.py,sha256=U7N6QenW5XANGI2L-a7tY2agR1iYY8LI6gUarQYS9N8,15250
|
10
|
+
neurostats_API/fetchers/macro_daily_event.py,sha256=bThpI17Tk1wVYeuJ56mqoXbV_svJ7Hl1ftY9_9u8WJs,234
|
11
|
+
neurostats_API/fetchers/margin_trading.py,sha256=0enMPpq0J55uts0nJFHOylXvLEMWZYSb-gt1BH5_gBM,11430
|
12
|
+
neurostats_API/fetchers/month_revenue.py,sha256=K1WZct6vLU3y_8uaXR3po5jzx2w3EYb2v3XkIX2_pBE,8313
|
13
|
+
neurostats_API/fetchers/profit_lose.py,sha256=MUTPPXHWZhhvcq1YzrY1dalFIXljUUG3UugXQimFy-Y,9170
|
14
|
+
neurostats_API/fetchers/tech.py,sha256=TsS8m25Otc3_2jTYITFe-wNHlDWcfWsHIxhOrqL8qMY,16016
|
15
|
+
neurostats_API/fetchers/tej_finance_report.py,sha256=mlIm2Qzs8-Xlzeb8uET8qGPWD3VGUx3g8qFFcY4UbAw,13022
|
16
|
+
neurostats_API/fetchers/value_invest.py,sha256=QxQS2GcoLIU9ZBDEo8iRK2yHd8YLmBS70Bq42F3IsSw,8295
|
17
|
+
neurostats_API/tools/company_list/tw.json,sha256=VWaDFvd0ACCVSWItcHHpmVuM_RzP71jLZl9RBHztu-0,51332
|
18
|
+
neurostats_API/tools/tej_db/tej_db_index.yaml,sha256=lu-cmbB6dhx0eUlBSkyzXWqPKlwRtEvqlMTAh2y0oHs,969
|
19
|
+
neurostats_API/tools/tej_db/tej_db_percent_index.yaml,sha256=xSgmamEK0DUBKRllUb94p9TxhJln_BzFoFYK9OJ0fkM,302
|
20
|
+
neurostats_API/tools/tej_db/tej_db_skip_index.yaml,sha256=6UtMfPL7XvkKvEWTFXIIUZMJWZSagIduLYJb-r3HEg8,246
|
21
|
+
neurostats_API/tools/tej_db/tej_db_thousand_index.yaml,sha256=K2YFBSrxqX1V2upy0IUeQ4ung4aPrjtlqYSvCGaaO8I,479
|
22
|
+
neurostats_API/tools/twse/balance_sheet.yaml,sha256=6XygNG_Ybb1Xkk1e39LMLKr7ATvaCP3xxuwFbgNl6dA,673
|
23
|
+
neurostats_API/tools/twse/cash_flow_percentage.yaml,sha256=fk2Z4eb1JjGFvP134eJatHacB7BgTkBenhDJr83w8RE,1345
|
24
|
+
neurostats_API/tools/twse/finance_overview_dict.yaml,sha256=B9nV75StXkrF3yv2-eezzitlJ38eEK86RD_VY6588gQ,2884
|
25
|
+
neurostats_API/tools/twse/profit_lose.yaml,sha256=iyp9asYJ04vAxk_HBUDse_IBy5oVvYHpwsyACg5YEeg,3029
|
26
|
+
neurostats_API/tools/twse/seasonal_data_field_dict.txt,sha256=X8yc_el6p8BH_3FikTqBVFGsvWdXT6MHXLfKfi44334,8491
|
27
|
+
neurostats_API/utils/__init__.py,sha256=uZk08lGPvVIc7MKAvRdZ2FJzgfa8GzsWG_hWAhF6C5U,152
|
28
|
+
neurostats_API/utils/calculate_value.py,sha256=ioPV5VWitJ2NylBi5vwfs-payAUYxWhAiS7aaJjzQKQ,4305
|
29
|
+
neurostats_API/utils/data_process.py,sha256=xt5BkXK1zWJaL3ZFyXXmxwsU_YfB66VMZAYBI2Mgm6E,10187
|
30
|
+
neurostats_API/utils/datetime.py,sha256=XJya4G8b_-ZOaBbMXgQjWh2MC4wc-o6goQ7EQJQMWrQ,773
|
31
|
+
neurostats_API/utils/db_client.py,sha256=OYe6yazcR4Aa6jYmy47JrryUeh2NnKGqY2K_lSZe6i8,455
|
32
|
+
neurostats_API/utils/logger.py,sha256=egBiiPGTi5l1FoX_o6EvdGh81R0_k8hFPctSxq8RCoo,693
|
33
|
+
neurostats_API-0.0.24.post1.dist-info/METADATA,sha256=cyLr_0eiSM2v4O5h2KdYljy4ioF68goAMHbEcADUYpg,31630
|
34
|
+
neurostats_API-0.0.24.post1.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
|
35
|
+
neurostats_API-0.0.24.post1.dist-info/top_level.txt,sha256=nSlQPMG0VtXivJyedp4Bkf86EOy2TpW10VGxolXrqnU,15
|
36
|
+
neurostats_API-0.0.24.post1.dist-info/RECORD,,
|
@@ -1,34 +0,0 @@
|
|
1
|
-
neurostats_API/__init__.py,sha256=AtQPM4KQeQuCiTuMEFXazJQV7J3ibjxxQaTg87UehA4,290
|
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=fRRIL_0wSe6GUI4jZePK_neqaBRHcyeQuAqTCKavyhI,12413
|
10
|
-
neurostats_API/fetchers/margin_trading.py,sha256=6tV3I1sjVheexA0SnGhVwxAw0ex9zhfYdRRip98O2vc,11565
|
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=LvgWhcHdruTGJE_1_z8rrArJs3s7X5AbE3LtuR4zwIM,18051
|
14
|
-
neurostats_API/fetchers/tej_finance_report.py,sha256=og3wg0Vdyzyx3Ex6ejk10ORo4zQjcrUrRtR9W1dCWNE,11320
|
15
|
-
neurostats_API/fetchers/value_invest.py,sha256=iBZKjM-zEQuIUGCinc_j4TisGWn8As_-6gYcgxRAzEo,7652
|
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=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.23b2.dist-info/METADATA,sha256=X5REqd16kx9NRakOD5VJ_YftQk3jhNfFxCE62Rd9LyM,31622
|
32
|
-
neurostats_API-0.0.23b2.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
|
33
|
-
neurostats_API-0.0.23b2.dist-info/top_level.txt,sha256=nSlQPMG0VtXivJyedp4Bkf86EOy2TpW10VGxolXrqnU,15
|
34
|
-
neurostats_API-0.0.23b2.dist-info/RECORD,,
|
File without changes
|
File without changes
|