# 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.

[metadata]
name = apache-dolphinscheduler
version = attr: pydolphinscheduler.__version__
url = https://dolphinscheduler.apache.org/python/main/index.html
description = pydolphinscheduler is Apache DolphinScheduler Python API.
long_description = file: README.md
long_description_content_type = text/markdown
author = Apache Software Foundation
author_email = dev@dolphinscheduler.apache.org
license = Apache License 2.0
license_files = 
    file: LICENSE
keywords = 
    dolphinscheduler
    workflow
    scheduler
    taskflow
# complete classifier list: http://pypi.python.org/pypi?%3Aaction=list_classifiers
classifiers =
    Development Status :: 4 - Beta
    Environment :: Console
    Intended Audience :: Developers
    License :: OSI Approved :: Apache Software License
    Operating System :: Unix
    Operating System :: POSIX
    Operating System :: Microsoft :: Windows
    Programming Language :: Python
    Programming Language :: Python :: 3
    Programming Language :: Python :: 3.6
    Programming Language :: Python :: 3.7
    Programming Language :: Python :: 3.8
    Programming Language :: Python :: 3.9
    Programming Language :: Python :: 3.10
    Programming Language :: Python :: 3.11
    Programming Language :: Python :: Implementation :: CPython
    Programming Language :: Python :: Implementation :: PyPy
    Topic :: Software Development :: User Interfaces
project_urls =
    Homepage = https://dolphinscheduler.apache.org/python/main/index.html
    Documentation = https://dolphinscheduler.apache.org/python/main/index.html
    Source = https://github.com/apache/dolphinscheduler-sdk-python
    Issue Tracker = https://github.com/apache/dolphinscheduler-sdk-python/issues
    Twitter = https://twitter.com/dolphinschedule

[options]
python_requires = >=3.6
include_package_data = True
zip_safe = true
platforms = any
package_dir =
    =src
packages =
    find:
install_requires =
    boto3>=1.23.10
    oss2>=2.16.0
    python-gitlab>=2.10.1
    click>=8.0.0
    py4j~=0.10
    ruamel.yaml
    stmdency>=0.0.2

[options.packages.find]
where=src

[options.package_data]
pydolphinscheduler =
    default_config.yaml
    version_ext

[options.entry_points]
console_scripts =
    pydolphinscheduler = pydolphinscheduler.cli.commands:cli

[options.extras_require]
build =
    build
    setuptools>=42
    wheel
test =
    pytest>=6.2
    freezegun>=1.1
    coverage>=6.1
    pytest-cov>=3.0
    docker>=5.0.3
style =
    flake8>=4.0
    flake8-docstrings>=1.6
    flake8-black>=0.2
    isort>=5.10
    autoflake>=1.4
doc =
    sphinx>=4.3
    sphinx_rtd_theme>=1.0
    sphinx-click>=3.0
    sphinx-inline-tabs
    sphinx-copybutton>=0.4.0
    # Unreleased package have a feature we want(use correct version package for API ref), so we install from
    # GitHub directly, see also:
    # https://github.com/Holzhaus/sphinx-multiversion/issues/42#issuecomment-1210539786
    sphinx-multiversion @ git+https://github.com/Holzhaus/sphinx-multiversion#egg=sphinx-multiversion
    sphinx-github-changelog
dev =
    # build
    apache-dolphinscheduler[build]
    # test
    apache-dolphinscheduler[test]
    # style
    apache-dolphinscheduler[style]
    # doc
    apache-dolphinscheduler[doc]
