# 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 = ["maturin>=1.5,<2.0"]
build-backend = "maturin"

[project]
name = "hudi"
description = "Native Python binding for Apache Hudi, based on hudi-rs."
readme = "../README.md"
urls = { repository = "https://github.com/apache/hudi-rs/tree/main/python/" }
requires-python = ">=3.10"
keywords = ["apachehudi", "hudi", "datalake", "arrow"]
license = "Apache-2.0"
classifiers = [
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
]
dependencies = [
    "pyarrow>=11.0.0",
    "pyarrow-hotfix",
]

dynamic = ["version"]

[project.optional-dependencies]
devel = [
    "pytest==9.1.1",
    "coverage==7.16.0",
    "ruff==0.15.18",
    "mypy==2.3.1",
    "pre-commit",
]
lint = [
    "ruff==0.15.18",
    "mypy==2.3.1",
]
datafusion = [
    # The FFI contract is per DataFusion major: keep the Python package on the
    # same major as the Rust workspace's datafusion dependency.
    "datafusion>=54.0.0,<55",
]

[tool.maturin]
module-name = "hudi._internal"
# hudi/__init__.py exports HudiDataFusionDataSource unconditionally, so every
# build (wheel or from-sdist) must compile the datafusion feature or the
# resulting package fails on `import hudi`.
features = ["datafusion"]

[tool.ruff]
target-version = 'py310'
# Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`)  codes by default.
lint.select = [
    "E4",
    "E7",
    "E9",
    "F",
    # isort
    "I",
]
# don't ignore any rule unless it becomes imperative
lint.ignore = []
lint.isort.known-first-party = ["hudi"]

[tool.mypy]
files = "hudi/*.py"
exclude = "^tests"
strict = true

[tool.pytest.ini_options]
testpaths = [
    "tests",
    "hudi",
]
