diff --git a/src/launchpad/__init__.py b/src/launchpad/__init__.py index 12ee7b5c..f102a9ca 100644 --- a/src/launchpad/__init__.py +++ b/src/launchpad/__init__.py @@ -1,9 +1 @@ -"""Launchpad - CLI tool for analyzing Apple and Android app bundle sizes.""" - __version__ = "0.0.1" - -from .models import FileAnalysis - -__all__ = [ - "FileAnalysis", -] diff --git a/src/launchpad/analyzers/__init__.py b/src/launchpad/analyzers/__init__.py index 212df1fb..e69de29b 100644 --- a/src/launchpad/analyzers/__init__.py +++ b/src/launchpad/analyzers/__init__.py @@ -1,6 +0,0 @@ -"""Analyzers for different platforms.""" - -from .android import AndroidAnalyzer -from .apple import AppleAppAnalyzer - -__all__ = ["AndroidAnalyzer", "AppleAppAnalyzer"] diff --git a/src/launchpad/analyzers/android.py b/src/launchpad/analyzers/android.py index 8e3fa285..01f9e57e 100644 --- a/src/launchpad/analyzers/android.py +++ b/src/launchpad/analyzers/android.py @@ -3,7 +3,11 @@ import time from datetime import datetime, timezone -from ..artifacts import AAB, APK, AndroidArtifact, ZippedAAB, ZippedAPK +from ..artifacts.android.aab import AAB +from ..artifacts.android.apk import APK +from ..artifacts.android.zipped_aab import ZippedAAB +from ..artifacts.android.zipped_apk import ZippedAPK +from ..artifacts.artifact import AndroidArtifact from ..models.android import AndroidAnalysisResults, AndroidAppInfo from ..models.common import FileAnalysis, FileInfo from ..models.treemap import FILE_TYPE_TO_TREEMAP_TYPE, TreemapType diff --git a/src/launchpad/analyzers/apple.py b/src/launchpad/analyzers/apple.py index 43b9d5f2..58994829 100644 --- a/src/launchpad/analyzers/apple.py +++ b/src/launchpad/analyzers/apple.py @@ -10,11 +10,12 @@ import lief -from ..artifacts import AppleArtifact, ZippedXCArchive +from ..artifacts.apple.zipped_xcarchive import ZippedXCArchive +from ..artifacts.artifact import AppleArtifact from ..insights.common import DuplicateFilesInsight from ..insights.insight import InsightsInput -from ..models import AppleAnalysisResults, AppleAppInfo, FileAnalysis, FileInfo, MachOBinaryAnalysis -from ..models.apple import AppleInsightResults +from ..models.apple import AppleAnalysisResults, AppleAppInfo, AppleInsightResults, MachOBinaryAnalysis +from ..models.common import FileAnalysis, FileInfo from ..models.treemap import FILE_TYPE_TO_TREEMAP_TYPE, TreemapType from ..parsers.apple.macho_parser import MachOParser from ..parsers.apple.range_mapping_builder import RangeMappingBuilder diff --git a/src/launchpad/artifacts/__init__.py b/src/launchpad/artifacts/__init__.py index bf6e47e4..e69de29b 100644 --- a/src/launchpad/artifacts/__init__.py +++ b/src/launchpad/artifacts/__init__.py @@ -1,28 +0,0 @@ -from .android.aab import AAB -from .android.apk import APK -from .android.manifest.axml import AxmlUtils, BinaryXmlParser -from .android.manifest.manifest import AndroidManifest -from .android.resources.binary import BinaryResourceTable -from .android.zipped_aab import ZippedAAB -from .android.zipped_apk import ZippedAPK -from .apple.zipped_xcarchive import ZippedXCArchive -from .artifact import AndroidArtifact, AppleArtifact, Artifact -from .artifact_factory import ArtifactFactory -from .providers.zip_provider import ZipProvider - -__all__ = [ - "AAB", - "APK", - "ArtifactFactory", - "Artifact", - "AndroidArtifact", - "AxmlUtils", - "AndroidManifest", - "BinaryResourceTable", - "BinaryXmlParser", - "AppleArtifact", - "ZipProvider", - "ZippedAPK", - "ZippedAAB", - "ZippedXCArchive", -] diff --git a/src/launchpad/cli.py b/src/launchpad/cli.py index 19ee152c..e39d5ee5 100644 --- a/src/launchpad/cli.py +++ b/src/launchpad/cli.py @@ -1,5 +1,3 @@ -"""Command-line interface for launchpad.""" - from __future__ import annotations import asyncio @@ -18,8 +16,11 @@ from . import __version__ from .analyzers.android import AndroidAnalyzer from .analyzers.apple import AppleAppAnalyzer -from .artifacts import AndroidArtifact, AppleArtifact, ArtifactFactory -from .models import AndroidAnalysisResults, AppleAnalysisResults, FileAnalysis +from .artifacts.artifact import AndroidArtifact, AppleArtifact +from .artifacts.artifact_factory import ArtifactFactory +from .models.android import AndroidAnalysisResults +from .models.apple import AppleAnalysisResults +from .models.common import FileAnalysis from .service import run_service from .utils.logging import setup_logging diff --git a/src/launchpad/models/__init__.py b/src/launchpad/models/__init__.py index e713c6ed..e69de29b 100644 --- a/src/launchpad/models/__init__.py +++ b/src/launchpad/models/__init__.py @@ -1,43 +0,0 @@ -"""Data models for app size analysis results.""" - -# Import common models that are shared across platforms -# Import Android models (placeholders for now) -from .android import AndroidAnalysisResults, AndroidAppInfo - -# Import Apple-specific models -from .apple import ( # Backwards compatibility aliases - AppleAnalysisResults, - AppleAppInfo, - MachOBinaryAnalysis, - SwiftMetadata, -) -from .common import BaseAnalysisResults, BaseAppInfo, BaseBinaryAnalysis, FileAnalysis, FileInfo, SymbolInfo -from .range_mapping import BinaryTag, Range, RangeConflict, RangeMap -from .treemap import TreemapElement, TreemapResults, TreemapType - -__all__ = [ - # Common models - "FileInfo", - "SymbolInfo", - "FileAnalysis", - "BaseAppInfo", - "BaseBinaryAnalysis", - "BaseAnalysisResults", - # Apple-specific models - "SwiftMetadata", - "AppleAppInfo", - "MachOBinaryAnalysis", - "AppleAnalysisResults", - # Android models - "AndroidAppInfo", - "AndroidAnalysisResults", - # Range mapping models - "BinaryTag", - "Range", - "RangeConflict", - "RangeMap", - # Treemap models - "TreemapType", - "TreemapElement", - "TreemapResults", -] diff --git a/src/launchpad/models/apple.py b/src/launchpad/models/apple.py index c2f236df..1113db04 100644 --- a/src/launchpad/models/apple.py +++ b/src/launchpad/models/apple.py @@ -6,9 +6,8 @@ from pydantic import BaseModel, ConfigDict, Field -from launchpad.models.insights import DuplicateFilesInsightResult - from .common import BaseAnalysisResults, BaseAppInfo, BaseBinaryAnalysis +from .insights import DuplicateFilesInsightResult from .range_mapping import RangeMap diff --git a/src/launchpad/models/insights.py b/src/launchpad/models/insights.py index f4c4b38a..bf051393 100644 --- a/src/launchpad/models/insights.py +++ b/src/launchpad/models/insights.py @@ -2,7 +2,7 @@ from pydantic import BaseModel, ConfigDict, Field -from launchpad.models.common import FileInfo +from .common import FileInfo class BaseInsightResult(BaseModel): diff --git a/src/launchpad/parsers/__init__.py b/src/launchpad/parsers/__init__.py index 8ce824a0..e69de29b 100644 --- a/src/launchpad/parsers/__init__.py +++ b/src/launchpad/parsers/__init__.py @@ -1,6 +0,0 @@ -from .android.android_binary_parser import AndroidBinaryParser -from .apple.macho_parser import MachOParser -from .apple.range_mapping_builder import RangeMappingBuilder -from .buffer_wrapper import BufferWrapper - -__all__ = ["AndroidBinaryParser", "BufferWrapper", "MachOParser", "RangeMappingBuilder"] diff --git a/src/launchpad/parsers/apple/range_mapping_builder.py b/src/launchpad/parsers/apple/range_mapping_builder.py index 80fca2fc..6fce256a 100644 --- a/src/launchpad/parsers/apple/range_mapping_builder.py +++ b/src/launchpad/parsers/apple/range_mapping_builder.py @@ -6,7 +6,7 @@ import lief -from ...models import BinaryTag, RangeMap +from ...models.range_mapping import BinaryTag, RangeMap from ...utils.logging import get_logger from .macho_parser import MachOParser diff --git a/src/launchpad/utils/__init__.py b/src/launchpad/utils/__init__.py index b47f3a92..e69de29b 100644 --- a/src/launchpad/utils/__init__.py +++ b/src/launchpad/utils/__init__.py @@ -1,15 +0,0 @@ -"""Utility modules for app size analyzer.""" - -from .android.bundletool import Bundletool, DeviceSpec -from .file_utils import calculate_file_hash, cleanup_directory, create_temp_directory, get_file_size -from .logging import setup_logging - -__all__ = [ - "Bundletool", - "DeviceSpec", - "calculate_file_hash", - "cleanup_directory", - "create_temp_directory", - "get_file_size", - "setup_logging", -] diff --git a/src/launchpad/utils/treemap/treemap_builder.py b/src/launchpad/utils/treemap/treemap_builder.py index 8e89e09e..8cc2047d 100644 --- a/src/launchpad/utils/treemap/treemap_builder.py +++ b/src/launchpad/utils/treemap/treemap_builder.py @@ -5,11 +5,11 @@ from pathlib import Path from typing import Dict, List, Literal -from launchpad.utils.treemap.treemap_element_builder import TreemapElementBuilder - -from ...models import FileAnalysis, FileInfo, MachOBinaryAnalysis, TreemapElement, TreemapResults -from ...models.treemap import TreemapType +from ...models.apple import MachOBinaryAnalysis +from ...models.common import FileAnalysis, FileInfo +from ...models.treemap import TreemapElement, TreemapResults, TreemapType from ...utils.file_utils import calculate_aligned_install_size +from ...utils.treemap.treemap_element_builder import TreemapElementBuilder from ..logging import get_logger from .default_file_element_builder import DefaultFileElementBuilder from .macho_element_builder import MachOElementBuilder diff --git a/src/launchpad/utils/treemap/treemap_element_builder.py b/src/launchpad/utils/treemap/treemap_element_builder.py index 90a3c726..e612f967 100644 --- a/src/launchpad/utils/treemap/treemap_element_builder.py +++ b/src/launchpad/utils/treemap/treemap_element_builder.py @@ -2,7 +2,8 @@ from abc import ABC, abstractmethod -from ...models import FileInfo, TreemapElement +from ...models.common import FileInfo +from ...models.treemap import TreemapElement from ..logging import get_logger logger = get_logger(__name__) diff --git a/tests/integration/test_ios_range_mapping.py b/tests/integration/test_ios_range_mapping.py index e94e195e..ca031456 100644 --- a/tests/integration/test_ios_range_mapping.py +++ b/tests/integration/test_ios_range_mapping.py @@ -7,8 +7,9 @@ import pytest from launchpad.analyzers.apple import AppleAppAnalyzer -from launchpad.artifacts import AppleArtifact, ArtifactFactory -from launchpad.models import BinaryTag +from launchpad.artifacts.artifact import AppleArtifact +from launchpad.artifacts.artifact_factory import ArtifactFactory +from launchpad.models.range_mapping import BinaryTag class TestIOSRangeMapping: diff --git a/tests/unit/test_cli.py b/tests/unit/test_cli.py index 66531951..5d100c75 100644 --- a/tests/unit/test_cli.py +++ b/tests/unit/test_cli.py @@ -1,5 +1,3 @@ -"""Unit tests for CLI functionality.""" - from click.testing import CliRunner from launchpad import __version__