Analizar y documentar la biblioteca en Python
Explica la implementación que tienes, no la aplicación que un modelo espera. Las variantes de Python y C# tienen conceptos similares, pero no se garantiza que tengan API, sensibilidad a mayúsculas o gestión de errores idénticas.
Resumen del laboratorio

Ilustración conceptual original (SVG)
| De un vistazo | Tu ruta |
|---|---|
| Nivel y tiempo | 200; 45 minutos (estimación de facilitación) |
| Acción inicial | Traza return_loan y distingue los errores registrados de las excepciones propagadas. |
| Materiales del aprendiz | Descarga 02-python.zip |
| Espacio de trabajo | Abre la raíz del kit extraído; ejecuta la baseline desde library relativa a esa raíz |
| Comprobación inicial esperada | Las pruebas unittest existentes se descubren y pasan. |
| Ayuda de configuración | Descarga, extrae, Git local y GitHub opcional |
[!NOTE] Las fixtures de Python y C# comparten un dominio, no necesariamente un comportamiento idéntico.
Conceptos · Primera tarea · Lista de evidencias · Restablecer
Objetivos de aprendizaje
- Identifica la raíz correcta de importación y ejecución de Python.
- Rastrea las acciones de la consola a través de los servicios hasta el almacenamiento JSON.
- Documenta el comportamiento probado y las limitaciones sin inventar garantías.
Antes de empezar
Completa la configuración de Python y prepara
02-python. Usa el
fixture de biblioteca en Python incluido.
Ejecuta los comandos siguientes desde su directorio library.
Conceptos y casos de uso
| Carpeta | Función |
|---|---|
console |
Construir dependencias, leer entradas y presentar resultados |
application_core |
Entidades, interfaces y decisiones de servicios |
infrastructure |
Carga de JSON, resolución de referencias y persistencia |
tests |
Escenarios de servicios con unittest y mocks |
Escenario del ejercicio
Un compañero necesita instrucciones fiables para empezar a usar la biblioteca. Documenta la búsqueda de usuarios, la renovación de membresías, la devolución o ampliación de préstamos y las limitaciones que presenta realmente el código fuente.
Tarea 1 - Ejecutar e inspeccionar la línea base
python -m unittest discover -s tests -p "test_*.py" -v
python console/main.py
- Registra los nombres de las pruebas y los códigos de salida.
- Lee
console/main.pyy rastrea cómo se construyenJsonData, los repositorios y los servicios. - Inspecciona las rutas del cargador relativas a su módulo. No presupongas que la convención de configuración de C# se aplica a Python.
- Usa solo los registros sintéticos proporcionados. Los flujos de devolución o renovación pueden persistir cambios.
Tarea 2 - Investigar un flujo de trabajo
Trace return_loan from the console into LoanService and JsonLoanRepository.
Identify populated entities and when data is saved. Cite source paths.
What happens when an ID is missing or a file cannot be loaded? Do not edit.
Verifica con el código. Un error mostrado por JsonData no implica que se haya propagado una excepción
ni que un objeto cargado parcialmente sea utilizable.
Tarea 3 - Modelar los datos
---
config:
theme: base
look: classic
themeVariables:
darkMode: false
background: "#ffffff"
primaryColor: "#f5f5f5"
primaryTextColor: "#111111"
primaryBorderColor: "#555555"
secondaryColor: "#e0e0e0"
secondaryTextColor: "#111111"
secondaryBorderColor: "#666666"
tertiaryColor: "#bdbdbd"
tertiaryTextColor: "#111111"
tertiaryBorderColor: "#444444"
lineColor: "#444444"
textColor: "#111111"
mainBkg: "#f5f5f5"
nodeBorder: "#555555"
clusterBkg: "#ffffff"
clusterBorder: "#999999"
edgeLabelBackground: "#ffffff"
actorBkg: "#e0e0e0"
actorBorder: "#555555"
actorTextColor: "#111111"
actorLineColor: "#777777"
signalColor: "#333333"
signalTextColor: "#111111"
labelBoxBkgColor: "#f5f5f5"
labelBoxBorderColor: "#777777"
labelTextColor: "#111111"
loopTextColor: "#111111"
activationBkgColor: "#bdbdbd"
activationBorderColor: "#555555"
noteBkgColor: "#f5f5f5"
noteTextColor: "#111111"
noteBorderColor: "#777777"
attributeBackgroundColorOdd: "#f5f5f5"
attributeBackgroundColorEven: "#e0e0e0"
---
erDiagram
accTitle: Títulos de biblioteca, ejemplares físicos y préstamos
accDescr: Un libro puede tener varios ejemplares físicos; cada préstamo asocia un ejemplar físico con un usuario de la biblioteca.
BOOK ||--o{ BOOK_ITEM : tiene
BOOK_ITEM ||--o{ LOAN : aparece_en
PATRON ||--o{ LOAN : toma_prestado
BOOK {
int id
string title
}
BOOK_ITEM {
int id
int book_id
}
LOAN {
int id
int book_item_id
int patron_id
}
PATRON {
int id
string name
}
Leyenda. Los recuadros son tipos conceptuales de registros; las patas de cuervo indican varios registros relacionados. Los nombres de campos corresponden a las entidades de Python.
Explicación. La disponibilidad pertenece a un ejemplar físico y a su préstamo activo, no a todos los ejemplares de un título. Este modelo no crea restricciones de clave externa en JSON.
Tarea 4 - Producir documentación con una edición acotada
- Pide a Plan secciones del README con referencias al código fuente y comandos exactos.
- Revisa la configuración, la raíz de importación, los flujos implementados, los efectos secundarios sobre JSON, el alcance de las pruebas y el restablecimiento.
- Pide a Agent que edite únicamente el README.
- Ejecuta sus comandos desde el directorio documentado. Registra los errores en lugar de modificar silenciosamente la aplicación durante la documentación.
- Compara el README con las pruebas reales; evita afirmaciones como «totalmente cubierto».
Verifica tu trabajo
- La raíz de importación y el comando de consola son reproducibles.
- Las relaciones de datos son precisas.
- El comportamiento actual y las mejoras propuestas están separados.
- Las limitaciones del cargador y la persistencia son explícitas.
- Solo aparecen en el diff los cambios previstos de documentación o exploración de datos.
Solución de problemas
Si no puede importarse application_core, comprueba que el directorio de trabajo sea
library. Si no se encuentran pruebas, inspecciona el ejecutor y el patrón de archivos. Si un flujo
modifica JSON, restaura únicamente el archivo del fixture copiado después de guardar la evidencia.
Práctica independiente
Compara un flujo de trabajo con la variante de C#. Indica una diferencia real de implementación en lugar de afirmar que ambas pilas son semánticamente idénticas.
Restablecimiento
Cierra la consola, conserva el README y la evidencia y después restaura solo los archivos modificados en la copia desechable. No modifiques el contenido formativo fuente.