# 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>=60", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "gremlinpython"
dynamic = ["version"]
description = "Gremlin-Python for Apache TinkerPop"
readme = {file = "README.rst", content-type = "text/x-rst"}
license = {text = "Apache 2"}
maintainers = [{name = "Apache TinkerPop", email = "dev@tinkerpop.apache.org"}]
requires-python = ">=3.9,<3.14"
dependencies = [
    "nest_asyncio",
    "aiohttp>=3.8.0,<4.0.0",
    "aenum>=1.4.5,<4.0.0",
    "isodate>=0.6.0,<1.0.0",
    "async-timeout>=4.0.3,<5.0.0"
]
classifiers = [
    "Intended Audience :: Developers",
    "License :: OSI Approved :: Apache Software License",
    "Natural Language :: English",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13"
]

[project.urls]
Homepage = "https://tinkerpop.apache.org"

[project.optional-dependencies]
kerberos = ["kerberos>=1.3.0,<2.0.0"]
ujson = ["ujson>=2.0.0"]
test = [
    "pytest>=4.6.4,<7.2.0",
    "radish-bdd==0.18.2",
    "lxml==5.3.0",
    "PyHamcrest>=1.9.0,<3.0.0",
    "PyYAML>=5.3"
]

[tool.pytest.ini_options]
addopts = "--junitxml=./python-reports/TEST-native-python.xml -sv"
norecursedirs = [".*", "build", "dist", "CVS", "_darcs", "{arch}", "*.egg", "lib", "lib64"]
testpaths = ["tests/unit","tests/integration"]

[tool.setuptools.dynamic]
version = {attr = "gremlin_python.__version__"}

[tool.setuptools.package-data]
"*" = ["LICENSE", "NOTICE"]

[tool.setuptools]
packages = [
    "gremlin_python",
    "gremlin_python.driver",
    "gremlin_python.driver.aiohttp",
    "gremlin_python.process",
    "gremlin_python.structure",
    "gremlin_python.structure.io"
]