blob: 624131379361e420b15039c92f84da50a3316c52 [file]
################################################################################
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
################################################################################
[build-system]
requires = [
"setuptools>=40.8,<60; python_version < '3.7'",
"setuptools>=61; python_version >= '3.7'",
"wheel",
"packaging>=21",
"tomli>=1.2.3; python_version < '3.11'",
]
build-backend = "setuptools.build_meta"
[project]
name = "pypaimon"
dynamic = ["version"]
description = "Apache Paimon Python API"
readme = "README.md"
# Keep the table form for setuptools versions supporting Python 3.7/3.8.
license = {text = "Apache-2.0"}
authors = [{name = "Apache Software Foundation", email = "dev@paimon.apache.org"}]
requires-python = ">=3.6"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]
dependencies = [
"cachetools>=4.2,<6; python_version == '3.6'",
"cachetools>=5,<6; python_version > '3.6'",
"dataclasses>=0.8; python_version < '3.7'",
"fastavro>=1.4,<2",
"isal>=1.8,<2; python_version >= '3.9' and (platform_machine == 'x86_64' or platform_machine == 'AMD64' or platform_machine == 'aarch64' or platform_machine == 'arm64')",
"fsspec>=2021.10,<2026; python_version < '3.8'",
"fsspec>=2023,<2026; python_version >= '3.8'",
"packaging>=21",
"pandas>=1.1,<2; python_version < '3.7'",
"pandas>=1.3,<3; python_version >= '3.7' and python_version < '3.9'",
"pandas>=1.5,<3; python_version >= '3.9'",
"polars>=0.9,<1; python_version < '3.8'",
"polars>=1,<2; python_version == '3.8'",
"polars>=1.32,<2; python_version >= '3.9'",
"pyarrow>=6,<7; python_version < '3.7'",
"pyarrow>=7,<13; python_version >= '3.7' and python_version < '3.8'",
"pyarrow>=16,!=19.0.0,<23; python_version >= '3.8'",
"pyroaring<=0.3.3; python_version < '3.7'",
"pyroaring<=0.4.5; python_version == '3.7'",
"pyroaring>=1.0.0,<=1.0.3; python_version == '3.8'",
"pyroaring>=1.0.0; python_version >= '3.9'",
# readerwriterlock 1.0.10 uses positional-only syntax requiring Python 3.8.
"readerwriterlock>=1,<1.0.10; python_version < '3.8'",
"readerwriterlock>=1,<2; python_version >= '3.8'",
"requests>=2.21.0,<3",
"urllib3>=1.26,<3",
"zstandard>=0.19,<1",
"backports.zstd>=1.0.0,<1.4.0; python_version >= '3.9' and python_version < '3.14'",
"cramjam>=1.3.0,<3; python_version >= '3.7'",
"pyyaml>=5.4,<7",
]
[project.urls]
Homepage = "https://paimon.apache.org"
Documentation = "https://paimon.apache.org/docs/master/pypaimon/python-api/"
[project.scripts]
paimon = "pypaimon.cli:main"
[project.optional-dependencies]
video = [
"av>=12,<19; python_version >= '3.10'",
"Pillow; python_version >= '3.10'",
]
hdf5 = [
"h5py>=3,<4; python_version >= '3.8'",
]
rosbag = [
"rosbags>=0.11.5,<0.12; python_version >= '3.10'",
]
# Pandas 2.2.2+ supports NumPy 2 selected by the media dependencies.
lerobot = [
"datasets>=4,<5; python_version >= '3.10'",
"pandas>=2.2.2,<3; python_version >= '3.10'",
"torch>=2.3; python_version >= '3.10'",
"lerobot>=0.4.4,<0.5; python_version >= '3.10'",
]
ray = [
"ray>=2.10,<3; python_version >= '3.8'",
]
torch = [
"torch",
"Pillow",
]
daft = [
"daft>=0.7.6; python_version >= '3.10'",
]
oss = [
"boto3>=1.34,<2; python_version >= '3.10'",
"oss2>=2.18,<3",
"ossfs>=2021.8; python_version < '3.8'",
"ossfs>=2023; python_version >= '3.8'",
]
s3 = [
"boto3>=1.34,<2; python_version >= '3.10'",
]
jindo = [
"oss2>=2.18,<3",
"pyjindosdk>=6.10.4",
]
lance = [
"pylance>=0.20,<1; python_version >= '3.9'",
"pylance>=0.10,<1; python_version >= '3.8' and python_version < '3.9'",
]
# Vortex 0.71 regresses native predicate pushdown on single-row files.
vortex = [
"vortex-data==0.70.0; python_version >= '3.11'",
]
mosaic = [
"paimon-mosaic>=0.1.0; python_version >= '3.9'",
]
lumina = [
"lumina-data>=0.1.0",
]
vindex = [
"paimon-vindex==0.5.0; python_version >= '3.9'",
]
full-text = [
"paimon-ftindex==0.1.0; python_version >= '3.8'",
]
theta-sketch = [
"datasketches>=4,<5; python_version < '3.9'",
"datasketches>=5,<6; python_version >= '3.9'",
]
hll-sketch = [
"datasketches>=4,<5; python_version < '3.9'",
"datasketches>=5,<6; python_version >= '3.9'",
]
datafusion = [
"datafusion>=54,<55; python_version >= '3.10'",
]
sql = [
"pypaimon[datafusion]; python_version >= '3.10'",
"pypaimon-rust>=0.3.0; python_version >= '3.10'",
]
hdfs = [
"hdfs-native>=0.13,<1; python_version >= '3.10' and platform_system != 'Windows'",
]
[dependency-groups]
# Tools are separated from optional integrations so old-Python core tests and
# targeted compatibility jobs do not install unrelated native dependencies.
test = [
"boto3>=1.34,<2; python_version >= '3.10'",
"pytest>=6.2,<7; python_version < '3.7'",
"pytest>=7,<8; python_version >= '3.7'",
"parameterized>=0.8,<0.9; python_version < '3.7'",
"parameterized>=0.9,<1; python_version >= '3.7'",
"py4j==0.10.9.9",
]
lint = [
"flake8>=4,<5; python_version < '3.8'",
"flake8>=7,<8; python_version >= '3.8'",
]
# Ordinary Python and Torch CI must not install the released Rust wheel via SQL.
# Native CI builds the companion Rust main and uses the complete dev group.
python-tests = [
{include-group = "test"},
{include-group = "lint"},
{include-group = "build"},
"pypaimon[oss,lance,ray,daft,hdf5,rosbag,video,vortex,mosaic,lumina,vindex,full-text,theta-sketch,hll-sketch]",
"duckdb>=1.3,<1.4; python_version >= '3.9'",
# merge_into / row-id operations require Dataset.join; basic Ray I/O does not.
"ray>=2.50; python_version >= '3.9'",
]
dev = [
{include-group = "python-tests"},
"pypaimon[sql]",
]
torch = [
{include-group = "python-tests"},
"pypaimon[torch,lerobot]",
"torchdata>=0.11,<0.12; python_version >= '3.10'",
]
legacy = [
{include-group = "test"},
{include-group = "lint"},
"pypaimon[oss,lumina,theta-sketch,hll-sketch]",
]
build = ["build", "twine"]
[tool.setuptools]
include-package-data = true
license-files = ["LICENSE", "NOTICE"]
[tool.setuptools.packages.find]
include = ["pypaimon*"]
exclude = ["pypaimon.tests*"]
[tool.setuptools.package-data]
pypaimon = ["_full_version"]