贡献

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.

  1. Fork the gino repo on GitHub.

  2. Clone your fork locally:

    $ git clone git@github.com:your_name_here/gino.git
    
  3. Create a branch for local development:

    $ cd gino/
    $ git checkout -b name-of-your-bugfix-or-feature
    

Now you can make your changes locally.

  1. Create virtual environment. Example for virtualenvwrapper:

    $ mkvirtualenv gino
    
  2. Activate the environment and install requirements:

    $ pip install -r requirements_dev.txt
    
  3. 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
  1. For docs run:

    $ make docs
    

It will build and open up docs in your browser.

  1. 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
    
  2. Submit a pull request through the GitHub website.

Pull Request Guidelines

Before you submit a pull request, check that it meets these guidelines:

  1. The pull request should include tests.

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

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