Universal parser and validator for project management data. Supports NISTA compliance.
Project description
PM Data Tools
Universal parser and validator for project management data. Supports NISTA compliance.
Part of the PDA Platform.
Overview
PM Data Tools provides a canonical data model and conversion utilities for project management data across multiple platforms and standards. Built for UK Government NISTA (National Infrastructure and Service Transformation Authority) standard compliance.
Features
- Canonical data model for project management data
- Schema mappings for major PM tools:
- Microsoft Project (MSPDI XML)
- Primavera P6 (XER, PMXML)
- Jira
- Microsoft Planner
- Monday.com
- Asana
- Smartsheet
- Validation framework for structural and semantic rules
- CLI tools for conversion, validation, and inspection
- GMPP-aligned for UK government project data
- NISTA-ready (placeholder for official schema)
- 100% test coverage with comprehensive test suite
Installation
pip install pm-data-tools
For development:
pip install pm-data-tools[dev]
Quick Start
Parse from supported formats
from pm_data_tools.schemas.monday import MondayParser
from pm_data_tools.schemas.asana import AsanaParser
from pm_data_tools.schemas.smartsheet import SmartsheetParser
from pm_data_tools.schemas.gmpp import GMPPParser
# Parse Monday.com data
monday_parser = MondayParser()
project = monday_parser.parse_file("monday_board.json")
# Parse Asana data
asana_parser = AsanaParser()
project = asana_parser.parse_file("asana_project.json")
# Parse Smartsheet data
smartsheet_parser = SmartsheetParser()
project = smartsheet_parser.parse_file("smartsheet.json")
# Parse GMPP CSV data
gmpp_parser = GMPPParser()
projects = gmpp_parser.parse_file("gmpp_projects.csv")
Validate project data
from pm_data_tools import validate
result = validate("project.xml")
if result.valid:
print("✓ Validation passed")
else:
for error in result.errors:
print(f"✗ {error.code}: {error.message}")
CLI Usage
# Convert formats
pm-data-tools convert project.xml project.json --to canonical
# Validate project file
pm-data-tools validate project.xml
# Inspect project structure
pm-data-tools inspect project.xml
Canonical Data Model
The canonical model is a superset of all supported formats, enabling lossless conversion between tools.
Core entities:
- Project - Container with metadata, schedule, and financials
- Task - Work items with WBS, schedule, progress, and costs
- Resource - People, equipment, materials with rates
- Assignment - Task-resource allocation
- Dependency - Task relationships (FS, FF, SS, SF)
- Risk - Risk register entries with probability/impact
- Milestone - Key project dates
- Calendar - Working time definitions
Supported Formats
| Format | Read | Write | Status | Coverage |
|---|---|---|---|---|
| Monday.com (JSON API) | ✅ | 🚧 | v0.1.0 | 97% (32 tests) |
| Asana (JSON API) | ✅ | 🚧 | v0.1.0 | 99% (20 tests) |
| Smartsheet (JSON API) | ✅ | 🚧 | v0.1.0 | 94% (21 tests) |
| GMPP (CSV) | ✅ | 🚧 | v0.1.0 | 99% (21 tests) |
| Microsoft Project (MSPDI) | 🚧 | 🚧 | Planned | - |
| Primavera P6 (XER) | 🚧 | 🚧 | Planned | - |
| Primavera P6 (PMXML) | 🚧 | 🚧 | Planned | - |
| Jira (JSON API) | 🚧 | 🚧 | Planned | - |
| NISTA | 🚧 | 🚧 | Awaiting schema | - |
NISTA Alignment
This library is designed to support the UK Government's Programme and Project Data Standard launched in December 2024. The GMPP schema module provides current alignment; full NISTA support will be added when the official schema is published.
Development
Setup
# Clone repository
git clone https://github.com/PDA-Task-Force/pda-platform.git
cd pm-data-tools
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install development dependencies
pip install -e ".[dev]"
# Install pre-commit hooks
pre-commit install
Running Tests
# Run all tests with coverage
pytest
# Run specific test file
pytest tests/test_models/test_task.py
# Run with coverage report
pytest --cov-report=html
Code Quality
# Format code
ruff format .
# Lint code
ruff check .
# Type check
mypy src/pm_data_tools
Architecture
PM Data Tools follows a three-layer architecture:
- Models Layer (
src/pm_data_tools/models/) - Canonical data structures - Schemas Layer (
src/pm_data_tools/schemas/) - Format-specific parsers and writers - Validation Layer (
src/pm_data_tools/validators/) - Structural and semantic validation
All conversions pass through the canonical model:
Source Format → Parser → Canonical Model → Writer → Target Format
This ensures:
- Lossless roundtrip conversion (Source → Canonical → Source preserves data)
- Consistent validation (all formats validated against same rules)
- Extensibility (new formats only need parser/writer, not N² converters)
Contributing
See CONTRIBUTING.md for development guidelines, coding standards, and how to submit contributions.
Acknowledgements
Developed by members of the PDA Task Force.
This work was made possible by:
- The PDA Task Force White Paper identifying AI implementation barriers in UK project delivery
- The NISTA Programme and Project Data Standard and its 12-month trial period
Sponsored by the UK Government's Infrastructure and Projects Authority (IPA) research initiative.
License
MIT License - see LICENSE for details.
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pm_data_tools-0.2.0.tar.gz.
File metadata
- Download URL: pm_data_tools-0.2.0.tar.gz
- Upload date:
- Size: 129.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
618e5b9c4f020aadd540ee7678ed2160a8734348b5a881da62cf878002943889
|
|
| MD5 |
9b614591f6dffe32e5d3643d1f90a107
|
|
| BLAKE2b-256 |
507bc77894867e1a415de3b2c7d776a6db789c524d6e222c0790af0aa847e765
|
File details
Details for the file pm_data_tools-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pm_data_tools-0.2.0-py3-none-any.whl
- Upload date:
- Size: 88.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb290e5e5e07d204022d9f48f3ccf701fc74c3a0b30500b515b926f283af8b8d
|
|
| MD5 |
fc054381f52fdc9cfdc97f56c452f327
|
|
| BLAKE2b-256 |
dee1a4267fb83dce4bb85a1b919660bda84d2146ba416e5ced4572a15274e402
|