Equality and Hashing

Design for value equality and hashing in Metric Engine.

Equality Semantics

Value Equality

Two financial values are equal if:

  • Same numerical value

  • Same unit type

  • Same currency (for monetary values)

Approximate Equality

For floating-point values:

  • Configurable tolerance (default: 1e-6)

  • Relative vs absolute comparison

  • Unit-aware comparison

Hashing Strategy

class FinancialValue:
    def __hash__(self):
        return hash((
            round(self.value, 6),  # Normalized precision
            self.unit.symbol,
            self.unit.dimension
        ))

Equality Modes

  • Strict: Exact equality only

  • Approximate: Floating-point tolerant

  • Unit-aware: Consider unit compatibility

Use Cases

  • Set membership

  • Dictionary keys

  • Comparison operations

  • Sorting algorithms

Performance

  • Cached hash values

  • Fast path for same-object comparison

  • Optimized unit comparison