neurostats-API 0.0.23b1__py3-none-any.whl → 0.0.24__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 +63 -39
- 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 +216 -97
- neurostats_API/fetchers/macro_daily_event.py +8 -0
- neurostats_API/fetchers/margin_trading.py +121 -94
- neurostats_API/fetchers/month_revenue.py +139 -105
- neurostats_API/fetchers/profit_lose.py +103 -83
- neurostats_API/fetchers/tech.py +25 -27
- neurostats_API/fetchers/tej_finance_report.py +101 -69
- neurostats_API/fetchers/value_invest.py +32 -12
- neurostats_API/tools/tej_db/tej_db_percent_index.yaml +0 -3
- 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.23b1.dist-info → neurostats_API-0.0.24.dist-info}/METADATA +2 -2
- neurostats_API-0.0.24.dist-info/RECORD +36 -0
- neurostats_API-0.0.23b1.dist-info/RECORD +0 -34
- {neurostats_API-0.0.23b1.dist-info → neurostats_API-0.0.24.dist-info}/WHEEL +0 -0
- {neurostats_API-0.0.23b1.dist-info → neurostats_API-0.0.24.dist-info}/top_level.txt +0 -0
@@ -8,6 +8,11 @@ class ValueFetcher(StatsFetcher):
|
|
8
8
|
|
9
9
|
def __init__(self, ticker: str, db_client):
|
10
10
|
super().__init__(ticker, db_client)
|
11
|
+
self.value_keys = [
|
12
|
+
"P_E", "P_FCF", "P_B", "P_S",
|
13
|
+
"EV_OPI", "EV_EBIT", "EV_EBITDA", "EV_S",
|
14
|
+
"Yield"
|
15
|
+
]
|
11
16
|
|
12
17
|
def prepare_query(self, start_date, end_date):
|
13
18
|
pipeline = super().prepare_query()
|
@@ -54,7 +59,8 @@ class ValueFetcher(StatsFetcher):
|
|
54
59
|
"EV_OPI": "$$daily_item.EV_OPI",
|
55
60
|
"EV_EBIT": "$$daily_item.EV_EBIT",
|
56
61
|
"EV_EBITDA": "$$daily_item.EV_EBITDA",
|
57
|
-
"EV_S": "$$daily_item.EV_S"
|
62
|
+
"EV_S": "$$daily_item.EV_S",
|
63
|
+
"Yield": "$$daily_item.Yield"
|
58
64
|
}
|
59
65
|
}
|
60
66
|
},
|
@@ -89,10 +95,13 @@ class ValueFetcher(StatsFetcher):
|
|
89
95
|
fetched_data = self.collect_data(start_date, end_date)
|
90
96
|
|
91
97
|
fetched_data['daily_data'] = fetched_data['daily_data'][-1]
|
98
|
+
for key in self.value_keys:
|
99
|
+
fetched_data['daily_data'][key] = fetched_data['daily_data'].get(key, None)
|
92
100
|
|
93
101
|
fetched_data['yearly_data'] = ValueProcessor.transform_to_df(
|
94
102
|
fetched_data['daily_data'],
|
95
103
|
fetched_data['yearly_data'],
|
104
|
+
required_keys=self.value_keys
|
96
105
|
)
|
97
106
|
|
98
107
|
return fetched_data
|
@@ -110,7 +119,8 @@ class ValueFetcher(StatsFetcher):
|
|
110
119
|
EV_OPI,
|
111
120
|
EV_EBIT,
|
112
121
|
EV_EBITDA,
|
113
|
-
EV_S
|
122
|
+
EV_S,
|
123
|
+
Yield
|
114
124
|
}
|
115
125
|
"""
|
116
126
|
|
@@ -142,7 +152,8 @@ class ValueFetcher(StatsFetcher):
|
|
142
152
|
"EV_OPI": "$$daily.EV_OPI",
|
143
153
|
"EV_EBIT": "$$daily.EV_EBIT",
|
144
154
|
"EV_EBITDA": "$$daily.EV_EBITDA",
|
145
|
-
"EV_S": "$$daily.EV_S"
|
155
|
+
"EV_S": "$$daily.EV_S",
|
156
|
+
"Yield": "$$daily.Yield"
|
146
157
|
}
|
147
158
|
}
|
148
159
|
}
|
@@ -153,15 +164,12 @@ class ValueFetcher(StatsFetcher):
|
|
153
164
|
fetched_data = self.collection.aggregate(pipeline).to_list()
|
154
165
|
fetched_data = fetched_data[0]
|
155
166
|
|
156
|
-
|
157
|
-
|
167
|
+
return_dict = {value_key: dict() for value_key in self.value_keys}
|
168
|
+
|
169
|
+
for data in fetched_data['daily_data']:
|
170
|
+
for value_key in self.value_keys:
|
171
|
+
return_dict[value_key].update({data['date']: data.get(value_key, None)})
|
158
172
|
|
159
|
-
for value_key in value_keys:
|
160
|
-
for data in fetched_data['daily_data']:
|
161
|
-
if (value_key not in data.keys()):
|
162
|
-
continue
|
163
|
-
else:
|
164
|
-
return_dict[value_key].update({data['date']: data[value_key]})
|
165
173
|
|
166
174
|
return_dict = {
|
167
175
|
value_key: pd.DataFrame.from_dict(value_dict, orient='index', columns=[value_key])
|
@@ -173,7 +181,7 @@ class ValueFetcher(StatsFetcher):
|
|
173
181
|
class ValueProcessor(StatsProcessor):
|
174
182
|
|
175
183
|
@staticmethod
|
176
|
-
def transform_to_df(daily_dict, yearly_dict):
|
184
|
+
def transform_to_df(daily_dict: dict, yearly_dict: dict, required_keys: list):
|
177
185
|
latest_data = {"year": f"過去4季"}
|
178
186
|
|
179
187
|
latest_data.update(daily_dict)
|
@@ -184,4 +192,16 @@ class ValueProcessor(StatsProcessor):
|
|
184
192
|
|
185
193
|
yearly_dict = pd.DataFrame.from_dict(yearly_dict)
|
186
194
|
|
195
|
+
total_keys = [
|
196
|
+
# 年度評價
|
197
|
+
'year', 'P_E', 'P_FCF', 'P_B', 'P_S',
|
198
|
+
'EV_OPI', 'EV_EBIT', 'EV_EBITDA','EV_S',
|
199
|
+
|
200
|
+
# 最新一日交易
|
201
|
+
'open', 'high', 'low', 'close', 'volume', 'dividends',
|
202
|
+
'stock splits', 'Yield', 'dividend_year', 'finance_report_time'
|
203
|
+
]
|
204
|
+
|
205
|
+
total_keys_list = list(total_keys)
|
206
|
+
yearly_dict = yearly_dict.reindex(columns=total_keys, fill_value=None)
|
187
207
|
return yearly_dict
|
@@ -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
|
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.23
|
93
93
|
```
|
94
94
|
|
95
95
|
### 得到最新一期的評價資料與歷年評價
|
@@ -0,0 +1,36 @@
|
|
1
|
+
neurostats_API/__init__.py,sha256=nUg0aKz0ncXl7wfHthqrmQmVDlUkLKEcjR7ARy_lgWU,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=h5vQAzqCRrIfSwA4ZFAnCOT-BPIFdhQf5ZPz6YqcKCE,6938
|
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.dist-info/METADATA,sha256=mf7iV7Pud5CLvrVZLO6c_BiodQLzillMO6HScFVLhYM,31618
|
34
|
+
neurostats_API-0.0.24.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
|
35
|
+
neurostats_API-0.0.24.dist-info/top_level.txt,sha256=nSlQPMG0VtXivJyedp4Bkf86EOy2TpW10VGxolXrqnU,15
|
36
|
+
neurostats_API-0.0.24.dist-info/RECORD,,
|
@@ -1,34 +0,0 @@
|
|
1
|
-
neurostats_API/__init__.py,sha256=ItIYqBMTp2EHBeBahEWCKKGa-JIzQO2ykdQy3A-LNZY,289
|
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=u0L6X19g7VmbCUXF_9UI_tBIJJ9hPareEggjXUe52_o,16079
|
14
|
-
neurostats_API/fetchers/tej_finance_report.py,sha256=og3wg0Vdyzyx3Ex6ejk10ORo4zQjcrUrRtR9W1dCWNE,11320
|
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=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.23b1.dist-info/METADATA,sha256=W8Ks1L96z3SeSc5moAXkDwLYVlbMildAHJH6x4D09mo,31621
|
32
|
-
neurostats_API-0.0.23b1.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
|
33
|
-
neurostats_API-0.0.23b1.dist-info/top_level.txt,sha256=nSlQPMG0VtXivJyedp4Bkf86EOy2TpW10VGxolXrqnU,15
|
34
|
-
neurostats_API-0.0.23b1.dist-info/RECORD,,
|
File without changes
|
File without changes
|