Skip to main content

clearancewatch

A principal must hold valid workers'-comp coverage for every sub — for the whole job. clearancewatch audits subcontractor compliance documents against the job calendar and tells you what's expired, what expires mid-job, and what's coming up for renewal.

Rules modelled from official sources (verified October 2026):

  • Ontario WSIB: clearance certificates are valid up to 90 days; WSIB states a principal must ensure a valid clearance is in place for the full length of a job. (wsib.ca clearances)
  • Alberta WCB: a clearance letter is valid for work done up to the date of the letter — WCB advises requesting one at hire and before each installment. (wcb.ab.ca clearance letters)

This is not legal advice. It's a date-tracking assistant built on the rules above; confirm obligations with your broker, WSIB/WCB, or counsel.

Install

pip install clearancewatch

Jobs file

[
  {
    "name": "Kitchen reno",
    "province": "ON",
    "start": "2026-02-01",
    "end": "2026-03-30",
    "subs": [
      {
        "name": "Bob's Drywall",
        "trade": "drywall",
        "clearance": { "issuer": "WSIB", "number": "1234567", "issued": "2026-01-10", "expires": "2026-04-10" },
        "insurance": { "provider": "Aviva", "policy": "GL-9", "coverage": "C$2M", "expires": "2026-12-31" },
        "licences": [ { "name": "Fall protection", "expires": "2026-09-01" } ]
      }
    ]
  }
]

Usage

clearancewatch audit jobs.json --on 2026-02-15 --within 30
clearancewatch renewals jobs.json --within 30     # just what's coming due
clearancewatch audit jobs.json --json             # machine-readable
ERROR clearance_expires_during_job  Kitchen reno / Bob's Drywall: clearance expires 2026-03-15 before job end 2026-03-30...
WARN  renewal_due                   Kitchen reno / Bob's Drywall: insurance expires 2026-03-05 (within 30 days)

1 error(s), 1 warning(s) — FAIL

Exit 1 when any error-severity finding exists (missing/expired clearance, lapsed coverage, expired insurance or licence) — CI- and cron-friendly.

What it catches

Finding Severity
clearance_missing / clearance_expired / clearance_expires_during_job error
clearance_cover_lapsed (Alberta letter predates ongoing work) warn
issuer_mismatch (ON job, WCB-AB clearance — or vice versa) warn
insurance_missing / insurance_expired error
insurance_expires_during_job warn
licence_expired error
renewal_due / insurance_renewal_due / licence_renewal_due (within --within days) warn

Python API

import datetime as dt
from clearancewatch import Job, audit

job = Job.from_dict({...})
for finding in audit(job, on=dt.date(2026, 2, 15), horizon=30):
    print(finding.severity, finding.code, finding.detail)

clearancewatch renewals over a weekly cron gives you the "call these three subs" list before a gap becomes a deeming problem.

License

MIT-style: use it, ship it, no warranty.

Metadata

Release files for clearancewatch 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for clearancewatch 0.1.0
File Size Uploaded Provenance
clearancewatch-0.1.0.tar.gz 10.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for clearancewatch 0.1.0
File Interpreter ABI Platform
clearancewatch-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 19.6 kB

Release files / clearancewatch-0.1.0.tar.gz

Download URL clearancewatch-0.1.0.tar.gz
Size 10.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ca176566534a0b6a8c1c7fde578d0a45f16ed4f84ddc8d28e97e727500e25315
BLAKE2b-256 checksum
How to use checksums
e006f6fc52020bf11c45d8b5eecb479b63fa5fa580285239ca98003c1bf971c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.15

Release files / clearancewatch-0.1.0-py3-none-any.whl

Download URL clearancewatch-0.1.0-py3-none-any.whl
Size 9.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
34cbcb196e704f0c8a4818f3ea6ab6c590814448d32f44b20325dfa39739b094
BLAKE2b-256 checksum
How to use checksums
4a3d9b7df6e04bb3158eaaf08cf76f46ceae070f5702ad49ffffd4451173d76e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.15

Security for clearancewatch 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page