markitect-main/markitect/assets/__init__.py

73 lines
2.1 KiB
Python
Raw Normal View History

"""
Asset management module for MarkiTect.
This module provides comprehensive asset management capabilities including:
- Content-addressable asset storage with deduplication
- JSON-based asset registry and metadata management
- Cross-platform symlink support with Windows fallback
- ZIP-based .mdpkg package creation and extraction
- High-level API for coordinating all asset operations
The module follows the Content-Addressable Package System with Symlinks approach,
providing efficient storage, deduplication, and cross-platform compatibility.
Key Classes:
AssetManager: High-level API coordinator for all asset operations
AssetRegistry: JSON-based asset metadata persistence and hashing
AssetDeduplicator: Content-based deduplication with symlink support
MarkdownPackager: .mdpkg package creation and extraction
Usage:
from markitect.assets import AssetManager
# Initialize asset manager
manager = AssetManager()
# Add an asset
result = manager.add_asset(Path("image.png"), "Project logo")
# Create a package
manager.create_package(Path("project/"), Path("project.mdpkg"))
# Extract a package
manager.extract_package(Path("project.mdpkg"), Path("workspace/"))
"""
from .manager import AssetManager
from .registry import AssetRegistry
from .deduplicator import AssetDeduplicator
from .packager import MarkdownPackager
from .exceptions import (
AssetError, RegistryError, DeduplicationError,
PackagingError, AssetManagerError
)
from .constants import (
DEFAULT_CONFIG, PACKAGE_EXTENSION, MANIFEST_FORMAT_VERSION,
DEFAULT_EXCLUDE_PATTERNS, CONFLICT_RESOLUTION_OPTIONS
)
__version__ = "1.0.0"
# Public API exports
__all__ = [
# Main classes
'AssetManager',
'AssetRegistry',
'AssetDeduplicator',
'MarkdownPackager',
# Exceptions
'AssetError',
'RegistryError',
'DeduplicationError',
'PackagingError',
'AssetManagerError',
# Constants
'DEFAULT_CONFIG',
'PACKAGE_EXTENSION',
'MANIFEST_FORMAT_VERSION',
'DEFAULT_EXCLUDE_PATTERNS',
'CONFLICT_RESOLUTION_OPTIONS'
]