chore: sort imports in assets package

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Luke Mino-Altherr 2026-02-03 20:02:52 -08:00
parent 0f75def5b5
commit d8cb122dfb
13 changed files with 98 additions and 96 deletions

View File

@ -1,9 +1,10 @@
import logging import logging
import uuid
import urllib.parse
import os import os
from aiohttp import web import urllib.parse
import uuid
from typing import Any
from aiohttp import web
from pydantic import ValidationError from pydantic import ValidationError
import app.assets.manager as manager import app.assets.manager as manager
@ -18,8 +19,6 @@ from app.assets.api.schemas_in import (
) )
from app.assets.api.upload import parse_multipart_upload from app.assets.api.upload import parse_multipart_upload
from app.assets.scanner import seed_assets as scanner_seed_assets from app.assets.scanner import seed_assets as scanner_seed_assets
from typing import Any
ROUTES = web.RouteTableDef() ROUTES = web.RouteTableDef()
USER_MANAGER: user_manager.UserManager | None = None USER_MANAGER: user_manager.UserManager | None = None

View File

@ -2,8 +2,8 @@ from __future__ import annotations
import uuid import uuid
from datetime import datetime from datetime import datetime
from typing import Any from typing import Any
from sqlalchemy import ( from sqlalchemy import (
JSON, JSON,
BigInteger, BigInteger,
@ -21,7 +21,7 @@ from sqlalchemy import (
from sqlalchemy.orm import Mapped, foreign, mapped_column, relationship from sqlalchemy.orm import Mapped, foreign, mapped_column, relationship
from app.assets.helpers import get_utc_now from app.assets.helpers import get_utc_now
from app.database.models import to_dict, Base from app.database.models import Base, to_dict
class Asset(Base): class Asset(Base):

View File

@ -3,55 +3,52 @@
from app.assets.database.queries.asset import ( from app.assets.database.queries.asset import (
asset_exists_by_hash, asset_exists_by_hash,
bulk_insert_assets,
get_asset_by_hash, get_asset_by_hash,
upsert_asset, upsert_asset,
bulk_insert_assets,
) )
from app.assets.database.queries.asset_info import ( from app.assets.database.queries.asset_info import (
asset_info_exists_for_asset_id, asset_info_exists_for_asset_id,
get_asset_info_by_id, bulk_insert_asset_infos_ignore_conflicts,
insert_asset_info, delete_asset_info_by_id,
get_or_create_asset_info,
update_asset_info_timestamps,
list_asset_infos_page,
fetch_asset_info_asset_and_tags,
fetch_asset_info_and_asset, fetch_asset_info_and_asset,
fetch_asset_info_asset_and_tags,
get_asset_info_by_id,
get_asset_info_ids_by_ids,
get_or_create_asset_info,
insert_asset_info,
list_asset_infos_page,
set_asset_info_metadata,
set_asset_info_preview,
update_asset_info_access_time, update_asset_info_access_time,
update_asset_info_name, update_asset_info_name,
update_asset_info_timestamps,
update_asset_info_updated_at, update_asset_info_updated_at,
set_asset_info_metadata,
delete_asset_info_by_id,
set_asset_info_preview,
bulk_insert_asset_infos_ignore_conflicts,
get_asset_info_ids_by_ids,
) )
from app.assets.database.queries.cache_state import ( from app.assets.database.queries.cache_state import (
CacheStateRow, CacheStateRow,
bulk_insert_cache_states_ignore_conflicts,
bulk_set_needs_verify,
delete_assets_by_ids,
delete_cache_states_by_ids,
delete_cache_states_outside_prefixes,
delete_orphaned_seed_asset,
get_cache_states_by_paths_and_asset_ids,
get_cache_states_for_prefixes,
get_orphaned_seed_asset_ids,
list_cache_states_by_asset_id, list_cache_states_by_asset_id,
upsert_cache_state, upsert_cache_state,
delete_cache_states_outside_prefixes,
get_orphaned_seed_asset_ids,
delete_assets_by_ids,
get_cache_states_for_prefixes,
bulk_set_needs_verify,
delete_cache_states_by_ids,
delete_orphaned_seed_asset,
bulk_insert_cache_states_ignore_conflicts,
get_cache_states_by_paths_and_asset_ids,
) )
from app.assets.database.queries.tags import ( from app.assets.database.queries.tags import (
add_missing_tag_for_asset_id,
add_tags_to_asset_info,
bulk_insert_tags_and_meta,
ensure_tags_exist, ensure_tags_exist,
get_asset_tags, get_asset_tags,
set_asset_info_tags,
add_tags_to_asset_info,
remove_tags_from_asset_info,
add_missing_tag_for_asset_id,
remove_missing_tag_for_asset_id,
list_tags_with_usage, list_tags_with_usage,
bulk_insert_tags_and_meta, remove_missing_tag_for_asset_id,
remove_tags_from_asset_info,
set_asset_info_tags,
) )
__all__ = [ __all__ = [

View File

@ -10,15 +10,19 @@ from decimal import Decimal
from typing import Sequence from typing import Sequence
import sqlalchemy as sa import sqlalchemy as sa
from sqlalchemy import select, delete, exists from sqlalchemy import delete, exists, select
from sqlalchemy.dialects import sqlite from sqlalchemy.dialects import sqlite
from sqlalchemy.exc import IntegrityError from sqlalchemy.exc import IntegrityError
from sqlalchemy.orm import Session, contains_eager, noload from sqlalchemy.orm import Session, contains_eager, noload
from app.assets.database.models import ( from app.assets.database.models import (
Asset, AssetInfo, AssetInfoMeta, AssetInfoTag, Tag Asset,
AssetInfo,
AssetInfoMeta,
AssetInfoTag,
Tag,
) )
from app.assets.helpers import escape_sql_like_string, normalize_tags, get_utc_now from app.assets.helpers import escape_sql_like_string, get_utc_now, normalize_tags
def check_is_scalar(v): def check_is_scalar(v):

View File

@ -1,13 +1,13 @@
from typing import Iterable, Sequence from typing import Iterable, Sequence
import sqlalchemy as sa import sqlalchemy as sa
from sqlalchemy import select, delete, func from sqlalchemy import delete, func, select
from sqlalchemy.dialects import sqlite from sqlalchemy.dialects import sqlite
from sqlalchemy.exc import IntegrityError from sqlalchemy.exc import IntegrityError
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from app.assets.database.models import AssetInfo, AssetInfoMeta, AssetInfoTag, Tag from app.assets.database.models import AssetInfo, AssetInfoMeta, AssetInfoTag, Tag
from app.assets.helpers import escape_sql_like_string, normalize_tags, get_utc_now from app.assets.helpers import escape_sql_like_string, get_utc_now, normalize_tags
MAX_BIND_PARAMS = 800 MAX_BIND_PARAMS = 800

View File

@ -7,17 +7,16 @@ It should NOT contain business logic or direct SQLAlchemy usage.
Architecture: Architecture:
API Routes -> manager.py (schema transformation) -> services/ (business logic) -> queries/ (DB ops) API Routes -> manager.py (schema transformation) -> services/ (business logic) -> queries/ (DB ops)
""" """
import os
import mimetypes
import contextlib import contextlib
import mimetypes
import os
from typing import Sequence from typing import Sequence
from pydantic import ValidationError from pydantic import ValidationError
import folder_paths
import app.assets.services.hashing as hashing import app.assets.services.hashing as hashing
from app.database.db import create_session import folder_paths
from app.assets.api import schemas_out, schemas_in from app.assets.api import schemas_in, schemas_out
from app.assets.api.schemas_in import ( from app.assets.api.schemas_in import (
AssetNotFoundError, AssetNotFoundError,
AssetValidationError, AssetValidationError,
@ -36,21 +35,26 @@ from app.assets.database.queries import (
update_asset_info_access_time, update_asset_info_access_time,
) )
from app.assets.helpers import select_best_live_path from app.assets.helpers import select_best_live_path
from app.assets.services.path_utils import (
validate_path_within_base,
resolve_destination_from_tags,
)
from app.assets.services import ( from app.assets.services import (
apply_tags, apply_tags,
delete_asset_reference as svc_delete_asset_reference,
get_asset_detail, get_asset_detail,
ingest_file_from_path, ingest_file_from_path,
register_existing_asset, register_existing_asset,
remove_tags, remove_tags,
set_asset_preview as svc_set_asset_preview,
update_asset_metadata, update_asset_metadata,
) )
from app.assets.services import (
delete_asset_reference as svc_delete_asset_reference,
)
from app.assets.services import (
set_asset_preview as svc_set_asset_preview,
)
from app.assets.services.path_utils import (
resolve_destination_from_tags,
validate_path_within_base,
)
from app.assets.services.tagging import list_tags as svc_list_tags from app.assets.services.tagging import list_tags as svc_list_tags
from app.database.db import create_session
def _validate_sort_field(requested: str | None) -> str: def _validate_sort_field(requested: str | None) -> str:

View File

@ -5,26 +5,26 @@ import time
import uuid import uuid
from typing import Literal from typing import Literal
import folder_paths
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
import folder_paths
from app.assets.database.queries import ( from app.assets.database.queries import (
add_missing_tag_for_asset_id, add_missing_tag_for_asset_id,
ensure_tags_exist, bulk_insert_asset_infos_ignore_conflicts,
remove_missing_tag_for_asset_id,
delete_cache_states_outside_prefixes,
get_orphaned_seed_asset_ids,
delete_assets_by_ids,
get_cache_states_for_prefixes,
bulk_set_needs_verify,
delete_cache_states_by_ids,
delete_orphaned_seed_asset,
bulk_insert_assets, bulk_insert_assets,
bulk_insert_cache_states_ignore_conflicts, bulk_insert_cache_states_ignore_conflicts,
get_cache_states_by_paths_and_asset_ids,
bulk_insert_asset_infos_ignore_conflicts,
get_asset_info_ids_by_ids,
bulk_insert_tags_and_meta, bulk_insert_tags_and_meta,
bulk_set_needs_verify,
delete_assets_by_ids,
delete_cache_states_by_ids,
delete_cache_states_outside_prefixes,
delete_orphaned_seed_asset,
ensure_tags_exist,
get_asset_info_ids_by_ids,
get_cache_states_by_paths_and_asset_ids,
get_cache_states_for_prefixes,
get_orphaned_seed_asset_ids,
remove_missing_tag_for_asset_id,
) )
from app.assets.helpers import get_utc_now from app.assets.helpers import get_utc_now
from app.assets.services.path_utils import ( from app.assets.services.path_utils import (
@ -34,7 +34,6 @@ from app.assets.services.path_utils import (
) )
from app.database.db import create_session, dependencies_available from app.database.db import create_session, dependencies_available
RootType = Literal["models", "input", "output"] RootType = Literal["models", "input", "output"]

View File

@ -2,20 +2,20 @@
# Business logic that orchestrates database queries and filesystem operations # Business logic that orchestrates database queries and filesystem operations
# Services own session lifecycle via create_session() # Services own session lifecycle via create_session()
from app.assets.services.asset_management import (
delete_asset_reference,
get_asset_detail,
set_asset_preview,
update_asset_metadata,
)
from app.assets.services.ingest import ( from app.assets.services.ingest import (
ingest_file_from_path, ingest_file_from_path,
register_existing_asset, register_existing_asset,
) )
from app.assets.services.asset_management import (
get_asset_detail,
update_asset_metadata,
delete_asset_reference,
set_asset_preview,
)
from app.assets.services.tagging import ( from app.assets.services.tagging import (
apply_tags, apply_tags,
remove_tags,
list_tags, list_tags,
remove_tags,
) )
__all__ = [ __all__ = [

View File

@ -12,14 +12,6 @@ import os
from typing import Sequence from typing import Sequence
from app.assets.database.models import Asset from app.assets.database.models import Asset
from app.database.db import create_session
from app.assets.helpers import select_best_live_path
from app.assets.services.path_utils import compute_relative_filename
from app.assets.services.schemas import (
AssetDetailResult,
extract_asset_data,
extract_info_data,
)
from app.assets.database.queries import ( from app.assets.database.queries import (
asset_info_exists_for_asset_id, asset_info_exists_for_asset_id,
delete_asset_info_by_id, delete_asset_info_by_id,
@ -32,6 +24,14 @@ from app.assets.database.queries import (
update_asset_info_name, update_asset_info_name,
update_asset_info_updated_at, update_asset_info_updated_at,
) )
from app.assets.helpers import select_best_live_path
from app.assets.services.path_utils import compute_relative_filename
from app.assets.services.schemas import (
AssetDetailResult,
extract_asset_data,
extract_info_data,
)
from app.database.db import create_session
def get_asset_detail( def get_asset_detail(

View File

@ -1,6 +1,6 @@
from typing import IO
import os
import asyncio import asyncio
import os
from typing import IO
try: try:
from blake3 import blake3 from blake3 import blake3

View File

@ -12,16 +12,10 @@ from typing import Sequence
from sqlalchemy import select from sqlalchemy import select
from app.assets.database.models import Asset, Tag from app.assets.database.models import Asset, Tag
from app.database.db import create_session
from app.assets.helpers import normalize_tags, select_best_live_path
from app.assets.services.path_utils import compute_relative_filename
from app.assets.services.schemas import (
RegisterAssetResult,
extract_asset_data,
extract_info_data,
)
from app.assets.database.queries import ( from app.assets.database.queries import (
add_tags_to_asset_info,
get_asset_by_hash, get_asset_by_hash,
get_asset_tags,
get_or_create_asset_info, get_or_create_asset_info,
list_cache_states_by_asset_id, list_cache_states_by_asset_id,
remove_missing_tag_for_asset_id, remove_missing_tag_for_asset_id,
@ -30,9 +24,15 @@ from app.assets.database.queries import (
update_asset_info_timestamps, update_asset_info_timestamps,
upsert_asset, upsert_asset,
upsert_cache_state, upsert_cache_state,
add_tags_to_asset_info,
get_asset_tags,
) )
from app.assets.helpers import normalize_tags, select_best_live_path
from app.assets.services.path_utils import compute_relative_filename
from app.assets.services.schemas import (
RegisterAssetResult,
extract_asset_data,
extract_info_data,
)
from app.database.db import create_session
def ingest_file_from_path( def ingest_file_from_path(

View File

@ -3,7 +3,6 @@ from pathlib import Path
from typing import Literal from typing import Literal
import folder_paths import folder_paths
from app.assets.helpers import normalize_tags from app.assets.helpers import normalize_tags

View File

@ -6,13 +6,13 @@ Business logic for:
- remove_tags: Remove tags from an asset - remove_tags: Remove tags from an asset
- list_tags: List tags with usage counts - list_tags: List tags with usage counts
""" """
from app.database.db import create_session
from app.assets.database.queries import ( from app.assets.database.queries import (
add_tags_to_asset_info, add_tags_to_asset_info,
get_asset_info_by_id, get_asset_info_by_id,
list_tags_with_usage, list_tags_with_usage,
remove_tags_from_asset_info, remove_tags_from_asset_info,
) )
from app.database.db import create_session
def apply_tags( def apply_tags(