# 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.10"
dependencies = [
    "nest_asyncio",
    "aiohttp>=3.8.0,<4.0.0",
    "aenum>=1.4.5,<4.0.0",
    "isodate>=0.6.0,<1.0.0",
    "boto3",
    "botocore",
    "async-timeout>=4.0.3,<5.0; python_version < \"3.11\""
]
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; sys_platform != \"win32\""]
ujson = ["ujson>=2.0.0"]
test = [
    "pytest>=6.2.5,<8.0.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"
]