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