| ################################################################################ | |
| # 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"] |