Building Blocks#
Stable surface for extending Patcher. HTTP transport, analysis transforms, configuration and data persistence, PDF rendering.
AnalyzeCompose 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.
ConfigManagerOwns Jamf credentials. Keychain-backed by default; pass in_memory_credentials for CI or non-macOS environments where the keychain isnβt writable.
DataManagerPatch report persistence. Reads and writes the Parquet cache under ~/Library/Caches/Patcher/ that powers analyze and trend comparisons across snapshots.
ExporterRenders 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.
HttpClientAsync httpx base every outbound client inherits from. Provides the per-instance semaphore and the httpx.RequestError β APIResponseError translation subclasses route through.
PdfReportfpdf2-backed renderer for branded patch reports. Handles font loading, logo placement, and per-page header/footer styling driven by the ui_config dict.
PolicyThe 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.
SerializationThe 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.
TokenManagerOAuth token lifecycle for the Jamf Pro API. Acquires, caches, and refreshes bearer tokens; JamfClient drives it for you in normal use.