neurostats-API 1.0.2rc3__tar.gz → 1.0.2rc4__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.2rc3 → neurostats_api-1.0.2rc4}/PKG-INFO +2 -2
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/README.md +1 -1
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/__init__.py +3 -2
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/__init__.py +2 -1
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/__init__.py +2 -1
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/daily/__init__.py +1 -1
- neurostats_api-1.0.2rc4/neurostats_API/async_mode/db_extractors/daily/tej_tech.py +86 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/__init__.py +1 -1
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/tech.py +30 -3
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/__init__.py +2 -1
- neurostats_api-1.0.2rc4/neurostats_API/transformers/daily_tech/__init__.py +1 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_tech/tech.py +34 -3
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API.egg-info/PKG-INFO +2 -2
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API.egg-info/SOURCES.txt +0 -1
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/setup.py +1 -1
- neurostats_api-1.0.2rc3/neurostats_API/async_mode/db_extractors/daily/tej_tech.py +0 -12
- neurostats_api-1.0.2rc3/neurostats_API/transformers/daily_tech/__init__.py +0 -1
- neurostats_api-1.0.2rc3/neurostats_API/transformers/tej/chip.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/MANIFEST.in +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db/__init__.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db/base.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db/tej.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db/twse.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db/us.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/base.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/daily/base.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/daily/tej_chip.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/daily/twse_chip.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/daily/us_chip.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/daily/value.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/daily/yf.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/month_revenue/__init__.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/month_revenue/base.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/month_revenue/twse.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/seasonal/__init__.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/seasonal/balance_sheet.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/seasonal/base.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/seasonal/cashflow.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/seasonal/profit_lose.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db_extractors/seasonal/tej.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/factory/__init__.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/factory/extractor_factory.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/factory/transformer_factory.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/balance_sheet.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/base.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/cash_flow.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/finance_overview.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/month_revenue.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/profit_lose.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/tej/__init__.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/tej/seasonal_data.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/tej/tech.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/twse_institution.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/twse_margin.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/us_chip.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/value.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/cli.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/company_list/ticker_index_industry_map.json +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/company_list/ticker_to_cik.json +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/company_list/tw.json +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/company_list/us.json +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/company_list/us_TradingView_list.json +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/tej_db/tej_db_index.yaml +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/tej_db/tej_db_percent_index.yaml +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/tej_db/tej_db_skip_index.yaml +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/tej_db/tej_db_thousand_index.yaml +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/twse/balance_sheet.yaml +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/twse/cash_flow_percentage.yaml +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/twse/finance_overview_dict.yaml +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/twse/profit_lose.yaml +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/twse/seasonal_data_field_dict.txt +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/__init__.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/balance_sheet.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/base.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/cash_flow.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/finance_overview.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/institution.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/margin_trading.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/month_revenue.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/profit_lose.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/tech.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/tej_finance_report.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/value_invest.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/main.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/balance_sheet/__init__.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/balance_sheet/base.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/balance_sheet/twse.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/balance_sheet/us.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/base.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/cash_flow/__init__.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/cash_flow/base.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/cash_flow/twse.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/cash_flow/us.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/__init__.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/base.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/tej.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/twse_chip.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/us.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/utils/__init__.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/utils/institution.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/utils/margin_trading.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/utils/security_lending.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_tech/base.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_tech/utils/__init__.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_tech/utils/processor.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/finance_overview/__init__.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/finance_overview/agent_overview.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/finance_overview/base.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/finance_overview/stats_overview.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/month_revenue/__init__.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/month_revenue/base.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/month_revenue/twse.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/profit_lose/__init__.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/profit_lose/base.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/profit_lose/twse.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/profit_lose/us.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/tej/__init__.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/tej/base.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/tej/finance_statement.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/value/__init__.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/value/base.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/value/tej.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/value/twse.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/utils/__init__.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/utils/calculate_value.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/utils/data_process.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/utils/datetime.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/utils/db_client.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/utils/exception.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/utils/logger.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API.egg-info/dependency_links.txt +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API.egg-info/requires.txt +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API.egg-info/top_level.txt +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/setup.cfg +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/test/test_async_fetcher.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/test/test_fetchers.py +0 -0
- {neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/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.2rc4
|
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.2rc4
|
75
75
|
```
|
76
76
|
|
77
77
|
### 下載舊版
|
@@ -1,4 +1,4 @@
|
|
1
|
-
__version__='1.0.
|
1
|
+
__version__='1.0.2rc4'
|
2
2
|
|
3
3
|
from .fetchers import (
|
4
4
|
AgentFinanceOverviewFetcher,
|
@@ -26,5 +26,6 @@ from .async_mode import (
|
|
26
26
|
AsyncTWSEInstitutionFetcher,
|
27
27
|
AsyncTWSEMarginFetcher,
|
28
28
|
AsyncTWSEStatsValueFetcher,
|
29
|
-
AsyncUSCelebrityFetcher
|
29
|
+
AsyncUSCelebrityFetcher,
|
30
|
+
AsyncBatchTechFetcher
|
30
31
|
)
|
@@ -0,0 +1,86 @@
|
|
1
|
+
from .base import BaseDailyTechDBExtractor
|
2
|
+
from pymongo import AsyncMongoClient, ASCENDING, DESCENDING
|
3
|
+
|
4
|
+
class AsyncTEJDailyTechDBExtractor(BaseDailyTechDBExtractor):
|
5
|
+
|
6
|
+
def __init__(self, ticker, client):
|
7
|
+
super().__init__(ticker, client)
|
8
|
+
|
9
|
+
def _get_collection_name(self):
|
10
|
+
self.collection_name_map = {"tw": "TEJ_share_price"}
|
11
|
+
|
12
|
+
return self.collection_name_map.get(self.zone, None)
|
13
|
+
|
14
|
+
class AsyncBatchTechDBExtractor(BaseDailyTechDBExtractor):
|
15
|
+
|
16
|
+
def __init__(self, ticker:list, client: AsyncMongoClient, zone:str):
|
17
|
+
self.tickers = ticker
|
18
|
+
self.zone = zone
|
19
|
+
self.client = client
|
20
|
+
|
21
|
+
self.collection_map = {
|
22
|
+
'tw':{
|
23
|
+
'db': "company_test",
|
24
|
+
'collection': "twse_daily_share_price"
|
25
|
+
},
|
26
|
+
'us':{
|
27
|
+
'db': "company_us",
|
28
|
+
'collection': "us_technical"
|
29
|
+
},
|
30
|
+
}
|
31
|
+
|
32
|
+
db_name = self.collection_map.get(self.zone).get('db')
|
33
|
+
collection_name = self.collection_map.get(self.zone).get('collection')
|
34
|
+
self.collection = self.client.get_database(db_name).get_collection(collection_name)
|
35
|
+
|
36
|
+
def _prepare_query(
|
37
|
+
self, start_date=None, end_date=None, get_latest=False
|
38
|
+
):
|
39
|
+
query = {"ticker":{"$in": self.tickers}}
|
40
|
+
|
41
|
+
if start_date:
|
42
|
+
start_date = self._transform_date(start_date)
|
43
|
+
if end_date:
|
44
|
+
end_date = self._transform_date(end_date)
|
45
|
+
|
46
|
+
if start_date or end_date:
|
47
|
+
date_range = {}
|
48
|
+
if start_date:
|
49
|
+
date_range["$gte"] = start_date
|
50
|
+
if end_date:
|
51
|
+
date_range["$lte"] = end_date
|
52
|
+
query["date"] = date_range
|
53
|
+
|
54
|
+
projection = {
|
55
|
+
"_id": 0,
|
56
|
+
"ticker": 1,
|
57
|
+
"date": 1,
|
58
|
+
"open": 1,
|
59
|
+
"high": 1,
|
60
|
+
"low": 1,
|
61
|
+
"close": 1,
|
62
|
+
"volume": 1
|
63
|
+
}
|
64
|
+
|
65
|
+
if (get_latest):
|
66
|
+
sort = [("date", DESCENDING)]
|
67
|
+
else:
|
68
|
+
sort = [("date", ASCENDING)]
|
69
|
+
|
70
|
+
return query, projection, sort
|
71
|
+
|
72
|
+
async def query_data(
|
73
|
+
self, start_date=None, end_date=None, get_latest=False
|
74
|
+
):
|
75
|
+
query, projection, sort = self._prepare_query(
|
76
|
+
start_date=start_date, end_date=end_date, get_latest=get_latest
|
77
|
+
)
|
78
|
+
|
79
|
+
if (get_latest):
|
80
|
+
cursor = self.collection.find(query, projection).sort(sort).limit(1)
|
81
|
+
else:
|
82
|
+
cursor = self.collection.find(query, projection).sort(sort)
|
83
|
+
|
84
|
+
fetched_data = [data async for data in cursor]
|
85
|
+
|
86
|
+
return fetched_data
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/__init__.py
RENAMED
@@ -1,7 +1,7 @@
|
|
1
1
|
from .balance_sheet import AsyncBalanceSheetFetcher
|
2
2
|
from .cash_flow import AsyncCashFlowFetcher
|
3
3
|
from .finance_overview import AsyncFinanceOverviewFetcher, AsyncAgentOverviewFetcher
|
4
|
-
from .tech import AsyncTechFetcher
|
4
|
+
from .tech import AsyncTechFetcher, AsyncBatchTechFetcher
|
5
5
|
from .twse_institution import AsyncTWSEInstitutionFetcher
|
6
6
|
from .twse_margin import AsyncTWSEMarginFetcher
|
7
7
|
from .month_revenue import AsyncMonthlyRevenueFetcher
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/tech.py
RENAMED
@@ -1,16 +1,17 @@
|
|
1
1
|
from .base import AsyncBaseFetcher
|
2
2
|
from datetime import datetime
|
3
3
|
from ..db_extractors import (
|
4
|
-
AsyncYFDailyTechDBExtractor, AsyncTEJDailyTechDBExtractor
|
4
|
+
AsyncYFDailyTechDBExtractor, AsyncTEJDailyTechDBExtractor,
|
5
|
+
AsyncBatchTechDBExtractor
|
5
6
|
)
|
6
7
|
from neurostats_API.async_mode.factory import get_extractor
|
7
|
-
from neurostats_API.transformers import DailyTechTransformer
|
8
|
+
from neurostats_API.transformers import DailyTechTransformer, BatchTechTransformer
|
8
9
|
from neurostats_API.utils import NotSupportedError
|
9
10
|
import pandas as pd
|
10
11
|
from pytz import timezone
|
11
12
|
from neurostats_API.utils import StatsDateTime
|
12
13
|
import yfinance as yf
|
13
|
-
|
14
|
+
from pymongo import AsyncMongoClient
|
14
15
|
|
15
16
|
class AsyncTechFetcher(AsyncBaseFetcher):
|
16
17
|
|
@@ -208,3 +209,29 @@ class AsyncTechFetcher(AsyncBaseFetcher):
|
|
208
209
|
df = pd.DataFrame(columns=self.required_cols)
|
209
210
|
|
210
211
|
return df
|
212
|
+
|
213
|
+
class AsyncBatchTechFetcher(AsyncBaseFetcher):
|
214
|
+
def __init__(
|
215
|
+
self, client:AsyncMongoClient, tickers:list,
|
216
|
+
zone:str, strftime: str = "%Y-%m-%d"
|
217
|
+
):
|
218
|
+
super().__init__()
|
219
|
+
self.tickers = tickers
|
220
|
+
self.zone = zone
|
221
|
+
self.extractor = AsyncBatchTechDBExtractor(
|
222
|
+
ticker=self.tickers, client=client, zone=zone
|
223
|
+
)
|
224
|
+
self.transformer = BatchTechTransformer(strftime=strftime)
|
225
|
+
|
226
|
+
async def query_data(
|
227
|
+
self, start_date=None, end_date=None, get_latest=False,
|
228
|
+
):
|
229
|
+
fetched_data = await self.extractor.query_data(
|
230
|
+
start_date, end_date, get_latest,
|
231
|
+
)
|
232
|
+
|
233
|
+
transformed_data = self.transformer.process_transform(
|
234
|
+
fetched_datas = list(fetched_data),
|
235
|
+
)
|
236
|
+
|
237
|
+
return transformed_data
|
@@ -0,0 +1 @@
|
|
1
|
+
from .tech import DailyTechTransformer, BatchTechTransformer
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_tech/tech.py
RENAMED
@@ -1,8 +1,11 @@
|
|
1
1
|
from .base import BaseDailyTransformer
|
2
|
-
import inspect
|
3
|
-
import pandas as pd
|
4
2
|
from .utils import TechProcessor
|
5
3
|
|
4
|
+
import inspect
|
5
|
+
import pandas as pd
|
6
|
+
from datetime import datetime
|
7
|
+
from typing import List, Optional, Union
|
8
|
+
from collections import defaultdict
|
6
9
|
|
7
10
|
class DailyTechTransformer(BaseDailyTransformer):
|
8
11
|
def __init__(self, ticker, company_name, zone):
|
@@ -81,4 +84,32 @@ class DailyTechTransformer(BaseDailyTransformer):
|
|
81
84
|
"""
|
82
85
|
回傳年線資料
|
83
86
|
"""
|
84
|
-
return self._get_resampled("YE")
|
87
|
+
return self._get_resampled("YE")
|
88
|
+
|
89
|
+
class BatchTechTransformer(BaseDailyTransformer):
|
90
|
+
def __init__(self, strftime:str="%Y-%m-%d"):
|
91
|
+
self.date_format = strftime
|
92
|
+
|
93
|
+
def process_transform(
|
94
|
+
self,
|
95
|
+
fetched_datas: List[dict],
|
96
|
+
) -> dict[str, dict[Union[str, datetime], float]]:
|
97
|
+
|
98
|
+
result = defaultdict(lambda: defaultdict(dict))
|
99
|
+
|
100
|
+
for record in fetched_datas:
|
101
|
+
ticker = record.get("ticker")
|
102
|
+
date = record.get("date")
|
103
|
+
if isinstance(date, str):
|
104
|
+
date = datetime.fromisoformat(date)
|
105
|
+
date_str = date.strftime(self.date_format)
|
106
|
+
|
107
|
+
result[ticker][date_str] = {
|
108
|
+
"open": record.get("open"),
|
109
|
+
"high": record.get("high"),
|
110
|
+
"low": record.get("low"),
|
111
|
+
"close": record.get("close"),
|
112
|
+
"volume": record.get("volume"),
|
113
|
+
}
|
114
|
+
|
115
|
+
return dict(result)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: neurostats_API
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.2rc4
|
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.2rc4
|
75
75
|
```
|
76
76
|
|
77
77
|
### 下載舊版
|
@@ -115,7 +115,6 @@ neurostats_API/transformers/profit_lose/twse.py
|
|
115
115
|
neurostats_API/transformers/profit_lose/us.py
|
116
116
|
neurostats_API/transformers/tej/__init__.py
|
117
117
|
neurostats_API/transformers/tej/base.py
|
118
|
-
neurostats_API/transformers/tej/chip.py
|
119
118
|
neurostats_API/transformers/tej/finance_statement.py
|
120
119
|
neurostats_API/transformers/value/__init__.py
|
121
120
|
neurostats_API/transformers/value/base.py
|
@@ -1,12 +0,0 @@
|
|
1
|
-
from .base import BaseDailyTechDBExtractor
|
2
|
-
|
3
|
-
|
4
|
-
class AsyncTEJDailyTechDBExtractor(BaseDailyTechDBExtractor):
|
5
|
-
|
6
|
-
def __init__(self, ticker, client):
|
7
|
-
super().__init__(ticker, client)
|
8
|
-
|
9
|
-
def _get_collection_name(self):
|
10
|
-
self.collection_name_map = {"tw": "TEJ_share_price"}
|
11
|
-
|
12
|
-
return self.collection_name_map.get(self.zone, None)
|
@@ -1 +0,0 @@
|
|
1
|
-
from .tech import DailyTechTransformer
|
File without changes
|
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/db/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/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.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/factory/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/base.py
RENAMED
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/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.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/tej/tech.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/us_chip.py
RENAMED
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/async_mode/fetchers/value.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/company_list/tw.json
RENAMED
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/company_list/us.json
RENAMED
File without changes
|
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/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.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/twse/balance_sheet.yaml
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/config/twse/profit_lose.yaml
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/balance_sheet.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/finance_overview.py
RENAMED
File without changes
|
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/margin_trading.py
RENAMED
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/fetchers/month_revenue.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/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.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/balance_sheet/us.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/cash_flow/base.py
RENAMED
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/cash_flow/twse.py
RENAMED
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/cash_flow/us.py
RENAMED
File without changes
|
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/base.py
RENAMED
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/tej.py
RENAMED
File without changes
|
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_chip/us.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/daily_tech/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
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/profit_lose/base.py
RENAMED
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/profit_lose/twse.py
RENAMED
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/profit_lose/us.py
RENAMED
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/tej/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/value/__init__.py
RENAMED
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/value/base.py
RENAMED
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/neurostats_API/transformers/value/tej.py
RENAMED
File without changes
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/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
|
{neurostats_api-1.0.2rc3 → neurostats_api-1.0.2rc4}/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
|
File without changes
|