Skip to main content

A Python implenentation of the calculations and evaluations done by the Dew Point Calculator found at https://www.dpcalc.org/.

Project description

preservationeval

PyPI Python CI Coverage License

A Python implenentation of the calculations and evaluations done by the Dew Point Calculator found at https://www.dpcalc.org/.

Details

The preservation evaluation code was taken from the Dew point calulator created by the Image Permanence Institute. For details of the calculations see:

Installation

pip install preservationeval

Usage

Basic Examples

from preservationeval import pi, emc, mold

# Calculate Preservation Index
pi_value = pi(20, 50)  # temperature=20°C, RH=50%
print(f"Preservation Index: {pi_value}")

# Calculate EMC (Equilibrium Moisture Content)
emc_value = emc(20, 50)
print(f"EMC: {emc_value}%")

# Calculate Mold Risk
mold_risk = mold(20, 50)
print(f"Mold Risk: {mold_risk}")

Interpreting Restults

TBD

Development

Project Status Downloads Issues

Setup

# Clone the repository
git clone https://github.com/petter-b/preservationeval
cd preservationeval

# Install development dependencies
pip install -e ".[dev]"

Development Tools

  • black: Code formatting
  • ruff: Linting and code quality
  • mypy: Static type checking
  • pytest: Testing framework
  • pre-commit: Git hooks for code quality

Common Tasks

# Format code
black .

# Run linter
ruff check .

# Type checking
mypy .

# Run tests with coverage
pytest --cov

Testing

CI Coverage CodeQL

Validation Testing

The package includes a validation framework that compares our Python implementation against the original JavaScript implementation from dpcalc.org.

Requirements
  • Node.js and npm must be installed (download)
  • Python test dependencies: pip install -e ".[test]"
Test Data Setup

The test framework automatically:

  • Creates the tests/data directory (git-ignored)
  • Downloads the JavaScript reference implementation
  • Generates and saves test cases
  • Caches results for future test runs

You can manually trigger this setup:

# Download JavaScript reference implementation
# This happens automatically when running tests, or manually:
python -m tests.validate_core

# Run all tests
pytest

# Run only validation tests
pytest tests/test_validation.py

# Run with verbose output
pytest -v tests/test_validation.py

# Generate new test cases (ignore cached)
pytest tests/test_validation.py --force-update

Code Quality

Black Ruff Mypy

Automation

Pre-commit Pre-commit CI Renovate

Development Notes

This project was developed with assistance from Claude AI (Anthropic) and to some extent GitHub Copilot. All code has been validated and tested for accuracy.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Changelog

See CHANGELOG.md for all changes and versioning details.

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

preservationeval-0.3.0.tar.gz (34.5 kB view details)

Uploaded Source

File details

Details for the file preservationeval-0.3.0.tar.gz.

File metadata

  • Download URL: preservationeval-0.3.0.tar.gz
  • Upload date:
  • Size: 34.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.10

File hashes

Hashes for preservationeval-0.3.0.tar.gz
Algorithm Hash digest
SHA256 8a121111def7510cbce46fd85683be9b573fcf729ce9aeef95c61b718c46398d
MD5 b675649817386ed3b4ceabbe88dcae2f
BLAKE2b-256 3f351170531cd75ab9a6a4a5cbf84db31654d956b68e734fc3242b89e04cdc54

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