# 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 = [
    "cython >= 3.1",
    "numpy>=1.25",
    # configuring setuptools_scm in pyproject.toml requires
    # versions released after 2022
    "setuptools_scm[toml]>=8",
    "setuptools>=77",
]
build-backend = "setuptools.build_meta"

[project]
name = "pyarrow"
dynamic = ["version"]
requires-python = ">=3.10"
description = "Python library for Apache Arrow"
readme = {file = "README.md", content-type = "text/markdown"}
license = "Apache-2.0"
license-files = [
    "LICENSE.txt",
    "NOTICE.txt",
]
classifiers  = [
    'Programming Language :: Python :: 3.10',
    'Programming Language :: Python :: 3.11',
    'Programming Language :: Python :: 3.12',
    'Programming Language :: Python :: 3.13',
    'Programming Language :: Python :: 3.14',
    'Programming Language :: Python :: Free Threading :: 2 - Beta',
]
maintainers = [
    {name = "Apache Arrow Developers", email = "dev@arrow.apache.org"}
]

[project.urls]
Homepage = "https://arrow.apache.org/"
Documentation = "https://arrow.apache.org/docs/python"
Repository = "https://github.com/apache/arrow"
Issues = "https://github.com/apache/arrow/issues"

[dependency-groups]
test = [
    'pytest',
    'hypothesis',
    'cffi',
    'pytz',
    'pandas'
]

[tool.numpydoc_validation]
checks = [
    "GL10",
    "PR01",
    "PR03",
    "PR04",
    "PR05",
    "PR10",
    "RT03",
    "YD01",
]
exclude = [
    '\._.*$',
]

[tool.setuptools]
zip-safe=false
include-package-data=true

[tool.setuptools.packages.find]
include = ["pyarrow"]
namespaces = false

[tool.setuptools.package-data]
pyarrow = ["*.pxd", "*.pyx", "includes/*.pxd"]

[tool.setuptools_scm]
root = '..'
version_file = 'pyarrow/_generated_version.py'
version_scheme = 'guess-next-dev'
git_describe_command = 'git describe --dirty --tags --long --match "apache-arrow-[0-9]*.*"'
fallback_version = '24.0.0a0'
