2025-10-03 05:47:02 +02:00
|
|
|
"""
|
|
|
|
|
Version information for MarkiTect.
|
|
|
|
|
|
2025-11-08 20:23:16 +01:00
|
|
|
This module provides version information using setuptools-scm.
|
|
|
|
|
Version is automatically derived from git tags.
|
2025-10-03 05:47:02 +02:00
|
|
|
"""
|
|
|
|
|
|
2025-11-08 20:23:16 +01:00
|
|
|
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"
|
2025-10-03 05:47:02 +02:00
|
|
|
|
2025-11-08 20:23:16 +01:00
|
|
|
def get_version():
|
|
|
|
|
"""Get the current version string."""
|
2025-11-09 09:22:26 +01:00
|
|
|
return __version__
|
|
|
|
|
|
|
|
|
|
def get_version_info():
|
2025-11-09 10:41:28 +01:00
|
|
|
"""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
|
2025-11-09 09:22:26 +01:00
|
|
|
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,
|
2025-11-09 10:41:28 +01:00
|
|
|
'is_dev': '.dev' in __version__,
|
|
|
|
|
'git_commit': commit_id,
|
|
|
|
|
'git_branch': 'unknown',
|
|
|
|
|
'is_git_repo': False
|
2025-11-09 09:22:26 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def get_release_info():
|
2025-11-09 10:41:28 +01:00
|
|
|
"""Get release information by delegating to release-management capability."""
|
2025-11-09 09:22:26 +01:00
|
|
|
try:
|
2025-11-09 10:41:28 +01:00
|
|
|
# Delegate to release-management capability
|
|
|
|
|
from pathlib import Path
|
|
|
|
|
project_root = Path(__file__).parent.parent
|
2025-11-09 09:22:26 +01:00
|
|
|
|
2025-11-09 10:41:28 +01:00
|
|
|
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()
|
2025-11-09 09:22:26 +01:00
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
'name': 'MarkiTect',
|
|
|
|
|
'version': version_info['full_version'],
|
|
|
|
|
'short_version': version_info['short_version'],
|
|
|
|
|
'is_development': version_info['is_dev'],
|
2025-11-09 10:41:28 +01:00
|
|
|
'git_branch': version_info.get('git_branch', 'unknown'),
|
|
|
|
|
'git_commit': version_info.get('git_commit', 'unknown'),
|
2025-11-09 09:22:26 +01:00
|
|
|
'build_date': datetime.now().isoformat(),
|
|
|
|
|
'python_version': f"{__import__('sys').version_info.major}.{__import__('sys').version_info.minor}.{__import__('sys').version_info.micro}"
|
|
|
|
|
}
|