How to Contribute
=================

We'd love to accept your patches and contributions to this project.
There are a few guidelines described in our
`Contribution Guide <http://google.github.io/google-api-python-client/contributing.html>`__
that you need to follow.

To summarize here: when contributing, please:

* Sign Contributor License Agreement
* Before making changes, file an issue
* Fork this repository and use github pull requests for all submissions
* Follow
  `Contributor Code of Conduct
  <https://github.com/googleapis/google-api-python-client/blob/main/CODE_OF_CONDUCT.md>`__
  and `Community Guidelines <https://opensource.google/conduct/>`__
* Follow `Google Python Style Guide <https://google.github.io/styleguide/pyguide.html>`__
  and `this commit authoring style <http://chris.beams.io/posts/git-commit/#seven-rules>`__
* Don't forget to write tests and update documentation!

Setup Notes
-----------

Please follow these steps after forking and cloning the repository
to make sure you can modify code and run tests with confidence::

    # From the root dir of the cloned repository:
    # Create Virtual Environment called env (you may choose your own name)
    python3 -m venv env

    # Activate virtual environment
    source env/bin/activate

    # Install this library as editable install
    # (see https://pip.pypa.io/en/stable/reference/pip_install/#cmdoption-e)
    python3 -m pip install -e .

    # Install nox
    python3 -m pip install nox

We use `nox <https://nox.thea.codes/>`__ to instrument our tests.
To test your changes, run unit tests with ``nox``::

    # Run tests for all supported versions of Python and oauth2client:
    nox
    # Run tests for Python 3.7:
    nox -s unit-3.7
    # Run lint
    nox -s lint


.. note::

  The unit tests and system tests are described in the
  ``noxfile.py`` file in this directory. Nox will automatically
  handle constriction of new virtual environments and installation
  of the required test dependencies.

For more information about Nox, including command-line usage, consult
`nox documentation <https://nox.thea.codes/>`__.
