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

[project]
name = "pypaimon-rust"
readme = "project-description.md"
requires-python = ">=3.10,<4"
dynamic = ["version"]
license = { file = "LICENSE" }
classifiers = [
    "Development Status :: 3 - Alpha",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: Apache Software License",
    "Operating System :: OS Independent",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3 :: Only",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Programming Language :: Rust",
]

[project.optional-dependencies]
video = [
    "av>=17.0,<18.0",
    "pillow>=12.0,<13.0",
]

[tool.maturin]
module-name = "pypaimon_rust.pypaimon_rust"
python-source = "python"
include = [
    { path = "LICENSE", format = ["sdist", "wheel"] },
    { path = "NOTICE", format = ["sdist", "wheel"] },
    { path = "python/pypaimon_rust/py.typed", format = ["sdist", "wheel"] },
]

[dependency-groups]
dev = [
    "maturin>=1.9.4,<2.0",
    "pytest>=8.0",
    "pyarrow>=17.0,<24.0",
    "datafusion==53.0.0",
    "av>=17.0,<18.0",
    "pillow>=12.0,<13.0",
]
