Skip to content

Commit 4231274

Browse files
authored
fix: Move Feast to pyproject.toml instead of setup.py (#5067)
1 parent 6372f1c commit 4231274

File tree

2 files changed

+173
-1
lines changed

2 files changed

+173
-1
lines changed

docs/roadmap.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ The list below contains the functionality that contributors are planning to deve
3737
* [x] [Azure Cache for Redis (community plugin)](https://github.com/Azure/feast-azure)
3838
* [x] [Postgres (contrib plugin)](https://docs.feast.dev/reference/online-stores/postgres)
3939
* [x] [Cassandra / AstraDB (contrib plugin)](https://docs.feast.dev/reference/online-stores/cassandra)
40+
* [x] [ScyllaDB (contrib plugin)](https://docs.feast.dev/reference/online-stores/scylladb)
4041
* [x] [Custom online store support](https://docs.feast.dev/how-to-guides/customizing-feast/adding-support-for-a-new-online-store)
4142
* **Feature Engineering**
4243
* [x] On-demand Transformations (Beta release. See [RFC](https://docs.google.com/document/d/1lgfIw0Drc65LpaxbUu49RCeJgMew547meSJttnUqz7c/edit#))

pyproject.toml

Lines changed: 172 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,167 @@
1+
[project]
2+
name = "feast"
3+
description = "Python SDK for Feast"
4+
readme = "README.md"
5+
requires-python = ">=3.9.0"
6+
license = {file = "LICENSE"}
7+
classifiers = [
8+
"License :: OSI Approved :: Apache Software License",
9+
"Programming Language :: Python",
10+
"Programming Language :: Python :: 3",
11+
"Programming Language :: Python :: 3.9"
12+
]
13+
dynamic = [
14+
"version",
15+
]
16+
dependencies = [
17+
"click>=7.0.0,<9.0.0",
18+
"colorama>=0.3.9,<1",
19+
"dill~=0.3.0",
20+
"protobuf>=4.24.0",
21+
"Jinja2>=2,<4",
22+
"jsonschema",
23+
"mmh3",
24+
"numpy>=1.22,<2",
25+
"pandas>=1.4.3,<3",
26+
"pyarrow<18.1.0",
27+
"pydantic>=2.0.0",
28+
"pygments>=2.12.0,<3",
29+
"PyYAML>=5.4.0,<7",
30+
"requests",
31+
"SQLAlchemy[mypy]>1",
32+
"tabulate>=0.8.0,<1",
33+
"tenacity>=7,<9",
34+
"toml>=0.10.0,<1",
35+
"tqdm>=4,<5",
36+
"typeguard>=4.0.0",
37+
"fastapi>=0.68.0",
38+
"uvicorn[standard]>=0.14.0,<1",
39+
"uvicorn-worker",
40+
"gunicorn; platform_system != 'Windows'",
41+
"dask[dataframe]>=2024.2.1",
42+
"prometheus_client",
43+
"psutil",
44+
"bigtree>=0.19.2",
45+
"pyjwt",
46+
]
47+
48+
[project.optional-dependencies]
49+
aws = ["boto3>=1.17.0,<2", "fsspec<=2024.9.0", "aiobotocore>2,<3"]
50+
azure = [
51+
"azure-storage-blob>=0.37.0",
52+
"azure-identity>=1.6.1",
53+
"SQLAlchemy>=1.4.19",
54+
"pyodbc>=4.0.30",
55+
"pymssql"
56+
]
57+
cassandra = ["cassandra-driver>=3.24.0,<4"]
58+
couchbase = ["couchbase==4.3.2"]
59+
delta = ["deltalake"]
60+
duckdb = ["ibis-framework[duckdb]>=9.0.0,<10"]
61+
elasticsearch = ["elasticsearch>=8.13.0"]
62+
faiss = ["faiss-cpu>=1.7.0,<2"]
63+
gcp = [
64+
"google-api-core>=1.23.0,<3",
65+
"googleapis-common-protos>=1.52.0,<2",
66+
"google-cloud-bigquery[pandas]>=2,<4",
67+
"google-cloud-bigquery-storage >= 2.0.0,<3",
68+
"google-cloud-datastore>=2.16.0,<3",
69+
"google-cloud-storage>=1.34.0,<3",
70+
"google-cloud-bigtable>=2.11.0,<3",
71+
"fsspec<=2024.9.0",
72+
]
73+
ge = ["great_expectations>=0.15.41"]
74+
go = ["cffi~=1.15.0"]
75+
grpcio = [
76+
"grpcio>=1.56.2,<2",
77+
"grpcio-reflection>=1.56.2,<2",
78+
"grpcio-health-checking>=1.56.2,<2",
79+
]
80+
hazelcast = ["hazelcast-python-client>=5.1"]
81+
hbase = ["happybase>=1.2.0,<3"]
82+
ibis = [
83+
"ibis-framework>=9.0.0,<10",
84+
"ibis-substrait>=4.0.0",
85+
]
86+
ikv = [
87+
"ikvpy>=0.0.36",
88+
]
89+
k8s = ["kubernetes<=20.13.0"]
90+
milvus = ["pymilvus"]
91+
mssql = ["ibis-framework[mssql]>=9.0.0,<10"]
92+
mysql = ["pymysql", "types-PyMySQL"]
93+
opentelemetry = ["prometheus_client", "psutil"]
94+
spark = ["pyspark>=3.0.0,<4"]
95+
trino = ["trino>=0.305.0,<0.400.0", "regex"]
96+
postgres = ["psycopg[binary,pool]>=3.0.0,<4"]
97+
qdrant = ["qdrant-client>=1.12.0"]
98+
redis = [
99+
"redis>=4.2.2,<5",
100+
"hiredis>=2.0.0,<3",
101+
]
102+
singlestore = ["singlestoredb<1.8.0"]
103+
snowflake = [
104+
"snowflake-connector-python[pandas]>=3.7,<4",
105+
]
106+
sqlite_vec = ["sqlite-vec==v0.1.6"]
107+
108+
ci = [
109+
"build",
110+
"virtualenv==20.23.0",
111+
"cryptography>=43.0,<44",
112+
"ruff>=0.8.0",
113+
"mypy-protobuf>=3.1",
114+
"grpcio-tools>=1.56.2,<2",
115+
"grpcio-testing>=1.56.2,<2",
116+
# FastAPI does not correctly pull starlette dependency on httpx see thread(https://github.com/tiangolo/fastapi/issues/5656).
117+
"httpx==0.27.2",
118+
"minio==7.2.11",
119+
"mock==2.0.0",
120+
"moto<5",
121+
"mypy>=1.4.1,<1.11.3",
122+
"urllib3>=1.25.4,<3",
123+
"psutil==5.9.0",
124+
"py>=1.11.0", # https://github.com/pytest-dev/pytest/issues/10420
125+
"pytest>=6.0.0,<8",
126+
"pytest-asyncio<=0.24.0",
127+
"pytest-cov",
128+
"pytest-xdist",
129+
"pytest-benchmark>=3.4.1,<4",
130+
"pytest-lazy-fixture==0.6.3",
131+
"pytest-timeout==1.4.2",
132+
"pytest-ordering~=0.6.0",
133+
"pytest-mock==1.10.4",
134+
"pytest-env",
135+
"Sphinx>4.0.0,<7",
136+
"testcontainers==4.8.2",
137+
"python-keycloak==4.2.2",
138+
"pre-commit<3.3.2",
139+
"assertpy==1.1",
140+
"pip-tools",
141+
"pybindgen",
142+
"types-protobuf~=3.19.22",
143+
"types-python-dateutil",
144+
"types-pytz",
145+
"types-PyYAML",
146+
"types-redis",
147+
"types-requests<2.31.0",
148+
"types-setuptools",
149+
"types-tabulate",
150+
"virtualenv<20.24.2",
151+
"feast[aws, azure, cassandra, couchbase, delta, duckdb, elasticsearch, faiss, gcp, ge, go, grpcio, hazelcast, hbase, ibis, ikv, k8s, milvus, mssql, mysql, opentelemetry, spark, trino, postgres, qdrant, redis, singlestore, snowflake, sqlite_vec]"
152+
]
153+
dev = ["feast[ci]"]
154+
docs = ["feast[ci]"]
155+
156+
[project.urls]
157+
Homepage = "https://github.com/feast-dev/feast"
158+
159+
[[project.authors]]
160+
name = "Feast"
161+
162+
[project.scripts]
163+
feast = "feast.cli:cli"
164+
1165
[build-system]
2166
requires = [
3167
"pybindgen==0.22.0",
@@ -7,8 +171,15 @@ requires = [
7171
"wheel",
8172
]
9173

174+
[tool.setuptools]
175+
packages = {find = {where = ["sdk/python"], exclude = ["java", "infra", "sdk/python/tests", "ui"]}}
176+
10177
[tool.setuptools_scm]
11-
# Including this section is comparable to supplying use_scm_version=True in setup.py.
178+
# Add Support for parsing tags that have a prefix containing '/' (ie 'sdk/go') to setuptools_scm.
179+
# Regex modified from default tag regex in:
180+
# https://github.com/pypa/setuptools_scm/blob/2a1b46d38fb2b8aeac09853e660bcd0d7c1bc7be/src/setuptools_scm/config.py#L9
181+
tag_regex = "^(?:[\\/\\w-]+)?(?P<version>[vV]?\\d+(?:\\.\\d+){0,2}[^\\+]*)(?:\\+.*)?$"
182+
12183

13184
[tool.ruff]
14185
line-length = 88

0 commit comments

Comments
 (0)