Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

No Maintenance Intended

DEPRECATED: epoa-tools: WA EPOA pay transparency tools

PyPI PyPI - Python Version Build codecov GitHub stars

Washington state's Equal Pay and Opportunities Act requires pay ranges to be included on job ads (RCW 49.58.110). WA L&I provides a PDF complaint form for violations. epoa-tools automates some of the toil around this form, such as filling out basic information, checking the right boxes, and optionally including additional PDF files as evidence (e.g. the related job posting without pay range information).

The output is a single PDF which can be dropped into WA L&I's secure file upload.

Prerequisites

epoa-tools depends on pdftk for filling out forms and joining pages.

On Debian / Ubuntu, install with:

sudo apt install pdftk-java

Installation

epoa-tools is available on PyPI:

pip install epoa-tools

Usage

Save a PDF file with evidence of the violation (e.g. job ad or recruiter email). Browsers can print or save web pages as PDFs.

Then, use epoa-job-ad to complete the complaint form, attaching your evidence file:

epoa-job-ad \
    --name "John Q. Public" --email john.q.public@example.com \
    "ACME Anti-Pay Ranges, Inc." \
    saved_job_ad.pdf

To file anonymously, omit the --name argument. The complainant name on the form will be listed as Anonymous and the signature line will contain Anonymous (your.email.address@example.com):

epoa-job-ad \
    --email anon.e.mouse@example.com \
    "ACME Anti-Pay Ranges, Inc." \
    saved_job_ad.pdf

Optionally include additional information text about your complaint with the -i / --addinfo / --additional-information option:

epoa-job-ad \
    --email anon.e.mouse@example.com \
    "ACME Anti-Pay Ranges, Inc." \
    saved_job_ad.pdf \
    -i "This job ad is public, contains specific job requirements for a job in WA, but lists no pay range"

Word(s) can be redacted from evidence file attachments on a best effort basis:

epoa-job-ad \
    --email anon.e.mouse@example.com \
    "ACME Anti-Pay Ranges, Inc." \
    saved_job_ad.pdf \
    -r remove_this_word -r also_remove_this_word

Each of these examples creates a file such as john-q-public-acme-anti-pay-ranges-inc-20230101-pay-transparency-complaint.pdf which can then be uploaded to WA L&I.

Development

Poetry installation

Via pipx:

pip install pipx
pipx install poetry
pipx inject poetry poetry-pre-commit-plugin

Via pip:

pip install poetry
poetry self add poetry-pre-commit-plugin

Development tasks

  • Setup: poetry install
  • Run static checks: poetry run poe lint or poetry run pre-commit run --all-files
  • Run static checks and tests: poetry run poe test

Created from smkent/cookie-python using cookiecutter

Metadata

Release files for epoa-tools 0.0.5

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

Source distribution (sdist)

Source distribution for epoa-tools 0.0.5
File Size Uploaded Provenance
epoa_tools-0.0.5.tar.gz 184.1 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for epoa-tools 0.0.5
File Interpreter ABI Platform
epoa_tools-0.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 366.8 kB

Release files / epoa_tools-0.0.5.tar.gz

Download URL epoa_tools-0.0.5.tar.gz
Size 184.1 kB
Tags Source
SHA-256 checksum
How to use checksums
4ab048b35ce4f2db214f5fdc73f231186ae141c8b613172dcedb36d8bad44177
BLAKE2b-256 checksum
How to use checksums
19fb85a7ca8945e8162fc863302b9d00a8bd94a7ce198bd17dcda369ec097666
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.

Transparency log

Release files / epoa_tools-0.0.5-py3-none-any.whl

Download URL epoa_tools-0.0.5-py3-none-any.whl
Size 182.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3409183d6aed898848a5bffecc9d0b0f34df82b4c6bb8abfd60ce6ab57f0ced5
BLAKE2b-256 checksum
How to use checksums
fa22c46005301a8fbc7701053053331d1d9bcdf530010646152d55fd202df860
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.

Transparency log

Security for epoa-tools 0.0.5

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for epoa_tools-0.0.5.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.

Transparency log

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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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