Skip to main content

High-performance unit system library for Python with dimensional safety and fast unit conversions

Project description

Qnty

High-performance unit system library for Python with dimensional safety and fast unit conversions for engineering calculations.

Python 3.11+ License: Apache-2.0 Development Status

⚠️ Important Disclaimer

🚧 Work in Progress: Qnty is currently in active development and has not been thoroughly vetted for production engineering calculations. While we strive for accuracy, this library should not be used for critical engineering applications without independent verification.

📐 Accuracy Notice: The authors are not responsible or liable for incorrect results, calculation errors, or any consequences arising from the use of this library. Always validate calculations independently using established engineering tools and practices.

Use Qnty to help prevent unit errors, but always verify critical calculations through multiple methods.


✨ Key Features

  • 🚀 Ultra-Fast Performance: Prime number encoding and pre-computed conversion tables
  • 🛡️ Type Safety: Compile-time dimensional analysis prevents unit errors
  • ⚡ Zero-Cost Abstractions: Optimized operations with __slots__ and caching
  • 🔗 Fluent API: Intuitive method chaining for readable code
  • 🧮 Engineering-Focused: Built for real-world engineering calculations
  • 🧬 Mathematical System: Built-in equation solving and expression trees
  • 📊 Comprehensive Testing: 187 tests with performance benchmarks

🚀 Quick Start

Installation

pip install qnty

Basic Usage

from qnty import Length, Pressure, Area

# Create quantities with dimensional safety
width = Length(3, "meter", "Width")
height = Length(2, "meter", "Height")

# Solve mathematical expressions
area = Area("area", is_known=False)
area.solve_from(width * height)
print(f"Area: {area}")  # Area: 6.0 m²

Engineering Example

from qnty import Problem, Length, Pressure

class PipeThickness(Problem):
    """Calculate pipe wall thickness"""
    
    # Known parameters
    pressure = Pressure(150, "pound_force_per_square_inch", "Internal Pressure")
    diameter = Length(6, "inch", "Pipe Diameter")
    allowable_stress = Pressure(20000, "pound_force_per_square_inch", "Allowable Stress")
    
    # Unknown to solve for
    thickness = Length("thickness", is_known=False)
    
    # Engineering equation: t = (P × D) / (2 × S)
    equation = thickness.equals((pressure * diameter) / (2 * allowable_stress))

# Solve the problem
problem = PipeThickness()
problem.solve()
print(f"Required thickness: {problem.thickness}")

Mathematical Operations

from qnty import Length, sqrt, Area

# Dimensional analysis with mathematical functions
area = Area(25, "square_meter", "Square Area")
side = Length("side", is_known=False)
side.solve_from(sqrt(area))  # Returns Length, not Area!
print(f"Side length: {side}")  # Side length: 5.0 m

📚 Documentation

🚀 Performance

Qnty significantly outperforms other unit libraries with 18.9x average speedup over Pint:

Operation Qnty Pint Speedup
Mixed Unit Addition 0.76 μs 17.52 μs 23.1x
Complex ASME Equation 4.07 μs 106.17 μs 26.1x 🚀
Type-Safe Variables 0.98 μs 9.65 μs 9.8x
AVERAGE 1.89 μs 35.83 μs 18.9x 🏆

Run pytest tests/test_benchmark.py -v -s to verify on your system.

🧮 100+ Engineering Quantities

Qnty provides comprehensive coverage of engineering domains:

from qnty import (
    # Mechanical
    Length, Area, Volume, Mass, Force, Pressure, Temperature,
    # Electrical  
    ElectricPotential, ElectricCurrentIntensity, ElectricResistance,
    # Thermal
    ThermalConductivity, HeatTransferCoefficient,
    # Fluid Dynamics
    ViscosityDynamic, MassFlowRate, VolumetricFlowRate,
    # And 80+ more...
)

🔧 Development

# Install dependencies
pip install -r requirements.txt

# Run tests
pytest

# Run specific test
pytest tests/test_dimension.py -v

# Run benchmarks
python tests/test_benchmark.py

# Lint code
ruff check src/ tests/
ruff format src/ tests/

📄 License

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

🤝 Contributing

We welcome contributions! Please see CLAUDE.md for development guidelines and:

  1. Fork the repository
  2. Create a feature branch
  3. Add tests for new functionality
  4. Ensure all tests pass: pytest
  5. Submit a pull request

Ready to supercharge your engineering calculations? 🚀

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

qnty-0.1.6.tar.gz (295.1 kB view details)

Uploaded Source

Built Distribution

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

qnty-0.1.6-py3-none-any.whl (315.8 kB view details)

Uploaded Python 3

File details

Details for the file qnty-0.1.6.tar.gz.

File metadata

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

File hashes

Hashes for qnty-0.1.6.tar.gz
Algorithm Hash digest
SHA256 8ce219aa73e591e0596f2cf6ac292ec4a99884a96b40be51c655e6dc65d6b1d3
MD5 966d6fb0c46c5487a1cd48a16e37ca3c
BLAKE2b-256 41ff6454144060fb6efc352f21385a21abc67edc16266e936e8c0069d9b52321

See more details on using hashes here.

Provenance

The following attestation bundles were made for qnty-0.1.6.tar.gz:

Publisher: release.yaml on tn3wman/qnty

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

File details

Details for the file qnty-0.1.6-py3-none-any.whl.

File metadata

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

File hashes

Hashes for qnty-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 fe28932319255b8de3cfe3f38620a9c4fa7857fe6834ea00de0767945793c5b8
MD5 4b65f7d8c9450868b08979bf2a1f5f15
BLAKE2b-256 f268a50bd4ee3f4d36e8d68ef60e8185d81e8dd715251f851cec40f5e350d71d

See more details on using hashes here.

Provenance

The following attestation bundles were made for qnty-0.1.6-py3-none-any.whl:

Publisher: release.yaml on tn3wman/qnty

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