pypas¶

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:
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:
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:
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):
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:
Filtros¶
Es posible aplicar distintos filtros para refinar el listado de ejercicios:
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:
- Utilizamos su slug.
El comando anterior creará una carpeta add con una estructura «similar»1 a la siguiente:
Enunciado de un ejercicio¶
Una vez dentro de la carpeta del ejercicio, podemos visualizar el enunciado del ejercicio mediante el siguiente comando:
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:
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:
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:
Ahora podrías ejecutar tu programa con:
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:
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:
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:
Desautenticarse¶
Es posible eliminar el «token» de autenticación ejecutando el comando:
Entregar un ejercicio¶
Para entregar (subir) un ejercicio a pypas.es debes ejecutar el siguiente comando:
- 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:
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:
Puedes obtener información de un determinado frame utilizando lo siguiente:
Requiere autenticación
Este comando necesita estar previamente autenticado/a.
Obtener tus entregas¶
Puedes obtener (descargar) tus entregas a través del siguiente comando:
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. |
-
Cada ejercicio puede disponer de una estructura inicial (plantilla) distinta y por lo tanto no ser exactamente igual al ejemplo mostrado. ↩