贡献¶
Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given.
您可以通过多种方式做出贡献:
Types of Contributions¶
报告错误¶
Report bugs at https://github.com/python-gino/gino/issues.
如果您要报告错误,请包括:
您的操作系统名称和版本。
有关本地设置的任何详细信息都可能有助于排除故障。
重现错误的详细步骤。
修复错误¶
在GitHub issues 查找错误。任何人都可以将标记为“bug”和“help wanted”并且是打开状态的问题修复。
实现功能¶
在GitHub issues 查找功能。任何人都可以将标记为“增强”和“需要帮助”的打开状态的需求实现。
写文档¶
GINO需要更多的使用文档,无论是作为官方GINO文档的一部分,还是文档字符串,甚至是博客,文章等等。
提交反馈¶
The best way to send feedback is to file an issue at https://github.com/python-gino/gino/issues.
如果您要提出一项功能:
详细解释它是如何工作的。
为了更容易实现,请保持范围尽可能窄。
Remember that this is a volunteer-driven project, and that contributions are welcome :)
Get Started!¶
Ready to contribute? Here's how to set up gino for local development.
Fork the gino repo on GitHub.
Clone your fork locally:
$ git clone git@github.com:your_name_here/gino.git
Create a branch for local development:
$ cd gino/ $ git checkout -b name-of-your-bugfix-or-feature
Now you can make your changes locally.
Create virtual environment. Example for virtualenvwrapper:
$ mkvirtualenv gino
Activate the environment and install requirements:
$ pip install -r requirements_dev.txt
When you're done making changes, check that your changes pass syntax checks:
$ flake8 gino tests
7. And tests (including other Python versions with tox). For tests you you will need running database server (see "Tips" section below for configuration details):
$ pytest tests
$ tox
For docs run:
$ make docs
It will build and open up docs in your browser.
Commit your changes and push your branch to GitHub:
$ git add . $ git commit -m "Your detailed description of your changes." $ git push origin name-of-your-bugfix-or-feature
Submit a pull request through the GitHub website.
Pull Request Guidelines¶
Before you submit a pull request, check that it meets these guidelines:
The pull request should include tests.
If the pull request adds functionality, the docs should be updated. Put your new functionality into a function with a docstring, and add the feature to the list in README.rst.
The pull request should work for Python 3.6, 3.7, 3.8 and 3.9. Check https://github.com/python-gino/gino/actions?query=event%3Apull_request and make sure that the tests pass for all supported Python versions.
Tips¶
To run a subset of tests:
$ py.test -svx tests.test_gino
By default the tests run against a default installed postgres database. If you wish to run against a separate database for the tests you can do this by first creating a new database and user using 'psql' or similar:
CREATE ROLE gino WITH LOGIN ENCRYPTED PASSWORD 'gino';
CREATE DATABASE gino WITH OWNER = gino;
Then run the tests like so:
$ export DB_USER=gino DB_PASS=gino DB_NAME=gino
$ py.test
Here is an example for db server in docker. Some tests require ssl so you will need to run postgres with ssl enabled. Terminal 1 (server):
$ openssl req -new -text -passout pass:abcd -subj /CN=localhost -out server.req -keyout privkey.pem
$ openssl rsa -in privkey.pem -passin pass:abcd -out server.key
$ openssl req -x509 -in server.req -text -key server.key -out server.crt
$ chmod 600 server.key
$ docker run --name gino_db --rm -it -p 5433:5432 -v "$(pwd)/server.crt:/var/lib/postgresql/server.crt:ro" -v "$(pwd)/server.key:/var/lib/postgresql/server.key:ro" postgres:12-alpine -c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key
Terminal 2 (client):
$ export DB_USER=gino DB_PASS=gino DB_NAME=gino DB_PORT=5433
$ docker exec gino_db psql -U postgres -c "CREATE ROLE $DB_USER WITH LOGIN ENCRYPTED PASSWORD '$DB_PASS'"
$ docker exec gino_db psql -U postgres -c "CREATE DATABASE $DB_NAME WITH OWNER = $DB_USER;"
$ pytest tests/test_aiohttp.py