# 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"
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"
]

[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",
    "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"]

[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"
]