Source code for lhp.utils.version

"""Version utilities for LakehousePlumber."""

import logging
import re
from pathlib import Path

logger = logging.getLogger(__name__)

# Import for dynamic version detection
try:
    from importlib.metadata import version
except ImportError:
    # Fallback for Python < 3.8
    from importlib_metadata import version


[docs] def get_version() -> str: """Get the package version dynamically from package metadata. Returns: Package version string """ try: # Try to get version from installed package metadata return version("lakehouse-plumber") except Exception: try: # Fallback: try reading from pyproject.toml (for development) # Find pyproject.toml - look up the directory tree current_dir = Path(__file__).parent for _ in range(5): # Look up to 5 levels pyproject_path = current_dir / "pyproject.toml" if pyproject_path.exists(): with open(pyproject_path, "r") as f: content = f.read() # Use regex to find version = "x.y.z" version_match = re.search( r'version\s*=\s*["\']([^"\']+)["\']', content ) if version_match: return version_match.group(1) current_dir = current_dir.parent except Exception as e: logger.debug(f"Could not read version from pyproject.toml: {e}") # Final fallback return "0.4.1"