Directrices de codificación de Python

La mayoría de nuestras pautas de python se aplican mediante varios linters. Actualmente estamos usando isort, pycodestyle y pylint - ¡Dios mío! Le recomendamos que se familiarice con la configuración.

Versión de Python

Todo nuestro código python tiene como objetivo Python 3 exclusivamente. No ofrecemos soporte para Python 2 en absoluto.

Intentamos apuntar a la versión de Python 3 compatible más antigua, que actualmente es 3.7. Se pueden otorgar excepciones por proyecto para usar una versión más nueva si se requieren ciertas características.

Diseño de archivo/directorio

Al crear un proyecto de python, utilizamos módulos de python. Si un proyecto produce un solo ejecutable, el código ejecutable debe estar en __main__.py.

Si un archivo de python contiene una sola clase, el archivo debe tener el nombre de la clase y ser UpperCamelCase. Si un archivo de python contiene funciones de utilidad, el archivo debe recibir un nombre descriptivo y ser snake_case.

Esperamos jerarquías paralelas de directorios fuente y de prueba. Por ejemplo,

raíz
  - analizador # nombre del paquete, directorio que contiene el código fuente
    - __init__.py
    - __main__.py # opcional para ejecutables
    Parser.py # contiene la clase Parser
    - rápido
      - __init__.py
      - ast.py # contiene varias exportaciones

  - pruebas # directorio que contiene pruebas para el código fuente
    - __init__.py
    - test_Parser.py # pruebas unitarias para parser/Parser.py
    - rápido
      - __init__.py
      - test_ast.py # pruebas unitarias para parser/ast/ast.py

Denominación

La mayoría de las reglas de nomenclatura se aplican mediante pelusa, pero para evitar dudas:

  1. Los nombres de las clases deben ser UpperCamelCase.

  2. Las constantes deben ser TITLE_CASE.

  3. Todo lo demás debe ser snake_case.

Los nombres de miembros y funciones privadas deben tener como prefijo un solo guión bajo (_). Tales funciones nunca deben ser importadas por otros módulos ni accedidas fuera de la clase contenedora.