markitect-main/markitect/__version__.py

81 lines
2.7 KiB
Python
Raw Normal View History

"""
Version information for MarkiTect.
This module provides version information using setuptools-scm.
Version is automatically derived from git tags.
"""
try:
from ._version import version as __version__
except ImportError:
# Fallback when _version.py is not available (e.g., during development without setuptools-scm)
__version__ = "unknown"
def get_version():
"""Get the current version string."""
return __version__
def get_version_info():
"""Get comprehensive version information by delegating to release-management capability."""
try:
# Delegate to release-management capability
from pathlib import Path
project_root = Path(__file__).parent.parent
try:
from release_management.utils.version import get_version_info as rm_get_version_info
return rm_get_version_info(project_root)
except ImportError:
# Fallback if release-management capability is not available
pass
except Exception:
pass
# Simple fallback implementation
try:
from ._version import version_tuple, commit_id
except ImportError:
version_tuple = ("unknown",)
commit_id = "unknown"
return {
'full_version': __version__,
'short_version': __version__.split('.dev')[0] if '.dev' in __version__ else __version__,
'version_tuple': version_tuple,
'commit_id': commit_id,
'is_dev': '.dev' in __version__,
'git_commit': commit_id,
'git_branch': 'unknown',
'is_git_repo': False
}
def get_release_info():
"""Get release information by delegating to release-management capability."""
try:
# Delegate to release-management capability
from pathlib import Path
project_root = Path(__file__).parent.parent
try:
from release_management.utils.version import get_release_info as rm_get_release_info
return rm_get_release_info(project_root)
except ImportError:
# Fallback if release-management capability is not available
pass
except Exception:
pass
# Simple fallback implementation
from datetime import datetime
version_info = get_version_info()
return {
'name': 'MarkiTect',
'version': version_info['full_version'],
'short_version': version_info['short_version'],
'is_development': version_info['is_dev'],
'git_branch': version_info.get('git_branch', 'unknown'),
'git_commit': version_info.get('git_commit', 'unknown'),
'build_date': datetime.now().isoformat(),
'python_version': f"{__import__('sys').version_info.major}.{__import__('sys').version_info.minor}.{__import__('sys').version_info.micro}"
}