0%

A Project Someone Else Can Run · capstone

Capstone project: Project: Download the Source, Not the Machine

Everything the chapter promised is now in place. This last step lets you inspect a real download: take the project out of Python Land and look at what actually travels.

First, check what is in the workspace. The saved tree should hold exactly the six authored files and nothing else. No generated JSON from a run you did earlier, no .venv, no cache directory, no archive of a previous attempt, no copied proof folder. If you created any of those while working through the chapter, remove them now.

ls
ls tests

You should see API_CONTRACT.md, README.md, api_catalog.py, requirements.txt, requirements-dev.txt, and tests/test_api_catalog.py.

Run the suite one final time, so you know the thing you are about to hand over works:

python -m pytest -q

Take it off the site

Use Download project while signed in. You get a ZIP named python-land-python-in-practice-a-project-someone-else-can-run.zip, holding your six files plus a PYTHONLAND_README.md that Python Land generates for you. Its entries sit at the root of the archive, so extract it into a new empty folder rather than into one that already has files in it.

That generated guide is not your README. Yours is the one that tells a person how to rebuild the environment and run the tests. Keep both; they answer different questions.

Open the extracted folder and read your own README.md as if you had never seen this project. Follow it. If a step assumes something you only know because you wrote it, that is the step to fix.

What travels, and what does not

The download is deliberately small. It carries decisions, not state: source, documentation, dependency recipes, and tests. It does not carry the environment those recipes rebuild, the caches your tools wrote, or the JSON a run happened to produce.

One honest limit is worth naming. The practice-api hostname in this project is internal to Python Land, so an actual fetch will not succeed once the project is on your own machine. The tests still pass, because they use fake responses rather than a live service. That is the point of writing them that way.

What is added by the download service rather than authored by you?

Git is the natural next thing to learn here. A project this clean is exactly what a first repository should contain, and the hardest part of starting one is deciding what to leave out, which you have already done:

Ask Monty to read your README.md as a stranger would and name the first instruction that assumes knowledge you never wrote down.

Task

Submit the exact clean six-file UTF-8 project and rerun its fake-HTTP suite. Then use Download project while signed in. Keep generated JSON, derived/private state, .gitignore, and Git history out of the authored tree, and keep source-grading evidence separate from claims about the click, PowerShell, deployment, or a live API.