neurostats-API 1.0.1rc1__py3-none-any.whl → 1.0.2rc2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- __version__='1.0.0'
1
+ __version__='1.0.2rc2'
2
2
 
3
3
  from .fetchers import (
4
4
  AgentFinanceOverviewFetcher,
@@ -25,5 +25,6 @@ from .async_mode import (
25
25
  AsyncTEJSeasonalFetcher,
26
26
  AsyncTWSEInstitutionFetcher,
27
27
  AsyncTWSEMarginFetcher,
28
- AsyncTWSEStatsValueFetcher
28
+ AsyncTWSEStatsValueFetcher,
29
+ AsyncUSCelebrityFetcher
29
30
  )
@@ -9,5 +9,6 @@ from .fetchers import (
9
9
  AsyncTEJSeasonalFetcher,
10
10
  AsyncTWSEInstitutionFetcher,
11
11
  AsyncTWSEMarginFetcher,
12
- AsyncTWSEStatsValueFetcher
12
+ AsyncTWSEStatsValueFetcher,
13
+ AsyncUSCelebrityFetcher
13
14
  )
@@ -4,8 +4,8 @@ from .daily import (
4
4
  AsyncDailyValueDBExtractor,
5
5
  AsyncTEJDailyValueDBExtractor,
6
6
  AsyncTWSEChipDBExtractor,
7
- AsyncUS_F13DBExtractor
8
-
7
+ AsyncUS_F13DBExtractor,
8
+ AsyncUS_CelebrityDBExtractor
9
9
  )
10
10
 
11
11
  from .month_revenue import (
@@ -18,6 +18,19 @@ class BaseDBExtractor(abc.ABC):
18
18
  self.db_client = self._set_db_connection()
19
19
 
20
20
  def _set_company_name(self, ticker):
21
+
22
+ index_dict = {
23
+ "^TWII": ("台灣加權指數", 'tw'),
24
+ "^GSPC": ("S&P 500", 'us'),
25
+ "^DJI": ("Dow Jones Indices", 'us'),
26
+ "^IXIC": ("NASDAQ Composite", 'us')
27
+ }
28
+
29
+ for key, values in index_dict.items():
30
+ if (key == ticker):
31
+ company_name, zone = values
32
+ return company_name, zone
33
+
21
34
  company_lists = [
22
35
  (self.tw_company_list, 'tw'),
23
36
  (self.us_company_list, 'us')
@@ -28,6 +41,7 @@ class BaseDBExtractor(abc.ABC):
28
41
  if (company_name):
29
42
  return company_name, zone
30
43
  # 沒找到公司名稱
44
+
31
45
  raise NoCompanyError(f"Ticker-{ticker} not found in any company lists")
32
46
 
33
47
  def _set_db_connection(self):
@@ -38,7 +52,6 @@ class BaseDBExtractor(abc.ABC):
38
52
  db_client = db_map.get(self.zone, TWSEDBClient)
39
53
  return db_client(self.client)
40
54
 
41
-
42
55
 
43
56
  async def query_data(self):
44
57
  """
@@ -4,5 +4,5 @@ from .value import (
4
4
  AsyncDailyValueDBExtractor,
5
5
  AsyncTEJDailyValueDBExtractor
6
6
  )
7
- from .us_chip import AsyncUS_F13DBExtractor
7
+ from .us_chip import AsyncUS_F13DBExtractor, AsyncUS_CelebrityDBExtractor
8
8
  from .yf import AsyncYFDailyTechDBExtractor
@@ -4,7 +4,7 @@ from .base import BaseDailyTechDBExtractor
4
4
  from neurostats_API.utils import (
5
5
  NotSupportedError, StatsProcessor
6
6
  )
7
-
7
+ from pymongo import AsyncMongoClient
8
8
 
9
9
  class AsyncUS_F13DBExtractor(BaseDailyTechDBExtractor):
10
10
 
@@ -64,3 +64,75 @@ class AsyncUS_F13DBExtractor(BaseDailyTechDBExtractor):
64
64
  result = await super().query_data(start_date, end_date, get_latest)
65
65
 
66
66
  return result
67
+
68
+ class AsyncUS_CelebrityDBExtractor(AsyncUS_F13DBExtractor):
69
+ """
70
+ 用於查詢美國名人持股的專用extractor
71
+ """
72
+ def __init__(self, client:AsyncMongoClient, manager_name=None):
73
+ """
74
+ manager_name: 名人名稱
75
+ """
76
+ self.client = client
77
+ self.zone = "us"
78
+ self.manager = manager_name
79
+ self.collection_name_map = {"us": "us_F13"}
80
+ self.collection = self.client.get_database("company_us").get_collection("us_F13")
81
+
82
+
83
+ def _get_collection_name(self):
84
+
85
+ return self.collection_name_map.get(self.zone, None)
86
+
87
+ def _prepare_query(
88
+ self, start_date=None, end_date=None, get_latest=False,
89
+ value_throshold=None, title=None
90
+ ):
91
+ query = {"manager": self.manager}
92
+
93
+ if start_date:
94
+ start_date = self._transform_date(start_date)
95
+ if end_date:
96
+ end_date = self._transform_date(end_date)
97
+
98
+ if start_date or end_date:
99
+ date_range = {}
100
+ if start_date:
101
+ date_range["$gte"] = start_date
102
+ if end_date:
103
+ date_range["$lte"] = end_date
104
+ query["reportDate"] = date_range
105
+
106
+ if value_throshold:
107
+ query["value"] = {"$gt": value_throshold}
108
+
109
+ if title:
110
+ query["titleOfClass"] = title
111
+
112
+ projection = {"_id": 0}
113
+
114
+ if (get_latest):
115
+ sort = [("reportDate", DESCENDING)]
116
+ else:
117
+ sort = [("reportDate", ASCENDING)]
118
+
119
+ return query, projection, sort
120
+
121
+ async def query_data(
122
+ self, start_date=None, end_date=None, get_latest=False,
123
+ value_throshold=None, title=None
124
+ ):
125
+ query, projection, sort = self._prepare_query(
126
+ start_date=start_date, end_date=end_date, get_latest=get_latest,
127
+ value_throshold=value_throshold, title=title
128
+ )
129
+
130
+ if (get_latest):
131
+ cursor = self.collection.find(query, projection).sort(sort).limit(1)
132
+ else:
133
+ cursor = self.collection.find(query, projection).sort(sort)
134
+
135
+ fetched_data = [data async for data in cursor]
136
+
137
+ return fetched_data
138
+
@@ -8,4 +8,4 @@ from .month_revenue import AsyncMonthlyRevenueFetcher
8
8
  from .profit_lose import AsyncProfitLoseFetcher
9
9
  from .value import AsyncTWSEStatsValueFetcher
10
10
  from .tej import AsyncTEJDailyTechFetcher, AsyncTEJSeasonalFetcher
11
- from .us_chip import AsyncUSChipF13Fetcher
11
+ from .us_chip import AsyncUSChipF13Fetcher, AsyncUSCelebrityFetcher
@@ -7,6 +7,8 @@ from neurostats_API.async_mode.factory import get_extractor
7
7
  from neurostats_API.transformers import DailyTechTransformer
8
8
  from neurostats_API.utils import NotSupportedError
9
9
  import pandas as pd
10
+ from pytz import timezone
11
+ from neurostats_API.utils import StatsDateTime
10
12
  import yfinance as yf
11
13
 
12
14
 
@@ -79,9 +81,8 @@ class AsyncTechFetcher(AsyncBaseFetcher):
79
81
 
80
82
  async def _fetch_data(self, start_date, end_date):
81
83
 
82
- if (self.ticker in ['GSPC', 'IXIC', 'DJI', 'TWII']):
83
- full_tick = f'^{self.ticker}'
84
- df = self._conduct_yf_search(full_tick, start_date, end_date)
84
+ if (self.ticker in ['^GSPC', '^IXIC', '^DJI', '^TWII']):
85
+ df = self._conduct_yf_search(self.ticker, start_date, end_date)
85
86
 
86
87
  return df[self.required_cols]
87
88
 
@@ -97,11 +98,14 @@ class AsyncTechFetcher(AsyncBaseFetcher):
97
98
 
98
99
  def _conduct_yf_search(self, ticker, start_date, end_date):
99
100
  yf_ticker = yf.Ticker(ticker)
100
- origin_df = yf_ticker.history(period="10y")
101
+ origin_df = yf_ticker.history(period="max")
101
102
 
102
103
  if origin_df.empty:
103
104
  return origin_df
104
105
 
106
+ start_date = StatsDateTime.transform_date(start_date, tz=str(origin_df.index.tz)) # 跟隨yf搜尋結果的時區
107
+ end_date = StatsDateTime.transform_date(end_date, tz=str(origin_df.index.tz))
108
+
105
109
  origin_df = origin_df.reset_index()
106
110
  origin_df["Date"] = pd.to_datetime(origin_df["Date"])
107
111
  df = origin_df.rename(
@@ -116,6 +120,7 @@ class AsyncTechFetcher(AsyncBaseFetcher):
116
120
  )
117
121
 
118
122
  df = df.loc[(df['date'] >= start_date) & (df['date'] <= end_date)]
123
+ df['date'] = df['date'].dt.tz_convert("Asia/Taipei")
119
124
  return df
120
125
 
121
126
  async def _conduct_tw_db_search(self, start_date, end_date):
File without changes
@@ -1,9 +1,9 @@
1
1
  from .base import AsyncBaseFetcher
2
2
  from ..db_extractors import (
3
- AsyncDailyValueDBExtractor, AsyncTEJDailyValueDBExtractor
3
+ AsyncDailyValueDBExtractor, AsyncTEJDailyValueDBExtractor, AsyncUS_CelebrityDBExtractor
4
4
  )
5
5
  from neurostats_API.async_mode.factory import get_extractor
6
- from neurostats_API.transformers import US_F13_Transformer
6
+ from neurostats_API.transformers import US_F13_Transformer, US_CelebrityTransformer
7
7
  from neurostats_API.utils import NotSupportedError
8
8
 
9
9
 
@@ -44,3 +44,26 @@ class AsyncUSChipF13Fetcher(AsyncBaseFetcher):
44
44
  )
45
45
 
46
46
  return transformed_data
47
+
48
+ class AsyncUSCelebrityFetcher(AsyncBaseFetcher):
49
+
50
+ def __init__(self, client, manager_name):
51
+ self.manager_name = manager_name
52
+ self.extractor = AsyncUS_CelebrityDBExtractor(client, manager_name)
53
+ self.transformer = US_CelebrityTransformer()
54
+
55
+ async def query_data(
56
+ self, start_date=None, end_date=None, get_latest=False,
57
+ value_threshold=None, title=None, strftime=None
58
+ ):
59
+ fetched_data = await self.extractor.query_data(
60
+ start_date, end_date, get_latest,
61
+ value_throshold=value_threshold, title=title
62
+ )
63
+
64
+ transformed_data = self.transformer.process_transform(
65
+ fetched_datas = list(fetched_data),
66
+ strftime = strftime
67
+ )
68
+
69
+ return transformed_data
@@ -8,7 +8,7 @@ class TechFetcher(StatsFetcher):
8
8
  def __init__(self, ticker: str, db_client):
9
9
  """
10
10
  The Capitalization-Weighted Index includes the following tickers:
11
- ['GSPC', 'IXIC', 'DJI', 'TWII']
11
+ ['^GSPC', '^IXIC', '^DJI', '^TWII']
12
12
  """
13
13
 
14
14
  super().__init__(ticker, db_client)
@@ -14,7 +14,8 @@ from .daily_tech import(
14
14
 
15
15
  from .daily_chip import(
16
16
  TWSEChipTransformer,
17
- US_F13_Transformer
17
+ US_F13_Transformer,
18
+ US_CelebrityTransformer
18
19
  )
19
20
 
20
21
  from .month_revenue import(
@@ -1,2 +1,2 @@
1
1
  from .twse_chip import TWSEChipTransformer
2
- from .us import US_F13_Transformer
2
+ from .us import US_F13_Transformer, US_CelebrityTransformer
@@ -4,6 +4,8 @@ import inspect
4
4
  import numpy as np
5
5
  import pandas as pd
6
6
  from neurostats_API.utils import StatsProcessor
7
+ from collections import defaultdict
8
+ from typing import List, Optional, Union
7
9
 
8
10
  class US_F13_Transformer(BaseChipTransformer):
9
11
  def __init__(self, ticker, company_name, zone):
@@ -37,4 +39,27 @@ class US_F13_Transformer(BaseChipTransformer):
37
39
 
38
40
  return return_dict
39
41
 
40
-
42
+ class US_CelebrityTransformer():
43
+
44
+ def __init__(self):
45
+ pass
46
+
47
+ def process_transform(
48
+ self,
49
+ fetched_datas: List[dict],
50
+ strftime: Optional[str] = None
51
+ ) -> dict[str, dict[Union[str, datetime], float]]:
52
+
53
+ result = defaultdict(lambda: defaultdict(dict))
54
+
55
+ for record in fetched_datas:
56
+ ticker = record.get("issuerTicker")
57
+ report_date = record.get("reportDate")
58
+ value = record.get("value")
59
+ title = record.get("titleOfClass")
60
+
61
+ if ticker and report_date and title:
62
+ key = report_date.strftime(strftime) if strftime else report_date
63
+ result.setdefault(ticker, {}).setdefault(title, {})[key] = value
64
+
65
+ return dict(result)
File without changes
@@ -1,4 +1,5 @@
1
1
  from datetime import datetime
2
+ from pytz import timezone
2
3
 
3
4
  class StatsDateTime():
4
5
 
@@ -27,3 +28,25 @@ class StatsDateTime():
27
28
  { "_id": 0, "last_update_time": 1 }
28
29
  )
29
30
 
31
+ @classmethod
32
+ def transform_date(cls, date, tz:str = None):
33
+ if (isinstance(date, str)):
34
+ try:
35
+ date = datetime.strptime(date, "%Y-%m-%d")
36
+ if (tz):
37
+ date = date.astimezone(tz = timezone(tz))
38
+ return date
39
+ except Exception as e:
40
+ print(e)
41
+ raise ValueError(
42
+ "date string format imcompatible, should be \"YYYY-MM-DD\""
43
+ )
44
+ elif (isinstance(date, datetime)):
45
+ if (tz):
46
+ return date.astimezone(tz = timezone(tz))
47
+ else:
48
+ return date
49
+ else:
50
+ raise ValueError(
51
+ "date type imcompatible, should be string(\"YYYY-MM-DD\") or datetime.datetime"
52
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: neurostats_API
3
- Version: 1.0.1rc1
3
+ Version: 1.0.2rc2
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.0
74
+ 1.0.2rc2
75
75
  ```
76
76
 
77
77
  ### 下載舊版
@@ -1,20 +1,20 @@
1
- neurostats_API/__init__.py,sha256=PUd1fgRb8wSqCnfGirDJ3EdCyNNlRCpeTC19gBipANs,672
1
+ neurostats_API/__init__.py,sha256=oH2hrua3CZYdbrjGZRXlGCJfijzllr_fZ6yKSj5t8gk,704
2
2
  neurostats_API/cli.py,sha256=UJSWLIw03P24p-gkBb6JSEI5dW5U12UvLf1L8HjQD-o,873
3
3
  neurostats_API/main.py,sha256=QcsfmWivg2Dnqw3MTJWiI0QvEiRs0VuH-BjwQHFCv00,677
4
- neurostats_API/async_mode/__init__.py,sha256=arSINQm3O3g-IwfOSLsGraEj2icJbkuW0t5HLPQ4Xk8,348
4
+ neurostats_API/async_mode/__init__.py,sha256=8tsW_UDLJXuwzWdZJSacOqZatwzqr7v60hRk0PbgB-w,377
5
5
  neurostats_API/async_mode/db/__init__.py,sha256=7g0OJXgPsIDWRmH25h666cLlvVYpEDyWGXAVCHsNht0,86
6
6
  neurostats_API/async_mode/db/base.py,sha256=63kW2cKBSrs0B4RJaX_3Jv12UYD2APH8sRh2UEVKucw,676
7
7
  neurostats_API/async_mode/db/tej.py,sha256=ku7CfhrSJ8gfUQ_NRjyjSz-OFmqyCGGnXz8Tpue5gP0,324
8
8
  neurostats_API/async_mode/db/twse.py,sha256=YZA-NUZ01EAUKPsaNEaZn3cuzeL9n1fi03aBiHUJGAA,220
9
9
  neurostats_API/async_mode/db/us.py,sha256=SgoU_OpSkpmrlBiNvy5xgyssb7-xK8ptezi4SR00t4I,271
10
- neurostats_API/async_mode/db_extractors/__init__.py,sha256=D-2_ys-TXdkbZKdv1-s2kbJ7oXwRd7uHntXJA_I9qm8,479
11
- neurostats_API/async_mode/db_extractors/base.py,sha256=3Xgdl6A5x93Qg7zMyJJFdE9ZMxsSDFtmXQ-i3gmnpjQ,1831
12
- neurostats_API/async_mode/db_extractors/daily/__init__.py,sha256=83duibkjr7ImvGEV1dOwYGsYMaZJhtCc3UUJLGv0DUk,276
10
+ neurostats_API/async_mode/db_extractors/__init__.py,sha256=S6-lz6SZGzsSem-Kicr8UKsbPcuUA3Wyu276yMJN0tg,512
11
+ neurostats_API/async_mode/db_extractors/base.py,sha256=DLtNONV5F9Lj3OlXeGm_bnR6AMA5d6tL3r7na4H7FRE,2221
12
+ neurostats_API/async_mode/db_extractors/daily/__init__.py,sha256=8vw8W8AZ_zi_hSshlobN4ITK9qaFVoNy66OmOT7cNj4,306
13
13
  neurostats_API/async_mode/db_extractors/daily/base.py,sha256=ePvYxqOypy0F9VI33nSJQGpG5zMNO_EGZ3owVUeKFLw,3204
14
14
  neurostats_API/async_mode/db_extractors/daily/tej_chip.py,sha256=Ywc0iIIPWw1VdtVc2_s1CNrgj0_G1wOaGzrgyVTN2k8,414
15
15
  neurostats_API/async_mode/db_extractors/daily/tej_tech.py,sha256=M3k1pmv48DfiUaIfDKx5gk85C5JpmuXdQhRcNzgOhPI,349
16
16
  neurostats_API/async_mode/db_extractors/daily/twse_chip.py,sha256=WICwcsy2m_2ua9UnIjs_SZGFq7m2-UByx9x7TCk_rlY,1490
17
- neurostats_API/async_mode/db_extractors/daily/us_chip.py,sha256=vIvEn-EueA2dYborJgre7-vRDT6VeYzXzNPYfguoc-g,1934
17
+ neurostats_API/async_mode/db_extractors/daily/us_chip.py,sha256=0Ycuqy3lqwA0kxAhv-KVqMUEMGQhOV3YMbHarWWT2PQ,4154
18
18
  neurostats_API/async_mode/db_extractors/daily/value.py,sha256=j5QjFOhmvVum0D10prcZZ7_sxrojA-b8sP72Ge9lOnY,2859
19
19
  neurostats_API/async_mode/db_extractors/daily/yf.py,sha256=GewIRJ7_baBc9QL7BHVdnxQ0uXYpFNeiPuwKxzByULg,377
20
20
  neurostats_API/async_mode/db_extractors/month_revenue/__init__.py,sha256=VXjEn4xnXsPpt8lq7egSM_3sLnhtOIQG2lNedDC_Shw,50
@@ -29,19 +29,20 @@ neurostats_API/async_mode/db_extractors/seasonal/tej.py,sha256=SqObDqR3uOnxXGF12
29
29
  neurostats_API/async_mode/factory/__init__.py,sha256=7dw36HPjV9JHfEBF7n1pA8i4f-07ACKREnGMUHxh7KY,45
30
30
  neurostats_API/async_mode/factory/extractor_factory.py,sha256=NlCH2zM8Qq4zObQG9n4rixCcuFBQmkJz7dS-LARPwXA,4774
31
31
  neurostats_API/async_mode/factory/transformer_factory.py,sha256=atw_-wPz2JZpJscPVE2jvFB6QNwwmcRNKQH9iai-13E,4942
32
- neurostats_API/async_mode/fetchers/__init__.py,sha256=iThtw7ftfHz1EJ2uvFhTMUbtaXhDdzFRUstE4vO9n8o,580
32
+ neurostats_API/async_mode/fetchers/__init__.py,sha256=cn8AfSsqoZ_AntE3x4A1-0zu3KQUNy4OdpHpNJpRyT0,605
33
33
  neurostats_API/async_mode/fetchers/balance_sheet.py,sha256=wzlXW5gPh5S5MD5jIUB_yeEL_aW2_CeX2DNKBio0-EA,1129
34
34
  neurostats_API/async_mode/fetchers/base.py,sha256=fWlPmvsQWHcgv8z36BsXj8Y92-VKmr8cUW1EjkqI3_8,1785
35
35
  neurostats_API/async_mode/fetchers/cash_flow.py,sha256=uj2JEbilgn595yJcMNvlTZHdkvu7E9y2e7rqs_ne270,2130
36
36
  neurostats_API/async_mode/fetchers/finance_overview.py,sha256=YETx7uxS6OQgzJ0v_3JMJoUfuWciWmKAzitm91XffHk,4441
37
37
  neurostats_API/async_mode/fetchers/month_revenue.py,sha256=GDrFrjTe81uAzeKvd5HghH9iPXouXL8JTt8hfaFkig4,1258
38
38
  neurostats_API/async_mode/fetchers/profit_lose.py,sha256=-YMqO6hEbGntAeAf9y66LX56fj6VrHWr1_IIbQ_bUBQ,1483
39
- neurostats_API/async_mode/fetchers/tech.py,sha256=xj6LRnexMePi4Nc9P0lduAjJwjcVOp1xInIFjrRMrbM,6686
39
+ neurostats_API/async_mode/fetchers/tech.py,sha256=fQChyVBPzT4oSOSeCZ5Et6nKf1XUA1U-RxFaezkUr0Y,6993
40
40
  neurostats_API/async_mode/fetchers/twse_institution.py,sha256=DKyecoIa_2-CUfDXKp2dBFJk0lfCBIr2steVVa-jq9o,2055
41
41
  neurostats_API/async_mode/fetchers/twse_margin.py,sha256=wra84uFh9ooCoyFWhRuV4vP3Uhojc13XHx51UD90uYo,3173
42
- neurostats_API/async_mode/fetchers/us_chip.py,sha256=NTptLaX-Us5-bUow7h5P2y-l5Co77QCNrp2yDkGqZHc,1534
42
+ neurostats_API/async_mode/fetchers/us_chip.py,sha256=1C7wsdgXkf4SOHUyqGKNEsr0Ijds7l4jLLsPMYyMRQo,2365
43
43
  neurostats_API/async_mode/fetchers/value.py,sha256=7FpO0_BOOvq4ZlwwaIfSD8xO_s1O8ykxz147fkiZIt4,2883
44
44
  neurostats_API/async_mode/fetchers/tej/__init__.py,sha256=QNXGg1gE_bnkZWybulRZXtcCPWV6Aj1nLz7r0Mo4BN0,93
45
+ neurostats_API/async_mode/fetchers/tej/chip.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
46
  neurostats_API/async_mode/fetchers/tej/seasonal_data.py,sha256=oeMpj4GMzw22KHjVDTcVO2hwVfxmnO291N6O_dKp0sw,2836
46
47
  neurostats_API/async_mode/fetchers/tej/tech.py,sha256=0wG2bep_nJp3kBS0nIzH6191R5bwEeS-upK40DTGpjU,1110
47
48
  neurostats_API/config/company_list/ticker_index_industry_map.json,sha256=JPSrkMrxOg5GB6HoOhOKeCatznvGAFJpWt92iAhutak,162681
@@ -67,10 +68,10 @@ neurostats_API/fetchers/institution.py,sha256=YsPRnM2M25plhrgSQ6ckO7gj_toydBXYlR
67
68
  neurostats_API/fetchers/margin_trading.py,sha256=0enMPpq0J55uts0nJFHOylXvLEMWZYSb-gt1BH5_gBM,11430
68
69
  neurostats_API/fetchers/month_revenue.py,sha256=K1WZct6vLU3y_8uaXR3po5jzx2w3EYb2v3XkIX2_pBE,8313
69
70
  neurostats_API/fetchers/profit_lose.py,sha256=MUTPPXHWZhhvcq1YzrY1dalFIXljUUG3UugXQimFy-Y,9170
70
- neurostats_API/fetchers/tech.py,sha256=TsS8m25Otc3_2jTYITFe-wNHlDWcfWsHIxhOrqL8qMY,16016
71
+ neurostats_API/fetchers/tech.py,sha256=_718Na2r3K3c9f-3cIx42jIg5g_mDHNrV6aZYFFba8A,16020
71
72
  neurostats_API/fetchers/tej_finance_report.py,sha256=mlIm2Qzs8-Xlzeb8uET8qGPWD3VGUx3g8qFFcY4UbAw,13022
72
73
  neurostats_API/fetchers/value_invest.py,sha256=QxQS2GcoLIU9ZBDEo8iRK2yHd8YLmBS70Bq42F3IsSw,8295
73
- neurostats_API/transformers/__init__.py,sha256=dvXB3Y-nmzAY5LtkNwXn90Y_lsVhJ8_BY_2VFnN6i3Q,700
74
+ neurostats_API/transformers/__init__.py,sha256=sePY-KavG_7xMA-dvWiC_Z6gXGZUmoCoMeuJCcZSe6A,729
74
75
  neurostats_API/transformers/base.py,sha256=gFRuLmFzZl0HObEtMr78oscFP3ePBseMW7tB4s51-_c,4795
75
76
  neurostats_API/transformers/balance_sheet/__init__.py,sha256=RCScBsR3zeC5UdyuiHD1CGRQufoFL5LkN8WbtI5JeA4,87
76
77
  neurostats_API/transformers/balance_sheet/base.py,sha256=sEap9uHe-nri8F4gPV_FCVm0Qe6KWgpHt6a2ryAPd_8,1676
@@ -80,11 +81,11 @@ neurostats_API/transformers/cash_flow/__init__.py,sha256=KJs5kfjRV0ahy842ZVLvQuZ
80
81
  neurostats_API/transformers/cash_flow/base.py,sha256=6Lt44O-xg658-jEFYBHOF2cgD0PGiKK43257uQMSetk,4392
81
82
  neurostats_API/transformers/cash_flow/twse.py,sha256=srrmTmFheJig3el5jQIW8YBgpZVUOq-Af2zM4NxLm7s,2432
82
83
  neurostats_API/transformers/cash_flow/us.py,sha256=nRJajeDz4HNkv42NosoP0Jir4tIA0ybhIZu9zHkjAEM,1304
83
- neurostats_API/transformers/daily_chip/__init__.py,sha256=3CATHQXs8aSrcjH5Aka4LHsf--OdfZthLb4crKpuk8U,77
84
+ neurostats_API/transformers/daily_chip/__init__.py,sha256=-9y52t5cSvLq3ve9STe_Qhqa6iiCO0x78UUNG9qJ-IU,102
84
85
  neurostats_API/transformers/daily_chip/base.py,sha256=KBsnpACakJh2W-k4Kvv-dVNnSNbUCGMeqvQsTQkz-aE,184
85
86
  neurostats_API/transformers/daily_chip/tej.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
87
  neurostats_API/transformers/daily_chip/twse_chip.py,sha256=miMu5Si0tFndznf7E_T26c1hYtNqwHplbuB3htVzeGQ,14655
87
- neurostats_API/transformers/daily_chip/us.py,sha256=oTH6RphoPZICKwrdErWHJ__M5U2EIKfNFWARtFAcL7Y,1125
88
+ neurostats_API/transformers/daily_chip/us.py,sha256=t1vGcdXu5ZlyMYO7sKW-NX4akd_hrvsZo0cQYDdqvbU,1966
88
89
  neurostats_API/transformers/daily_chip/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
90
  neurostats_API/transformers/daily_chip/utils/institution.py,sha256=1Zj9mxIhvwkmA599a1OYmdorPEAN_U3sl8uhvddxUW0,3384
90
91
  neurostats_API/transformers/daily_chip/utils/margin_trading.py,sha256=oVY_OW63pcSc1TyM_jSPNAoj4HLyZCRshkdsHQsnxyk,38
@@ -107,6 +108,7 @@ neurostats_API/transformers/profit_lose/twse.py,sha256=RwAJWQBdsjFaLlW-HL6oUGxLA
107
108
  neurostats_API/transformers/profit_lose/us.py,sha256=q7Vbxp_xzB0SUsxIqQYENi3RayfqR6Nfynvt7p-KHlI,847
108
109
  neurostats_API/transformers/tej/__init__.py,sha256=WihARZhphkvApsKr4U0--68m1M-Dc_rpV7xoV2fUV7E,61
109
110
  neurostats_API/transformers/tej/base.py,sha256=YD6M3Iok-KXb5EDhqa_fUzJ-zWXLeoXPsavdDJD-ks4,5436
111
+ neurostats_API/transformers/tej/chip.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
112
  neurostats_API/transformers/tej/finance_statement.py,sha256=rE-Kc94hzW8-xcKn6ry8LwwT8dSoGRKGsmvd5W4_SUs,2798
111
113
  neurostats_API/transformers/value/__init__.py,sha256=D8qMk0aLsv7CBBJHo5zsq_UuBKmZYNyqS3s-RWfhvy8,73
112
114
  neurostats_API/transformers/value/base.py,sha256=wR2LDiwGET126mwrPxYoApyl4lwx1MjWxFpOKLso_As,186
@@ -115,11 +117,11 @@ neurostats_API/transformers/value/twse.py,sha256=uNGLkxCIfQhzRkalSn6o2kgPT-uw41K
115
117
  neurostats_API/utils/__init__.py,sha256=pmOZSjSJ8434GbofV1Wx4GAzcDabOK80LFVS4y3T6-A,223
116
118
  neurostats_API/utils/calculate_value.py,sha256=ioPV5VWitJ2NylBi5vwfs-payAUYxWhAiS7aaJjzQKQ,4305
117
119
  neurostats_API/utils/data_process.py,sha256=cD1Vzv8oDpsd1Y7qCALTyM-AP1nkwqhfOgDY0KQpXec,10442
118
- neurostats_API/utils/datetime.py,sha256=XJya4G8b_-ZOaBbMXgQjWh2MC4wc-o6goQ7EQJQMWrQ,773
120
+ neurostats_API/utils/datetime.py,sha256=e6p2XIXaDMOWNJ2qnwqZBScC9J6kB6h0Ef1A7fuWq-w,1607
119
121
  neurostats_API/utils/db_client.py,sha256=OYe6yazcR4Aa6jYmy47JrryUeh2NnKGqY2K_lSZe6i8,455
120
122
  neurostats_API/utils/exception.py,sha256=yv92GVh5uHV1BgRmO4DwJcX_PtE0-TSgQoo3VnZ5hOQ,277
121
123
  neurostats_API/utils/logger.py,sha256=egBiiPGTi5l1FoX_o6EvdGh81R0_k8hFPctSxq8RCoo,693
122
- neurostats_API-1.0.1rc1.dist-info/METADATA,sha256=xqSuEh5nXalR7-pQSakmWwwFGJ3fGv4G2bzcfLoQY2Q,2961
123
- neurostats_API-1.0.1rc1.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
124
- neurostats_API-1.0.1rc1.dist-info/top_level.txt,sha256=nSlQPMG0VtXivJyedp4Bkf86EOy2TpW10VGxolXrqnU,15
125
- neurostats_API-1.0.1rc1.dist-info/RECORD,,
124
+ neurostats_API-1.0.2rc2.dist-info/METADATA,sha256=x-b56LcvMZHRcsM-4rQcwfGkzs5CFDkfFIDi9UBZeDE,2964
125
+ neurostats_API-1.0.2rc2.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
126
+ neurostats_API-1.0.2rc2.dist-info/top_level.txt,sha256=nSlQPMG0VtXivJyedp4Bkf86EOy2TpW10VGxolXrqnU,15
127
+ neurostats_API-1.0.2rc2.dist-info/RECORD,,