neurostats-API 1.0.0rc2__tar.gz → 1.0.0rc4__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.0rc2 → neurostats_api-1.0.0rc4}/PKG-INFO +2 -2
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/README.md +1 -1
- neurostats_api-1.0.0rc4/neurostats_API/__init__.py +29 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db_extractors/seasonal/base.py +1 -1
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/balance_sheet/twse.py +23 -18
- neurostats_api-1.0.0rc4/neurostats_API/transformers/base.py +158 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/cash_flow/twse.py +2 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/finance_overview/stats_overview.py +19 -4
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/profit_lose/twse.py +1 -1
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API.egg-info/PKG-INFO +2 -2
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/setup.py +1 -1
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/test/test_async_fetcher.py +2 -1
- neurostats_api-1.0.0rc2/neurostats_API/__init__.py +0 -15
- neurostats_api-1.0.0rc2/neurostats_API/transformers/base.py +0 -110
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/MANIFEST.in +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db/base.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db/tej.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db/twse.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db/us.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db_extractors/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db_extractors/base.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db_extractors/daily/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db_extractors/daily/base.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db_extractors/daily/tej_chip.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db_extractors/daily/tej_tech.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db_extractors/daily/twse_chip.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db_extractors/daily/value.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db_extractors/daily/yf.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db_extractors/month_revenue/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db_extractors/month_revenue/base.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db_extractors/month_revenue/twse.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db_extractors/seasonal/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db_extractors/seasonal/balance_sheet.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db_extractors/seasonal/cashflow.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db_extractors/seasonal/profit_lose.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/db_extractors/seasonal/tej.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/factory/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/factory/extractor_factory.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/factory/transformer_factory.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/fetchers/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/fetchers/balance_sheet.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/fetchers/base.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/fetchers/cash_flow.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/fetchers/finance_overview.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/fetchers/month_revenue.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/fetchers/profit_lose.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/fetchers/tech.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/fetchers/tej.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/fetchers/twse_institution.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/fetchers/twse_margin.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/fetchers/value.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/cli.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/config/company_list/ticker_index_industry_map.json +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/config/company_list/tw.json +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/config/company_list/us.json +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/config/company_list/us_TradingView_list.json +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/config/tej_db/tej_db_index.yaml +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/config/tej_db/tej_db_percent_index.yaml +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/config/tej_db/tej_db_skip_index.yaml +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/config/tej_db/tej_db_thousand_index.yaml +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/config/twse/balance_sheet.yaml +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/config/twse/cash_flow_percentage.yaml +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/config/twse/finance_overview_dict.yaml +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/config/twse/profit_lose.yaml +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/config/twse/seasonal_data_field_dict.txt +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/fetchers/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/fetchers/balance_sheet.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/fetchers/base.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/fetchers/cash_flow.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/fetchers/finance_overview.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/fetchers/institution.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/fetchers/margin_trading.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/fetchers/month_revenue.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/fetchers/profit_lose.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/fetchers/tech.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/fetchers/tej_finance_report.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/fetchers/value_invest.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/main.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/balance_sheet/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/balance_sheet/base.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/balance_sheet/us.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/cash_flow/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/cash_flow/base.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/cash_flow/us.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/daily_chip/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/daily_chip/base.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/daily_chip/tej.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/daily_chip/twse_chip.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/daily_chip/utils/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/daily_chip/utils/institution.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/daily_chip/utils/margin_trading.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/daily_chip/utils/security_lending.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/daily_tech/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/daily_tech/base.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/daily_tech/tech.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/daily_tech/utils/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/daily_tech/utils/processor.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/finance_overview/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/finance_overview/agent_overview.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/finance_overview/base.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/month_revenue/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/month_revenue/base.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/month_revenue/twse.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/profit_lose/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/profit_lose/base.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/profit_lose/us.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/tej/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/tej/base.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/tej/finance_statement.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/value/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/value/base.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/value/tej.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/value/twse.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/utils/__init__.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/utils/calculate_value.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/utils/data_process.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/utils/datetime.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/utils/db_client.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/utils/exception.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/utils/logger.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API.egg-info/SOURCES.txt +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API.egg-info/dependency_links.txt +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API.egg-info/requires.txt +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API.egg-info/top_level.txt +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/setup.cfg +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/test/test_fetchers.py +0 -0
- {neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/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.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
|
### 下載舊版
|
@@ -0,0 +1,29 @@
|
|
1
|
+
__version__='1.0.0rc4'
|
2
|
+
|
3
|
+
from .fetchers import (
|
4
|
+
AgentFinanceOverviewFetcher,
|
5
|
+
BalanceSheetFetcher,
|
6
|
+
CashFlowFetcher,
|
7
|
+
FinanceOverviewFetcher,
|
8
|
+
FinanceReportFetcher,
|
9
|
+
InstitutionFetcher,
|
10
|
+
MarginTradingFetcher,
|
11
|
+
MonthRevenueFetcher,
|
12
|
+
TechFetcher,
|
13
|
+
TEJStockPriceFetcher,
|
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
|
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
|
-
|
@@ -0,0 +1,158 @@
|
|
1
|
+
import abc
|
2
|
+
from neurostats_API.utils import StatsProcessor, YoY_Calculator
|
3
|
+
import pandas as pd
|
4
|
+
|
5
|
+
|
6
|
+
class BaseTransformer(abc.ABC):
|
7
|
+
"""
|
8
|
+
Transformer用途: 轉換資料為fetcher可使用的格式
|
9
|
+
"""
|
10
|
+
|
11
|
+
def __init__(self, ticker, company_name, zone):
|
12
|
+
self.ticker = ticker
|
13
|
+
self.company_name = company_name
|
14
|
+
|
15
|
+
self.zone = zone
|
16
|
+
self.return_keys = []
|
17
|
+
|
18
|
+
@abc.abstractmethod
|
19
|
+
def process_transform(self):
|
20
|
+
pass
|
21
|
+
|
22
|
+
@classmethod
|
23
|
+
def flatten_dict(cls, value_dict, target_keys):
|
24
|
+
indexes = value_dict.keys()
|
25
|
+
new_dict = {}
|
26
|
+
|
27
|
+
for key in indexes:
|
28
|
+
new_dict.update(
|
29
|
+
{
|
30
|
+
f"{key}_{sub_key}": value_dict[key].get(sub_key, None)
|
31
|
+
for sub_key in target_keys
|
32
|
+
}
|
33
|
+
)
|
34
|
+
|
35
|
+
return new_dict
|
36
|
+
|
37
|
+
@staticmethod
|
38
|
+
def _process_unit(data_df, postfix):
|
39
|
+
|
40
|
+
lambda_map = {
|
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
|
57
|
+
}
|
58
|
+
|
59
|
+
process_fn = lambda_map.get(postfix)
|
60
|
+
postfix_cols = data_df.columns.str.endswith(postfix)
|
61
|
+
postfix_cols = data_df.loc[:, postfix_cols].columns
|
62
|
+
|
63
|
+
if (postfix == "_value"):
|
64
|
+
postfix_cols = [
|
65
|
+
col for col in postfix_cols
|
66
|
+
if not ("eps" in col or "每股盈餘" in col)
|
67
|
+
]
|
68
|
+
|
69
|
+
if (postfix == '_growth'):
|
70
|
+
data_df[postfix_cols] = data_df[postfix_cols].map(
|
71
|
+
lambda x: x * 100.0 if isinstance(x, float) else x
|
72
|
+
)
|
73
|
+
|
74
|
+
data_df[postfix_cols] = (data_df[postfix_cols].map(process_fn))
|
75
|
+
|
76
|
+
return data_df
|
77
|
+
|
78
|
+
def _apply_process_unit_pipeline(
|
79
|
+
self, data_df, postfix_list=["_value", "percentage"]
|
80
|
+
):
|
81
|
+
for postfix in postfix_list:
|
82
|
+
data_df = self._process_unit(data_df, postfix)
|
83
|
+
return data_df
|
84
|
+
|
85
|
+
@staticmethod
|
86
|
+
def _slice_target_season(stats_df, target_season):
|
87
|
+
target_season_columns = stats_df.columns.str.endswith(
|
88
|
+
f"Q{target_season}"
|
89
|
+
)
|
90
|
+
stats_df = stats_df.loc[:, target_season_columns]
|
91
|
+
|
92
|
+
return stats_df
|
93
|
+
|
94
|
+
def _get_empty_structure(self):
|
95
|
+
return_dict = {
|
96
|
+
"warning": "No data fetched",
|
97
|
+
"ticker": self.ticker,
|
98
|
+
"company_name": self.company_name
|
99
|
+
}
|
100
|
+
|
101
|
+
return_dict.update(
|
102
|
+
{
|
103
|
+
key: pd.DataFrame(columns=pd.Index([], name='date'))
|
104
|
+
for key in self.return_keys
|
105
|
+
}
|
106
|
+
)
|
107
|
+
return return_dict
|
108
|
+
|
109
|
+
def _process_value(self, value):
|
110
|
+
if isinstance(value, str) and "%" in value:
|
111
|
+
value = value.replace("%", "")
|
112
|
+
try:
|
113
|
+
return float(value)
|
114
|
+
except (ValueError, TypeError):
|
115
|
+
return None
|
116
|
+
|
117
|
+
def _calculate_growth(self, this_value, last_value, delta):
|
118
|
+
try:
|
119
|
+
return YoY_Calculator.cal_growth(
|
120
|
+
this_value, last_value, delta
|
121
|
+
) * 100
|
122
|
+
except Exception:
|
123
|
+
return None
|
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
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/cash_flow/twse.py
RENAMED
@@ -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:
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/profit_lose/twse.py
RENAMED
@@ -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
|
### 下載舊版
|
@@ -7,7 +7,7 @@ from pymongo import AsyncMongoClient
|
|
7
7
|
|
8
8
|
|
9
9
|
mongo_uri = "mongodb://neurowatt:neurodb123@db.neurowatt.ai:27017/neurowatt"
|
10
|
-
tickers = ["AAPL"]
|
10
|
+
tickers = ["AAPL", "2330", "1260", "-1234"]
|
11
11
|
|
12
12
|
client = AsyncMongoClient(mongo_uri)
|
13
13
|
|
@@ -229,6 +229,7 @@ def print_dict_summary(data: dict, indent: int = 1):
|
|
229
229
|
prefix = " " * indent
|
230
230
|
for key, value in data.items():
|
231
231
|
if isinstance(value, pd.DataFrame):
|
232
|
+
assert value.shape!= (0, 0)
|
232
233
|
print(f"{prefix} \"{key}\": DataFrame shape = {value.shape}")
|
233
234
|
elif isinstance(value, pd.Series):
|
234
235
|
print(f"{prefix} \"{key}\": Series shape = {value.shape}")
|
@@ -1,15 +0,0 @@
|
|
1
|
-
__version__='1.0.0rc2'
|
2
|
-
|
3
|
-
from .fetchers import (
|
4
|
-
AgentFinanceOverviewFetcher,
|
5
|
-
BalanceSheetFetcher,
|
6
|
-
CashFlowFetcher,
|
7
|
-
FinanceOverviewFetcher,
|
8
|
-
FinanceReportFetcher,
|
9
|
-
InstitutionFetcher,
|
10
|
-
MarginTradingFetcher,
|
11
|
-
MonthRevenueFetcher,
|
12
|
-
TechFetcher,
|
13
|
-
TEJStockPriceFetcher,
|
14
|
-
ProfitLoseFetcher,
|
15
|
-
)
|
@@ -1,110 +0,0 @@
|
|
1
|
-
import abc
|
2
|
-
from neurostats_API.utils import StatsProcessor, YoY_Calculator
|
3
|
-
import pandas as pd
|
4
|
-
|
5
|
-
class BaseTransformer(abc.ABC):
|
6
|
-
"""
|
7
|
-
Transformer用途: 轉換資料為fetcher可使用的格式
|
8
|
-
"""
|
9
|
-
def __init__(self, ticker, company_name, zone):
|
10
|
-
self.ticker = ticker
|
11
|
-
self.company_name = company_name
|
12
|
-
|
13
|
-
self.zone = zone
|
14
|
-
self.return_keys = []
|
15
|
-
|
16
|
-
|
17
|
-
@abc.abstractmethod
|
18
|
-
def process_transform(self):
|
19
|
-
pass
|
20
|
-
|
21
|
-
@classmethod
|
22
|
-
def flatten_dict(cls, value_dict, target_keys):
|
23
|
-
indexes = value_dict.keys()
|
24
|
-
new_dict = {}
|
25
|
-
|
26
|
-
|
27
|
-
for key in indexes:
|
28
|
-
new_dict.update(
|
29
|
-
{
|
30
|
-
f"{key}_{sub_key}": value_dict[key].get(sub_key, None)
|
31
|
-
for sub_key in target_keys
|
32
|
-
}
|
33
|
-
)
|
34
|
-
return new_dict
|
35
|
-
|
36
|
-
@staticmethod
|
37
|
-
def _process_unit(data_df, postfix):
|
38
|
-
|
39
|
-
lambda_map = {
|
40
|
-
"_value": lambda x: StatsProcessor.cal_non_percentage(x, postfix="千元"),
|
41
|
-
"_percentage": lambda x : StatsProcessor.cal_non_percentage(x, to_str=True, postfix="%"),
|
42
|
-
'_growth': lambda x : StatsProcessor.cal_non_percentage(x, to_str=True, postfix="%"),
|
43
|
-
"_YoY_1": StatsProcessor.cal_percentage,
|
44
|
-
"_YoY_3": StatsProcessor.cal_percentage,
|
45
|
-
"_YoY_5": StatsProcessor.cal_percentage,
|
46
|
-
"_YoY_10": StatsProcessor.cal_percentage
|
47
|
-
}
|
48
|
-
|
49
|
-
process_fn = lambda_map.get(postfix)
|
50
|
-
postfix_cols = data_df.columns.str.endswith(postfix)
|
51
|
-
postfix_cols = data_df.loc[:, postfix_cols].columns
|
52
|
-
|
53
|
-
if (postfix == "_value"):
|
54
|
-
postfix_cols = [col for col in postfix_cols if not ("eps" in col or "每股盈餘" in col)]
|
55
|
-
|
56
|
-
if (postfix == '_growth'):
|
57
|
-
data_df[postfix_cols] =data_df[postfix_cols].map(
|
58
|
-
lambda x: x * 100.0 if isinstance(x, float) else x
|
59
|
-
)
|
60
|
-
|
61
|
-
data_df[postfix_cols] = (
|
62
|
-
data_df[postfix_cols].map(
|
63
|
-
process_fn
|
64
|
-
)
|
65
|
-
)
|
66
|
-
|
67
|
-
return data_df
|
68
|
-
|
69
|
-
def _apply_process_unit_pipeline(self, data_df, postfix_list = ["_value", "percentage"]):
|
70
|
-
for postfix in postfix_list:
|
71
|
-
data_df = self._process_unit(data_df, postfix)
|
72
|
-
return data_df
|
73
|
-
|
74
|
-
@staticmethod
|
75
|
-
def _slice_target_season(stats_df, target_season):
|
76
|
-
target_season_columns = stats_df.columns.str.endswith(f"Q{target_season}")
|
77
|
-
stats_df = stats_df.loc[:, target_season_columns]
|
78
|
-
|
79
|
-
return stats_df
|
80
|
-
|
81
|
-
def _get_empty_structure(self):
|
82
|
-
return_dict = {
|
83
|
-
"warning": "No data fetched",
|
84
|
-
"ticker": self.ticker,
|
85
|
-
"company_name": self.company_name
|
86
|
-
}
|
87
|
-
|
88
|
-
return_dict.update(
|
89
|
-
{
|
90
|
-
key: pd.DataFrame(columns= pd.Index([], name = 'date')) for key in self.return_keys
|
91
|
-
}
|
92
|
-
)
|
93
|
-
return return_dict
|
94
|
-
|
95
|
-
def _process_value(self, value):
|
96
|
-
if isinstance(value, str) and "%" in value:
|
97
|
-
value = value.replace("%", "")
|
98
|
-
try:
|
99
|
-
return float(value)
|
100
|
-
except (ValueError, TypeError):
|
101
|
-
return None
|
102
|
-
|
103
|
-
def _calculate_growth(self, this_value, last_value, delta):
|
104
|
-
try:
|
105
|
-
return YoY_Calculator.cal_growth(
|
106
|
-
this_value, last_value, delta
|
107
|
-
) * 100
|
108
|
-
except Exception:
|
109
|
-
return None
|
110
|
-
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/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.0rc2 → neurostats_api-1.0.0rc4}/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
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/factory/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/fetchers/__init__.py
RENAMED
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/fetchers/base.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/fetchers/cash_flow.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/fetchers/tech.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/fetchers/tej.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/async_mode/fetchers/value.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/config/company_list/tw.json
RENAMED
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/config/company_list/us.json
RENAMED
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/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.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/config/twse/balance_sheet.yaml
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/config/twse/profit_lose.yaml
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/fetchers/balance_sheet.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/fetchers/finance_overview.py
RENAMED
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/fetchers/margin_trading.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/fetchers/month_revenue.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/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
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/balance_sheet/us.py
RENAMED
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/cash_flow/base.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/cash_flow/us.py
RENAMED
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/daily_chip/base.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/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
|
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/daily_tech/base.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/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.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/profit_lose/base.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/profit_lose/us.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/tej/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/value/__init__.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/value/base.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/value/tej.py
RENAMED
File without changes
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/neurostats_API/transformers/value/twse.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
|
{neurostats_api-1.0.0rc2 → neurostats_api-1.0.0rc4}/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
|