neurostats-API 0.0.21__py3-none-any.whl → 0.0.22__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.
@@ -8,6 +8,7 @@ TWN/AINVFQ1:
8
8
  - curr
9
9
  - annd
10
10
  - fin_ind
11
+ - eps
11
12
  TWN/AFESTM1:
12
13
  - coid
13
14
  - mdate
@@ -17,4 +18,5 @@ TWN/AFESTM1:
17
18
  - merg
18
19
  - curr
19
20
  - annd
20
- - fin_ind
21
+ - fin_ind
22
+ - eps
@@ -42,7 +42,6 @@ TWN/AINVFQ1:
42
42
  - isibt
43
43
  - isni
44
44
  - isnip
45
- - eps
46
45
  - ispsd
47
46
  - gm
48
47
  - opi
@@ -0,0 +1,35 @@
1
+ balance_sheet:
2
+ mode: value_and_percentage
3
+
4
+ total_asset:
5
+ mode: value_and_percentage
6
+ target_index:
7
+ - 資產總額 負債總額 權益總額
8
+ - 資產總計 負債總計 權益總計
9
+
10
+ current_asset:
11
+ mode: value_and_percentage
12
+ target_index:
13
+ - 流動資產合計
14
+
15
+ non_current_asset:
16
+ mode: value_and_percentage
17
+ target_index:
18
+ - 非流動資產合計
19
+
20
+ current_debt:
21
+ mode: value_and_percentage
22
+ target_index:
23
+ - 流動負債合計
24
+ - 流動負債總額
25
+
26
+ non_current_debt:
27
+ mode: value_and_percentage
28
+ target_index:
29
+ - 非流動負債合計
30
+
31
+ equity:
32
+ mode: value_and_percentage
33
+ target_index:
34
+ - 權益總額
35
+ - 權益總計
@@ -0,0 +1,39 @@
1
+ # 注意此並非用於slicing
2
+ CASHO:
3
+ main_index: 營業活動之淨現金流入(流出)
4
+ index:
5
+ - 繼續營業單位稅前淨利(淨損)
6
+ - 收益費損項目合計
7
+ - 折舊費用
8
+ - 攤銷費用
9
+ - 與營業活動相關之資產及負債之淨變動合計
10
+ - 營業活動之淨現金流入(流出)
11
+
12
+ CASHI:
13
+ main_index: 投資活動之淨現金流入(流出)
14
+ index:
15
+ - 投資活動之淨現金流入(流出)
16
+ - 取得不動產、廠房及設備
17
+ - 處分不動產、廠房及設備
18
+ - 取得無形資產
19
+ - 處分無形資產
20
+ - 取得透過損益按公允價值衡量之金融資產
21
+ - 處分透過損益按公允價值衡量之金融資產
22
+ - 取得透過其他綜合損益按公允價值衡量之金融資產
23
+ - 處分透過其他綜合損益按公允價值衡量之金融資產
24
+ - 取得按攤銷後成本衡量之金融資產
25
+ - 處分按攤銷後成本衡量之金融資產
26
+ - 按攤銷後成本衡量之金融資產到期還本
27
+
28
+ CASHO:
29
+ main_index: 籌資活動之淨現金流入(流出)
30
+ index:
31
+ - 籌資活動之淨現金流入(流出)
32
+ - 短期借款增加
33
+ - 短期借款減少
34
+ - 發行公司債
35
+ - 償還公司債
36
+ - 舉借長期借款
37
+ - 償還長期借款
38
+ - 發放現金股利
39
+ - 庫藏股票買回成本
@@ -0,0 +1,185 @@
1
+ # 財務概況
2
+ revenue:
3
+ field:
4
+ - 營業收入合計
5
+ value: value
6
+
7
+ gross_profit:
8
+ field:
9
+ - 營業毛利(毛損)淨額
10
+ value: value
11
+
12
+ operating_income:
13
+ field:
14
+ - 營業利益(損失)
15
+ value: value
16
+
17
+ net_income:
18
+ field:
19
+ - 本期淨利(淨損)
20
+ value: value
21
+
22
+ tax_fee:
23
+ field:
24
+ - 所得稅費用(利益)合計
25
+ value: value
26
+
27
+ # TODO: 以下所爬到的資料都是累計的,Ifa有額外計算當季的變化量
28
+ operating_cash_flow:
29
+ field:
30
+ - 營業活動之淨現金流入(流出)
31
+ value: single_season_value
32
+
33
+ invest_cash_flow:
34
+ field:
35
+ - 投資活動之淨現金流入(流出)
36
+ value: single_season_value
37
+
38
+ financing_cash_flow:
39
+ field:
40
+ - 籌資活動之淨現金流入(流出)
41
+ value: single_season_value
42
+ # ^^^ 以上皆需要額外在DataBase處理
43
+
44
+ # 每股財務狀況
45
+ capital:
46
+ field:
47
+ - 普通股股本
48
+ value: value
49
+
50
+ eps:
51
+ field:
52
+ - 基本每股盈餘
53
+ value: value
54
+
55
+ # 獲利能力
56
+ total_assets:
57
+ field:
58
+ - 資產總額
59
+ value: value
60
+
61
+ equity:
62
+ field:
63
+ - 權益總額
64
+ value: value
65
+
66
+ net_income_before_tax:
67
+ field:
68
+ - 稅前淨利(淨損)
69
+ value: value
70
+
71
+ interest:
72
+ field:
73
+ - 利息收入
74
+ value: value
75
+
76
+ operating_expenses:
77
+ field:
78
+ - 營業費用合計
79
+ value: value
80
+
81
+ net_income_rate:
82
+ field:
83
+ - 本期淨利(淨損)
84
+ value: percentage
85
+ # 成長動能
86
+ revenue_YoY:
87
+ field:
88
+ - 營業收入合計
89
+ value: YoY_1
90
+
91
+ gross_prof_YoY:
92
+ field:
93
+ - 營業毛利(毛損)淨額
94
+ value: YoY_1
95
+
96
+ operating_income_YoY:
97
+ field:
98
+ - 營業利益(損失)
99
+ value: YoY_1
100
+
101
+ net_income_YoY:
102
+ field:
103
+ - 本期淨利(淨損)
104
+ value: YoY_1
105
+
106
+ operating_cash_flow_YoY:
107
+ field:
108
+ - 營業活動之淨現金流入(流出)
109
+ value: single_season_YoY
110
+
111
+ # operating_cash_flow_per_share_YoY:
112
+ # field: 每股營業現金流年成長率
113
+ # value: YoY_1
114
+ # 營運指標
115
+ account_receive:
116
+ field:
117
+ - 應收帳款淨額
118
+ value: value
119
+
120
+ account_pay:
121
+ field:
122
+ - 應付帳款
123
+ value: value
124
+
125
+ inventories:
126
+ field:
127
+ - 存貨
128
+ value: value
129
+
130
+ operating_cost:
131
+ field:
132
+ - 營業成本合計
133
+ value: value
134
+
135
+ application:
136
+ field:
137
+ - 不動產、廠房及設備
138
+ value: value
139
+
140
+ # 財務韌性
141
+ current_assets:
142
+ field:
143
+ - 流動資產合計
144
+ value: value
145
+
146
+ current_liabilities:
147
+ field:
148
+ - 流動負債合計
149
+ value: value
150
+
151
+ total_liabilities:
152
+ field:
153
+ - 負債總額
154
+ value: value
155
+
156
+ short_term_liabilities:
157
+ field:
158
+ - 短期借款
159
+ value: value
160
+
161
+ long_term_liabilities:
162
+ field:
163
+ - 長期借款
164
+ value: value
165
+ #
166
+ cash_and_cash_equivalents:
167
+ field:
168
+ - 現金及約當現金
169
+ value: value
170
+
171
+ interest_expense:
172
+ field:
173
+ - 利息費用
174
+ value: value
175
+
176
+ non_current_assets:
177
+ field:
178
+ - 非流動資產合計
179
+ value: value
180
+
181
+ non_current_liabilities:
182
+ field:
183
+ - 非流動負債合計
184
+ value: value
185
+
@@ -0,0 +1,143 @@
1
+ profit_lose: # 總營收表
2
+ mode: value_and_percentage
3
+
4
+ grand_total_profit_lose:
5
+ mode: grand_total_values
6
+
7
+ revenue:
8
+ mode: growth
9
+ target_index:
10
+ - 營業收入合計
11
+ - 收入合計
12
+ - 利息收入
13
+
14
+ grand_total_revenue:
15
+ mode: grand_total_growth
16
+ target_index:
17
+ - 營業收入合計
18
+ - 收入合計
19
+ - 利息收入
20
+
21
+ gross_profit:
22
+ mode: growth
23
+ target_index:
24
+ - 營業毛利(毛損)淨額
25
+ - 利息淨收益
26
+
27
+ grand_total_gross_profit:
28
+ mode: grand_total_growth
29
+ target_index:
30
+ - 營業毛利(毛損)淨額
31
+ - 利息淨收益
32
+
33
+ gross_profit_percentage:
34
+ mode: percentage
35
+ target_index:
36
+ - 營業毛利(毛損)淨額
37
+ - 利息淨收益
38
+
39
+ grand_total_gross_profit_percentage:
40
+ mode: grand_total_percentage
41
+ target_index:
42
+ - 營業毛利(毛損)淨額
43
+ - 利息淨收益
44
+
45
+ # 營利
46
+ operating_income:
47
+ mode: growth
48
+ target_index:
49
+ - 營業利益(損失)
50
+
51
+ grand_total_operating_income:
52
+ mode: grand_total_growth
53
+ target_index:
54
+ - 營業利益(損失)
55
+
56
+ operating_income_percentage:
57
+ mode: percentage
58
+ target_index:
59
+ - 營業利益(損失)
60
+
61
+ grand_total_operating_income_percentage:
62
+ mode: grand_total_percentage
63
+ target_index:
64
+ - 營業利益(損失)
65
+
66
+ # 稅前淨利
67
+ net_income_before_tax:
68
+ mode: growth
69
+ target_index:
70
+ - 稅前淨利(淨損)
71
+ - 繼續營業單位稅前損益
72
+ - 繼續營業單位稅前淨利(淨損)
73
+
74
+ grand_total_net_income_before_tax:
75
+ mode: grand_total_growth
76
+ target_index:
77
+ - 稅前淨利(淨損)
78
+ - 繼續營業單位稅前損益
79
+ - 繼續營業單位稅前淨利(淨損)
80
+
81
+ net_income_before_tax_percentage:
82
+ mode: percentage
83
+ target_index:
84
+ - 稅前淨利(淨損)
85
+ - 繼續營業單位稅前損益
86
+ - 繼續營業單位稅前淨利(淨損)
87
+
88
+ grand_total_net_income_before_tax_percentage:
89
+ mode: grand_total_percentage
90
+ target_index:
91
+ - 稅前淨利(淨損)
92
+ - 繼續營業單位稅前損益
93
+ - 繼續營業單位稅前淨利(淨損)
94
+
95
+ # 本期淨利
96
+ net_income:
97
+ mode: growth
98
+ target_index:
99
+ - 本期淨利(淨損)
100
+ - 本期稅後淨利(淨損)
101
+
102
+ grand_total_net_income:
103
+ mode: grand_total_growth
104
+ target_index:
105
+ - 本期淨利(淨損)
106
+ - 本期稅後淨利(淨損)
107
+
108
+ net_income_percentage:
109
+ mode: percentage
110
+ target_index:
111
+ - 本期淨利(淨損)
112
+ - 本期稅後淨利(淨損)
113
+
114
+ grand_total_income_percentage:
115
+ mode: grand_total_percentage
116
+ target_index:
117
+ - 本期淨利(淨損)
118
+ - 本期稅後淨利(淨損)
119
+
120
+ # EPS
121
+ EPS:
122
+ mode: value
123
+ target_index:
124
+ - 基本每股盈餘
125
+ - 基本每股盈餘合計
126
+
127
+ EPS_growth:
128
+ mode: growth
129
+ target_index:
130
+ - 基本每股盈餘
131
+ - 基本每股盈餘合計
132
+
133
+ grand_total_EPS:
134
+ mode: grand_total
135
+ target_index:
136
+ - 基本每股盈餘
137
+ - 基本每股盈餘合計
138
+
139
+ grand_total_EPS_growth:
140
+ mode: grand_total_growth
141
+ target_index:
142
+ - 基本每股盈餘
143
+ - 基本每股盈餘合計
@@ -1,5 +1,4 @@
1
1
  from .datetime import StatsDateTime
2
2
  from .db_client import DBClient
3
3
  from .data_process import StatsProcessor
4
- from .fetcher import StatsFetcher
5
4
  from .calculate_value import YoY_Calculator
@@ -1,3 +1,4 @@
1
+ from .data_process import StatsProcessor
1
2
  class YoY_Calculator:
2
3
  def __init__(self):
3
4
  pass
@@ -23,4 +24,101 @@ class YoY_Calculator:
23
24
  if (isinstance(YoY, complex)): # 年化成長率有複數問題
24
25
  return None
25
26
 
26
- return YoY
27
+ return YoY
28
+ @classmethod
29
+ def calculate_growth(cls, this_value, last_value, delta):
30
+ try:
31
+ return YoY_Calculator.cal_growth(
32
+ this_value, last_value, delta
33
+ ) * 100
34
+ except Exception:
35
+ return None
36
+
37
+ @classmethod
38
+ def cal_YoY(
39
+ cls, data_dict: dict
40
+ ):
41
+ year_shifts = [1, 3, 5, 10]
42
+ return_dict = {}
43
+
44
+ for time_index in data_dict.keys():
45
+ year, season = map(int, time_index.split("Q"))
46
+
47
+ year_data = data_dict.get(f"{year}Q{season}", {}).copy()
48
+ if not year_data:
49
+ continue
50
+
51
+ for key, data in list(year_data.items()):
52
+ if key in ["year", "season"]:
53
+ continue
54
+
55
+ if (isinstance(data, dict)):
56
+ temp_dict = data
57
+ value = data.get("value", None)
58
+ else:
59
+ temp_dict = {"value": data}
60
+ value = data
61
+
62
+ this_value = StatsProcessor.process_str_to_float(value)
63
+
64
+ for shift in year_shifts:
65
+ past_value = data_dict.get(f"{year - shift}Q{season}", {}).get(key, {})
66
+ if (isinstance(past_value, dict)):
67
+ past_value = past_value.get('value', None)
68
+ past_value = StatsProcessor.process_str_to_float(
69
+ past_value
70
+ )
71
+
72
+ growth = cls.calculate_growth(this_value, past_value, shift) if past_value else None
73
+
74
+ temp_dict[
75
+ f"YoY_{shift}"
76
+ ] = f"{growth:.2f}%" if growth else None
77
+
78
+ year_data[key] = temp_dict
79
+ return_dict[f"{year}Q{season}"] = year_data
80
+ return return_dict
81
+ @classmethod
82
+ def cal_QoQ(cls, data_dict):
83
+ return_dict = {}
84
+
85
+ for time_index, this_data in data_dict.items():
86
+ year, season = map(int, time_index.split("Q"))
87
+ last_year, last_season = (
88
+ year - 1, 4
89
+ ) if season == 1 else (year, season - 1)
90
+
91
+ for key in list(this_data.keys()):
92
+ if key == "season":
93
+ continue
94
+
95
+
96
+ value = this_data.get(key, None)
97
+
98
+ if (isinstance(value, dict)):
99
+ temp_dict = value
100
+ this_value = value.get("value", None)
101
+ else:
102
+ temp_dict = {"value": value}
103
+ this_value = value
104
+
105
+ this_value = StatsProcessor.process_str_to_float(this_data[key])
106
+
107
+ last_value = data_dict.get(
108
+ f"{last_year}Q{last_season}",{}
109
+ ).get(key, {})
110
+
111
+ if (isinstance(last_value, dict)):
112
+ last_value = last_value.get("value", None)
113
+
114
+ last_value = StatsProcessor.process_str_to_float(last_value)
115
+ growth = cls.calculate_growth(
116
+ this_value, last_value, 1
117
+ ) if last_value is not None else None
118
+ temp_dict['growth'] = (f"{growth:.2f}%" if growth else None)
119
+
120
+ this_data[key] = temp_dict
121
+
122
+ return_dict[time_index] = this_data
123
+
124
+ return return_dict
@@ -36,6 +36,14 @@ class StatsProcessor:
36
36
  data = yaml.safe_load(f)
37
37
 
38
38
  return data
39
+
40
+ @classmethod
41
+ def load_json(cls, filename):
42
+ yaml_path = files('neurostats_API.tools').joinpath(filename)
43
+ with open(yaml_path, 'r', encoding='utf-8') as f:
44
+ data = json.load(f)
45
+
46
+ return data
39
47
 
40
48
  @classmethod
41
49
  def expand_value_percentage(cls, dataframe):
@@ -52,6 +60,23 @@ class StatsProcessor:
52
60
  expanded_df = pd.concat(expanded_columns.values(), axis=1)
53
61
 
54
62
  return expanded_df
63
+
64
+ @classmethod
65
+ def slice_old_table(
66
+ cls,
67
+ total_table,
68
+ target_index,
69
+ ):
70
+ """
71
+ 對舊格式的轉換
72
+ 對只有單層column的table,切出想要的index
73
+ """
74
+
75
+ if (target_index):
76
+ target_index = target_index.split()
77
+ return total_table.loc[target_index, :]
78
+ else:
79
+ return total_table
55
80
 
56
81
  @classmethod
57
82
  def slice_table(
@@ -61,30 +86,24 @@ class StatsProcessor:
61
86
  target_index=None, # None or Str, 要特別抓哪個index
62
87
  ):
63
88
  """
64
- total_table: column應為 <時間>_<單位>
65
- 對只有單層column的table,切出想要的index
89
+ total_table: column應為 <時間>_<季>
66
90
  """
67
- times = [
68
- column.split("_")[0] for column in total_table.columns.unique()
69
- ] #取出timeIndex
70
91
  try:
71
92
  target_metrics = target_metric_dict[mode]
72
93
  except KeyError as e:
73
- return f"mode Error: Get mode should be {list(target_metric_dict.keys())} but get {mode}"
74
-
75
- desired_order = [
76
- f"{time}_{value_name}" for time in times
77
- for value_name in target_metrics
78
- ]
94
+ raise ValueError(f"mode Error: Get mode should be {list(target_metric_dict.keys())} but get {mode}")
79
95
 
80
96
  if (target_index):
81
- target_index = target_index.split()
82
- sliced_table = total_table.loc[target_index, desired_order].T
97
+ target_index = [index_name.strip() for index_name in target_index.split()]
98
+ desired_order = []
99
+ for index_name in target_index:
100
+ desired_order += [f"{index_name}_{metric_name}" for metric_name in target_metrics]
101
+ sliced_table = total_table.loc[desired_order, :].T
83
102
 
84
103
  return sliced_table.T
85
104
 
86
105
  else:
87
- return total_table.loc[:, desired_order]
106
+ return total_table
88
107
 
89
108
  @classmethod
90
109
  def slice_multi_col_table(
@@ -275,4 +294,13 @@ class StatsProcessor:
275
294
  pop_key = delimeter.join(pop_keys)
276
295
  return_dict[pop_key] = data[data_key]
277
296
 
278
- return return_dict
297
+ return return_dict
298
+
299
+ @classmethod
300
+ def process_str_to_float(cls, value):
301
+ if isinstance(value, str) and "%" in value:
302
+ value = value.replace("%", "")
303
+ try:
304
+ return float(value)
305
+ except (ValueError, TypeError):
306
+ return None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: neurostats_API
3
- Version: 0.0.21
3
+ Version: 0.0.22
4
4
  Summary: The service of NeuroStats website
5
5
  Home-page: https://github.com/NeurowattStats/NeuroStats_API.git
6
6
  Author: JasonWang@Neurowatt
@@ -8,7 +8,7 @@ Author-email: jason@neurowatt.ai
8
8
  Requires-Python: >=3.6
9
9
  Description-Content-Type: text/markdown
10
10
  Requires-Dist: numpy
11
- Requires-Dist: pandas>=2.2.0
11
+ Requires-Dist: pandas
12
12
  Requires-Dist: pymongo
13
13
  Requires-Dist: pytz
14
14
  Requires-Dist: python-dotenv
@@ -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.21
92
+ 0.0.22
93
93
  ```
94
94
 
95
95
  ### 得到最新一期的評價資料與歷年評價
@@ -0,0 +1,34 @@
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,,