blob: 50a153fc0145e838c8b704ac578acca11208f8ce [file] [log] [blame]
# 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.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
Programming Language :: Python :: 3.12
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.8
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
# 23.0 not support python 3.6
packaging>=21.3
[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 =
black>=22.8
ruff>=0.3
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]
# ---------------------------------------------
# Test Settings
# ---------------------------------------------
[tool:pytest]
# add path here to skip pytest scan it
norecursedirs =
tests/testing
# Integration test run seperated which do not calculate coverage, it will run in `tox -e integrate-test`
tests/integration
[coverage:run]
command_line = -m pytest
omit =
# Ignore all test cases in tests/
tests/*
# Ignore examples directory
*/pydolphinscheduler/examples/*
# TODO. Temporary ignore java_gateway file, because we could not find good way to test it.
*/pydolphinscheduler/java_gateway.py
[coverage:report]
# Mark no cover for typing.TYPE_CHECKING, see details https://github.com/nedbat/coveragepy/issues/831
exclude_lines =
pragma: no cover
if TYPE_CHECKING:
# Don’t report files that are 100% covered
skip_covered = True
show_missing = True
precision = 2
# Report will fail when coverage under 90.00%
fail_under = 90
# ---------------------------------------------
# TOX Settings
# ---------------------------------------------
[tox:tox]
envlist =
local-ci
auto-lint
lint
doc-build
doc-build-multi
code-test
integrate-test
local-integrate-test
py{38,39,310,311,312}
[testenv]
allowlist_externals =
make
git
find
[testenv:auto-lint]
extras = style
commands =
python -m black .
python -m ruff check --fix .
[testenv:lint]
extras = style
commands =
python -m black --check .
python -m ruff check .
[testenv:code-test]
extras = test
# Run both tests and coverage
commands =
python -m pytest --cov=pydolphinscheduler --cov-report term --cov-report xml:coverage.xml tests/
[testenv:doc-build]
extras = doc
commands =
make -C {toxinidir}/docs clean
make -C {toxinidir}/docs html
# Remove sensitive information from the generated documentation
commands_post =
find {toxinidir}/docs -type f -name "environment.pickle" -exec rm -rf \{\} \;
[testenv:doc-build-multi]
extras = doc
commands =
# Get all tags for `multiversion` subcommand
git fetch --tags
make -C {toxinidir}/docs clean
make -C {toxinidir}/docs multiversion
# Remove sensitive information from the generated documentation
commands_post =
find {toxinidir}/docs -type f -name "environment.pickle" -exec rm -rf \{\} \;
[testenv:integrate-test]
extras = test
commands =
python -m pytest tests/integration/
[testenv:local-integrate-test]
extras = test
setenv =
skip_launch_docker = true
commands =
{[testenv:integrate-test]commands}
# local-ci do not build `doc-build-multi`
[testenv:local-ci]
extras = dev
commands =
{[testenv:lint]commands}
{[testenv:code-test]commands}
{[testenv:doc-build]commands}