Skip to main content

Data migration validation, reporting, and preflight toolkit.

Project description

migration-tools

A Python toolkit for data migration validation, preflight checks, and reporting.

Install

pip install migration-tools

Quick start

from migration_tools import (
    setup_logger,
    load_dataset,
    load_mapper,
    init_outputs,
    run_preflight_checks,
    check_output_date_formats,
    run_date_correlation_check,
    write_outputs,
    print_summary,
    generate_html_report,
)

logger = setup_logger(log_dir="logs")

data      = load_dataset("dataset1.xlsx", logger=logger)
migration = load_mapper("mapper.xlsx", logger=logger)
output_success, output_failed = init_outputs(migration)

# Pre-flight: column presence, mapping coverage, date format
run_preflight_checks(
    data,
    migration,
    date_columns=["Datevalue", "Datevalue"],
    date_format="%d.%m.%Y",
    logger=logger,
)

# ... your conversion loop ...

# Post-conversion checks
check_output_date_formats(output_success, date_format="%d.%m.%Y", logger=logger)
run_date_correlation_check(output_success, logger=logger)

# Write outputs and summary
output_zucc, output_fail = write_outputs(output_success, output_failed, "dataset1", logger)
print_summary(len(data), len(output_success), len(output_failed), output_zucc, output_fail, 12.4, logger)

# Generate HTML report
generate_html_report(
    dataset_name="dataset1",
    total_rows=len(data),
    success_count=len(output_success),
    failed_count=len(output_failed),
    execution_time=12.4,
    output_success=output_success,
    output_failed=output_failed,
    logger=logger,
)

CLI

# Run preflight checks only
migration-tools validate --dataset dataset1.xlsx --mapper mapper.xlsx

# Validate and generate an HTML report
migration-tools report --dataset dataset1.xlsx --mapper mapper.xlsx --format html

# Validate and generate an Excel report
migration-tools report --dataset dataset1.xlsx --mapper mapper.xlsx --format excel

# Both formats at once
migration-tools report --dataset dataset1.xlsx --mapper mapper.xlsx --format both

# Custom date columns and format
migration-tools validate \
    --dataset dataset1.xlsx \
    --mapper mapper.xlsx \
    --date-cols PaatosPaiva VoimassaolonAlkamisPaiva \
    --date-format "%d.%m.%Y"

Supported file formats

File Formats supported
Dataset .xlsx, .csv, .json
Mapper .xlsx, .json

What gets validated

Check When
Required columns present in dataset Pre-flight
Mapping coverage (all value combos have a mapper row) Pre-flight
Source date format Pre-flight
Near-duplicate / whitespace column names Pre-flight
Output date format after transformation Post-conversion
Decision_FromDateDecision_ToDate Post-conversion
Actualization_Date matches Decision_FromDate Post-conversion

Publishing a new version

  1. Bump version in pyproject.toml and __init__.py
  2. Commit and push to main
  3. Create a GitHub Release — CI will build and publish to PyPI automatically

Development

git clone https://github.com/yourname/migration-tools
cd migration-tools
pip install -e ".[dev]"
pytest tests/ -v --cov=migration_tools

License

MIT

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

autom8s-0.1.1.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

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

autom8s-0.1.1-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file autom8s-0.1.1.tar.gz.

File metadata

  • Download URL: autom8s-0.1.1.tar.gz
  • Upload date:
  • Size: 14.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for autom8s-0.1.1.tar.gz
Algorithm Hash digest
SHA256 eed905908c8485b1de747ea3ddd2b4618b65d3d6a6a744f2771e05dc96ea7ff5
MD5 d41e4d5aa9c66bccee98a315c590ce90
BLAKE2b-256 cfa9922ea962945a50c1fd2f22635412ec7ec236ad0a9c542fbdc3801baff397

See more details on using hashes here.

Provenance

The following attestation bundles were made for autom8s-0.1.1.tar.gz:

Publisher: ci.yml on DrinasKastrati/Autom8s

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file autom8s-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: autom8s-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 15.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for autom8s-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f1c5f42223687970a9fa28cb6729866c3017c7a532b74dfbf64bfa0ca46f5485
MD5 bff3f99f06487d2e8fabe7923c70e091
BLAKE2b-256 3df7d5cab5bc0e5a61348c5fa42971553958b0c009335450a3803d06aae7629c

See more details on using hashes here.

Provenance

The following attestation bundles were made for autom8s-0.1.1-py3-none-any.whl:

Publisher: ci.yml on DrinasKastrati/Autom8s

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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