0%

Een project dat iemand anders kan uitvoeren · eindproject

Eindproject: Project: download de broncode, niet de computer

Alles wat het hoofdstuk beloofde staat nu klaar. In deze laatste stap bekijk je een echte download: haal het project uit Python Land en kijk wat er daadwerkelijk meegaat.

Controleer eerst wat er in de werkruimte staat. De opgeslagen structuur hoort precies de zes geschreven bestanden te bevatten en verder niets. Geen gegenereerde JSON van een eerdere uitvoering, geen .venv, geen cachemap, geen archief van een vorige poging en geen gekopieerde controlemap. Als je die tijdens dit hoofdstuk hebt gemaakt, verwijder ze dan nu.

ls
ls tests

Je hoort API_CONTRACT.md, README.md, api_catalog.py, requirements.txt, requirements-dev.txt en tests/test_api_catalog.py te zien.

Voer de suite nog één keer uit, zodat je weet dat wat je gaat overdragen werkt:

python -m pytest -q

Haal het van de site

Gebruik Download project terwijl je bent ingelogd. Je krijgt een ZIP met de naam python-land-python-in-practice-a-project-someone-else-can-run.zip, met je zes bestanden plus een PYTHONLAND_README.md die Python Land voor je genereert. De bestanden staan in de hoofdmap van het archief. Pak het daarom uit in een nieuwe lege map, niet in een map waar al bestanden staan.

Die gegenereerde handleiding is niet jouw README. Jouw README vertelt iemand hoe die de omgeving opnieuw opbouwt en de tests uitvoert. Bewaar beide; ze beantwoorden verschillende vragen.

Open de uitgepakte map en lees je eigen README.md alsof je dit project nooit eerder zag. Volg de instructies. Als een stap iets veronderstelt dat je alleen weet omdat je die zelf schreef, is dat de stap die je moet verbeteren.

Wat gaat mee en wat niet?

De download is bewust klein. Die bevat keuzes, geen toestand: broncode, documentatie, dependencyrecepten en tests. De omgeving die die recepten opnieuw opbouwen gaat niet mee, net zomin als de caches die je hulpmiddelen maakten of de JSON die een uitvoering toevallig produceerde.

Eén beperking verdient een eerlijke vermelding. De hostnaam practice-api in dit project is intern voor Python Land, dus een echt ophaalverzoek slaagt niet zodra het project op je eigen computer staat. De tests slagen nog steeds, omdat ze namaakantwoorden gebruiken in plaats van een live dienst. Daarvoor heb je ze zo geschreven.

Wat voegt de downloaddienst toe in plaats van dat jij het schrijft?

Git is hier de logische volgende stap om te leren. Een zo schoon project is precies wat een eerste repository hoort te bevatten. Het lastigste bij het beginnen is bepalen wat je weglaat, en dat heb je al gedaan:

Vraag Monty je README.md als een buitenstaander te lezen en de eerste instructie aan te wijzen die kennis veronderstelt die je nooit hebt opgeschreven.

Opdracht

Lever het exacte schone UTF-8-project met zes bestanden in en voer de suite met nagebootste HTTP opnieuw uit. Gebruik daarna Download project terwijl je bent ingelogd. Houd gegenereerde JSON, afgeleide/private toestand, .gitignore en Git-geschiedenis buiten de geschreven bestandsstructuur. Houd bewijs uit broncodebeoordeling gescheiden van uitspraken over de klik, PowerShell, deployment of een live API.