PCPP2 study materials
PCPP2 study resources

PCPP2 case studies

PCPP2 · Put your knowledge to work in context.

PCPP2™ – Certified Professional Python Programming Level 2 is the second of the two professional credentials on the OpenEDG Python Institute's General-Purpose Programming track, which the Institute describes as its highest level within that path. The Institute positions it for experienced developers, IT specialists, engineers, software and system architects, and working professionals who want an industry credential documenting advanced, specialised skills in Python and related technologies. The PCPP2 case studies are 5 cases and about 4,476 words.

1

Forty order-dependent failures in a 1,850-test suite

Our team maintains billing-lib : 1,850 tests, about 1,200 plain pytest functions and the rest unittest.TestCase subclasses, all run by pytest 8.x in one CI job that takes 22 minutes. For three weeks the suite has been "mostly green": roughly 40 tests fail in the full run but pass alone via pytest tests/test x.py::test y .

822 words, about 4 min
2

Six output formats, a 900-line render method and a config Singleton

docgen renders customer documents in six formats (PDF, HTML, CSV, XLSX, DOCX, MD). All of it lives in DocumentRenderer.render(doc, fmt) , a 900-line method whose body is one if/elif chain; adding XLSX last quarter touched five files.

934 words, about 5 min
3

A thumbnail pool that hangs at join and shells out to ImageMagick

thumbsvc converts uploaded images with ImageMagick on a Linux host with 8 cores. At import the parent builds jobs = multiprocessing.Queue() , then pool = multiprocessing.Pool(8) (fork start method) and pool.map(convert, paths) .

877 words, about 4 min
4

A length-prefixed sensor protocol meeting a single recv()

collector is a TCP server for 500 environmental sensors. The wire format is a 4-byte big-endian unsigned length N followed by N bytes of UTF-8 JSON.

892 words, about 4 min
5

751 queries, a locked SQLite file, and two injection surfaces

ordersvc is a FastAPI + SQLAlchemy 2.0 application on a single SQLite file, still in the default journal mode=DELETE . The list endpoint runs orders = session.execute(select(Order)).scalars().all() and then, per order, touches o.customer.name and len(o.lines) .

951 words, about 5 min