-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Expand file tree
/
Copy pathpyproject.toml
More file actions
234 lines (225 loc) · 8.16 KB
/
Copy pathpyproject.toml
File metadata and controls
234 lines (225 loc) · 8.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
[build-system]
requires = ["maturin >= 1.4"]
build-backend = "maturin"
[project]
name = "pathway"
dynamic = ["version"]
requires-python = ">=3.10"
description = "Pathway Live Data Framework is a data processing framework which takes care of streaming data updates for you."
readme = "README.md"
classifiers = [
"License :: Other/Proprietary License",
"Programming Language :: Rust",
"Programming Language :: Python :: Implementation :: CPython",
]
dependencies = [
"aiohttp >= 3.10.11",
"click >= 8.1",
"geopy >= 2.4.0",
"h3 >= 4",
"numpy >= 1.21",
"pandas >= 2.1",
"scikit-learn >= 1.0",
"shapely >= 2.0.1",
"pyarrow >= 10.0.0, < 26.0.0",
"requests >= 2.31.0",
"python-sat >= 0.1.8.dev",
"beartype >= 0.14.0, < 0.23.0",
"rich >= 12.6.0",
"diskcache >= 5.2.1",
"exceptiongroup >= 1.1.3; python_version < '3.11'",
"google-api-python-client >= 2.108.0",
"typing_extensions >= 4.8.0",
"panel >= 1.3.1",
"jupyter_bokeh >= 3.0.7",
"jmespath >= 1.0.1",
"aiohttp_cors >= 0.7.0",
"opentelemetry-api >= 1.22.0",
"opentelemetry-sdk >= 1.22.0",
"opentelemetry-exporter-otlp-proto-grpc >= 1.22.0",
"async-lru >= 2.0.4",
"networkx >= 3.2.1",
"google-cloud-pubsub >= 2.21.1",
"google-cloud-bigquery >= 3.29.0, < 4.0.0",
"pydantic ~= 2.9",
"gitpython >= 3.1.43",
"deltalake >= 1.6.0, < 2.0.0",
"sqlalchemy >= 2.0.43",
"sqlmodel >= 0.0.24",
"fastapi >= 0.116.1",
"uvicorn >= 0.29.0"
]
[project.optional-dependencies]
pyfilesystem = [
"fs >= 2.4.16",
"setuptools < 82.0.0", # required due to https://github.com/PyFilesystem/pyfilesystem2/issues/577
]
milvus = [
"pymilvus >= 2.4.2, < 3",
"milvus-lite >= 2.4.2, < 3",
]
sql = [
"sqlglot == 10.6.1", # the new versions are incompatible with the current pw.sql Implementation
]
xpack-llm = [
"openai >= 2.20, < 3.0",
# >= 1.92 ships no macOS wheels (Rust bridge, sdist needs cargo with edition2024)
"litellm >= 1.84.0, < 1.92; python_version < '3.14'",
# on 3.14 the choice is narrow: 1.84-1.92 declare requires-python < 3.14,
# >= 1.93 ships no macOS wheels, and 1.83.1-1.83.7 pin python-dotenv==1.0.1,
# which conflicts with fastmcp; 1.83.0 installs everywhere
"litellm == 1.83.0; python_version >= '3.14'",
"cohere >= 5.1, < 8.0",
"tiktoken >= 0.5",
# aiobotocore 3.x declares a ranged botocore window; aioboto3 (stale, pins an
# exact aiobotocore/botocore) was dropped to keep pip out of the boto lattice
"aiobotocore >= 3.0.0",
"langchain >= 0.2.0, < 0.4.0",
"langchain_community >= 0.2.0, < 0.4.0",
"llama-index-core >= 0.13.0, < 0.15.0",
"llama-index-readers-pathway >= 0.1.3",
"llama-index-retrievers-pathway >= 0.1.3",
"tenacity != 8.4.0", # langchain dependency, 8.4.0 wheel is broken
"instructor ~= 1.2",
"google-generativeai ~= 0.8.4",
"google-api-core >= 2.24.1, < 3.0.0",
# google-generativeai's google-ai-generativelanguage dependency forces
# protobuf < 6; stating it up front keeps pip from backtracking through
# dozens of grpcio-status / grpc-google-iam-v1 releases (newer ones require
# protobuf 6) before discovering the cap on its own
"protobuf >= 5.26.1, < 6.0.0",
# the google ecosystem is migrating to protobuf 6 one package at a time;
# each of the caps below marks the last protobuf-5-compatible release. They
# follow from the protobuf cap above, but stating them explicitly keeps
# pip's resolver from discovering each one by walking whole version ranges
# (grpcio-status alone has dozens of releases to reject otherwise)
"googleapis-common-protos < 1.75.1",
"grpcio-status < 1.72",
"grpc-google-iam-v1 < 0.14.5",
"proto-plus < 1.28.3",
# fastmcp >= 2.13 requires platformdirs >= 4, which is incompatible with the
# dvc 2.x line the monorepo environment still needs; revisit after the dvc 3
# migration of the .dvc metadata lands. >= 2.12 because 2.11.x declares an
# unbounded mcp >= 1.10, which sends pip's resolver into deep backtracking
# now that mcp 2.x is on PyPI
"fastmcp >= 2.12.0, < 2.13.0",
]
xpack-llm-local = [ # requirements that allow local ML inference
"sentence_transformers",
"transformers >= 4.50.2, < 5.0",
]
xpack-llm-docs = [
"docling >= 2.27, < 2.67.0",
"docling-core >= 2.55, < 2.58.0",
"python-docx >= 1.1.2",
"unstructured[all-docs] ~= 0.18.1",
"pdf2image",
"pypdf",
# unstructured dependency, but unstructured doesn't force this version even though it's needed
"pdfminer.six == 20260107",
# unstructured dependency; nltk 3.10.1 ships an import hook that aborts
# imports resolved while the CWD is on sys.path, which breaks `import nltk`
# in ordinary `python script.py` and `python -m pytest` runs. Revisit when
# a release relaxes the hook.
"nltk < 3.10.1",
# The whole paddle stack is unavailable on Python 3.14: paddlepaddle has
# no cp314 wheels, and paddlex pins pyyaml==6.0.2, which only builds from
# source there. The parser reports a clear error when paddleocr is absent.
"paddleocr[doc-parser] >= 3.3.1, < 4.0.0; python_version < '3.14'",
# `paddlex` pins `opencv-contrib-python == 4.10.0.84` while `unstructured`
# and `rapidocr` pull an unconstrained `opencv-python`. Both distributions
# install the same `cv2/*` files, and OpenCV 5 dropped the G-API Python glue
# that OpenCV 4 ships, so a mixed 4/5 install makes `import cv2` fail with
# `module 'cv2' has no attribute 'gapi_wip_gst_GStreamerPipeline'`.
"opencv-python < 5",
]
xpack-sharepoint = [
"Office365-REST-Python-Client >= 2.5.3",
]
twelvelabs = [
"twelvelabs >= 1.2.8",
]
all = [
"pathway[pyfilesystem]",
"pathway[sql]",
"pathway[xpack-llm]",
"pathway[xpack-llm-local]",
"pathway[xpack-llm-docs]",
"pathway[xpack-sharepoint]",
"pathway[airbyte]",
"pathway[milvus]",
"pathway[twelvelabs]",
]
tests = [
"pytest >= 9.0.3, < 10.0.0",
"pytest-xdist >= 3.8.0, < 4.0.0",
"pytest-rerunfailures >= 16.2, < 17.0",
"pytest-asyncio >= 1.2.0",
"pytest-timeout >= 2.3.0, < 3.0.0",
"python-louvain",
"openapi_spec_validator",
"kafka-python >= 2.0.2",
"python-magic",
"pathway[all]",
"duckdb >= 1.0.0",
"dill >= 0.3.8",
"cloudpickle >= 3.0.0",
"fpdf",
# paddlepaddle has no CPython 3.14 wheels yet; the paddle-based parser
# degrades gracefully when the import is missing.
"paddlepaddle >= 3.2.0, < 3.3.0; python_version < '3.14'", # required by paddleocr
"paddlex >= 3.0.0, <= 3.3.8; python_version < '3.14'", # pinning the latest working version, then the format changes
# aiobotocore 3.x declares a ranged botocore window; aioboto3 (stale, pins an
# exact aiobotocore/botocore) was dropped to keep pip out of the boto lattice
"aiobotocore >= 3.0.0",
# the integration tests verify S3/DynamoDB/Kinesis connector results through boto3;
# the shipped package itself does not need it
"boto3 >= 1.26.76, < 2.0.0",
]
airbyte = [
"google-cloud-run",
"google-cloud-secret-manager",
"google-cloud-logging",
"pyyaml",
"jinja2",
]
[project.urls]
"Homepage" = "https://pathway.com/"
"Source code" = "https://github.com/pathwaycom/pathway/"
"Documentation" = "https://pathway.com/developers/user-guide/introduction/welcome"
"Troubleshooting" = "https://pathway.com/troubleshooting/"
[project.scripts]
pathway = "pathway.cli:main"
[tool.black]
required-version = "24"
line-length = 88
exclude = '''/(
| docs
| target
)/'''
target-version = ["py310", "py311"]
[tool.maturin]
python-source = "python"
module-name = "pathway.engine"
features = ["pyo3/extension-module"]
[tool.mypy]
python_version = "3.11"
exclude = ["(^|/)target/", "(^|/)examples/", '(^|/)tests(/.*)?/test_.*\.py$']
ignore_missing_imports = true
check_untyped_defs = true
warn_redundant_casts = true
warn_unused_ignores = true
strict_equality = true
# transformers >= 4.50 ships py.typed and crashes mypy < 1.11 when analyzed
[[tool.mypy.overrides]]
module = "transformers.*"
follow_imports = "skip"
[tool.isort]
profile = "black"
skip = [
"target",
"docs",
"third_party",
]
known_first_party = ["pathway"]
combine_as_imports = true