neurostats-API 1.0.0rc3__py3-none-any.whl → 1.0.0rc4__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 +15 -1
- neurostats_API/transformers/balance_sheet/twse.py +23 -18
- neurostats_API/transformers/base.py +75 -27
- neurostats_API/transformers/cash_flow/twse.py +2 -0
- neurostats_API/transformers/finance_overview/stats_overview.py +19 -4
- neurostats_API/transformers/profit_lose/twse.py +1 -1
- {neurostats_API-1.0.0rc3.dist-info → neurostats_API-1.0.0rc4.dist-info}/METADATA +2 -2
- {neurostats_API-1.0.0rc3.dist-info → neurostats_API-1.0.0rc4.dist-info}/RECORD +10 -10
- {neurostats_API-1.0.0rc3.dist-info → neurostats_API-1.0.0rc4.dist-info}/WHEEL +0 -0
- {neurostats_API-1.0.0rc3.dist-info → neurostats_API-1.0.0rc4.dist-info}/top_level.txt +0 -0
neurostats_API/__init__.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
__version__='1.0.
|
1
|
+
__version__='1.0.0rc4'
|
2
2
|
|
3
3
|
from .fetchers import (
|
4
4
|
AgentFinanceOverviewFetcher,
|
@@ -12,4 +12,18 @@ from .fetchers import (
|
|
12
12
|
TechFetcher,
|
13
13
|
TEJStockPriceFetcher,
|
14
14
|
ProfitLoseFetcher,
|
15
|
+
)
|
16
|
+
|
17
|
+
from .async_mode import (
|
18
|
+
AsyncAgentOverviewFetcher,
|
19
|
+
AsyncBalanceSheetFetcher,
|
20
|
+
AsyncCashFlowFetcher,
|
21
|
+
AsyncFinanceOverviewFetcher,
|
22
|
+
AsyncMonthlyRevenueFetcher,
|
23
|
+
AsyncProfitLoseFetcher,
|
24
|
+
AsyncTechFetcher,
|
25
|
+
AsyncTEJSeasonalFetcher,
|
26
|
+
AsyncTWSEInstitutionFetcher,
|
27
|
+
AsyncTWSEMarginFetcher,
|
28
|
+
AsyncTWSEStatsValueFetcher
|
15
29
|
)
|
@@ -1,19 +1,24 @@
|
|
1
1
|
from .base import BaseBalanceSheetTransformer
|
2
2
|
from neurostats_API.utils import StatsProcessor
|
3
3
|
|
4
|
+
|
4
5
|
class TWSEBalanceSheetTransformer(BaseBalanceSheetTransformer):
|
6
|
+
|
5
7
|
def __init__(self, ticker, company_name, zone):
|
6
8
|
super().__init__(ticker, company_name, zone)
|
7
9
|
|
8
|
-
self.table_settings = StatsProcessor.load_yaml(
|
10
|
+
self.table_settings = StatsProcessor.load_yaml(
|
11
|
+
"twse/balance_sheet.yaml"
|
12
|
+
)
|
9
13
|
self.return_keys = [
|
10
|
-
'balance_sheet', 'total_asset', 'current_asset',
|
11
|
-
'
|
14
|
+
'balance_sheet', 'total_asset', 'current_asset',
|
15
|
+
'non_current_asset', 'current_debt', 'non_current_debt', 'equity',
|
16
|
+
'balance_sheet_all', 'balance_sheet_YoY'
|
12
17
|
]
|
13
18
|
|
14
19
|
self.stats_df = None
|
15
20
|
self.new_df = None
|
16
|
-
|
21
|
+
|
17
22
|
def process_transform(self, fetched_data):
|
18
23
|
if (not fetched_data):
|
19
24
|
return self._get_empty_structure()
|
@@ -21,12 +26,10 @@ class TWSEBalanceSheetTransformer(BaseBalanceSheetTransformer):
|
|
21
26
|
processed_data = self._process_fn(fetched_data)
|
22
27
|
|
23
28
|
return processed_data
|
29
|
+
|
24
30
|
def _process_fn(self, fetched_data):
|
25
|
-
|
26
|
-
return_dict = {
|
27
|
-
"ticker": self.ticker,
|
28
|
-
"company_name": self.company_name
|
29
|
-
}
|
31
|
+
|
32
|
+
return_dict = {"ticker": self.ticker, "company_name": self.company_name}
|
30
33
|
|
31
34
|
target_season = fetched_data[0]['season']
|
32
35
|
|
@@ -36,18 +39,22 @@ class TWSEBalanceSheetTransformer(BaseBalanceSheetTransformer):
|
|
36
39
|
# 轉換格式 (元 / 千元 / %)
|
37
40
|
self.stats_df = StatsProcessor.expand_value_percentage(self.stats_df)
|
38
41
|
self.stats_df = self._apply_process_unit_pipeline(
|
39
|
-
self.stats_df,
|
40
|
-
postfix_list=['_value', "_percentage"]
|
42
|
+
self.stats_df, postfix_list=['_value', "_percentage"]
|
41
43
|
)
|
42
44
|
|
43
45
|
self.new_df = self._process_twse_to_tej_format(fetched_data)
|
44
46
|
# 轉換格式 (元 / 千元 / %)
|
45
47
|
self.new_df = self._apply_process_unit_pipeline(
|
46
|
-
self.new_df,
|
47
|
-
postfix_list=['_value', "_percentage"]
|
48
|
+
self.new_df, postfix_list=['_value', "_percentage"]
|
48
49
|
)
|
49
50
|
|
50
|
-
|
51
|
+
self.new_dict = self.new_df.to_dict()
|
52
|
+
self.new_df = self._cal_QoQ(self.new_dict)
|
53
|
+
self.new_df = self.new_df.T
|
54
|
+
|
55
|
+
total_table_YoY = self._slice_target_season(
|
56
|
+
self.new_df, target_season
|
57
|
+
)
|
51
58
|
|
52
59
|
return_dict.update(
|
53
60
|
{
|
@@ -60,17 +67,15 @@ class TWSEBalanceSheetTransformer(BaseBalanceSheetTransformer):
|
|
60
67
|
self._process_target_columns(return_dict, self.stats_df)
|
61
68
|
|
62
69
|
return return_dict
|
63
|
-
|
70
|
+
|
64
71
|
def _process_target_columns(self, return_dict, stats_df):
|
65
72
|
for name, setting in self.table_settings.items():
|
66
73
|
target_indexes = setting.get('target_index', [None])
|
67
74
|
for target_index in target_indexes:
|
68
75
|
try:
|
69
76
|
return_dict[name] = StatsProcessor.slice_old_table(
|
70
|
-
total_table=stats_df,
|
71
|
-
target_index=target_index
|
77
|
+
total_table=stats_df, target_index=target_index
|
72
78
|
)
|
73
79
|
break
|
74
80
|
except Exception as e:
|
75
81
|
continue
|
76
|
-
|
@@ -2,10 +2,12 @@ import abc
|
|
2
2
|
from neurostats_API.utils import StatsProcessor, YoY_Calculator
|
3
3
|
import pandas as pd
|
4
4
|
|
5
|
+
|
5
6
|
class BaseTransformer(abc.ABC):
|
6
7
|
"""
|
7
8
|
Transformer用途: 轉換資料為fetcher可使用的格式
|
8
9
|
"""
|
10
|
+
|
9
11
|
def __init__(self, ticker, company_name, zone):
|
10
12
|
self.ticker = ticker
|
11
13
|
self.company_name = company_name
|
@@ -13,7 +15,6 @@ class BaseTransformer(abc.ABC):
|
|
13
15
|
self.zone = zone
|
14
16
|
self.return_keys = []
|
15
17
|
|
16
|
-
|
17
18
|
@abc.abstractmethod
|
18
19
|
def process_transform(self):
|
19
20
|
pass
|
@@ -23,27 +24,36 @@ class BaseTransformer(abc.ABC):
|
|
23
24
|
indexes = value_dict.keys()
|
24
25
|
new_dict = {}
|
25
26
|
|
26
|
-
|
27
27
|
for key in indexes:
|
28
28
|
new_dict.update(
|
29
29
|
{
|
30
|
-
f"{key}_{sub_key}": value_dict[key].get(sub_key, None)
|
30
|
+
f"{key}_{sub_key}": value_dict[key].get(sub_key, None)
|
31
31
|
for sub_key in target_keys
|
32
32
|
}
|
33
33
|
)
|
34
|
+
|
34
35
|
return new_dict
|
35
|
-
|
36
|
+
|
36
37
|
@staticmethod
|
37
38
|
def _process_unit(data_df, postfix):
|
38
39
|
|
39
40
|
lambda_map = {
|
40
|
-
"_value":
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
"
|
45
|
-
|
46
|
-
|
41
|
+
"_value":
|
42
|
+
lambda x: StatsProcessor.cal_non_percentage(x, postfix="千元"),
|
43
|
+
"_percentage":
|
44
|
+
lambda x: StatsProcessor.
|
45
|
+
cal_non_percentage(x, to_str=True, postfix="%"),
|
46
|
+
'_growth':
|
47
|
+
lambda x: StatsProcessor.
|
48
|
+
cal_non_percentage(x, to_str=True, postfix="%"),
|
49
|
+
"_YoY_1":
|
50
|
+
StatsProcessor.cal_percentage,
|
51
|
+
"_YoY_3":
|
52
|
+
StatsProcessor.cal_percentage,
|
53
|
+
"_YoY_5":
|
54
|
+
StatsProcessor.cal_percentage,
|
55
|
+
"_YoY_10":
|
56
|
+
StatsProcessor.cal_percentage
|
47
57
|
}
|
48
58
|
|
49
59
|
process_fn = lambda_map.get(postfix)
|
@@ -51,33 +61,36 @@ class BaseTransformer(abc.ABC):
|
|
51
61
|
postfix_cols = data_df.loc[:, postfix_cols].columns
|
52
62
|
|
53
63
|
if (postfix == "_value"):
|
54
|
-
postfix_cols = [
|
55
|
-
|
64
|
+
postfix_cols = [
|
65
|
+
col for col in postfix_cols
|
66
|
+
if not ("eps" in col or "每股盈餘" in col)
|
67
|
+
]
|
68
|
+
|
56
69
|
if (postfix == '_growth'):
|
57
|
-
data_df[postfix_cols] =data_df[postfix_cols].map(
|
58
|
-
|
70
|
+
data_df[postfix_cols] = data_df[postfix_cols].map(
|
71
|
+
lambda x: x * 100.0 if isinstance(x, float) else x
|
59
72
|
)
|
60
73
|
|
61
|
-
data_df[postfix_cols] = (
|
62
|
-
data_df[postfix_cols].map(
|
63
|
-
process_fn
|
64
|
-
)
|
65
|
-
)
|
74
|
+
data_df[postfix_cols] = (data_df[postfix_cols].map(process_fn))
|
66
75
|
|
67
76
|
return data_df
|
68
77
|
|
69
|
-
def _apply_process_unit_pipeline(
|
78
|
+
def _apply_process_unit_pipeline(
|
79
|
+
self, data_df, postfix_list=["_value", "percentage"]
|
80
|
+
):
|
70
81
|
for postfix in postfix_list:
|
71
82
|
data_df = self._process_unit(data_df, postfix)
|
72
83
|
return data_df
|
73
84
|
|
74
85
|
@staticmethod
|
75
86
|
def _slice_target_season(stats_df, target_season):
|
76
|
-
target_season_columns = stats_df.columns.str.endswith(
|
87
|
+
target_season_columns = stats_df.columns.str.endswith(
|
88
|
+
f"Q{target_season}"
|
89
|
+
)
|
77
90
|
stats_df = stats_df.loc[:, target_season_columns]
|
78
91
|
|
79
92
|
return stats_df
|
80
|
-
|
93
|
+
|
81
94
|
def _get_empty_structure(self):
|
82
95
|
return_dict = {
|
83
96
|
"warning": "No data fetched",
|
@@ -87,11 +100,12 @@ class BaseTransformer(abc.ABC):
|
|
87
100
|
|
88
101
|
return_dict.update(
|
89
102
|
{
|
90
|
-
key: pd.DataFrame(columns=
|
103
|
+
key: pd.DataFrame(columns=pd.Index([], name='date'))
|
104
|
+
for key in self.return_keys
|
91
105
|
}
|
92
106
|
)
|
93
107
|
return return_dict
|
94
|
-
|
108
|
+
|
95
109
|
def _process_value(self, value):
|
96
110
|
if isinstance(value, str) and "%" in value:
|
97
111
|
value = value.replace("%", "")
|
@@ -99,7 +113,7 @@ class BaseTransformer(abc.ABC):
|
|
99
113
|
return float(value)
|
100
114
|
except (ValueError, TypeError):
|
101
115
|
return None
|
102
|
-
|
116
|
+
|
103
117
|
def _calculate_growth(self, this_value, last_value, delta):
|
104
118
|
try:
|
105
119
|
return YoY_Calculator.cal_growth(
|
@@ -107,4 +121,38 @@ class BaseTransformer(abc.ABC):
|
|
107
121
|
) * 100
|
108
122
|
except Exception:
|
109
123
|
return None
|
110
|
-
|
124
|
+
|
125
|
+
def _cal_QoQ(self, data_dict):
|
126
|
+
"""
|
127
|
+
data_dict: {"<key>_value": {"2020Q1": <value>, ....}, "<key>_percentage": {"2020Q1": <value>, ....}}
|
128
|
+
"""
|
129
|
+
|
130
|
+
return_dict = data_dict.copy()
|
131
|
+
|
132
|
+
for key, datas in data_dict.items():
|
133
|
+
if (key.endswith("_value")):
|
134
|
+
main_key = key.split("_")[0]
|
135
|
+
temp_growth_dict = dict()
|
136
|
+
for year_season, value in datas.items():
|
137
|
+
|
138
|
+
year, season = year_season.split('Q')
|
139
|
+
year, season = int(year), int(season)
|
140
|
+
|
141
|
+
last_year, last_season = (
|
142
|
+
year, season - 1
|
143
|
+
) if season != 1 else (year - 1, 4)
|
144
|
+
|
145
|
+
last_value = datas.get(f"{last_year}Q{last_season}", None)
|
146
|
+
|
147
|
+
growth = YoY_Calculator.cal_growth(
|
148
|
+
value, last_value, delta=1
|
149
|
+
)
|
150
|
+
if (growth):
|
151
|
+
growth = growth * 100
|
152
|
+
growth = f"{growth:.2f}%"
|
153
|
+
|
154
|
+
temp_growth_dict[year_season] = growth
|
155
|
+
|
156
|
+
return_dict[f"{main_key}_growth"] = growth
|
157
|
+
return_df = pd.DataFrame.from_dict(return_dict)
|
158
|
+
return return_df
|
@@ -52,6 +52,8 @@ class TWSECashFlowTransformer(BaseCashFlowTransformer):
|
|
52
52
|
return self._get_empty_structure()
|
53
53
|
|
54
54
|
data_df = self._process_twse_to_tej_format(fetched_data)
|
55
|
+
data_df = self._cal_QoQ(data_df.T.to_dict())
|
56
|
+
data_df = data_df.T
|
55
57
|
target_season = fetched_data[0]['season']
|
56
58
|
|
57
59
|
data_df_YoY = self._slice_target_season(data_df, target_season)
|
@@ -27,12 +27,27 @@ class FinanceOverviewTransformer(BaseFinanceOverviewTransformer):
|
|
27
27
|
return processed_data_dict
|
28
28
|
|
29
29
|
def _filter_target_data(self, balance_sheet, profit_lose, cash_flow):
|
30
|
+
balance_sheet = balance_sheet[-1]
|
31
|
+
cash_flow = cash_flow[-1]
|
32
|
+
profit_lose = profit_lose[-1]
|
33
|
+
seasons = [
|
34
|
+
(int(report['year']), int(report['season']))
|
35
|
+
for report in (balance_sheet, profit_lose, cash_flow)
|
36
|
+
]
|
37
|
+
|
38
|
+
max_date = max(seasons)
|
39
|
+
year, season = max_date
|
40
|
+
|
30
41
|
data_dict = {
|
31
|
-
'balance_sheet': balance_sheet[
|
32
|
-
'profit_lose': profit_lose[
|
33
|
-
"cash_flow": cash_flow[
|
42
|
+
'balance_sheet': balance_sheet['balance_sheet'],
|
43
|
+
'profit_lose': profit_lose['profit_lose'],
|
44
|
+
"cash_flow": cash_flow['cash_flow']
|
34
45
|
}
|
35
|
-
filtered_dict = {
|
46
|
+
filtered_dict = {
|
47
|
+
"year": year,
|
48
|
+
"season": season
|
49
|
+
}
|
50
|
+
|
36
51
|
|
37
52
|
for key, target_sets in self.target_fields.items():
|
38
53
|
try:
|
@@ -105,7 +105,7 @@ class TWSEProfitLoseTransformer(BaseProfitLoseTransformer):
|
|
105
105
|
return_dict.update({
|
106
106
|
"profit_lose": stats_main_page_df,
|
107
107
|
"grand_total_profit_lose": stats_grand_total_df,
|
108
|
-
"profit_lose_all": self.new_df
|
108
|
+
"profit_lose_all": self.new_df,
|
109
109
|
"profit_lose_YoY": new_df_YoY
|
110
110
|
})
|
111
111
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: neurostats_API
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.0rc4
|
4
4
|
Summary: The service of NeuroStats website
|
5
5
|
Home-page: https://github.com/NeurowattStats/NeuroStats_API.git
|
6
6
|
Author: JasonWang@Neurowatt
|
@@ -71,7 +71,7 @@ pip install neurostats-API
|
|
71
71
|
```Python
|
72
72
|
>>> import neurostats_API
|
73
73
|
>>> print(neurostats_API.__version__)
|
74
|
-
1.0.
|
74
|
+
1.0.0rc4
|
75
75
|
```
|
76
76
|
|
77
77
|
### 下載舊版
|
@@ -1,4 +1,4 @@
|
|
1
|
-
neurostats_API/__init__.py,sha256=
|
1
|
+
neurostats_API/__init__.py,sha256=_uiy9Ft_P0W543jiIeLSo575-z7QQrPbVPoJr3UKbm8,675
|
2
2
|
neurostats_API/cli.py,sha256=UJSWLIw03P24p-gkBb6JSEI5dW5U12UvLf1L8HjQD-o,873
|
3
3
|
neurostats_API/main.py,sha256=QcsfmWivg2Dnqw3MTJWiI0QvEiRs0VuH-BjwQHFCv00,677
|
4
4
|
neurostats_API/async_mode/__init__.py,sha256=arSINQm3O3g-IwfOSLsGraEj2icJbkuW0t5HLPQ4Xk8,348
|
@@ -66,14 +66,14 @@ neurostats_API/fetchers/tech.py,sha256=TsS8m25Otc3_2jTYITFe-wNHlDWcfWsHIxhOrqL8q
|
|
66
66
|
neurostats_API/fetchers/tej_finance_report.py,sha256=mlIm2Qzs8-Xlzeb8uET8qGPWD3VGUx3g8qFFcY4UbAw,13022
|
67
67
|
neurostats_API/fetchers/value_invest.py,sha256=QxQS2GcoLIU9ZBDEo8iRK2yHd8YLmBS70Bq42F3IsSw,8295
|
68
68
|
neurostats_API/transformers/__init__.py,sha256=AJ0SkJ9P65gbdHPSygYw1X2I-KRJO20q20lLVP-JViE,676
|
69
|
-
neurostats_API/transformers/base.py,sha256=
|
69
|
+
neurostats_API/transformers/base.py,sha256=cw_1pjtZOhbzMRNl9jcfsUNxjJkiNOWOjZFNXwpfkqs,4794
|
70
70
|
neurostats_API/transformers/balance_sheet/__init__.py,sha256=RCScBsR3zeC5UdyuiHD1CGRQufoFL5LkN8WbtI5JeA4,87
|
71
71
|
neurostats_API/transformers/balance_sheet/base.py,sha256=sEap9uHe-nri8F4gPV_FCVm0Qe6KWgpHt6a2ryAPd_8,1676
|
72
|
-
neurostats_API/transformers/balance_sheet/twse.py,sha256=
|
72
|
+
neurostats_API/transformers/balance_sheet/twse.py,sha256=ghQWvacJvJSEqu7RtNqICE5gK_N_AKWSvpfYv5Eioiw,2800
|
73
73
|
neurostats_API/transformers/balance_sheet/us.py,sha256=WS1JjShLcs9oGov4Bdaggs_eTIzb8SSutVKKKbAK7Ts,897
|
74
74
|
neurostats_API/transformers/cash_flow/__init__.py,sha256=KJs5kfjRV0ahy842ZVLvQuZS02YxT-w0cMNHfU0ngFE,79
|
75
75
|
neurostats_API/transformers/cash_flow/base.py,sha256=6Lt44O-xg658-jEFYBHOF2cgD0PGiKK43257uQMSetk,4392
|
76
|
-
neurostats_API/transformers/cash_flow/twse.py,sha256=
|
76
|
+
neurostats_API/transformers/cash_flow/twse.py,sha256=srrmTmFheJig3el5jQIW8YBgpZVUOq-Af2zM4NxLm7s,2432
|
77
77
|
neurostats_API/transformers/cash_flow/us.py,sha256=nRJajeDz4HNkv42NosoP0Jir4tIA0ybhIZu9zHkjAEM,1304
|
78
78
|
neurostats_API/transformers/daily_chip/__init__.py,sha256=e-yvQ94J3dkzRbhZwOiAkyt_ub9bRQ7pAVDbO-61Grw,43
|
79
79
|
neurostats_API/transformers/daily_chip/base.py,sha256=KBsnpACakJh2W-k4Kvv-dVNnSNbUCGMeqvQsTQkz-aE,184
|
@@ -91,13 +91,13 @@ neurostats_API/transformers/daily_tech/utils/processor.py,sha256=9zOjVFyWqzRXD5j
|
|
91
91
|
neurostats_API/transformers/finance_overview/__init__.py,sha256=mWFn13YrugExrSQ7oJvnvP95W20_rQ1wOesrZY3XnSU,107
|
92
92
|
neurostats_API/transformers/finance_overview/agent_overview.py,sha256=DA7zLTslqiYCKIzC8wKKJK7f2cz2KpTOhqy-qDQmDrc,1974
|
93
93
|
neurostats_API/transformers/finance_overview/base.py,sha256=uksr5sUhbaL12ZBH3cUtR1Q0NzpQ8C36FwfwluB8uYE,29669
|
94
|
-
neurostats_API/transformers/finance_overview/stats_overview.py,sha256=
|
94
|
+
neurostats_API/transformers/finance_overview/stats_overview.py,sha256=ml-u6BHCSKaTebvDAOBgyJfT6o3LCmluCfneABn1ysw,2884
|
95
95
|
neurostats_API/transformers/month_revenue/__init__.py,sha256=fNj-FNJgl7yhYeswd3UFZEcSNoDF4kL6Mkspjom2cSo,47
|
96
96
|
neurostats_API/transformers/month_revenue/base.py,sha256=cDswLIZ7UBJX3insyI3NPunxOva9Pf-6TEW15tHjn4s,1881
|
97
97
|
neurostats_API/transformers/month_revenue/twse.py,sha256=-QhPI3hRc7PPWmFarsbBINauv6LdwXlyR_hIR6alh34,5642
|
98
98
|
neurostats_API/transformers/profit_lose/__init__.py,sha256=oOPyakP1wDnmq7bsxgEm4vu1uWtUR34dd3Oegk9kvq0,83
|
99
99
|
neurostats_API/transformers/profit_lose/base.py,sha256=BJZjE1GmWBI3ayjDkzrtQTrn0vjTSVckPbrQ_u6zEl0,3125
|
100
|
-
neurostats_API/transformers/profit_lose/twse.py,sha256=
|
100
|
+
neurostats_API/transformers/profit_lose/twse.py,sha256=RwAJWQBdsjFaLlW-HL6oUGxLAd8jXPpp6ljVB8uOfhQ,5400
|
101
101
|
neurostats_API/transformers/profit_lose/us.py,sha256=QzAd2N_1Dqqb2TEPCLkqxsfp62gOMffbSOgr6FFODRM,804
|
102
102
|
neurostats_API/transformers/tej/__init__.py,sha256=WihARZhphkvApsKr4U0--68m1M-Dc_rpV7xoV2fUV7E,61
|
103
103
|
neurostats_API/transformers/tej/base.py,sha256=YD6M3Iok-KXb5EDhqa_fUzJ-zWXLeoXPsavdDJD-ks4,5436
|
@@ -113,7 +113,7 @@ neurostats_API/utils/datetime.py,sha256=XJya4G8b_-ZOaBbMXgQjWh2MC4wc-o6goQ7EQJQM
|
|
113
113
|
neurostats_API/utils/db_client.py,sha256=OYe6yazcR4Aa6jYmy47JrryUeh2NnKGqY2K_lSZe6i8,455
|
114
114
|
neurostats_API/utils/exception.py,sha256=yv92GVh5uHV1BgRmO4DwJcX_PtE0-TSgQoo3VnZ5hOQ,277
|
115
115
|
neurostats_API/utils/logger.py,sha256=egBiiPGTi5l1FoX_o6EvdGh81R0_k8hFPctSxq8RCoo,693
|
116
|
-
neurostats_API-1.0.
|
117
|
-
neurostats_API-1.0.
|
118
|
-
neurostats_API-1.0.
|
119
|
-
neurostats_API-1.0.
|
116
|
+
neurostats_API-1.0.0rc4.dist-info/METADATA,sha256=powkqVobJNpKzC-H4kX4IjnmL9WMR7CLMbCAdGX3Kdk,2964
|
117
|
+
neurostats_API-1.0.0rc4.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
|
118
|
+
neurostats_API-1.0.0rc4.dist-info/top_level.txt,sha256=nSlQPMG0VtXivJyedp4Bkf86EOy2TpW10VGxolXrqnU,15
|
119
|
+
neurostats_API-1.0.0rc4.dist-info/RECORD,,
|
File without changes
|
File without changes
|