PCPP1 case studies
PCPP1 · Put your knowledge to work in context.
PCPP1™ – Certified Professional Python Programmer 1 is the Professional-level credential in the Python Institute's General-Purpose Programming track, listed on the certification roadmap as exam code PCPP-32-10x and marked Active. It sits above PCEP™ (Entry) and PCAP™ (Associate) and below PCPP2™, which the roadmap lists as "Work in progress". The PCPP1 case studies are 5 cases and about 4,012 words.
1Plugin registry: abstract intermediates and a broken __init_subclass__ chain
Your team maintains validkit , a validation library whose abstract base Validator(ABC) declares validate(self, value) and uses init subclass to add every subclass to a module-level REGISTRY keyed by a lowercased slug . There are 40 concrete validators.
846 words, about 4 min2Python 3.8 support, Ruff's UP rules, and a patch release that breaks defaults
acme-utils is a shared library installed by 30 internal services. pyproject.toml declares requires-python = " =3.8" and CI runs a matrix of 3.8, 3.11 and 3.12.
636 words, about 3 min3Tkinter sync loop: re-entrant update(), worker-thread widget calls, and unsafe shutdown
AssetTrack is a Tkinter/ttk desktop client used by 12 warehouse clerks. Its main window has a ttk.Treeview populated with 8,000 asset rows and a Sync button whose handler fetches 500 records from an HTTPS API, one requests.get() per record, with no timeout.
864 words, about 4 min4Order sync: retry storms, duplicated POSTs, pagination and token refresh
OrderSync is a Python 3.11 service that pulls orders from a vendor's REST API and posts shipment confirmations back. It uses one global requests.get() / requests.post() call per operation, with no timeout , no Session , and a hand-written retry loop of five immediate retries on any exception.
832 words, about 4 min5Inventory model: hash/equality contract, property dispatch from __init__, shared mutable class state
An internal inventory package models products with a plain class. Product defines eq comparing sku and was recently made a key in a dict cache; after deployment, 200 requests failed with TypeError: unhashable type: 'Product' .
834 words, about 4 min