neurostats-API 0.0.4__tar.gz → 0.0.6__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/PKG-INFO +16 -11
  2. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/README.md +15 -10
  3. neurostats_API-0.0.6/neurostats_API/__init__.py +1 -0
  4. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API/fetchers/base.py +2 -5
  5. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API/fetchers/finance_overview.py +2 -2
  6. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API/fetchers/tech.py +2 -3
  7. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API/fetchers/value_invest.py +2 -2
  8. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API/utils/__init__.py +1 -1
  9. neurostats_API-0.0.6/neurostats_API/utils/db_client.py +16 -0
  10. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API/utils/fetcher.py +2 -3
  11. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API.egg-info/PKG-INFO +16 -11
  12. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/setup.py +1 -1
  13. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/test/test_fetchers.py +8 -7
  14. neurostats_API-0.0.4/neurostats_API/__init__.py +0 -1
  15. neurostats_API-0.0.4/neurostats_API/utils/db_client.py +0 -10
  16. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/MANIFEST.in +0 -0
  17. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API/cli.py +0 -0
  18. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API/fetchers/__init__.py +0 -0
  19. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API/fetchers/balance_sheet.py +0 -0
  20. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API/fetchers/month_revenue.py +0 -0
  21. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API/fetchers/profit_lose.py +0 -0
  22. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API/main.py +0 -0
  23. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API/tools/finance_overview_dict.yaml +0 -0
  24. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API/tools/profit_lose.yaml +0 -0
  25. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API/tools/seasonal_data_field_dict.txt +0 -0
  26. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API/utils/data_process.py +0 -0
  27. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API/utils/datetime.py +0 -0
  28. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API.egg-info/SOURCES.txt +0 -0
  29. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API.egg-info/dependency_links.txt +0 -0
  30. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/neurostats_API.egg-info/top_level.txt +0 -0
  31. {neurostats_API-0.0.4 → neurostats_API-0.0.6}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: neurostats_API
3
- Version: 0.0.4
3
+ Version: 0.0.6
4
4
  Summary: The service of NeuroStats website
5
5
  Home-page: https://github.com/NeurowattStats/NeuroStats_API.git
6
6
  Author: JasonWang@Neurowatt
@@ -118,9 +118,10 @@ data = stats_fetcher.query_data()
118
118
 
119
119
  ### 回傳月營收表
120
120
  ``` Python
121
- from neurostats_API.utils import StatsFetcher
121
+ from neurostats_API.utils import StatsFetcher, DBClient
122
+ db_client = DBClient("<連接的DB位置>").get_client()
122
123
  ticker = 2330 # 換成tw50內任意ticker
123
- fetcher = StatsFetcher()
124
+ fetcher = StatsFetcher(db_client)
124
125
  data = stats_fetcher.get_month_revenue_sheet(ticker)
125
126
  ```
126
127
 
@@ -170,9 +171,10 @@ YoY_10 None None ... None None
170
171
  ### 財務分析: 重要指標
171
172
  對應https://ifa.ai/tw-stock/2330/finance-overview
172
173
  ```Python
173
- from neurostats_API.fetchers import FinanceOverviewFetcher
174
+ from neurostats_API.utils import StatsFetcher, DBClient
175
+ db_client = DBClient("<連接的DB位置>").get_client()
174
176
  ticker = "2330"
175
- fetcher = FinanceOverviewFetcher(ticker = "2330")
177
+ fetcher = FinanceOverviewFetcher(ticker = "2330", db_client = db_client)
176
178
  data = fetcher.query_data()
177
179
  ```
178
180
 
@@ -253,8 +255,9 @@ markdown
253
255
 
254
256
  ### 損益表
255
257
  ```Python
256
- from neurostats_API.utils import StatsFetcher
257
- fetcher = StatsFetcher()
258
+ from neurostats_API.utils import StatsFetcher, DBClient
259
+ db_client = DBClient("<連接的DB位置>").get_client()
260
+ fetcher = StatsFetcher(db_client)
258
261
  ticker = 2330 # 換成tw50內任意ticker
259
262
  data = fetcher.get_profit_lose(ticker)
260
263
  ```
@@ -301,8 +304,9 @@ data = fetcher.get_profit_lose(ticker)
301
304
 
302
305
  ### 資產負債表
303
306
  ``` Python
304
- from neurostats_API.utils import StatsFetcher
305
- fetcher = StatsFetcher()
307
+ from neurostats_API.utils import StatsFetcher, DBClient
308
+ db_client = DBClient("<連接的DB位置>").get_client()
309
+ fetcher = StatsFetcher(db_client)
306
310
  ticker = 2330 # 換成tw50內任意ticker
307
311
  stats_fetcher.get_balance_sheet(ticker)
308
312
  ```
@@ -360,8 +364,9 @@ equity 1.094370e+09 53.3 ... 3.390706e+09 56.68
360
364
 
361
365
  ### 現金流量表
362
366
  ``` Python
363
- from neurostats_API.utils import StatsFetcher
364
- fetcher = StatsFetcher()
367
+ from neurostats_API.utils import StatsFetcher, DBClient
368
+ db_client = DBClient("<連接的DB位置>").get_client()
369
+ fetcher = StatsFetcher(db_client)
365
370
  ticker = 2330 # 換成tw50內任意ticker
366
371
  stats_fetcher.get_cash_flow(ticker)
367
372
  ```
@@ -108,9 +108,10 @@ data = stats_fetcher.query_data()
108
108
 
109
109
  ### 回傳月營收表
110
110
  ``` Python
111
- from neurostats_API.utils import StatsFetcher
111
+ from neurostats_API.utils import StatsFetcher, DBClient
112
+ db_client = DBClient("<連接的DB位置>").get_client()
112
113
  ticker = 2330 # 換成tw50內任意ticker
113
- fetcher = StatsFetcher()
114
+ fetcher = StatsFetcher(db_client)
114
115
  data = stats_fetcher.get_month_revenue_sheet(ticker)
115
116
  ```
116
117
 
@@ -160,9 +161,10 @@ YoY_10 None None ... None None
160
161
  ### 財務分析: 重要指標
161
162
  對應https://ifa.ai/tw-stock/2330/finance-overview
162
163
  ```Python
163
- from neurostats_API.fetchers import FinanceOverviewFetcher
164
+ from neurostats_API.utils import StatsFetcher, DBClient
165
+ db_client = DBClient("<連接的DB位置>").get_client()
164
166
  ticker = "2330"
165
- fetcher = FinanceOverviewFetcher(ticker = "2330")
167
+ fetcher = FinanceOverviewFetcher(ticker = "2330", db_client = db_client)
166
168
  data = fetcher.query_data()
167
169
  ```
168
170
 
@@ -243,8 +245,9 @@ markdown
243
245
 
244
246
  ### 損益表
245
247
  ```Python
246
- from neurostats_API.utils import StatsFetcher
247
- fetcher = StatsFetcher()
248
+ from neurostats_API.utils import StatsFetcher, DBClient
249
+ db_client = DBClient("<連接的DB位置>").get_client()
250
+ fetcher = StatsFetcher(db_client)
248
251
  ticker = 2330 # 換成tw50內任意ticker
249
252
  data = fetcher.get_profit_lose(ticker)
250
253
  ```
@@ -291,8 +294,9 @@ data = fetcher.get_profit_lose(ticker)
291
294
 
292
295
  ### 資產負債表
293
296
  ``` Python
294
- from neurostats_API.utils import StatsFetcher
295
- fetcher = StatsFetcher()
297
+ from neurostats_API.utils import StatsFetcher, DBClient
298
+ db_client = DBClient("<連接的DB位置>").get_client()
299
+ fetcher = StatsFetcher(db_client)
296
300
  ticker = 2330 # 換成tw50內任意ticker
297
301
  stats_fetcher.get_balance_sheet(ticker)
298
302
  ```
@@ -350,8 +354,9 @@ equity 1.094370e+09 53.3 ... 3.390706e+09 56.68
350
354
 
351
355
  ### 現金流量表
352
356
  ``` Python
353
- from neurostats_API.utils import StatsFetcher
354
- fetcher = StatsFetcher()
357
+ from neurostats_API.utils import StatsFetcher, DBClient
358
+ db_client = DBClient("<連接的DB位置>").get_client()
359
+ fetcher = StatsFetcher(db_client)
355
360
  ticker = 2330 # 換成tw50內任意ticker
356
361
  stats_fetcher.get_cash_flow(ticker)
357
362
  ```
@@ -0,0 +1 @@
1
+ __version__='0.0.6'
@@ -5,14 +5,11 @@ import pytz
5
5
  from datetime import datetime, timedelta, date
6
6
  from ..utils import StatsDateTime, StatsProcessor
7
7
  import yaml
8
- from ..utils import shared_client
9
-
10
8
 
11
9
  class StatsFetcher:
12
-
13
- def __init__(self, ticker):
10
+ def __init__(self, ticker, db_client):
14
11
  self.ticker = ticker
15
- self.db = shared_client[
12
+ self.db = db_client[
16
13
  "company"] # Replace with your database name
17
14
  self.collection = self.db["twse_stats"]
18
15
 
@@ -11,8 +11,8 @@ class FinanceOverviewFetcher(StatsFetcher):
11
11
  對應iFa.ai -> 財務分析 -> 重要指標(finance_overview)
12
12
  """
13
13
 
14
- def __init__(self, ticker):
15
- super().__init__(ticker)
14
+ def __init__(self, ticker, db_client):
15
+ super().__init__(ticker, db_client)
16
16
 
17
17
  self.target_fields = StatsProcessor.load_yaml("finance_overview_dict.yaml")
18
18
  self.inverse_dict = StatsProcessor.load_txt("seasonal_data_field_dict.txt", json_load=True)
@@ -3,9 +3,8 @@ import pandas as pd
3
3
 
4
4
  class TechFetcher(StatsFetcher):
5
5
 
6
- def __init__(self, ticker:str):
7
- super().__init__()
8
- self.ticker = ticker
6
+ def __init__(self, ticker:str, db_client):
7
+ super().__init__(ticker, db_client)
9
8
  self.full_ohlcv = self._get_ohlcv()
10
9
  self.basic_indexes = ['SMA5', 'SMA20', 'SMA60', 'EMA5', 'EMA20',
11
10
  'EMA40', 'EMA12', 'EMA26', 'RSI7', 'RSI14',
@@ -6,8 +6,8 @@ from ..utils import StatsDateTime, StatsProcessor
6
6
 
7
7
  class ValueFetcher(StatsFetcher):
8
8
 
9
- def __init__(self, ticker: str):
10
- super().__init__(ticker)
9
+ def __init__(self, ticker: str, db_client):
10
+ super().__init__(ticker, db_client)
11
11
 
12
12
  def prepare_query(self, start_date, end_date):
13
13
  pipeline = super().prepare_query()
@@ -1,4 +1,4 @@
1
1
  from .datetime import StatsDateTime
2
- from .db_client import shared_client
2
+ from .db_client import DBClient
3
3
  from .data_process import StatsProcessor
4
4
  from .fetcher import StatsFetcher
@@ -0,0 +1,16 @@
1
+ import os
2
+ from pymongo import MongoClient
3
+ from dotenv import load_dotenv
4
+
5
+ class DBClient:
6
+ def __init__(self, mongo_uri):
7
+ """初始化時接收 MongoDB 連接 URI"""
8
+ self.client = MongoClient(mongo_uri)
9
+ self.db = self.client["twse_company"]
10
+
11
+ def get_client(self):
12
+ return self.client
13
+
14
+ def get_collection(self, collection_name):
15
+ """返回指定名稱的集合"""
16
+ return self.db[collection_name]
@@ -1,4 +1,3 @@
1
- from .db_client import shared_client
2
1
  import pandas as pd
3
2
  import json
4
3
  import pytz
@@ -9,8 +8,8 @@ import yaml
9
8
 
10
9
  class StatsFetcher:
11
10
 
12
- def __init__(self):
13
- self.db = shared_client["company"] # Replace with your database name
11
+ def __init__(self, db_client):
12
+ self.db = db_client["company"] # Replace with your database name
14
13
  self.collection = self.db["twse_stats"]
15
14
 
16
15
  self.timezone = pytz.timezone("Asia/Taipei")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: neurostats-API
3
- Version: 0.0.4
3
+ Version: 0.0.6
4
4
  Summary: The service of NeuroStats website
5
5
  Home-page: https://github.com/NeurowattStats/NeuroStats_API.git
6
6
  Author: JasonWang@Neurowatt
@@ -118,9 +118,10 @@ data = stats_fetcher.query_data()
118
118
 
119
119
  ### 回傳月營收表
120
120
  ``` Python
121
- from neurostats_API.utils import StatsFetcher
121
+ from neurostats_API.utils import StatsFetcher, DBClient
122
+ db_client = DBClient("<連接的DB位置>").get_client()
122
123
  ticker = 2330 # 換成tw50內任意ticker
123
- fetcher = StatsFetcher()
124
+ fetcher = StatsFetcher(db_client)
124
125
  data = stats_fetcher.get_month_revenue_sheet(ticker)
125
126
  ```
126
127
 
@@ -170,9 +171,10 @@ YoY_10 None None ... None None
170
171
  ### 財務分析: 重要指標
171
172
  對應https://ifa.ai/tw-stock/2330/finance-overview
172
173
  ```Python
173
- from neurostats_API.fetchers import FinanceOverviewFetcher
174
+ from neurostats_API.utils import StatsFetcher, DBClient
175
+ db_client = DBClient("<連接的DB位置>").get_client()
174
176
  ticker = "2330"
175
- fetcher = FinanceOverviewFetcher(ticker = "2330")
177
+ fetcher = FinanceOverviewFetcher(ticker = "2330", db_client = db_client)
176
178
  data = fetcher.query_data()
177
179
  ```
178
180
 
@@ -253,8 +255,9 @@ markdown
253
255
 
254
256
  ### 損益表
255
257
  ```Python
256
- from neurostats_API.utils import StatsFetcher
257
- fetcher = StatsFetcher()
258
+ from neurostats_API.utils import StatsFetcher, DBClient
259
+ db_client = DBClient("<連接的DB位置>").get_client()
260
+ fetcher = StatsFetcher(db_client)
258
261
  ticker = 2330 # 換成tw50內任意ticker
259
262
  data = fetcher.get_profit_lose(ticker)
260
263
  ```
@@ -301,8 +304,9 @@ data = fetcher.get_profit_lose(ticker)
301
304
 
302
305
  ### 資產負債表
303
306
  ``` Python
304
- from neurostats_API.utils import StatsFetcher
305
- fetcher = StatsFetcher()
307
+ from neurostats_API.utils import StatsFetcher, DBClient
308
+ db_client = DBClient("<連接的DB位置>").get_client()
309
+ fetcher = StatsFetcher(db_client)
306
310
  ticker = 2330 # 換成tw50內任意ticker
307
311
  stats_fetcher.get_balance_sheet(ticker)
308
312
  ```
@@ -360,8 +364,9 @@ equity 1.094370e+09 53.3 ... 3.390706e+09 56.68
360
364
 
361
365
  ### 現金流量表
362
366
  ``` Python
363
- from neurostats_API.utils import StatsFetcher
364
- fetcher = StatsFetcher()
367
+ from neurostats_API.utils import StatsFetcher, DBClient
368
+ db_client = DBClient("<連接的DB位置>").get_client()
369
+ fetcher = StatsFetcher(db_client)
365
370
  ticker = 2330 # 換成tw50內任意ticker
366
371
  stats_fetcher.get_cash_flow(ticker)
367
372
  ```
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='neurostats_API',
5
- version='0.0.4',
5
+ version='0.0.6',
6
6
  long_description=open('README.md', 'r', encoding='utf-8').read(),
7
7
  long_description_content_type='text/markdown',
8
8
  install_requires=[
@@ -1,12 +1,13 @@
1
1
  import pytest
2
2
  import pandas as pd
3
3
  import yaml
4
- from neurostats_API.utils import StatsProcessor
4
+ from neurostats_API.utils import StatsProcessor, DBClient
5
5
 
6
+ db_client = DBClient("mongodb://neurowatt:neurodb123@db.neurowatt.ai:27017/neurowatt").get_client()
6
7
 
7
8
  def test_value():
8
9
  from neurostats_API.fetchers import ValueFetcher
9
- fetcher = ValueFetcher(ticker='2330')
10
+ fetcher = ValueFetcher(ticker='2330', db_client=db_client)
10
11
 
11
12
  fetched_data = fetcher.query_data()
12
13
 
@@ -19,7 +20,7 @@ def test_value():
19
20
  def test_profit_lose():
20
21
  from neurostats_API.utils import StatsFetcher
21
22
 
22
- fetcher = StatsFetcher()
23
+ fetcher = StatsFetcher(db_client)
23
24
 
24
25
  data = fetcher.get_profit_lose("2330")
25
26
 
@@ -31,7 +32,7 @@ def test_profit_lose():
31
32
  def test_cash_flow():
32
33
  from neurostats_API.utils import StatsFetcher
33
34
 
34
- fetcher = StatsFetcher()
35
+ fetcher = StatsFetcher(db_client)
35
36
  data = fetcher.get_cash_flow("2330")
36
37
 
37
38
  assert("cash_flow" in data.keys())
@@ -39,7 +40,7 @@ def test_cash_flow():
39
40
  def test_month_revenue():
40
41
  from neurostats_API.utils import StatsFetcher
41
42
 
42
- fetcher = StatsFetcher()
43
+ fetcher = StatsFetcher(db_client)
43
44
  data = fetcher.get_month_revenue_sheet("2330")
44
45
 
45
46
  assert("month_revenue" in data.keys())
@@ -47,7 +48,7 @@ def test_month_revenue():
47
48
  def test_balance_sheet():
48
49
  from neurostats_API.utils import StatsFetcher
49
50
 
50
- fetcher = StatsFetcher()
51
+ fetcher = StatsFetcher(db_client)
51
52
 
52
53
  data = fetcher.get_balance_sheet("2330")
53
54
 
@@ -57,7 +58,7 @@ def test_balance_sheet():
57
58
 
58
59
  def test_finance_overview():
59
60
  from neurostats_API.fetchers import FinanceOverviewFetcher
60
- fetcher = FinanceOverviewFetcher(ticker='2330')
61
+ fetcher = FinanceOverviewFetcher(ticker='2330', db_client=db_client)
61
62
  fetched_data = fetcher.query_data()
62
63
 
63
64
  expected_keys = [
@@ -1 +0,0 @@
1
- __version__='0.0.4'
@@ -1,10 +0,0 @@
1
- import os
2
- from pymongo import MongoClient
3
- from dotenv import load_dotenv
4
-
5
- # 載入 .env 檔案
6
- load_dotenv()
7
-
8
- # 創建並共享 MongoClient 連線
9
- mongo_uri = os.getenv('MONGO_URI', 'mongodb://localhost:27017')
10
- shared_client = MongoClient(mongo_uri)
File without changes