A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Implementar hooks

4/14
Recursos

Introducci贸n a Hooks

Los Hooks son sentencias que se van a ejecutar antes o despu茅s de generar la plantilla de datos. Por ejemplo, puedes usarlos para verificar el nombre de una carpeta, actualizar git, etc.

Implementaci贸n de Hooks

  • Se crea la carpeta 鈥渉ooks鈥, adentro de la carpeta principal de tu proyecto.
  • Dentro de la carpeta se agregan los archivos 鈥減re_gen_project.py鈥 (lo que se ejecuta antes de generar la plantilla) y 鈥減os_gen_project.py鈥 (lo que se ejecuta despu茅s de generar la plantilla).

Por ejemplo, en 鈥減re_gen_project.py鈥 se puede inicializar git o validar nombres y archivos para evitar errores.

En el archivo 鈥減os_gen_project.py鈥 se puede hacer el primer commit en git o mostrar la finalizaci贸n de la instalaci贸n de dependencias.

Contribuci贸n creada por: N茅stor Arellano.

Aportes 7

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Subproceso para instalar las librerias en requirements.txt

subprocess.call(['pip', 'install', '-r', 'requirements.txt'])

C贸digo

cookiecutter.json code:

{
    "project_title": "Cookiecutter Personal",
    "project_slug": "{{ cookiecutter.project_title.lower().replace(' ', '_') }}",
    "project_description": "Something cool",
    "project_author_name": "Your name",
    "project_packages": ["All", "Minimal"],
    "python_version": "3.7"
}

pre_gen_project.py code:

import os
import sys

project_slug = "{{ cookiecutter.project_slug }}"

ERROR_COLOR = "\x1b[31m" # To change the terminal color
MESSAGE_COLOR = "\x1b[34m"
RESET_ALL = "\x1b[0m"

if project_slug.startswith("x"):
    print(f'{ERROR_COLOR}ERROR: {project_slug=} is not a valid name for this template.{RESET_ALL}')

    sys.exit(1)

print(f"{MESSAGE_COLOR}Let's do it! You're going to create something awesome!")
print(f"Creating project at { os.getcwd() }{RESET_ALL}")

post_gen_project.py code:

import subprocess

MESSAGE_COLOR = "\x1b[34m"
RESET_ALL = "\x1b[0m"

print(f"{MESSAGE_COLOR}Almost done!")
print(f"Initializing a git repository...{RESET_ALL}")

subprocess.call(['git', 'init'])
subprocess.call(['git', 'add', '*'])
subprocess.call(['git', 'commit', '-m', 'Initial commit'])

print(f"{MESSAGE_COLOR}The beginning of your destiny is defined now! Create and have fun!{RESET_ALL}")

Sin duda si quisieran mejorar la privacidad, entorno de trabajo, y protecci贸n de datos, carpetss personales y no personales de trabajo, este curso puede ser arma principal para mejorar entornos de trabajo, incluso sin duda esta 谩rea de entorno de trabajo para ciencia de datos aplica Incluso para sector gobierno, sin importar Incluso nivel, a煤n as铆 sin duda para mejorar la privacidad pueden usar un sotfware hardware que no se all谩 Elaborado en ee.uu u.e con fines de protecci贸n de soberan铆a que es la m谩s importante, algunas algunos naciones tendr铆an que recibir una gran 鈥渓ecci贸n internacional鈥 para mejorar sus Infraestructura, tecnolog铆a, y protecci贸n en base a sotfware hardware que no son de la otan, por ejemplo brics que ya comienza con estos estas proyectos porque la soberan铆a es importante y civiles habitantes no tienen porqu茅 estar siendo afectados(as) o estar haciendo trabajo que no les pertenece pero que adem谩s ni reciben sueldos salarios de instituciones Incluso de seguridad de soberan铆a y que sin duda Demuestra la alta corrupci贸n, fallas, Incluso problemas de tecnolog铆a, y problemas de falta de apreciaci贸n nacional internacional, situaci贸n que no tiene porqu茅 afectar a hab铆tantes civiles incluso turistas sin excusas y pretextos. Gran falla internacional.

En fin se de lo que redacto xD.

Excelente y entendido

Example: Validating template variables

Using Pre/Post-Generate Hooks

import re
import sys


MODULE_REGEX = r'^[_a-zA-Z][_a-zA-Z0-9]+$'

module_name = '{{ cookiecutter.module_name }}'

if not re.match(MODULE_REGEX, module_name):
    print('ERROR: %s is not a valid Python module name!' % module_name)

    # exits with status 1 to indicate failure
    sys.exit(1)

Personal Mistakes:

  1. Make sure you鈥檝e removed the default Prefix from environment.yml that鈥檚 part of cookiecutter.
  2. Mamba is better off, so create your venv and then install your packages with mamba as show bellow.
subprocess.call(['conda', 'create', '-n', '{{cookiecutter.environment_name}}'])
subprocess.call(['mamba','env','update','-n','{{cookiecutter.environment_name}}','-f','environment.yml'])

A veces las clases saben ser muy overwhelming. M铆renla al d铆a siguiente de nuevo y muchas cosas se aclaran amigos :c

Estuvo muy completo.