.. _docs-style-python:
==================
Python style guide
==================
.. _Python: https://www.python.org/
Pigweed uses the standard `Python`_ style: `PEP8
`__. All Pigweed Python code should
pass ``pw format``, which invokes ``black`` with a couple options.
---------------
Python versions
---------------
Pigweed officially supports :ref:`a few Python versions
`. Upstream Pigweed code must support those Python
versions. The only exception is :ref:`module-pw_env_setup`, which must also
support Python 2 and 3.6.
.. _docs-style-python-extend-generated-import-paths:
-------------------------------------------------------
Extend the import path of packages with generated files
-------------------------------------------------------
Python packages that include generated files should extend their import path
using the following snippet at the beginning of their ``__init__.py``:
.. code-block:: python
# This Python package contains generated Python modules that overlap with
# this `__init__.py` file's import namespace, so this package's import path
# must be extended for the generated modules to be discoverable.
#
# Note: This needs to be done in every nested `__init__.py` that will contain
# overlapping generated files.
__path__ = __import__('pkgutil').extend_path(__path__, __name__)