Saltar a contenido

pypas

Banner

Imagen generada con Inteligencia Artificial

Si damos por buena aquella frase de «A programar se aprende programando», sería muy útil disponer de «problemas» a los que encontrar una solución mediante código. Pues este proyecto viene a dar respuesta a este escenario.

Este paquete te ofrece cientos de ejercicios con los que podrás practicar tu lenguaje de programación favorito ❤ Python.

Aprende Python

pypas está íntimamente relacionado con Aprende Python. Es la herramienta que permite trabajar los ejercicios propuestos.

Instalación

El paquete —en realidad— se denomina pypas-cli y existen varias maneras de instalarlo:

Requisitos

Necesitarás instalar uv que es un gestor (rápido y eficiente) de paquetería para Python.

Una vez tengas uv instalado, abre una terminal y ejecuta el siguiente comando:

$ uv tool install -n -p 3.13 pypas-cli
PATH

Para que puedas utilizar correctamente el ejecutable pypas debes añadir a tu PATH la ruta $HOME/.local/bin (en Linux/macOS) o %HOMEPATH%\.local\bin (en Windows).

Requisitos

Necesitarás instalar Python >= 3.10.

Una vez tengas python instalado, abre una terminal y ejecuta el siguiente comando:

$ python -m pip install pypas-cli
pip

Si obtienes un error del tipo No module named pip entonces debes ejecutar este comando para asegurarte de que pip queda instalado en tu distribución Python:

$ python -m ensurepip --upgrade
Requisitos

Necesitarás instalar pipx que es una herramienta para instalar aplicaciones Python en entornos aislados.

Una vez tengas pipx instalado, abre una terminal y ejecuta el siguiente comando:

$ pipx install pypas-cli

Actualización

Es fundamental que tengas instalada la última versión disponible de pypas-cli, para evitar fallos y disponer de las mejoras implementadas.

Para actualizar a la última versión de pypas-cli puedes usar la propia herramienta (self-upgrading):

$ pypas upgrade

Actualización manual

Si tienes algún problema con el comando de actualización pypas upgrade, también puedes actualizar manualmente el paquete pypas-cli. Este proceso dependerá del gestor de paquetes que hayas utilizado:

Gestor Comando de actualización
uv uv tool upgrade --no-cache pypas-cli
pip python -m pip install --no-cache -U pypas-cli
pipx pipx upgrade pypas-cli

Listar ejercicios

Para listar todos los ejercicios «públicos» basta con ejecutar el siguiente comando:

$ pypas list

Filtros

Es posible aplicar distintos filtros para refinar el listado de ejercicios:

$ pypas list -p <topic>  # primary topic
$ pypas list -s <topic>  # secondary topic
$ pypas list -f <frame>

Es posible combinar filtros para obtener un resultado más concreto.

Obtener un ejercicio

Cada ejercicio dispone de un slug (palabra) que lo identifica unívocamente.

Ejemplo

Supongamos que queremos trabajar en el ejercicio add. Para obtenerlo escribimos el siguiente comando:

$ pypas get add #(1)!

  1. Utilizamos su slug.

El comando anterior creará una carpeta add con una estructura «similar»1 a la siguiente:

.
├── docs
│   └── README.pdf
├── main.py
├── tests
│   ├── __init__.py
│   └── test_main.py
└── vendor.py

Enunciado de un ejercicio

Una vez dentro de la carpeta del ejercicio, podemos visualizar el enunciado del ejercicio mediante el siguiente comando:

$ pypas doc

Previsiblemente se abrirá un documento .pdf con la explicación del ejercicio.

Dentro de la carpeta

Este comando requiere estar dentro de la carpeta del ejercicio cd <ejercicio>

Probar un ejercicio

El punto de entrada de la mayoría de los ejercicios es main.py. Será el fichero que debes cumplimentar buscando la etiqueta #TODO

Para probar («pypas testear») un ejercicio puedes usar:

$ pypas test
pytest

En realidad pypas test, en la mayoría de ocasiones, es un simple «wrapper» sobre pytest. Puedes aprovechar todo el potencial de pytest usando las opciones en línea de comandos que ofrece.

Por ejemplo: pypas test -x (para tras el primer test fallido)

Dentro de la carpeta

Este comando requiere estar dentro de la carpeta del ejercicio cd <ejercicio>

Ejecutar un ejercicio

Eventualmente podrías querer ejecutar tu código en vez de lanzar las pruebas. Puedes utilizar esta estrategia para depurar los errores o mejorar la solución propuesta.

Ejemplo

Para explicar cómo, vamos a partir del ejercicio add. Este sería su main.py una vez terminado:

def run(a: int, b: int) -> int:
      result = a + b
      return result

# DO NOT TOUCH THE CODE BELOW
# ...

Tendrás que crear un fichero args.py dentro de la carpeta del ejercicio con los valores que quieras dar a los parámetros de la función principal:

a = 3
b = 7

Ahora podrías ejecutar tu programa con:

$ pypas run

Dentro de la carpeta

Este comando requiere estar dentro de la carpeta del ejercicio cd <ejercicio>

Actualizar un ejercicio

Es posible que, debido a la corrección de errores o mejoras introducidas, haya actualizaciones de los ejercicios.

En ese caso, puedes actualizar el ejercicio con:

$ pypas update

Se hará automáticamente una copia de seguridad (local) de aquellos ficheros (propios) que puedan ser sobreescritos.

Dentro de la carpeta

Este comando requiere estar dentro de la carpeta del ejercicio cd <ejercicio>

Comprimir un ejercicio

Si quisieras comprimir todo el contenido del ejercicio para enviarlo o almacenarlo, lo puedes hacer con:

$ pypas zip

El comando anterior genera un fichero <ejercicio>.zip dentro de la propia carpeta del ejercicio con todos los ficheros (exluyendo ciertos ficheros «temporales» o «auxiliares»).

Dentro de la carpeta

Este comando requiere estar dentro de la carpeta del ejercicio cd <ejercicio>

Autenticarse como usuario

Para poder autenticarte como usuario debes recibir un token por parte del administrador. Una vez que dispongas de este «token» debes ejecutar el siguiente comando:

$ pypas auth tu-token

Desautenticarse

Es posible eliminar el «token» de autenticación ejecutando el comando:

$ pypas unauth

Entregar un ejercicio

Para entregar (subir) un ejercicio a pypas.es debes ejecutar el siguiente comando:

$ pypas put #(1)!

  1. Este comando comprime todos los archivos de tu ejercicio y los sube a pypas.es.

Requiere autenticación

Este comando necesita estar previamente autenticado/a.

Dentro de la carpeta

Este comando requiere estar dentro de la carpeta del ejercicio cd <ejercicio>

Seguir tu actividad

Para seguir tu actividad (de entrega de ejercicios) puedes lanzar el siguiente comando:

$ pypas log

Con el comando anterior podrás obtener la información de tus entregas, separadas por frames. Un frame es un «bloque de ejercicios» que suele tener asociada una fecha de comienzo y una fecha de finalización.

Dentro de cada frame verás la siguiente información:

Item Explicación
Uploaded Número de ejercicios entregados sobre el total de ejercicios del frame.
Passed Número de ejercicios que han pasado todos los tests.
Failed Número de ejercicios que no han pasado todos los tests.
Waiting Número de ejercicios que están pendientes de testearse.
Score Número de ejercicios que han pasado los tests sobre el total disponible: Nota/Puntuación

Puedes obtener información más detallada sobre cada ejercicio entregado utilizando lo siguiente:

$ pypas log -v

Puedes obtener información de un determinado frame utilizando lo siguiente:

$ pypas log -f frame

Requiere autenticación

Este comando necesita estar previamente autenticado/a.

Obtener tus entregas

Puedes obtener (descargar) tus entregas a través del siguiente comando:

$ pypas pull foo

Funciona de la siguiente manera:

flowchart TB
    q1(["¿foo es un slug de ejercicio válido?"])
    q1 -->|sí| a1[["Se descarga el ejercicio foo"]]
    q1 -->|no| q2(["¿foo es un slug de frame válido?"])
    q2 -->|sí| a2[["Se descarga el frame foo"]]

Requiere autenticación

Este comando necesita estar previamente autenticado/a.

Miscelánea

Comando Descripción
pypas --version Indica la versión instalada actualmente del paquete pypas-cli
pypas --help Muestra la ayuda del programa.
Puedes aplicar --help sobre cualquier comando.

  1. Cada ejercicio puede disponer de una estructura inicial (plantilla) distinta y por lo tanto no ser exactamente igual al ejemplo mostrado.