Skip to main content

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.

Tests Coverage Python License: MIT

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:

  1. Models Layer (src/pm_data_tools/models/) - Canonical data structures
  2. Schemas Layer (src/pm_data_tools/schemas/) - Format-specific parsers and writers
  3. 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


Download files

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

Source Distribution

pm_data_tools-0.2.0.tar.gz (129.7 kB view details)

Uploaded Source

Built Distribution

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

pm_data_tools-0.2.0-py3-none-any.whl (88.7 kB view details)

Uploaded Python 3

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

Hashes for pm_data_tools-0.2.0.tar.gz
Algorithm Hash digest
SHA256 618e5b9c4f020aadd540ee7678ed2160a8734348b5a881da62cf878002943889
MD5 9b614591f6dffe32e5d3643d1f90a107
BLAKE2b-256 507bc77894867e1a415de3b2c7d776a6db789c524d6e222c0790af0aa847e765

See more details on using hashes here.

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

Hashes for pm_data_tools-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cb290e5e5e07d204022d9f48f3ccf701fc74c3a0b30500b515b926f283af8b8d
MD5 fc054381f52fdc9cfdc97f56c452f327
BLAKE2b-256 dee1a4267fb83dce4bb85a1b919660bda84d2146ba416e5ced4572a15274e402

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page