blob: e28b3d2474757529256672d1ac5dd2bc359d2771 [file] [log] [blame]
# 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.0,<2.0"]
build-backend = "maturin"
[project]
name = "fluss"
description = "Python bindings for Fluss on fluss-rust with Pandas integration"
authors = [{name = "Fluss Team"}]
license = {text = "Apache-2.0"}
readme = "README.md"
requires-python = ">=3.9"
classifiers = [
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
]
dynamic = ["version"]
dependencies = [
"pandas>=2.3.1",
"pyarrow>=10.0.0",
]
[project.urls]
Repository = "https://github.com/apache/fluss-rust"
[project.optional-dependencies]
dev = [
"mypy>=1.17.1",
"pytest>=8.3.5",
"pytest-asyncio>=0.25.3",
"ruff>=0.9.10",
"maturin>=1.8.2",
]
docs = [
"pdoc>=15.0.4",
]
[tool.maturin]
python-source = "."
module-name = "fluss._fluss"
features = ["pyo3/extension-module"]
[tool.uv]
cache-keys = [
{ file = "pyproject.toml" },
{ file = "Cargo.toml" },
{ file = "src/**/*.rs" },
{ file = "../../crates/**/*.rs" },
]
[tool.ruff]
line-length = 88
fix = true
[tool.ruff.lint]
ignore = ["E402", "F403", "F405"]
select = ["E", "F", "I"]
[tool.ruff.lint.pycodestyle]
max-doc-length = 88
[tool.ruff.lint.pydocstyle]
convention = "numpy"
[tool.ruff.format]
docstring-code-format = true
[tool.ruff.lint.isort]
known-first-party = ["fluss"]
[tool.mypy]
python_version = "3.9"
warn_return_any = true
warn_unused_configs = true
ignore_missing_imports = true