neurostats-API 1.0.0rc4__tar.gz → 1.0.0rc6__tar.gz
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-1.0.0rc4 → neurostats_api-1.0.0rc6}/PKG-INFO +2 -2
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/README.md +1 -1
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/__init__.py +1 -1
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/__init__.py +1 -1
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/tech.py +2 -2
- neurostats_api-1.0.0rc6/neurostats_API/async_mode/fetchers/tej/__init__.py +2 -0
- neurostats_api-1.0.0rc4/neurostats_API/async_mode/fetchers/tej.py → neurostats_api-1.0.0rc6/neurostats_API/async_mode/fetchers/tej/seasonal_data.py +1 -1
- neurostats_api-1.0.0rc6/neurostats_API/async_mode/fetchers/tej/tech.py +34 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/balance_sheet/us.py +17 -9
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/base.py +1 -1
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_chip/twse_chip.py +1 -1
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/month_revenue/twse.py +13 -8
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/profit_lose/us.py +1 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/tej/finance_statement.py +1 -1
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/value/twse.py +1 -1
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API.egg-info/PKG-INFO +2 -2
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API.egg-info/SOURCES.txt +3 -1
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/setup.py +1 -1
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/test/test_async_fetcher.py +1 -1
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/MANIFEST.in +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db/base.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db/tej.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db/twse.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db/us.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/base.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/daily/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/daily/base.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/daily/tej_chip.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/daily/tej_tech.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/daily/twse_chip.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/daily/value.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/daily/yf.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/month_revenue/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/month_revenue/base.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/month_revenue/twse.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/seasonal/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/seasonal/balance_sheet.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/seasonal/base.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/seasonal/cashflow.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/seasonal/profit_lose.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/seasonal/tej.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/factory/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/factory/extractor_factory.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/factory/transformer_factory.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/balance_sheet.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/base.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/cash_flow.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/finance_overview.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/month_revenue.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/profit_lose.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/twse_institution.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/twse_margin.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/value.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/cli.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/company_list/ticker_index_industry_map.json +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/company_list/tw.json +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/company_list/us.json +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/company_list/us_TradingView_list.json +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/tej_db/tej_db_index.yaml +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/tej_db/tej_db_percent_index.yaml +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/tej_db/tej_db_skip_index.yaml +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/tej_db/tej_db_thousand_index.yaml +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/twse/balance_sheet.yaml +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/twse/cash_flow_percentage.yaml +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/twse/finance_overview_dict.yaml +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/twse/profit_lose.yaml +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/twse/seasonal_data_field_dict.txt +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/balance_sheet.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/base.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/cash_flow.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/finance_overview.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/institution.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/margin_trading.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/month_revenue.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/profit_lose.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/tech.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/tej_finance_report.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/value_invest.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/main.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/balance_sheet/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/balance_sheet/base.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/balance_sheet/twse.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/cash_flow/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/cash_flow/base.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/cash_flow/twse.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/cash_flow/us.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_chip/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_chip/base.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_chip/tej.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_chip/utils/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_chip/utils/institution.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_chip/utils/margin_trading.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_chip/utils/security_lending.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_tech/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_tech/base.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_tech/tech.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_tech/utils/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_tech/utils/processor.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/finance_overview/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/finance_overview/agent_overview.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/finance_overview/base.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/finance_overview/stats_overview.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/month_revenue/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/month_revenue/base.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/profit_lose/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/profit_lose/base.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/profit_lose/twse.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/tej/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/tej/base.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/value/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/value/base.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/value/tej.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/utils/__init__.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/utils/calculate_value.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/utils/data_process.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/utils/datetime.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/utils/db_client.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/utils/exception.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/utils/logger.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API.egg-info/dependency_links.txt +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API.egg-info/requires.txt +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API.egg-info/top_level.txt +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/setup.cfg +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/test/test_fetchers.py +0 -0
- {neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/test/test_tej.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: neurostats_API
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.0rc6
|
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.0rc6
|
75
75
|
```
|
76
76
|
|
77
77
|
### 下載舊版
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/__init__.py
RENAMED
@@ -7,4 +7,4 @@ from .twse_margin import AsyncTWSEMarginFetcher
|
|
7
7
|
from .month_revenue import AsyncMonthlyRevenueFetcher
|
8
8
|
from .profit_lose import AsyncProfitLoseFetcher
|
9
9
|
from .value import AsyncTWSEStatsValueFetcher
|
10
|
-
from .tej import AsyncTEJSeasonalFetcher
|
10
|
+
from .tej import AsyncTEJDailyTechFetcher, AsyncTEJSeasonalFetcher
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/tech.py
RENAMED
@@ -157,7 +157,7 @@ class AsyncTechFetcher(AsyncBaseFetcher):
|
|
157
157
|
start_date, end_date
|
158
158
|
)
|
159
159
|
|
160
|
-
if (
|
160
|
+
if (fetched_data):
|
161
161
|
df = pd.DataFrame(fetched_data)
|
162
162
|
return df
|
163
163
|
else:
|
@@ -171,7 +171,7 @@ class AsyncTechFetcher(AsyncBaseFetcher):
|
|
171
171
|
start_date, end_date
|
172
172
|
)
|
173
173
|
|
174
|
-
if (
|
174
|
+
if (fetched_data):
|
175
175
|
df = pd.DataFrame(fetched_data)
|
176
176
|
df = df.rename(
|
177
177
|
columns={
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import pandas as pd
|
2
|
+
from neurostats_API.async_mode.fetchers.base import AsyncBaseFetcher
|
3
|
+
from neurostats_API.async_mode.factory import get_extractor
|
4
|
+
from neurostats_API.utils import NotSupportedError
|
5
|
+
|
6
|
+
class AsyncTEJDailyTechFetcher(AsyncBaseFetcher):
|
7
|
+
|
8
|
+
def __init__(
|
9
|
+
self,
|
10
|
+
ticker,
|
11
|
+
client,
|
12
|
+
):
|
13
|
+
self.ticker = ticker
|
14
|
+
try:
|
15
|
+
self.extractor = get_extractor("TEJ_tech", ticker, client)
|
16
|
+
|
17
|
+
self.company_name = self.extractor.get_company_name()
|
18
|
+
self.zone = self.extractor.get_zone()
|
19
|
+
|
20
|
+
except NotSupportedError as e:
|
21
|
+
raise NotSupportedError(
|
22
|
+
f"{self.__class__.__name__} only support TW companies now, {ticker} is not available"
|
23
|
+
) from e
|
24
|
+
|
25
|
+
async def query_data(self, start_date, end_date):
|
26
|
+
data = await self.extractor.query_data(start_date, end_date)
|
27
|
+
df = pd.DataFrame(data)
|
28
|
+
return df.rename(columns={
|
29
|
+
"open_d": "open",
|
30
|
+
"high_d": "high",
|
31
|
+
"low_d": "low",
|
32
|
+
"close_d": "close",
|
33
|
+
"vol": "volume"
|
34
|
+
})
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/balance_sheet/us.py
RENAMED
@@ -1,24 +1,32 @@
|
|
1
1
|
from .base import BaseBalanceSheetTransformer
|
2
2
|
from neurostats_API.utils import StatsProcessor
|
3
3
|
|
4
|
+
|
4
5
|
class USBalanceSheetTransformer(BaseBalanceSheetTransformer):
|
5
|
-
|
6
|
+
|
7
|
+
def __init__(self, ticker, company_name, zone):
|
6
8
|
super().__init__(ticker, company_name, zone)
|
7
9
|
|
8
10
|
self.data_df = None
|
9
|
-
|
11
|
+
self.return_keys = [
|
12
|
+
'balance_sheet',
|
13
|
+
'balance_sheet_YoY'
|
14
|
+
]
|
15
|
+
|
10
16
|
def process_transform(self, fetched_data):
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
}
|
17
|
+
if (not fetched_data):
|
18
|
+
return self._get_empty_structure()
|
19
|
+
|
20
|
+
return_dict = {"ticker": self.ticker, "company_name": self.company_name}
|
15
21
|
|
16
22
|
# QoQ表格
|
17
23
|
self.data_df = self._process_us_format(fetched_data)
|
18
|
-
|
24
|
+
|
19
25
|
# YoY表格
|
20
26
|
target_season = fetched_data[0]['season']
|
21
|
-
total_table_YoY = self._slice_target_season(
|
27
|
+
total_table_YoY = self._slice_target_season(
|
28
|
+
self.data_df.T, target_season
|
29
|
+
)
|
22
30
|
|
23
31
|
return_dict.update(
|
24
32
|
{
|
@@ -27,4 +35,4 @@ class USBalanceSheetTransformer(BaseBalanceSheetTransformer):
|
|
27
35
|
}
|
28
36
|
)
|
29
37
|
|
30
|
-
return return_dict
|
38
|
+
return return_dict
|
@@ -35,7 +35,7 @@ class TWSEChipTransformer(BaseChipTransformer):
|
|
35
35
|
|
36
36
|
tech_dict = {data['date']: data for data in tech_data}
|
37
37
|
latest_tech = tech_data[-1]
|
38
|
-
if (
|
38
|
+
if (not fetched_data):
|
39
39
|
return_dict['latest_trading'].update(
|
40
40
|
self._process_latest({}, latest_tech, key)
|
41
41
|
)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
from .base import BaseMonthRevenueTransformer
|
2
|
+
from datetime import datetime
|
2
3
|
from neurostats_API.utils import StatsProcessor, YoY_Calculator
|
3
4
|
import pandas as pd
|
4
5
|
|
@@ -8,6 +9,8 @@ class TWSEMonthlyRevenueTransformer(BaseMonthRevenueTransformer):
|
|
8
9
|
|
9
10
|
self.data_df = None
|
10
11
|
def process_transform(self, fetched_data):
|
12
|
+
if (not fetched_data):
|
13
|
+
return self._get_empty_structure()
|
11
14
|
self.data_df = self._process_data(fetched_data)
|
12
15
|
target_month = fetched_data[0]['month']
|
13
16
|
|
@@ -65,11 +68,11 @@ class TWSEMonthlyRevenueTransformer(BaseMonthRevenueTransformer):
|
|
65
68
|
return return_dict
|
66
69
|
|
67
70
|
def _get_recent_growth(self, monthly_data, grand_total_dict, interval=12):
|
68
|
-
last_month_data = monthly_data[
|
71
|
+
last_month_data = monthly_data[-(interval + 1): ] + [{}] * max(0, interval - len(monthly_data) + 1)
|
69
72
|
|
70
73
|
MoMs = [
|
71
74
|
YoY_Calculator.cal_growth(this.get('revenue'), last.get('revenue'), delta = 1)
|
72
|
-
for
|
75
|
+
for last, this in zip(last_month_data[:interval], last_month_data[1 :interval + 1])
|
73
76
|
]
|
74
77
|
|
75
78
|
def safe_accum_yoy(data):
|
@@ -82,25 +85,27 @@ class TWSEMonthlyRevenueTransformer(BaseMonthRevenueTransformer):
|
|
82
85
|
return None
|
83
86
|
|
84
87
|
recent_month_data = {
|
85
|
-
"date": [f"{d.get('year', 0)}/{d.get('month', 0)}" for d in
|
86
|
-
"revenue": [d.get('revenue') for d in
|
88
|
+
"date": [f"{d.get('year', 0)}/{d.get('month', 0)}" for d in last_month_data[:interval]],
|
89
|
+
"revenue": [d.get('revenue') for d in last_month_data[:interval]],
|
87
90
|
"MoM": [f"{(m * 100):.2f}%" if isinstance(m, float) else None for m in MoMs],
|
88
|
-
"YoY": [d.get('revenue_increment_ratio') for d in
|
89
|
-
"total_YoY": [d.get('grand_total_increment_ratio') for d in
|
91
|
+
"YoY": [d.get('revenue_increment_ratio') for d in last_month_data[:interval]],
|
92
|
+
"total_YoY": [d.get('grand_total_increment_ratio') for d in last_month_data[:interval]],
|
90
93
|
# accum_YoY
|
91
94
|
# accum_YoY 為 Davis提出的定義
|
92
95
|
# 2024/6的累計YoY(accum_YoY) 為 2024累計到6月為止的總營收/2023年度總營收
|
93
|
-
"accum_YoY": [safe_accum_yoy(d) for d in
|
96
|
+
"accum_YoY": [safe_accum_yoy(d) for d in last_month_data[:interval]]
|
94
97
|
}
|
95
98
|
|
96
99
|
df = pd.DataFrame(recent_month_data)
|
97
100
|
return df[df['date'] != "0/0"].set_index('date').T
|
98
101
|
|
99
102
|
|
100
|
-
def _get_empty_structure(self
|
103
|
+
def _get_empty_structure(self):
|
101
104
|
"""
|
102
105
|
Exception 發生時回傳
|
103
106
|
"""
|
107
|
+
target_date = datetime.today()
|
108
|
+
target_year, target_month = target_date.year, target_date.month
|
104
109
|
recent_date = [f"{target_year}/{target_month}"]
|
105
110
|
for _ in range(11):
|
106
111
|
target_year, target_month = (target_year - 1, 12) if target_month == 1 else (target_year, target_month - 1)
|
@@ -35,7 +35,7 @@ class TEJFinanceStatementTransformer(BaseTEJTransformer):
|
|
35
35
|
use_cal=True,
|
36
36
|
indexes=None
|
37
37
|
):
|
38
|
-
if (
|
38
|
+
if (not fetched_data):
|
39
39
|
raise NoDataError(f"No data found in collection: TEJ_finance_statement, ticker={self.ticker}")
|
40
40
|
|
41
41
|
target_season = fetched_data[-1]['season']
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: neurostats_API
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.0rc6
|
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.0rc6
|
75
75
|
```
|
76
76
|
|
77
77
|
### 下載舊版
|
@@ -44,10 +44,12 @@ neurostats_API/async_mode/fetchers/finance_overview.py
|
|
44
44
|
neurostats_API/async_mode/fetchers/month_revenue.py
|
45
45
|
neurostats_API/async_mode/fetchers/profit_lose.py
|
46
46
|
neurostats_API/async_mode/fetchers/tech.py
|
47
|
-
neurostats_API/async_mode/fetchers/tej.py
|
48
47
|
neurostats_API/async_mode/fetchers/twse_institution.py
|
49
48
|
neurostats_API/async_mode/fetchers/twse_margin.py
|
50
49
|
neurostats_API/async_mode/fetchers/value.py
|
50
|
+
neurostats_API/async_mode/fetchers/tej/__init__.py
|
51
|
+
neurostats_API/async_mode/fetchers/tej/seasonal_data.py
|
52
|
+
neurostats_API/async_mode/fetchers/tej/tech.py
|
51
53
|
neurostats_API/config/company_list/ticker_index_industry_map.json
|
52
54
|
neurostats_API/config/company_list/tw.json
|
53
55
|
neurostats_API/config/company_list/us.json
|
@@ -103,7 +103,7 @@ async def test_tech():
|
|
103
103
|
|
104
104
|
test_fns = [
|
105
105
|
fetcher.get_daily, fetcher.get_weekly, fetcher.get_monthly,
|
106
|
-
fetcher.get_quarterly, fetcher.get_yearly
|
106
|
+
fetcher.get_quarterly, fetcher.get_yearly, fetcher.get_tej
|
107
107
|
]
|
108
108
|
|
109
109
|
for fetch_fn in test_fns:
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/db_extractors/base.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/factory/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/base.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/cash_flow.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/async_mode/fetchers/value.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/company_list/tw.json
RENAMED
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/company_list/us.json
RENAMED
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/tej_db/tej_db_index.yaml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/twse/balance_sheet.yaml
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/config/twse/profit_lose.yaml
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/balance_sheet.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/finance_overview.py
RENAMED
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/margin_trading.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/month_revenue.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/fetchers/tej_finance_report.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/cash_flow/base.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/cash_flow/twse.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/cash_flow/us.py
RENAMED
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_chip/base.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_chip/tej.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_tech/base.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/daily_tech/tech.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/profit_lose/base.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/profit_lose/twse.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/tej/__init__.py
RENAMED
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/value/__init__.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/value/base.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API/transformers/value/tej.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc4 → neurostats_api-1.0.0rc6}/neurostats_API.egg-info/dependency_links.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|