Analise e documente a biblioteca Python
Explique a implementação que você tem, não a aplicação que um modelo espera. As variantes Python e C# têm conceitos semelhantes, mas não há garantia de que tenham APIs, diferenciação entre maiúsculas e minúsculas ou tratamento de erros idênticos.
Resumo do laboratório

Ilustração conceitual original (SVG)
| Em resumo | Sua rota |
|---|---|
| Nível e tempo | 200; 45 minutos (estimativa de facilitação) |
| Ação inicial | Rastreie return_loan e diferencie os erros registrados das exceções propagadas. |
| Materiais do aluno | Baixe 02-python.zip |
| Workspace | Abra a raiz do kit extraído; execute a baseline de library relativa a essa raiz |
| Verificação inicial esperada | Os testes unittest existentes são descobertos e passam. |
| Ajuda de configuração | Baixe, extraia, Git local e GitHub opcional |
[!NOTE] As fixtures de Python e C# compartilham um domínio, não necessariamente um comportamento idêntico.
Conceitos · Primeira tarefa · Lista de evidências · Redefinir
Objetivos de aprendizagem
- Identifique a raiz correta de importação e execução do Python.
- Rastreie ações do console pelos serviços até o armazenamento JSON.
- Documente comportamentos testados e limitações sem garantias inventadas.
Antes de começar
Conclua a configuração de Python e prepare
02-python. Use a
fixture da biblioteca Python incluída.
Execute os comandos abaixo a partir do diretório library dela.
Conceitos e casos de uso
| Pasta | Papel |
|---|---|
console |
Construir dependências, ler entrada e apresentar resultados |
application_core |
Entidades, interfaces, decisões dos serviços |
infrastructure |
Carregamento de JSON, preenchimento de referências e persistência |
tests |
Cenários de serviços usando unittest e mocks |
Cenário do exercício
Um colega precisa de instruções confiáveis de integração para a biblioteca. Documente busca de usuários, renovação de associação, devolução/prorrogação de empréstimos e as limitações que o código-fonte realmente apresenta.
Tarefa 1 - Execute e inspecione a linha de base
python -m unittest discover -s tests -p "test_*.py" -v
python console/main.py
- Registre os nomes dos testes e os códigos de saída.
- Leia
console/main.pye rastreie comoJsonData, repositórios e serviços são construídos. - Inspecione os caminhos do carregador relativos ao módulo dele. Não presuma que a convenção de configurações do C# se aplica ao Python.
- Use somente os registros sintéticos fornecidos. Os fluxos de devolução/renovação podem persistir alterações.
Tarefa 2 - Investigue um fluxo de trabalho
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.
Verifique com o código. Um erro impresso por JsonData não implica que uma exceção
foi propagada ou que um objeto parcialmente carregado seja utilizável.
Tarefa 3 - Modele os dados
---
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, exemplares físicos e empréstimos da biblioteca
accDescr: Um livro pode ter vários exemplares físicos; cada empréstimo associa um exemplar físico a um usuário da biblioteca.
BOOK ||--o{ BOOK_ITEM : tem
BOOK_ITEM ||--o{ LOAN : aparece_em
PATRON ||--o{ LOAN : pega_emprestado
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
}
Legenda. As caixas são tipos conceituais de registro; pés de galinha significam vários registros relacionados. Os nomes dos campos correspondem às entidades Python.
Explicação. A disponibilidade pertence a um exemplar físico e ao seu empréstimo ativo, não a todos os exemplares de um título. Este modelo não cria restrições de chave estrangeira no JSON.
Tarefa 4 - Produza documentação com uma edição delimitada
- Peça a Plan seções de README com referências às fontes e comandos exatos.
- Revise configuração, raiz de importação, fluxos implementados, efeitos colaterais no JSON, escopo dos testes e restauração.
- Peça a Agent que edite somente o README.
- Execute os comandos dele a partir do diretório documentado. Registre os erros em vez de alterar silenciosamente a aplicação durante a documentação.
- Compare o README com os testes reais; evite afirmações como “totalmente coberto”.
Verifique seu trabalho
- A raiz de importação e o comando do console são reproduzíveis.
- As relações dos dados são precisas.
- O comportamento atual e as melhorias propostas estão separados.
- As limitações de carregamento/persistência são explícitas.
- Somente as alterações pretendidas de documentação/exploração de dados aparecem no diff.
Solução de problemas
Se application_core não puder ser importado, verifique se o diretório de trabalho é
library. Se nenhum teste for encontrado, inspecione o executor e o padrão de arquivos. Se um fluxo
modificar o JSON, restaure somente o arquivo da fixture copiada após salvar as evidências.
Prática independente
Compare um fluxo com a variante C#. Indique uma diferença real de implementação em vez de alegar que as duas stacks são semanticamente idênticas.
Restauração
Feche o console, preserve o README e as evidências e restaure somente os arquivos alterados na cópia descartável. Não modifique o currículo de origem.