pfeed 0.0.1.dev8__tar.gz → 0.0.1.dev10__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.dev10}/PKG-INFO +20 -5
  2. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/README.md +14 -0
  3. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/etl.py +22 -7
  4. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/feeds/bybit_feed.py +11 -5
  5. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/filepath.py +2 -0
  6. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/sources/bybit/__init__.py +0 -1
  7. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pyproject.toml +10 -9
  8. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/LICENSE +0 -0
  9. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/__init__.py +0 -0
  10. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/cli/__init__.py +0 -0
  11. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/cli/commands/__init__.py +0 -0
  12. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/cli/commands/config.py +0 -0
  13. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/cli/commands/docker_compose.py +0 -0
  14. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/cli/commands/download.py +0 -0
  15. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/cli/commands/stream.py +0 -0
  16. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/cli/main.py +0 -0
  17. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/config/logging.yml +0 -0
  18. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/config_handler.py +0 -0
  19. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/const/commons.py +0 -0
  20. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/const/paths.py +0 -0
  21. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/data_tools/data_tool_pandas.py +0 -0
  22. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/data_tools/data_tool_polars.py +0 -0
  23. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/data_tools/data_tool_pyspark.py +0 -0
  24. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/datastore.py +0 -0
  25. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/feeds/__init__.py +0 -0
  26. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/feeds/base_feed.py +0 -0
  27. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/feeds/custom_csv_feed.py +0 -0
  28. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/feeds/yahoo_finance_feed.py +0 -0
  29. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/main.py +0 -0
  30. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/sources/__init__.py +0 -0
  31. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/sources/bybit/api.py +0 -0
  32. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/sources/bybit/const.py +0 -0
  33. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/sources/bybit/download.py +0 -0
  34. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/sources/bybit/stream.py +0 -0
  35. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/types/common_literals.py +0 -0
  36. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/utils/monitor.py +0 -0
  37. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/pfeed/utils/utils.py +0 -0
  38. {pfeed-0.0.1.dev8 → pfeed-0.0.1.dev10}/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.dev10
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.dev10,<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
@@ -1,18 +1,28 @@
1
1
  '''ETL = Extract, Transform, Load data'''
2
+ from __future__ import annotations
3
+
2
4
  import io
3
5
  import logging
4
6
  import importlib
5
7
 
8
+ from typing import TYPE_CHECKING
9
+ if TYPE_CHECKING:
10
+ from pfeed.types.common_literals import tSUPPORTED_DATA_TOOLS, tSUPPORTED_DOWNLOAD_DATA_SOURCES, tSUPPORTED_DATA_SINKS, tSUPPORTED_DATA_TYPES, tSUPPORTED_DATA_MODES
11
+
6
12
  import pandas as pd
7
- from minio.error import MinioException
8
13
 
9
- from pfeed.datastore import Datastore
14
+ try:
15
+ from pfeed.datastore import Datastore, MinioException
16
+ except ImportError:
17
+ pass
10
18
  from pfeed.filepath import FilePath
11
19
  from pfeed.config_handler import ConfigHandler
12
20
  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
21
  from pfund.datas.resolution import Resolution
22
+ try:
23
+ from pfeed.utils.monitor import print_disk_usage
24
+ except ImportError:
25
+ print_disk_usage = None
16
26
 
17
27
 
18
28
  logger = logging.getLogger('pfeed')
@@ -47,7 +57,7 @@ def get_data(
47
57
 
48
58
  Returns:
49
59
  bytes | None: The extracted data as bytes, or None if the data is not found.
50
- """
60
+ """
51
61
  for data_sink in SUPPORTED_DATA_SINKS:
52
62
  try:
53
63
  data: bytes = extract_data(data_sink, data_source, dtype, pdt, date, mode=mode)
@@ -173,7 +183,8 @@ def load_data(
173
183
  logger.info(f'loaded {data_source} data to MinIO object {object_name} {kwargs=}')
174
184
  else:
175
185
  raise NotImplementedError(f'{data_sink=}')
176
- print_disk_usage(config.data_path)
186
+ if print_disk_usage:
187
+ print_disk_usage(config.data_path)
177
188
 
178
189
 
179
190
  def clean_raw_data(data_source: tSUPPORTED_DOWNLOAD_DATA_SOURCES, raw_data: bytes) -> bytes:
@@ -209,5 +220,9 @@ def clean_raw_tick_data(raw_tick: bytes) -> bytes:
209
220
 
210
221
 
211
222
  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()}')
223
+ try:
224
+ data_tool = importlib.import_module(f'pfeed.data_tools.data_tool_{data_tool.lower()}')
225
+ except ImportError:
226
+ # fallback data_tool to pandas
227
+ data_tool = importlib.import_module('pfeed.data_tools.data_tool_pandas')
213
228
  return data_tool.resample_data(data, resolution, check_if_drop_last_bar=check_if_drop_last_bar)
@@ -1,21 +1,27 @@
1
1
  """High-level API for getting historical/streaming data from Bybit."""
2
+ from __future__ import annotations
3
+
2
4
  import datetime
3
5
 
4
- from typing import Literal
6
+ from typing import Literal, TYPE_CHECKING
7
+ if TYPE_CHECKING:
8
+ from pfeed.types.common_literals import tSUPPORTED_DATA_TOOLS
5
9
 
6
- import polars as pl
7
- import pandas as pd
10
+ try:
11
+ import pandas as pd
12
+ import polars as pl
13
+ from pfeed.data_tools.data_tool_polars import estimate_memory_usage
14
+ except ImportError:
15
+ pass
8
16
 
9
17
  from pfeed import etl
10
18
  from pfeed.config_handler import ConfigHandler
11
19
  from pfeed.const.commons import SUPPORTED_DATA_TOOLS
12
- from pfeed.types.common_literals import tSUPPORTED_DATA_TOOLS
13
20
  from pfeed.feeds.base_feed import BaseFeed
14
21
  from pfeed.sources.bybit import api
15
22
  from pfeed.sources.bybit.const import DATA_SOURCE, SUPPORTED_PRODUCT_TYPES, create_efilename, SUPPORTED_RAW_DATA_TYPES
16
23
  from pfeed.utils.utils import get_dates_in_between, rollback_date_range
17
24
  from pfeed.utils.validate import validate_pdt
18
- from pfeed.data_tools.data_tool_polars import estimate_memory_usage
19
25
  # from pfund.exchanges.bybit.exchange import Exchange
20
26
 
21
27
 
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  from dataclasses import dataclass, field
2
4
  from pathlib import Path
3
5
 
@@ -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.dev10"
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.dev10"
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