Cross-Package Dependencies

Managing dependencies between calculation packages.

Dependency Declaration

# my_package/__init__.py
from metricengine import depends_on

@depends_on(['growth', 'profitability'])
class MyCalculations:
    def complex_metric(self, ...):
        # Use calculations from other packages
        pass

Lazy Loading

Avoid circular dependencies with lazy loading:

def my_calculation():
    from metricengine.calculations.growth import cagr
    return cagr(...)

Best Practices

  • Minimize cross-package dependencies

  • Use dependency injection where possible

  • Document package relationships

  • Test dependency resolution