pfeed 0.0.1.dev8__tar.gz → 0.0.1.dev9__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.
Files changed (38) hide show
  1. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/PKG-INFO +20 -5
  2. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/README.md +14 -0
  3. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/etl.py +20 -7
  4. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/sources/bybit/__init__.py +0 -1
  5. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pyproject.toml +10 -9
  6. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/LICENSE +0 -0
  7. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/__init__.py +0 -0
  8. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/cli/__init__.py +0 -0
  9. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/cli/commands/__init__.py +0 -0
  10. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/cli/commands/config.py +0 -0
  11. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/cli/commands/docker_compose.py +0 -0
  12. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/cli/commands/download.py +0 -0
  13. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/cli/commands/stream.py +0 -0
  14. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/cli/main.py +0 -0
  15. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/config/logging.yml +0 -0
  16. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/config_handler.py +0 -0
  17. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/const/commons.py +0 -0
  18. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/const/paths.py +0 -0
  19. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/data_tools/data_tool_pandas.py +0 -0
  20. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/data_tools/data_tool_polars.py +0 -0
  21. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/data_tools/data_tool_pyspark.py +0 -0
  22. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/datastore.py +0 -0
  23. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/feeds/__init__.py +0 -0
  24. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/feeds/base_feed.py +0 -0
  25. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/feeds/bybit_feed.py +0 -0
  26. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/feeds/custom_csv_feed.py +0 -0
  27. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/feeds/yahoo_finance_feed.py +0 -0
  28. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/filepath.py +0 -0
  29. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/main.py +0 -0
  30. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/sources/__init__.py +0 -0
  31. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/sources/bybit/api.py +0 -0
  32. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/sources/bybit/const.py +0 -0
  33. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/sources/bybit/download.py +0 -0
  34. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/sources/bybit/stream.py +0 -0
  35. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/types/common_literals.py +0 -0
  36. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/utils/monitor.py +0 -0
  37. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/utils/utils.py +0 -0
  38. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev9}/pfeed/utils/validate.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pfeed
3
- Version: 0.0.1.dev8
3
+ Version: 0.0.1.dev9
4
4
  Summary: Data pipeline for algo-trading, getting and storing both real-time and historical data made easy.
5
5
  Home-page: https://pfund.ai
6
6
  License: Apache-2.0
@@ -14,17 +14,18 @@ Classifier: Programming Language :: Python :: 3.10
14
14
  Classifier: Programming Language :: Python :: 3.11
15
15
  Classifier: Programming Language :: Python :: 3.12
16
16
  Provides-Extra: boost
17
+ Provides-Extra: data
17
18
  Provides-Extra: df
18
19
  Requires-Dist: beautifulsoup4 (>=4.12.3,<5.0.0)
19
20
  Requires-Dist: connectorx (>=0.3.2,<0.4.0) ; extra == "boost"
20
- Requires-Dist: minio (>=7.2.5,<8.0.0)
21
+ Requires-Dist: minio (>=7.2.5,<8.0.0) ; extra == "data"
21
22
  Requires-Dist: pandas (>=2.2.0,<3.0.0) ; extra == "df"
22
- Requires-Dist: pfund (>=0.0.1.dev8,<0.0.2)
23
+ Requires-Dist: pfund (>=0.0.1.dev9,<0.0.2)
23
24
  Requires-Dist: polars (>=0.20.16,<0.21.0) ; extra == "df"
25
+ Requires-Dist: psutil (>=5.9.8,<6.0.0) ; extra == "data"
24
26
  Requires-Dist: pyarrow (>=15.0.0,<16.0.0) ; extra == "boost"
25
27
  Requires-Dist: ray (>=2.10.0,<3.0.0) ; extra == "boost"
26
- Requires-Dist: s3fs (>=2024.3.1,<2025.0.0)
27
- Requires-Dist: tqdm (>=4.66.2,<5.0.0)
28
+ Requires-Dist: s3fs (>=2024.3.1,<2025.0.0) ; extra == "data"
28
29
  Requires-Dist: yfinance (>=0.2.37,<0.3.0)
29
30
  Project-URL: Documentation, https://pfeed-docs.pfund.ai
30
31
  Project-URL: Repository, https://github.com/PFund-Software-Ltd/pfeed
@@ -100,14 +101,28 @@ However, preparing this data for use is not quick and easy. For example, sometim
100
101
  ## Installation
101
102
  ### Using [Poetry](https://python-poetry.org) (Recommended)
102
103
  ```bash
104
+ # [RECOMMENDED]: dataframes (e.g. polars, pandas) + data storage (e.g. MinIO) + boosted performance
105
+ poetry add "pfeed[df,data,boost]"
106
+
107
+ # only for downloading data, e.g. Bybit and Yahoo Finance
103
108
  poetry add pfeed
109
+
110
+ # update to the latest version:
111
+ poetry update pfeed
104
112
  ```
105
113
 
106
114
  ### Using Pip
107
115
  ```bash
108
116
  pip install pfeed
117
+
118
+ # install the latest version:
119
+ pip install -U pfeed
109
120
  ```
110
121
 
122
+ ### Checking your installation
123
+ ```bash
124
+ $ pfeed --version
125
+ ```
111
126
 
112
127
  ## Quick Start
113
128
  ### Main Usage: Data Feed
@@ -68,14 +68,28 @@ However, preparing this data for use is not quick and easy. For example, sometim
68
68
  ## Installation
69
69
  ### Using [Poetry](https://python-poetry.org) (Recommended)
70
70
  ```bash
71
+ # [RECOMMENDED]: dataframes (e.g. polars, pandas) + data storage (e.g. MinIO) + boosted performance
72
+ poetry add "pfeed[df,data,boost]"
73
+
74
+ # only for downloading data, e.g. Bybit and Yahoo Finance
71
75
  poetry add pfeed
76
+
77
+ # update to the latest version:
78
+ poetry update pfeed
72
79
  ```
73
80
 
74
81
  ### Using Pip
75
82
  ```bash
76
83
  pip install pfeed
84
+
85
+ # install the latest version:
86
+ pip install -U pfeed
77
87
  ```
78
88
 
89
+ ### Checking your installation
90
+ ```bash
91
+ $ pfeed --version
92
+ ```
79
93
 
80
94
  ## Quick Start
81
95
  ### Main Usage: Data Feed
@@ -3,16 +3,24 @@ import io
3
3
  import logging
4
4
  import importlib
5
5
 
6
+ from typing import TYPE_CHECKING
7
+ if TYPE_CHECKING:
8
+ from pfeed.types.common_literals import tSUPPORTED_DATA_TOOLS, tSUPPORTED_DOWNLOAD_DATA_SOURCES, tSUPPORTED_DATA_SINKS, tSUPPORTED_DATA_TYPES, tSUPPORTED_DATA_MODES
9
+
6
10
  import pandas as pd
7
- from minio.error import MinioException
8
11
 
9
- from pfeed.datastore import Datastore
12
+ try:
13
+ from pfeed.datastore import Datastore, MinioException
14
+ except ImportError:
15
+ pass
10
16
  from pfeed.filepath import FilePath
11
17
  from pfeed.config_handler import ConfigHandler
12
18
  from pfeed.const.commons import SUPPORTED_DATA_TYPES, SUPPORTED_DATA_SINKS, SUPPORTED_DOWNLOAD_DATA_SOURCES, SUPPORTED_DATA_MODES
13
- from pfeed.types.common_literals import tSUPPORTED_DATA_TOOLS, tSUPPORTED_DOWNLOAD_DATA_SOURCES, tSUPPORTED_DATA_SINKS, tSUPPORTED_DATA_TYPES, tSUPPORTED_DATA_MODES
14
- from pfeed.utils.monitor import print_disk_usage
15
19
  from pfund.datas.resolution import Resolution
20
+ try:
21
+ from pfeed.utils.monitor import print_disk_usage
22
+ except ImportError:
23
+ print_disk_usage = None
16
24
 
17
25
 
18
26
  logger = logging.getLogger('pfeed')
@@ -47,7 +55,7 @@ def get_data(
47
55
 
48
56
  Returns:
49
57
  bytes | None: The extracted data as bytes, or None if the data is not found.
50
- """
58
+ """
51
59
  for data_sink in SUPPORTED_DATA_SINKS:
52
60
  try:
53
61
  data: bytes = extract_data(data_sink, data_source, dtype, pdt, date, mode=mode)
@@ -173,7 +181,8 @@ def load_data(
173
181
  logger.info(f'loaded {data_source} data to MinIO object {object_name} {kwargs=}')
174
182
  else:
175
183
  raise NotImplementedError(f'{data_sink=}')
176
- print_disk_usage(config.data_path)
184
+ if print_disk_usage:
185
+ print_disk_usage(config.data_path)
177
186
 
178
187
 
179
188
  def clean_raw_data(data_source: tSUPPORTED_DOWNLOAD_DATA_SOURCES, raw_data: bytes) -> bytes:
@@ -209,5 +218,9 @@ def clean_raw_tick_data(raw_tick: bytes) -> bytes:
209
218
 
210
219
 
211
220
  def resample_data(data: bytes, resolution: str | Resolution, data_tool: tSUPPORTED_DATA_TOOLS='polars', check_if_drop_last_bar=False) -> bytes:
212
- data_tool = importlib.import_module(f'pfeed.data_tools.data_tool_{data_tool.lower()}')
221
+ try:
222
+ data_tool = importlib.import_module(f'pfeed.data_tools.data_tool_{data_tool.lower()}')
223
+ except ImportError:
224
+ # fallback data_tool to pandas
225
+ data_tool = importlib.import_module('pfeed.data_tools.data_tool_pandas')
213
226
  return data_tool.resample_data(data, resolution, check_if_drop_last_bar=check_if_drop_last_bar)
@@ -1,4 +1,3 @@
1
- from pfeed import etl
2
1
  from pfeed.sources.bybit import api
3
2
  from pfeed.sources.bybit.const import DATA_SOURCE as name
4
3
  from pfeed.sources.bybit.download import download_historical_data, download_historical_data as download
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pfeed"
3
- version = "0.0.1.dev8"
3
+ version = "0.0.1.dev9"
4
4
  description = "Data pipeline for algo-trading, getting and storing both real-time and historical data made easy."
5
5
  license = "Apache-2.0"
6
6
  authors = ["Stephen Yau <softwareentrepreneer+pfeed@gmail.com>"]
@@ -12,20 +12,21 @@ keywords = ["trading", "algo-trading", "data pipeline", "ETL", "data lake", "dat
12
12
 
13
13
  [tool.poetry.dependencies]
14
14
  python = ">=3.10 <3.13"
15
- pfund = "^0.0.1.dev8"
15
+ pfund = "^0.0.1.dev9"
16
16
  beautifulsoup4 = "^4.12.3"
17
- tqdm = "^4.66.2"
18
- s3fs = "^2024.3.1"
19
- minio = "^7.2.5"
20
17
  yfinance = "^0.2.37"
21
- pandas = { version = "^2.2.0", optional = true}
22
- polars = { version = "^0.20.16", optional = true}
23
- connectorx = { version = "^0.3.2", optional = true}
18
+ psutil = { version = "^5.9.8", optional = true }
19
+ s3fs = { version = "^2024.3.1", optional = true }
20
+ minio = { version = "^7.2.5", optional = true }
21
+ pandas = { version = "^2.2.0", optional = true }
22
+ polars = { version = "^0.20.16", optional = true }
23
+ connectorx = { version = "^0.3.2", optional = true }
24
24
  pyarrow = { version = "^15.0.0", optional = true }
25
- ray = { version = "^2.10.0", optional = true}
25
+ ray = { version = "^2.10.0", optional = true }
26
26
 
27
27
  [tool.poetry.extras]
28
28
  df = ["pandas", "polars"]
29
+ data = ["psutil", "minio", "s3fs"]
29
30
  boost = ["pyarrow", "connectorx", "ray"]
30
31
 
31
32
  [tool.poetry.scripts]
File without changes
File without changes
File without changes
File without changes
File without changes