Skip to content

Commit 2447357

Browse files
Copilot4n4nd
andcommitted
Add optional dependencies support via extras_require
- Create requirements-core.txt with only core dependencies (requests, dateparser) - Update setup.py to support extras_require with 'dataframe', 'numpy', 'plot', and 'all' options - Update README.md with installation instructions for optional dependencies - Users can now install minimal version without pandas/matplotlib/numpy for reduced memory footprint Co-authored-by: 4n4nd <22333506+4n4nd@users.noreply.github.com>
1 parent d6dd79d commit 2447357

3 files changed

Lines changed: 22 additions & 2 deletions

File tree

README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,18 @@ To install the latest release:
1111

1212
`pip install prometheus-api-client`
1313

14+
To install with all optional dependencies (pandas, numpy, matplotlib):
15+
16+
`pip install prometheus-api-client[all]`
17+
18+
**Note:** Starting from version 0.6.0, pandas, numpy, and matplotlib are optional dependencies.
19+
If you only need `PrometheusConnect` without DataFrame support or plotting capabilities, you can install the minimal version which significantly reduces memory footprint and installation time, especially on Alpine-based Docker images.
20+
21+
To install only specific extras:
22+
- For DataFrame support: `pip install prometheus-api-client[dataframe]`
23+
- For numpy support: `pip install prometheus-api-client[numpy]`
24+
- For plotting support: `pip install prometheus-api-client[plot]`
25+
1426
To install directly from this branch:
1527

1628
`pip install https://github.com/4n4nd/prometheus-api-client-python/zipball/master`

requirements-core.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
requests
2+
dateparser

setup.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77

88

99
def get_install_requires():
10-
"""Get requirements from requirements.txt."""
11-
with open("requirements.txt", "r") as requirements_file:
10+
"""Get core requirements from requirements-core.txt."""
11+
with open("requirements-core.txt", "r") as requirements_file:
1212
res = requirements_file.readlines()
1313
return [req.split(" ", maxsplit=1)[0] for req in res if req]
1414

@@ -36,6 +36,12 @@ def get_version():
3636
long_description_content_type="text/markdown",
3737
url="https://github.com/4n4nd/prometheus-api-client-python",
3838
install_requires=get_install_requires(),
39+
extras_require={
40+
"dataframe": ["pandas>=1.4.0"],
41+
"numpy": ["numpy"],
42+
"plot": ["matplotlib"],
43+
"all": ["pandas>=1.4.0", "numpy", "matplotlib"],
44+
},
3945
packages=setuptools.find_packages(),
4046
package_data={"prometheus-api-client": ["py.typed"]},
4147
tests_require=["httmock"],

0 commit comments

Comments
 (0)