mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-02-07 03:52:32 +08:00
chore: sort imports in assets package
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
0f75def5b5
commit
d8cb122dfb
@ -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
|
||||||
|
|||||||
@ -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):
|
||||||
|
|||||||
@ -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__ = [
|
||||||
|
|||||||
@ -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):
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
@ -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"]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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__ = [
|
||||||
|
|||||||
@ -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(
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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(
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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(
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user