Skip to main content

Plainfile Project Check

Plainfile Project Check is a free, open-source, dependency-free Python tool for comparing before-and-after project exports by stable ID. It runs locally, reads only the files you name, and emits a deterministic JSON report. It sends no data, performs no network requests, and includes no telemetry or runtime advertising.

It checks missing and unexpected project/task IDs, duplicate IDs in either snapshot, tasks whose project is absent, task-to-project reassignments, and exact-decimal work_minutes changes. A clean result exits 0, differences exit 1, and invalid input or a refused output exits 2.

Requires Python 3.10 or newer.

Install an offline wheel

From the directory containing the downloaded wheel, install the supplied file without relying on package-registry availability, contacting an index, or resolving dependencies:

python -m pip install --no-index --no-deps plainfile_project_check-0.1.0-py3-none-any.whl

To run directly from a source checkout without installing, set PYTHONPATH to the src directory, then use the module command:

$env:PYTHONPATH = "src"
python -m plainfile_project_check examples/before.json examples/after-clean.json

Quick start with JSON

The normalized JSON format is exactly:

{
  "projects": [{"id": "P-001", "name": "Plan"}],
  "tasks": [{"id": "T-001", "project_id": "P-001", "name": "Task", "work_minutes": "60.50"}]
}

From an installed package:

plainfile-project-check before.json after.json --output report.json

The module form is equivalent:

python -m plainfile_project_check before.json after.json

Omit --output to print the report to standard output. An output path must be new. The tool refuses to overwrite an existing output or either input.

CSV adapter

For each snapshot, create one directory containing these two UTF-8 CSV files with exactly these header names and order:

projects.csv

id,name
P-001,"Plan, phase one"

tasks.csv

id,project_id,name,work_minutes
T-001,P-001,"Review, exact totals",60.50

Then run:

plainfile-project-check before-dir after-dir --format csv --output report.json

Ready-to-run synthetic directories are included:

plainfile-project-check examples/csv-before examples/csv-after-corrupted --format csv

CSV values remain text, so IDs such as 0007 keep their leading zeros. The adapter uses ordinary comma-delimited CSV with double-quoted fields. It rejects missing, reordered, extra, or duplicate columns, malformed rows, invalid UTF-8, and invalid decimal work values.

Each input file is limited to 10 MB. IDs, names, and task project IDs must be non-empty strings. Work minutes must be finite, non-negative exact decimal text or a JSON integer, with at most 50 digits and a decimal exponent from -12 through 12. JSON duplicate object keys are rejected.

Scope and limitations

This tool accepts only user-supplied normalized JSON or the documented two-file CSV shape. It has no native Project Online, Microsoft Project, OData, XML, API, authentication, or extraction support. Exporting and mapping source-system data is your responsibility.

Names are validated but not compared. Tasks with duplicate IDs are reported and excluded from task reassignment and work comparison because identity is ambiguous. Duplicate project IDs are reported but do not suppress task comparisons. The report does not understand scheduling dependencies, calendars, resources, assignments, costs, custom fields, or fields omitted from the snapshots. A clean report does not certify a migration, prove data completeness, or establish legal authority to use the data. Keep source backups and review the report before changing another system.

The package code, documentation, examples, and tests were produced with substantial AI assistance under owner direction. All fixtures are original synthetic data; they contain no client data and demonstrate no client results. The package does not promise automatic updates, custom maintenance, or support.

The MIT license permits personal and commercial use, modification, and redistribution with its notice. It does not claim exclusive human authorship or exclusive ownership of general algorithms or AI-generated material.

If you need a separate pre-import CSV cleanup utility, Plainfile Tools sells CSV Import Check for $19. It is a distinct product, is not required for this package, and does not unlock features here.

Contact: plainfiletools@gmail.com

Development

python -m unittest discover -s tests -v
python -m build --no-isolation

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plainfile_project_check-0.1.0.tar.gz (13.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

plainfile_project_check-0.1.0-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

Details for the file plainfile_project_check-0.1.0.tar.gz.

File metadata

  • Download URL: plainfile_project_check-0.1.0.tar.gz
  • Upload date:
  • Size: 13.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.10.11

File hashes

Hashes for plainfile_project_check-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3b85b7edd1f3eeaeb8d569ab1df740770dba13688bd5f35281b5fb89a283e1e4
MD5 843530cee18010daf4658a0b36c6cb71
BLAKE2b-256 6838396268d865aacc18206eb7ba562c05e38b4bf76cde96d5e94d604af5de0d

See more details on using hashes here.

File details

Details for the file plainfile_project_check-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for plainfile_project_check-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 710f3bf7185f9f86753b9d7bce2c8f1199e9201f64006426e8e04523403f7eee
MD5 f5e92c098e6d1025f70d2a4e96df7b6c
BLAKE2b-256 6e7b912f86096aa443f7e892c8fd9f7a015d819d57105f11983338c65cb04b5d

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

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