Cómo contribuir a Flask

¡Gracias por considerar la posibilidad de contribuir a Flask!

Preguntas de apoyo

Por favor, no utilices el rastreador de problemas para esto. El rastreador de problemas es una herramienta para abordar los errores y las solicitudes de características en el propio Flask. Utiliza uno de los siguientes recursos para preguntas sobre el uso de Flask o problemas con tu propio código:

  • El canal #questions en nuestro chat de Discord: https://discord.gg/pallets

  • Pregunta en Stack Overflow. Busca con Google primero usando: site:stackoverflow.com flask {término de búsqueda, mensaje de excepción, etc.}

  • Pregunte en nuestro GitHub Discussions para discusiones a largo plazo o preguntas más amplias.

Informar de los problemas

Incluya la siguiente información en su puesto:

  • Describa lo que esperaba que ocurriera.

  • Si es posible, incluye un ejemplo mínimo reproducible para ayudarnos a identificar el problema. Esto también ayuda a comprobar que el problema no es con su propio código.

  • Describa lo que realmente sucedió. Incluya el rastreo completo si hubo una excepción.

  • Enumera tus versiones de Python y Flask. Si es posible, comprueba si este problema ya está solucionado en las últimas versiones o en el último código del repositorio.

Envío de parches

Si no hay un tema abierto para lo que quieres enviar, prefiere abrir uno para su discusión antes de trabajar en un PR. Puedes trabajar en cualquier tema que no tenga un PR abierto vinculado o un mantenedor asignado. Estos aparecen en la barra lateral. No hace falta que preguntes si puedes trabajar en un tema que te interesa.

Incluya lo siguiente en su parche:

  • Utilice Black para formatear su código. Esta y otras herramientas se ejecutarán automáticamente si instalas pre-commit siguiendo las instrucciones que aparecen a continuación.

  • Incluya pruebas si su parche añade o cambia código. Asegúrese de que la prueba falla sin su parche.

  • Actualice las páginas de documentos y las cadenas de documentos pertinentes. Las páginas de documentos y las cadenas de documentos deben tener 72 caracteres.

  • Añade una entrada en CHANGES.rst. Utilice el mismo estilo que otras entradas. Incluir también . versionchanged:: inline changelogs en los docstrings relevantes.

First time setup using GitHub Codespaces

GitHub Codespaces creates a development environment that is already set up for the project. By default it opens in Visual Studio Code for the Web, but this can be changed in your GitHub profile settings to use Visual Studio Code or JetBrains PyCharm on your local computer.

  • Asegúrate de tener una cuenta en GitHub.

  • From the project’s repository page, click the green «Code» button and then «Create codespace on main».

  • The codespace will be set up, then Visual Studio Code will open. However, you’ll need to wait a bit longer for the Python extension to be installed. You’ll know it’s ready when the terminal at the bottom shows that the virtualenv was activated.

  • Check out a branch and start coding.

First time setup in your local environment

  • Asegúrate de tener una cuenta en GitHub.

  • Descargue e instale la última versión de git.

  • Configura git con tu nombre de usuario y correo electrónico.

    $ git config --global user.name 'your name'
    $ git config --global user.email 'your email'
    
  • Fork Flask a su cuenta de GitHub haciendo clic en el botón Fork.

  • Clone your fork locally, replacing your-username in the command below with your actual username.

    $ git clone https://github.com/your-username/flask
    $ cd flask
    
  • Create a virtualenv. Use the latest version of Python.

    • Linux/macOS

      $ python3 -m venv .venv
      $ . .venv/bin/activate
      
    • Windows

      > py -3 -m venv .venv
      > .venv\Scripts\activate
      
  • Instale las dependencias de desarrollo y luego instale Flask en modo editable.

    $ python -m pip install -U pip setuptools wheel
    $ pip install -r requirements/dev.txt && pip install -e .
    
  • Instale los hooks de pre-commit.

    $ pre-commit install --install-hooks
    

Empezar a codificar

  • Crea una rama para identificar el problema en el que te gustaría trabajar. Si estás enviando una corrección de un error o de la documentación, bifurca desde la última rama «.x».

    $ git fetch origin
    $ git checkout -b your-branch-name origin/2.0.x
    

    Si estás enviando una adición o cambio de característica, bifúrcate de la rama «main».

    $ git fetch origin
    $ git checkout -b your-branch-name origin/main
    
  • Utilizando su editor favorito, realice los cambios, hacer commits a medida que avanza.

    • If you are in a codespace, you will be prompted to create a fork the first time you make a commit. Enter Y to continue.

  • Incluya pruebas que cubran cualquier cambio de código que realice. Asegúrese de que la prueba falla sin su parche. Ejecute las pruebas como se describe a continuación.

  • Push your commits to your fork on GitHub and create a pull request. Link to the issue being addressed with fixes #123 in the pull request description.

    $ git push --set-upstream origin your-branch-name
    

Ejecución de las pruebas

Ejecute el conjunto de pruebas básicas con pytest.

$ pytest

Esto ejecuta las pruebas para el entorno actual, que suele ser suficiente. CI ejecutará el conjunto completo cuando envíe su solicitud de extracción. Puede ejecutar el conjunto completo de pruebas con tox si no quiere esperar.

$ tox

Ejecución de la cobertura de las pruebas

Generar un informe de las líneas que no tienen cobertura de pruebas puede indicar por dónde empezar a contribuir. Ejecuta pytest utilizando coverage y genera un informe.

If you are using GitHub Codespaces, coverage is already installed so you can skip the installation command.

$ pip install coverage
$ coverage run -m pytest
$ coverage html

Abra htmlcov/index.html en su navegador para explorar el informe.

Más información sobre cobertura.

Construir los documentos

Construye los documentos en el directorio docs usando Sphinx.

$ cd docs
$ make html

Abre _build/html/index.html en tu navegador para ver los documentos.

Más información sobre Sphinx.