Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions mpmath/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
from importlib.metadata import version
from importlib.metadata import version, PackageNotFoundError

try:
__version__ = version(__name__)
except PackageNotFoundError:
# Fallback when metadata unavailable
__version__ = "0.0.0"

__version__ = version(__name__)
del version

import functools
Expand Down
25 changes: 25 additions & 0 deletions mpmath/tests/test_issue_metadata_fallback.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/usr/bin/env python3
"""Regression test: Simulates frozen app behavior where package metadata is unavailable."""
import sys
import importlib.metadata
import importlib

def test_issue_metadata_fallback(monkeypatch):
# Mock metadata.version to simulate frozen app where metadata is unavailable
original_version = importlib.metadata.version

def mock_version(package_name):
if package_name == "mpmath":
raise importlib.metadata.PackageNotFoundError(
f"No package metadata was found for {package_name}"
)
return original_version(package_name)

monkeypatch.setattr(importlib.metadata, "version", mock_version)

# Remove mpmath from sys.modules to force reload
sys.modules.pop("mpmath", None)

# Import mpmath - should fall back to "0.0.0"
import mpmath
assert mpmath.__version__ == "0.0.0"
Loading