Contribuyendo#

PyMC-Marketing da la bienvenida a las contribuciones de individuos o grupos interesados. Estas directrices se proporcionan para ofrecer a los posibles contribuyentes información que les permita hacer su contribución conforme a las convenciones del proyecto PyMC-Marketing y maximizar la probabilidad de que tales contribuciones sean fusionadas de la manera más rápida y eficiente posible. Los contribuyentes no necesitan ser expertos, pero deben estar interesados en el proyecto, dispuestos a aprender y a compartir conocimientos.

Existen 4 formas principales de contribuir al proyecto PyMC-Marketing (en orden ascendente de dificultad o alcance):

  1. Enviando problemas relacionados con errores o mejoras deseadas.

  2. Contribuyendo o mejorando la documentación (docs) o ejemplos.

  3. Solucionando problemas pendientes (errores) en la base de código existente. Estos varían desde errores de software de bajo nivel hasta problemas de diseño de nivel superior.

  4. Añadiendo nuevas o mejoradas funcionalidades a la base de código existente.

Los elementos 2-4 requieren la configuración de un entorno de desarrollo local, consulte Pasos de desarrollo local para más información.

Abriendo problemas#

Agradecemos que nos notifiquen sobre problemas con el código existente de PyMC-Marketing. Preferimos que los problemas se informen en el Github Issue Tracker, en lugar de en redes sociales o por correo electrónico directo a los desarrolladores.

Por favor, verifique que su problema no esté siendo abordado actualmente por otros problemas o solicitudes de extracción utilizando la herramienta de búsqueda de GitHub para buscar palabras clave en el rastreador de problemas del proyecto.

Contribuyendo código a través de solicitudes de extracción#

Si bien la presentación de informes de problemas es valiosa, alentamos encarecidamente a los usuarios que estén inclinados a hacerlo a que envíen parches para problemas nuevos o existentes a través de solicitudes de extracción. Este es particularmente el caso de correcciones simples, como errores tipográficos o ajustes en la documentación, que no requieren una gran inversión de tiempo y atención.

Se anima a los colaboradores a contribuir con nuevo código para mejorar la funcionalidad de PyMC-Marketing, a través de solicitudes de extracción.

El flujo de trabajo preferido para contribuir a PyMC-Marketing es bifurcar el repositorio de GitHub, clonarlo en su máquina local y desarrollar en una rama de características.

Para más instrucciones, consulte la lista de verificación de solicitudes de extracción

Pasos para el desarrollo local#

  1. Si aún no lo ha hecho, bifurque el repositorio del proyecto haciendo clic en el botón “Fork” cerca de la parte superior derecha de la página principal del repositorio. Esto crea una copia del código bajo su cuenta de usuario de GitHub.

  2. Clona tu bifurcación del repositorio pymc-marketing de tu cuenta de GitHub a tu disco local y añade el repositorio base como remoto:

    git clone git@github.com:<your GitHub handle>/pymc-marketing.git
    cd pymc-marketing
    git remote add upstream git@github.com:pymc-labs/pymc-marketing.git
    

    Alternativamente, si utiliza el GitHub CLI, entonces el comando requerido es solo

    gh repo fork pymc-labs/pymc-marketing
    
  3. Cree una rama de características (por ejemplo, my-feature) para contener sus cambios de desarrollo:

    git checkout -b my-feature
    

    Siempre utiliza una rama de características. Es una buena práctica no trabajar rutinariamente en la rama main de ningún repositorio.

  4. Cree un entorno de desarrollo dedicado a partir del archivo presente en el repositorio:

    conda env create -f environment.yml
    

    Esto creará un entorno llamado pymc-marketing-dev. Active el entorno.

    conda activate pymc-marketing-dev
    

    Instale el paquete (en modo editable) y sus dependencias de desarrollo:

    make init
    

    Configura los ganchos pre-commit. Primero, instala el paquete pre-commit (ya sea pip install pre-commit, consulta las instrucciones de instalación del paquete). Alternativamente, puedes ejecutar make check_lint, lo que instalará el paquete pre-commit. Luego, ejecuta esto para configurar los scripts de ganchos de git:

    pre-commit install
    
  5. Puedes trabajar en tus cambios localmente, en tu rama de características. Agrega los archivos modificados usando git add y luego git commit archivos:

    git add modified_files
    git commit -m "Message summarizing commit changes"
    

    para registrar sus cambios localmente. Después de hacer el commit, es una buena idea sincronizar con el repositorio base en caso de que haya habido algún cambio:

    git fetch upstream
    git rebase upstream/main
    

    Luego, envía los cambios a tu cuenta de GitHub con:

    git push -u origin my-feature
    
  6. [Opcionalmente] Construya la documentación localmente. Si ha cambiado alguna de la documentación, puede construirla localmente para verificar que se vea como se espera.

    make html
    

    Para eliminar todos los archivos intermedios y el contenido en caché y construir la documentación desde cero, ejecute make cleandocs antes de make html.

  7. Antes de enviar una solicitud de extracción, siga la lista de verificación de solicitudes de extracción.

  8. Finalmente, para enviar una solicitud de extracción, dirígete a la página web de GitHub de tu bifurcación del repositorio PyMC-Marketing. Haz clic en el botón “Pull request” para enviar tus cambios a los mantenedores del proyecto para su revisión. Esto enviará un correo electrónico a los responsables de los commits.

Lista de verificación de la solicitud de extracción#

Recomendamos que su contribución cumpla con las siguientes directrices antes de enviar una solicitud de extracción:

  • Si su solicitud de extracción aborda un problema, utilice el título de la solicitud de extracción para describir el problema y mencione el número del problema en la descripción de la solicitud de extracción. Esto asegurará que se cree un enlace de regreso al problema original.

  • Todos los métodos públicos deben tener docstrings informativos con ejemplos de uso cuando sea apropiado.

  • Para indicar un trabajo en progreso, por favor marque el PR como borrador. Los borradores pueden ser útiles para (1) indicar que está trabajando en algo para evitar trabajo duplicado, (2) solicitar una revisión amplia de la funcionalidad o API, o (3) buscar colaboradores.

  • Todas las demás pruebas pasan cuando todo se reconstruye desde cero.

  • Al agregar funcionalidad adicional, edite un ejemplo existente o cree un nuevo ejemplo (típicamente en forma de un Jupyter Notebook) en las carpetas pymc-marketing/docs/source/mmm o pymc-marketing/docs/source/clv. Consulte otros ejemplos como referencia. Los ejemplos deben demostrar por qué la nueva funcionalidad es útil en la práctica.

  • La documentación y las pruebas de alta cobertura son necesarias para que las mejoras sean aceptadas.

  • La documentación sigue la guía de estilo de NumPy

  • Ejecute cualquiera de los ejemplos preexistentes en pymc-marketing/docs/source/* que contengan análisis que se verían afectados por sus cambios para asegurarse de que nada se rompa. Esta es una oportunidad útil no solo para verificar su trabajo en busca de errores que podrían no ser revelados por las pruebas unitarias, sino también para mostrar cómo su contribución mejora PyMC-Marketing para los usuarios finales.

  • Tu código pasa las pruebas de linting. Ejecuta la línea a continuación para verificar errores de linting:

    make check_lint
    
  • Si desea corregir los errores de linting automáticamente, ejecute

    make lint
    
  • Para ejecutar pruebas:

    make test
    
  • Para verificar el estilo de código:

    make check_format
    
  • Para corregir el estilo de código automáticamente:

    make format