Dubbo Python is released under the non-restrictive Apache 2.0 licenses and follows a very standard Github development process, using Github tracker for issues and merging pull requests into main. Contributions of all form to this repository is acceptable, as long as it follows the prescribed community guidelines enumerated below.
Before we accept a non-trivial patch or pull request (PRs), we will need you to sign the Contributor License Agreement. Signing the contributors' agreement does not grant anyone commits rights to the main repository, but it does mean that we can accept your contributions, and you will get an author credit if we do. Active contributors may get invited to join the core team that will grant them privileges to merge existing PRs.
The mailing list is the recommended way of pursuing a discussion on almost anything related to Dubbo. Please refer to this guide for detailed documentation on how to subscribe.
Please follow the template for reporting any issues.
NOTE: Issues related to Dubbo Python should be submitted in the Dubbo repository, and the Apache Dubbo Component option should be set to Python SDK.
Our code style almost fully adheres to the PEP 8 style guide, with the following adjustments and new constraints:
reStructuredText format.A rough outline of an ideal contributors' workflow is as follows:
git remote add upstream git@github.com:apache/dubbo-python.git git fetch upstream git rebase upstream/master git checkout -b your_awesome_patch ... add some work git push origin your_awesome_patch
Thanks for contributing!
Before you start working on development, please install the necessary dependencies for Dubbo-Python using the following command:
pip install -r requirements-dev.txt
Our project uses a src layout, and packaging is required before running tests. We strongly recommend using the editable installation mode for packaging and testing:
pip install -e .
We use ruff as the linter and code formatter for Dubbo-Python, and Mypy as the static type checker.
Therefore, when developing, you should install both tools:
We have already set up the configurations for ruff and Mypy in the pyproject.toml file. You only need to specify the configuration path (pyproject.toml) when using them.
Code Formatting
By default, ruff will look for the pyproject.toml file in the current directory and its parent directories and load its configuration.
# Default ruff format # Specify configuration file ruff format --config pyproject.toml
Code Linting
# Just check ruff check # Check and fix ruff check --fix
Static Type Checking
Mypy will also automatically look for the pyproject.toml file and load its configuration.
# Default mypy # Specify configuration file mypy --config-file pyproject.toml