Building Blocks#

Stable surface for extending Patcher. HTTP transport, analysis transforms, configuration and data persistence, PDF rendering.


Analyze

Compose filters and trend criteria over a list of PatchTitle objects. The transform layer behind patcherctl analyze; reach for it when you want to slice patch data your own way.

Analyze
ConfigManager

Owns Jamf credentials. Keychain-backed by default; pass in_memory_credentials for CI or non-macOS environments where the keychain isn’t writable.

Config Manager
DataManager

Patch report persistence. Reads and writes the Parquet cache under ~/Library/Caches/Patcher/ that powers analyze and trend comparisons across snapshots.

Data Manager
Exporter

Renders patch titles to PDF, Excel, HTML, and JSON. A pure consumer: DataManager builds and caches the canonical frame, the exporter only writes the report files.

Exporter
HttpClient

Async httpx base every outbound client inherits from. Provides the per-instance semaphore and the httpx.RequestError β†’ APIResponseError translation subclasses route through.

HTTPClient
PdfReport

fpdf2-backed renderer for branded patch reports. Handles font loading, logo placement, and per-page header/footer styling driven by the ui_config dict.

PDF Report
Policy

The hardcoded catalog rules: which Installomator team IDs and Jamf titles are skipped, which bundle_ids are seeded for the stitch, and which internal columns are stripped from rendered reports.

Policy
Serialization

The shared conversions between PatchTitle objects and their DataFrame and dict forms. One place owns model_dump, so the cache, the diff path, and JSON export stay consistent.

Serialization
TokenManager

OAuth token lifecycle for the Jamf Pro API. Acquires, caches, and refreshes bearer tokens; JamfClient drives it for you in normal use.

Token Manager