# 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>=69",
    "wheel", 
    "Cython>=3", 
    "numpy>=1.26.4; python_version<'3.13'",
    "numpy>=2.1.0; python_version>='3.13' and python_version<'3.14'",
    "numpy>=2.3.2; python_version>='3.14'"
    ]

build-backend = "setuptools.build_meta"

[project]
name = "tsfile"
version = "2.5.0"
requires-python = ">=3.9"
description = "TsFile Python"
readme = {file = "README.md", content-type = "text/markdown"}
maintainers = [
    {name = "Apache TsFile Developers", email = "dev@tsfile.apache.org"}
]
dependencies = [
    "numpy>=1.26.4; python_version<'3.13'",
    "numpy>=2.1.0; python_version>='3.13' and python_version<'3.14'",
    "numpy>=2.3.2; python_version>='3.14'",
    "pandas>=2.0.0; python_version<'3.12'",
    "pandas>=2.1.1; python_version>='3.12' and python_version<'3.13'",
    "pandas>=2.2.3; python_version>='3.13' and python_version<'3.14'",
    "pandas>=2.3.3; python_version>='3.14'",
    "pyarrow>=16.0; python_version<'3.13'",
    "pyarrow>=18.0; python_version>='3.13' and python_version<'3.14'",
    "pyarrow>=22.0; python_version>='3.14'"
]

[project.urls]
Homepage = "https://tsfile.apache.org/"
Documentation = "https://tsfile.apache.org/zh/UserGuide/latest/QuickStart/Navigating_Time_Series_Data.html"
Repository = "https://github.com/apache/tsfile"
Issues = "https://github.com/apache/tsfile/issues"

[tool.setuptools]
package-dir = {"" = "."}

[tool.setuptools.packages.find]
where = ["."]
include = ["tsfile*"]

[tool.setuptools.package-data]
tsfile = [
    "python_random_access_read_file.h",
    "*.pxd",
    "*.pxi",
    "*.so",
    "*.so.*",
    "*.dylib",
    "*.dylib.*",
    "*.dll",
    "*.dll.a",
    "*.lib",
    "*.lib.a",
    "include/**/*"
]
