akshare-one 0.3.1__py3-none-any.whl → 0.3.3__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.
Files changed (43) hide show
  1. akshare_one/__init__.py +214 -31
  2. akshare_one/indicators.py +395 -395
  3. akshare_one/modules/cache.py +10 -9
  4. akshare_one/modules/eastmoney/client.py +88 -88
  5. akshare_one/modules/eastmoney/utils.py +104 -104
  6. akshare_one/modules/financial/base.py +27 -22
  7. akshare_one/modules/financial/eastmoney.py +184 -0
  8. akshare_one/modules/financial/factory.py +46 -44
  9. akshare_one/modules/financial/sina.py +298 -273
  10. akshare_one/modules/historical/base.py +47 -47
  11. akshare_one/modules/historical/eastmoney.py +241 -241
  12. akshare_one/modules/historical/eastmoney_direct.py +79 -79
  13. akshare_one/modules/historical/factory.py +48 -48
  14. akshare_one/modules/historical/sina.py +254 -254
  15. akshare_one/modules/indicators/base.py +158 -158
  16. akshare_one/modules/indicators/factory.py +33 -33
  17. akshare_one/modules/indicators/simple.py +230 -230
  18. akshare_one/modules/indicators/talib.py +263 -263
  19. akshare_one/modules/info/base.py +25 -0
  20. akshare_one/modules/info/eastmoney.py +52 -0
  21. akshare_one/modules/info/factory.py +44 -0
  22. akshare_one/modules/insider/base.py +28 -28
  23. akshare_one/modules/insider/factory.py +44 -44
  24. akshare_one/modules/insider/xueqiu.py +115 -115
  25. akshare_one/modules/news/base.py +22 -22
  26. akshare_one/modules/news/eastmoney.py +47 -47
  27. akshare_one/modules/news/factory.py +44 -44
  28. akshare_one/modules/realtime/base.py +27 -27
  29. akshare_one/modules/realtime/eastmoney.py +57 -57
  30. akshare_one/modules/realtime/eastmoney_direct.py +37 -37
  31. akshare_one/modules/realtime/factory.py +48 -48
  32. akshare_one/modules/realtime/xueqiu.py +60 -60
  33. akshare_one/modules/utils.py +10 -10
  34. {akshare_one-0.3.1.dist-info → akshare_one-0.3.3.dist-info}/METADATA +70 -70
  35. akshare_one-0.3.3.dist-info/RECORD +39 -0
  36. {akshare_one-0.3.1.dist-info → akshare_one-0.3.3.dist-info}/licenses/LICENSE +21 -21
  37. akshare_one/financial.py +0 -46
  38. akshare_one/insider.py +0 -33
  39. akshare_one/news.py +0 -27
  40. akshare_one/stock.py +0 -78
  41. akshare_one-0.3.1.dist-info/RECORD +0 -39
  42. {akshare_one-0.3.1.dist-info → akshare_one-0.3.3.dist-info}/WHEEL +0 -0
  43. {akshare_one-0.3.1.dist-info → akshare_one-0.3.3.dist-info}/top_level.txt +0 -0
@@ -1,57 +1,57 @@
1
- from cachetools import cached
2
- import pandas as pd
3
- import akshare as ak
4
-
5
- from ..cache import CACHE_CONFIG
6
- from .base import RealtimeDataProvider
7
-
8
-
9
- class EastmoneyRealtime(RealtimeDataProvider):
10
- @cached(
11
- CACHE_CONFIG["realtime_cache"],
12
- key=lambda self, symbol=None: f"eastmoney_{symbol if symbol else 'all'}",
13
- )
14
- def get_current_data(self) -> pd.DataFrame:
15
- """获取沪深京A股实时行情数据"""
16
- raw_df = ak.stock_zh_a_spot_em()
17
- df = self._clean_spot_data(raw_df)
18
- if self.symbol:
19
- df = df[df["symbol"] == self.symbol].reset_index(drop=True)
20
- return df
21
-
22
- def _clean_spot_data(self, raw_df: pd.DataFrame) -> pd.DataFrame:
23
- """清理和标准化实时行情数据"""
24
- column_mapping = {
25
- "代码": "symbol",
26
- "最新价": "price",
27
- "涨跌额": "change",
28
- "涨跌幅": "pct_change",
29
- "成交量": "volume",
30
- "成交额": "amount",
31
- "今开": "open",
32
- "最高": "high",
33
- "最低": "low",
34
- "昨收": "prev_close",
35
- }
36
-
37
- df = raw_df.rename(columns=column_mapping)
38
-
39
- # Change time to UTC
40
- df = df.assign(
41
- timestamp=lambda x: pd.Timestamp.now(tz="Asia/Shanghai").tz_convert("UTC")
42
- )
43
-
44
- required_columns = [
45
- "symbol",
46
- "price",
47
- "change",
48
- "pct_change",
49
- "timestamp",
50
- "volume",
51
- "amount",
52
- "open",
53
- "high",
54
- "low",
55
- "prev_close",
56
- ]
57
- return df[required_columns]
1
+ from cachetools import cached
2
+ import pandas as pd
3
+ import akshare as ak
4
+
5
+ from ..cache import CACHE_CONFIG
6
+ from .base import RealtimeDataProvider
7
+
8
+
9
+ class EastmoneyRealtime(RealtimeDataProvider):
10
+ @cached(
11
+ CACHE_CONFIG["realtime_cache"],
12
+ key=lambda self, symbol=None: f"eastmoney_{symbol if symbol else 'all'}",
13
+ )
14
+ def get_current_data(self) -> pd.DataFrame:
15
+ """获取沪深京A股实时行情数据"""
16
+ raw_df = ak.stock_zh_a_spot_em()
17
+ df = self._clean_spot_data(raw_df)
18
+ if self.symbol:
19
+ df = df[df["symbol"] == self.symbol].reset_index(drop=True)
20
+ return df
21
+
22
+ def _clean_spot_data(self, raw_df: pd.DataFrame) -> pd.DataFrame:
23
+ """清理和标准化实时行情数据"""
24
+ column_mapping = {
25
+ "代码": "symbol",
26
+ "最新价": "price",
27
+ "涨跌额": "change",
28
+ "涨跌幅": "pct_change",
29
+ "成交量": "volume",
30
+ "成交额": "amount",
31
+ "今开": "open",
32
+ "最高": "high",
33
+ "最低": "low",
34
+ "昨收": "prev_close",
35
+ }
36
+
37
+ df = raw_df.rename(columns=column_mapping)
38
+
39
+ # Change time to UTC
40
+ df = df.assign(
41
+ timestamp=lambda x: pd.Timestamp.now(tz="Asia/Shanghai").tz_convert("UTC")
42
+ )
43
+
44
+ required_columns = [
45
+ "symbol",
46
+ "price",
47
+ "change",
48
+ "pct_change",
49
+ "timestamp",
50
+ "volume",
51
+ "amount",
52
+ "open",
53
+ "high",
54
+ "low",
55
+ "prev_close",
56
+ ]
57
+ return df[required_columns]
@@ -1,37 +1,37 @@
1
- import pandas as pd
2
- from cachetools import cached
3
- from .base import RealtimeDataProvider
4
- from ..cache import CACHE_CONFIG
5
- from ..eastmoney.client import EastMoneyClient
6
- from ..eastmoney.utils import parse_realtime_data
7
-
8
-
9
- class EastMoneyDirectRealtime(RealtimeDataProvider):
10
- """Direct implementation for EastMoney realtime stock data API"""
11
-
12
- def __init__(self, symbol: str):
13
- super().__init__(symbol)
14
- self.client = EastMoneyClient()
15
-
16
- @cached(
17
- cache=CACHE_CONFIG["realtime_cache"],
18
- key=lambda self: f"eastmoney_direct_realtime_{self.symbol}",
19
- )
20
- def get_current_data(self) -> pd.DataFrame:
21
- """Get real-time stock data"""
22
- try:
23
- raw_data = self.client.fetch_realtime_quote(self.symbol)
24
-
25
- if raw_data.get("rc") != 0:
26
- raise ValueError(f"API returned error: {raw_data.get('msg')}")
27
-
28
- df = parse_realtime_data(raw_data)
29
-
30
- # Ensure the output matches the base class definition
31
- if self.symbol:
32
- df = df[df["symbol"] == self.symbol].reset_index(drop=True)
33
-
34
- return df
35
-
36
- except Exception as e:
37
- raise ValueError(f"Failed to get real-time data for {self.symbol}: {e}")
1
+ import pandas as pd
2
+ from cachetools import cached
3
+ from .base import RealtimeDataProvider
4
+ from ..cache import CACHE_CONFIG
5
+ from ..eastmoney.client import EastMoneyClient
6
+ from ..eastmoney.utils import parse_realtime_data
7
+
8
+
9
+ class EastMoneyDirectRealtime(RealtimeDataProvider):
10
+ """Direct implementation for EastMoney realtime stock data API"""
11
+
12
+ def __init__(self, symbol: str):
13
+ super().__init__(symbol)
14
+ self.client = EastMoneyClient()
15
+
16
+ @cached(
17
+ cache=CACHE_CONFIG["realtime_cache"],
18
+ key=lambda self: f"eastmoney_direct_realtime_{self.symbol}",
19
+ )
20
+ def get_current_data(self) -> pd.DataFrame:
21
+ """Get real-time stock data"""
22
+ try:
23
+ raw_data = self.client.fetch_realtime_quote(self.symbol)
24
+
25
+ if raw_data.get("rc") != 0:
26
+ raise ValueError(f"API returned error: {raw_data.get('msg')}")
27
+
28
+ df = parse_realtime_data(raw_data)
29
+
30
+ # Ensure the output matches the base class definition
31
+ if self.symbol:
32
+ df = df[df["symbol"] == self.symbol].reset_index(drop=True)
33
+
34
+ return df
35
+
36
+ except Exception as e:
37
+ raise ValueError(f"Failed to get real-time data for {self.symbol}: {e}")
@@ -1,48 +1,48 @@
1
- from .eastmoney import EastmoneyRealtime
2
- from .xueqiu import XueQiuRealtime
3
- from .base import RealtimeDataProvider
4
- from .eastmoney_direct import EastMoneyDirectRealtime
5
-
6
-
7
- class RealtimeDataFactory:
8
- """
9
- Factory class for creating realtime data providers
10
- """
11
-
12
- _providers = {
13
- "eastmoney": EastmoneyRealtime,
14
- "xueqiu": XueQiuRealtime,
15
- "eastmoney_direct": EastMoneyDirectRealtime,
16
- }
17
-
18
- @classmethod
19
- def get_provider(cls, provider_name: str, **kwargs) -> RealtimeDataProvider:
20
- """
21
- Get a realtime data provider by name
22
-
23
- Args:
24
- provider_name: Name of the provider (e.g., 'eastmoney')
25
- **kwargs: Additional arguments to pass to the provider's constructor
26
-
27
- Returns:
28
- RealtimeDataProvider: An instance of the requested provider
29
-
30
- Raises:
31
- ValueError: If the requested provider is not found
32
- """
33
- provider_class = cls._providers.get(provider_name.lower())
34
- if not provider_class:
35
- raise ValueError(f"Unknown realtime data provider: {provider_name}")
36
-
37
- return provider_class(**kwargs)
38
-
39
- @classmethod
40
- def register_provider(cls, name: str, provider_class: type):
41
- """
42
- Register a new realtime data provider
43
-
44
- Args:
45
- name: Name to associate with this provider
46
- provider_class: The provider class to register
47
- """
48
- cls._providers[name.lower()] = provider_class
1
+ from .eastmoney import EastmoneyRealtime
2
+ from .xueqiu import XueQiuRealtime
3
+ from .base import RealtimeDataProvider
4
+ from .eastmoney_direct import EastMoneyDirectRealtime
5
+
6
+
7
+ class RealtimeDataFactory:
8
+ """
9
+ Factory class for creating realtime data providers
10
+ """
11
+
12
+ _providers = {
13
+ "eastmoney": EastmoneyRealtime,
14
+ "xueqiu": XueQiuRealtime,
15
+ "eastmoney_direct": EastMoneyDirectRealtime,
16
+ }
17
+
18
+ @classmethod
19
+ def get_provider(cls, provider_name: str, **kwargs) -> RealtimeDataProvider:
20
+ """
21
+ Get a realtime data provider by name
22
+
23
+ Args:
24
+ provider_name: Name of the provider (e.g., 'eastmoney')
25
+ **kwargs: Additional arguments to pass to the provider's constructor
26
+
27
+ Returns:
28
+ RealtimeDataProvider: An instance of the requested provider
29
+
30
+ Raises:
31
+ ValueError: If the requested provider is not found
32
+ """
33
+ provider_class = cls._providers.get(provider_name.lower())
34
+ if not provider_class:
35
+ raise ValueError(f"Unknown realtime data provider: {provider_name}")
36
+
37
+ return provider_class(**kwargs)
38
+
39
+ @classmethod
40
+ def register_provider(cls, name: str, provider_class: type):
41
+ """
42
+ Register a new realtime data provider
43
+
44
+ Args:
45
+ name: Name to associate with this provider
46
+ provider_class: The provider class to register
47
+ """
48
+ cls._providers[name.lower()] = provider_class
@@ -1,60 +1,60 @@
1
- from cachetools import cached
2
- import pandas as pd
3
- import akshare as ak
4
- from ..utils import convert_xieqiu_symbol
5
- from ..cache import CACHE_CONFIG
6
- from .base import RealtimeDataProvider
7
-
8
-
9
- class XueQiuRealtime(RealtimeDataProvider):
10
- @cached(
11
- cache=CACHE_CONFIG["realtime_cache"],
12
- key=lambda self, symbol=None: f"xueqiu_{symbol}",
13
- )
14
- def get_current_data(self) -> pd.DataFrame:
15
- """获取雪球实时行情数据
16
-
17
- Args:
18
- symbol: 股票代码 ("600000")
19
-
20
- Returns:
21
- pd.DataFrame with columns:
22
- - symbol: 股票代码
23
- - price: 最新价
24
- - change: 涨跌额
25
- - pct_change: 涨跌幅(%)
26
- - timestamp: 时间戳
27
- - volume: 成交量(手)
28
- - amount: 成交额(元)
29
- - open: 今开
30
- - high: 最高
31
- - low: 最低
32
- - prev_close: 昨收
33
- """
34
- raw_df = ak.stock_individual_spot_xq(symbol=convert_xieqiu_symbol(self.symbol))
35
-
36
- # Transform to match standard format
37
- data = {
38
- "symbol": self.symbol,
39
- "price": float(raw_df.loc[raw_df["item"] == "现价", "value"].values[0]),
40
- "change": float(raw_df.loc[raw_df["item"] == "涨跌", "value"].values[0]),
41
- "pct_change": float(
42
- raw_df.loc[raw_df["item"] == "涨幅", "value"].values[0]
43
- ),
44
- "timestamp": pd.to_datetime(
45
- raw_df.loc[raw_df["item"] == "时间", "value"].values[0]
46
- )
47
- .tz_localize("Asia/Shanghai")
48
- .tz_convert("UTC"),
49
- "volume": int(raw_df.loc[raw_df["item"] == "成交量", "value"].values[0])
50
- / 100,
51
- "amount": float(raw_df.loc[raw_df["item"] == "成交额", "value"].values[0]),
52
- "open": float(raw_df.loc[raw_df["item"] == "今开", "value"].values[0]),
53
- "high": float(raw_df.loc[raw_df["item"] == "最高", "value"].values[0]),
54
- "low": float(raw_df.loc[raw_df["item"] == "最低", "value"].values[0]),
55
- "prev_close": float(
56
- raw_df.loc[raw_df["item"] == "昨收", "value"].values[0]
57
- ),
58
- }
59
-
60
- return pd.DataFrame([data])
1
+ from cachetools import cached
2
+ import pandas as pd
3
+ import akshare as ak
4
+ from ..utils import convert_xieqiu_symbol
5
+ from ..cache import CACHE_CONFIG
6
+ from .base import RealtimeDataProvider
7
+
8
+
9
+ class XueQiuRealtime(RealtimeDataProvider):
10
+ @cached(
11
+ cache=CACHE_CONFIG["realtime_cache"],
12
+ key=lambda self, symbol=None: f"xueqiu_{symbol}",
13
+ )
14
+ def get_current_data(self) -> pd.DataFrame:
15
+ """获取雪球实时行情数据
16
+
17
+ Args:
18
+ symbol: 股票代码 ("600000")
19
+
20
+ Returns:
21
+ pd.DataFrame with columns:
22
+ - symbol: 股票代码
23
+ - price: 最新价
24
+ - change: 涨跌额
25
+ - pct_change: 涨跌幅(%)
26
+ - timestamp: 时间戳
27
+ - volume: 成交量(手)
28
+ - amount: 成交额(元)
29
+ - open: 今开
30
+ - high: 最高
31
+ - low: 最低
32
+ - prev_close: 昨收
33
+ """
34
+ raw_df = ak.stock_individual_spot_xq(symbol=convert_xieqiu_symbol(self.symbol))
35
+
36
+ # Transform to match standard format
37
+ data = {
38
+ "symbol": self.symbol,
39
+ "price": float(raw_df.loc[raw_df["item"] == "现价", "value"].values[0]),
40
+ "change": float(raw_df.loc[raw_df["item"] == "涨跌", "value"].values[0]),
41
+ "pct_change": float(
42
+ raw_df.loc[raw_df["item"] == "涨幅", "value"].values[0]
43
+ ),
44
+ "timestamp": pd.to_datetime(
45
+ raw_df.loc[raw_df["item"] == "时间", "value"].values[0]
46
+ )
47
+ .tz_localize("Asia/Shanghai")
48
+ .tz_convert("UTC"),
49
+ "volume": int(raw_df.loc[raw_df["item"] == "成交量", "value"].values[0])
50
+ / 100,
51
+ "amount": float(raw_df.loc[raw_df["item"] == "成交额", "value"].values[0]),
52
+ "open": float(raw_df.loc[raw_df["item"] == "今开", "value"].values[0]),
53
+ "high": float(raw_df.loc[raw_df["item"] == "最高", "value"].values[0]),
54
+ "low": float(raw_df.loc[raw_df["item"] == "最低", "value"].values[0]),
55
+ "prev_close": float(
56
+ raw_df.loc[raw_df["item"] == "昨收", "value"].values[0]
57
+ ),
58
+ }
59
+
60
+ return pd.DataFrame([data])
@@ -1,10 +1,10 @@
1
- def convert_xieqiu_symbol(symbol: str) -> str:
2
- """
3
- Convert Symbol (600000) to XueQiu Symbol (SH600000)
4
- """
5
- if symbol.startswith("6"):
6
- return f"SH{symbol}"
7
- elif symbol.startswith("0") or symbol.startswith("3"):
8
- return f"SZ{symbol}"
9
- else: # TODO: add more cases
10
- return symbol
1
+ def convert_xieqiu_symbol(symbol: str) -> str:
2
+ """
3
+ Convert Symbol (600000) to XueQiu Symbol (SH600000)
4
+ """
5
+ if symbol.startswith("6"):
6
+ return f"SH{symbol}"
7
+ elif symbol.startswith("0") or symbol.startswith("3"):
8
+ return f"SZ{symbol}"
9
+ else: # TODO: add more cases
10
+ return symbol
@@ -1,70 +1,70 @@
1
- Metadata-Version: 2.4
2
- Name: akshare-one
3
- Version: 0.3.1
4
- Summary: Standardized interface for Chinese financial market data, built on AKShare with unified data formats and simplified APIs
5
- License-Expression: MIT
6
- Project-URL: Homepage, https://github.com/zwldarren/akshare-one
7
- Project-URL: Repository, https://github.com/zwldarren/akshare-one.git
8
- Keywords: akshare,financial-data,stock-data,quant
9
- Requires-Python: >=3.12
10
- Description-Content-Type: text/markdown
11
- License-File: LICENSE
12
- Requires-Dist: akshare>=1.17.15
13
- Requires-Dist: cachetools>=6.1.0
14
- Provides-Extra: talib
15
- Requires-Dist: ta-lib>=0.6.4; extra == "talib"
16
- Dynamic: license-file
17
-
18
- <div align="center">
19
- <h1>AKShare One</h1>
20
- <div>
21
- <a href="README_zh.md">中文</a> | <strong>English</strong>
22
- </div>
23
- </div>
24
-
25
- **AKShare One** is a data interface for obtaining Chinese A-shares, based on [AKShare](https://github.com/akfamily/akshare). It aims to simplify AKShare's usage and unify input/output formats from different data sources, making it easier to pass data to LLM.
26
-
27
- ## ✨ Features
28
-
29
- - 📊 Unified stock code formats across data sources
30
- - 🏗️ Standardized return data structures
31
- - 🛠️ Simplified API parameter design
32
- - ⏱️ Automatic timestamp and adjustment handling
33
-
34
- ## 🚀 Core Features
35
-
36
- | Function | Interface |
37
- |------|------|
38
- | Historical data | `get_hist_data` |
39
- | Real-time quotes | `get_realtime_data` |
40
- | Stock news | `get_news_data` |
41
- | Financial data | `get_balance_sheet`/`get_income_statement`/`get_cash_flow` |
42
- | Internal transactions | `get_inner_trade_data` |
43
- | Technical indicators | See [indicators.py](akshare_one/indicators.py) |
44
-
45
- ## 📦 Quick Installation
46
-
47
- ```bash
48
- pip install akshare-one
49
- ```
50
-
51
- ## 💻 Usage Example
52
-
53
- ```python
54
- from akshare_one import get_hist_data
55
- from akshare_one.indicators import get_sma
56
-
57
- # Get historical data
58
- df = get_hist_data(
59
- symbol="600000",
60
- interval="day",
61
- adjust="hfq"
62
- )
63
-
64
- # Calculate 20-day Simple Moving Average
65
- df_sma = get_sma(df, window=20)
66
- ```
67
-
68
- ## 📚 Documentation
69
-
70
- Detailed API reference: [docs/api.md](docs/api.md)
1
+ Metadata-Version: 2.4
2
+ Name: akshare-one
3
+ Version: 0.3.3
4
+ Summary: Standardized interface for Chinese financial market data, built on AKShare with unified data formats and simplified APIs
5
+ License-Expression: MIT
6
+ Project-URL: Homepage, https://github.com/zwldarren/akshare-one
7
+ Project-URL: Repository, https://github.com/zwldarren/akshare-one.git
8
+ Keywords: akshare,financial-data,stock-data,quant
9
+ Requires-Python: >=3.10
10
+ Description-Content-Type: text/markdown
11
+ License-File: LICENSE
12
+ Requires-Dist: akshare>=1.17.20
13
+ Requires-Dist: cachetools>=5.5.2
14
+ Provides-Extra: talib
15
+ Requires-Dist: ta-lib>=0.6.4; extra == "talib"
16
+ Dynamic: license-file
17
+
18
+ <div align="center">
19
+ <h1>AKShare One</h1>
20
+ <div>
21
+ <a href="README_zh.md">中文</a> | <strong>English</strong>
22
+ </div>
23
+ </div>
24
+
25
+ **AKShare One** is a data interface for obtaining Chinese A-shares, based on [AKShare](https://github.com/akfamily/akshare). It aims to simplify AKShare's usage and unify input/output formats from different data sources, making it easier to pass data to LLM.
26
+
27
+ ## ✨ Features
28
+
29
+ - 📊 Unified stock code formats across data sources
30
+ - 🏗️ Standardized return data structures
31
+ - 🛠️ Simplified API parameter design
32
+ - ⏱️ Automatic timestamp and adjustment handling
33
+
34
+ ## 🚀 Core Features
35
+
36
+ | Function | Interface |
37
+ |------|------|
38
+ | Historical data | `get_hist_data` |
39
+ | Real-time quotes | `get_realtime_data` |
40
+ | Stock news | `get_news_data` |
41
+ | Financial data | `get_balance_sheet`/`get_income_statement`/`get_cash_flow` |
42
+ | Internal transactions | `get_inner_trade_data` |
43
+ | Technical indicators | See [indicators.py](akshare_one/indicators.py) |
44
+
45
+ ## 📦 Quick Installation
46
+
47
+ ```bash
48
+ pip install akshare-one
49
+ ```
50
+
51
+ ## 💻 Usage Example
52
+
53
+ ```python
54
+ from akshare_one import get_hist_data
55
+ from akshare_one.indicators import get_sma
56
+
57
+ # Get historical data
58
+ df = get_hist_data(
59
+ symbol="600000",
60
+ interval="day",
61
+ adjust="hfq"
62
+ )
63
+
64
+ # Calculate 20-day Simple Moving Average
65
+ df_sma = get_sma(df, window=20)
66
+ ```
67
+
68
+ ## 📚 Documentation
69
+
70
+ Detailed API reference: [docs/api.md](docs/api.md)
@@ -0,0 +1,39 @@
1
+ akshare_one/__init__.py,sha256=FskUp8Xpt9eN79AA2YZMLm53XGjYj2EYvuD0jkRLWsY,6504
2
+ akshare_one/indicators.py,sha256=x3Amff9CG_GvQpA-sqGfFwEAIvaaXlBxDfzTxD05taQ,12533
3
+ akshare_one/modules/cache.py,sha256=t8zaB9mvvskivBpuS2SjiR1q07CzRNJb2xtkjyZgBPk,465
4
+ akshare_one/modules/utils.py,sha256=msHqsjWSRULbX-3Bnit1p26a4a7MOEuNfkPSaECXr4k,333
5
+ akshare_one/modules/eastmoney/client.py,sha256=npxW6H8tfehDBAVAsUBOD0T4zpn7OnXfM-t2ZWr02hs,3206
6
+ akshare_one/modules/eastmoney/utils.py,sha256=0hs1kE51kZs3A9cOK448w5K8YKHaKZi0WWgtGZHVPGc,3000
7
+ akshare_one/modules/financial/base.py,sha256=TG3ncf3rXfgWCk4qUORN01uxT1SgLWiyjkt5Jb9eoxo,688
8
+ akshare_one/modules/financial/eastmoney.py,sha256=xVKJLT8kS8eZ_eQHkSMNDcMIi9CHwCIGwvuqj1cYBWw,6762
9
+ akshare_one/modules/financial/factory.py,sha256=UV6_ebqXGkmlfcfb39aX5hBjXyBLi29WbZ4AqxaPcXU,1442
10
+ akshare_one/modules/financial/sina.py,sha256=cclYraGz1O01fwYmY55VJCbyoT3kURCQTNENYNL7xRs,12948
11
+ akshare_one/modules/historical/base.py,sha256=4jdHW99-5U1mzv0WPopIkxeh20yYUDrNFzn7xazfwZU,1292
12
+ akshare_one/modules/historical/eastmoney.py,sha256=VbOaf0zXxuGmmm60x4FMh-9T5N9mYTUGmG1suMFUPfU,8489
13
+ akshare_one/modules/historical/eastmoney_direct.py,sha256=EF5AhViBwdNywqZnJYacRrdw4Up0gbuUr7RgssK7rpw,2893
14
+ akshare_one/modules/historical/factory.py,sha256=qfMod5HSV-itE-i1ludIp0w8Zq7Vjp2LPomajVd5Kjc,1548
15
+ akshare_one/modules/historical/sina.py,sha256=CI7eiXG7xo-2J6TEyq0Lr25vogAedbSa3mMHI9REgIQ,8939
16
+ akshare_one/modules/indicators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ akshare_one/modules/indicators/base.py,sha256=DhFivpVIUIkdIv24U2WoOy1GCDySxsw0tD0-rBRe5Lc,4376
18
+ akshare_one/modules/indicators/factory.py,sha256=pKx57oej_L0Lz3kkXwzVievKpOYph0T_Y7fzSwO3Zd4,1021
19
+ akshare_one/modules/indicators/simple.py,sha256=vAqE3v9HYpW-Sy6KsG9oV5fppWchQTxtz1M_508sQtY,9342
20
+ akshare_one/modules/indicators/talib.py,sha256=w0KpV-BXVxU0LmWs_EbXJUFgo9dbMeUQijjJMkjtWtU,10773
21
+ akshare_one/modules/info/base.py,sha256=Kof-e1I2usx1VOc1d05kyL-8B_QEDOsbry4R3dV0zZE,697
22
+ akshare_one/modules/info/eastmoney.py,sha256=Ou4BTw_PC1tJcEpoRTqrR-hqjgcDjWHuX6InbYiCXLU,1663
23
+ akshare_one/modules/info/factory.py,sha256=xvwPrgce0p9U4qAQBJM7FFw3zJks6m2hLHwHf0t1rfU,1308
24
+ akshare_one/modules/insider/base.py,sha256=NE45w-B9sQ2AoUSSKNPU9U6wPHK4fiLV5Zgj_byrBMQ,977
25
+ akshare_one/modules/insider/factory.py,sha256=32bueJA3E8yCZc0v5EAen_48RZ23yojYzpzaZyQ6WnA,1324
26
+ akshare_one/modules/insider/xueqiu.py,sha256=6WKEvdE-8cjVQjTsJIkgnqhaQUS5sXZCyxKPLMLyers,4109
27
+ akshare_one/modules/news/base.py,sha256=D5BDtRQ9vdi1Gj-ikbtjAaCAbimW6mCEhRo_NJTmqN4,581
28
+ akshare_one/modules/news/eastmoney.py,sha256=2gPEnzQ347MJMXAUsxxu8MnizvCrfGPse9V83wfCsXE,1380
29
+ akshare_one/modules/news/factory.py,sha256=3FMkNBpYF7l-v2NHHR5TzbvklQNzJ-R_XzG8AlRjJcg,1308
30
+ akshare_one/modules/realtime/base.py,sha256=eYicSs7E4qmcpQ-8TnbfmJvsK0VQoezVK7Zobqh5xPk,729
31
+ akshare_one/modules/realtime/eastmoney.py,sha256=IRAPokCm_-aOn16w5_dkbKVjdYcqL-y7GSHrSgOjT2E,1707
32
+ akshare_one/modules/realtime/eastmoney_direct.py,sha256=HiHrhsTcDTswMg4b7JSUXHLtf-oYziWxLGXLhFJ2pYo,1275
33
+ akshare_one/modules/realtime/factory.py,sha256=_7jBDgqWqkt5xTTT1SpZoUHM9IpMRpcUQeyyCglM5z0,1528
34
+ akshare_one/modules/realtime/xueqiu.py,sha256=j_cjJZD0fTva_jgXKeQAJSFVHKJHb5zMu3Crf_8zLs0,2301
35
+ akshare_one-0.3.3.dist-info/licenses/LICENSE,sha256=3bqxoD7aU4QS7kpNtQmRd4MikxXe6Gtm_DrojyFHGAc,1087
36
+ akshare_one-0.3.3.dist-info/METADATA,sha256=a2RtfPXBTGrbQu4dlHfJs_NuvHyWKnOEX4pTXhtaWKk,2132
37
+ akshare_one-0.3.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
38
+ akshare_one-0.3.3.dist-info/top_level.txt,sha256=kNiucyLVAGa89wmUSpXbBLWD7pF_RuahuiaOfLHZSyw,12
39
+ akshare_one-0.3.3.dist-info/RECORD,,
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 zwldarren
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2025 zwldarren
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.