From 77718a91cfbebb975b8cb96e049a9964f209ebe7 Mon Sep 17 00:00:00 2001 From: psilabs-dev <113860476+psilabs-dev@users.noreply.github.com> Date: Sun, 15 Feb 2026 22:17:13 -0800 Subject: [PATCH] move project to uv --- .github/workflows/publish.yml | 56 ++++++++++++++++++ .github/workflows/tests.yml | 21 ++++--- README.md | 4 +- pyproject.toml | 20 +++---- src/kksubs/__init__.py | 2 +- src/{ => kksubs}/common/__init__.py | 0 src/{ => kksubs}/common/data/__init__.py | 0 src/{ => kksubs}/common/data/file.py | 0 src/{ => kksubs}/common/data/representable.py | 0 src/{ => kksubs}/common/exceptions.py | 0 src/{ => kksubs}/common/import_utils.py | 0 src/{ => kksubs}/common/utils/__init__.py | 0 src/{ => kksubs}/common/utils/application.py | 0 src/{ => kksubs}/common/utils/coalesce.py | 0 src/{ => kksubs}/common/utils/decorators.py | 0 src/{ => kksubs}/common/utils/file.py | 6 +- src/{ => kksubs}/common/watcher/__init__.py | 0 src/{ => kksubs}/common/watcher/abstract.py | 2 +- .../common/watcher/file_change.py | 2 +- src/kksubs/core/__init__.py | 1 + src/kksubs/{ => core}/cmd/__init__.py | 0 src/kksubs/{ => core}/cmd/subtitle.py | 4 +- src/kksubs/{ => core}/controller/__init__.py | 0 src/kksubs/{ => core}/controller/subtitle.py | 6 +- src/kksubs/{ => core}/data/__init__.py | 0 src/kksubs/{ => core}/data/abstract.py | 2 +- .../{ => core}/data/subtitle/__init__.py | 0 src/kksubs/{ => core}/data/subtitle/style.py | 6 +- .../data/subtitle/style_attributes.py | 12 ++-- .../data/subtitle/style_row_enum.py | 4 +- .../{ => core}/data/subtitle/subtitle.py | 4 +- src/kksubs/{ => core}/service/__init__.py | 0 .../{ => core}/service/extraction/__init__.py | 0 .../{ => core}/service/extraction/style.py | 4 +- .../{ => core}/service/extraction/subtitle.py | 8 +-- src/kksubs/{ => core}/service/file.py | 4 +- .../{ => core}/service/processor/__init__.py | 0 .../service/processor/apply_text.py | 0 .../service/processor/motion_blur.py | 2 +- .../service/processor/utils/__init__.py | 0 .../service/processor/utils/image.py | 0 src/kksubs/{ => core}/service/sub_project.py | 16 ++--- src/kksubs/{ => core}/service/subtitle.py | 16 ++--- src/kksubs/{ => core}/utils/__init__.py | 0 src/kksubs/{ => core}/utils/renamer.py | 0 src/kksubs/{ => core}/utils/sanitizers.py | 0 src/kksubs/{ => core}/watcher/__init__.py | 0 src/kksubs/{ => core}/watcher/subtitle.py | 4 +- src/{ => kksubs}/kkp/__init__.py | 0 src/{ => kksubs}/kkp/cmd/__init__.py | 0 src/{ => kksubs}/kkp/cmd/project.py | 4 +- src/{ => kksubs}/kkp/controller/__init__.py | 0 src/{ => kksubs}/kkp/controller/project.py | 28 ++++----- src/{ => kksubs}/kkp/data/__init__.py | 0 src/{ => kksubs}/kkp/data/config.py | 2 +- src/{ => kksubs}/kkp/service/__init__.py | 0 .../kkp/service/studio_project.py | 6 +- src/{ => kksubs}/kkp/view/__init__.py | 0 src/{ => kksubs}/kkp/view/project.py | 0 src/{ => kksubs}/kkp/watcher/__init__.py | 0 src/{ => kksubs}/kkp/watcher/project.py | 6 +- src/kksubs/koi/__init__.py | 1 + src/{ => kksubs}/koi/app/controller.py | 2 +- src/{ => kksubs}/koi/cli.py | 4 +- src/{ => kksubs}/resources/__init__.py | 0 src/{ => kksubs}/resources/fonts/__init__.py | 0 .../resources/fonts/roboto/OFL.txt | 0 .../resources/fonts/roboto/README.txt | 0 .../resources/fonts/roboto/Roboto-Regular.ttf | Bin .../resources/fonts/roboto/__init__.py | 0 tests/test_common/test_coalesce.py | 2 +- tests/test_common/test_file_operations.py | 4 +- tests/test_kkp/test_projects.py | 2 +- .../test_character_dialogue_config.py | 4 +- .../test_character_dialogue_integration.py | 2 +- .../test_character_dialogue_parsing.py | 8 +-- tests/test_kksubs/test_font_handling.py | 10 ++-- tests/test_kksubs/test_serialization.py | 8 +-- tests/test_kksubs/test_style_behavior.py | 12 ++-- tests/test_kksubs/test_style_independence.py | 8 +-- tests/test_kksubs/test_subtitling.py | 2 +- tox.ini | 14 ----- uv.lock | 13 ++-- 83 files changed, 198 insertions(+), 150 deletions(-) create mode 100644 .github/workflows/publish.yml rename src/{ => kksubs}/common/__init__.py (100%) rename src/{ => kksubs}/common/data/__init__.py (100%) rename src/{ => kksubs}/common/data/file.py (100%) rename src/{ => kksubs}/common/data/representable.py (100%) rename src/{ => kksubs}/common/exceptions.py (100%) rename src/{ => kksubs}/common/import_utils.py (100%) rename src/{ => kksubs}/common/utils/__init__.py (100%) rename src/{ => kksubs}/common/utils/application.py (100%) rename src/{ => kksubs}/common/utils/coalesce.py (100%) rename src/{ => kksubs}/common/utils/decorators.py (100%) rename src/{ => kksubs}/common/utils/file.py (98%) rename src/{ => kksubs}/common/watcher/__init__.py (100%) rename src/{ => kksubs}/common/watcher/abstract.py (96%) rename src/{ => kksubs}/common/watcher/file_change.py (95%) create mode 100644 src/kksubs/core/__init__.py rename src/kksubs/{ => core}/cmd/__init__.py (100%) rename src/kksubs/{ => core}/cmd/subtitle.py (96%) rename src/kksubs/{ => core}/controller/__init__.py (100%) rename src/kksubs/{ => core}/controller/subtitle.py (94%) rename src/kksubs/{ => core}/data/__init__.py (100%) rename src/kksubs/{ => core}/data/abstract.py (88%) rename src/kksubs/{ => core}/data/subtitle/__init__.py (100%) rename src/kksubs/{ => core}/data/subtitle/style.py (98%) rename src/kksubs/{ => core}/data/subtitle/style_attributes.py (96%) rename src/kksubs/{ => core}/data/subtitle/style_row_enum.py (85%) rename src/kksubs/{ => core}/data/subtitle/subtitle.py (96%) rename src/kksubs/{ => core}/service/__init__.py (100%) rename src/kksubs/{ => core}/service/extraction/__init__.py (100%) rename src/kksubs/{ => core}/service/extraction/style.py (94%) rename src/kksubs/{ => core}/service/extraction/subtitle.py (96%) rename src/kksubs/{ => core}/service/file.py (91%) rename src/kksubs/{ => core}/service/processor/__init__.py (100%) rename src/kksubs/{ => core}/service/processor/apply_text.py (100%) rename src/kksubs/{ => core}/service/processor/motion_blur.py (97%) rename src/kksubs/{ => core}/service/processor/utils/__init__.py (100%) rename src/kksubs/{ => core}/service/processor/utils/image.py (100%) rename src/kksubs/{ => core}/service/sub_project.py (98%) rename src/kksubs/{ => core}/service/subtitle.py (97%) rename src/kksubs/{ => core}/utils/__init__.py (100%) rename src/kksubs/{ => core}/utils/renamer.py (100%) rename src/kksubs/{ => core}/utils/sanitizers.py (100%) rename src/kksubs/{ => core}/watcher/__init__.py (100%) rename src/kksubs/{ => core}/watcher/subtitle.py (92%) rename src/{ => kksubs}/kkp/__init__.py (100%) rename src/{ => kksubs}/kkp/cmd/__init__.py (100%) rename src/{ => kksubs}/kkp/cmd/project.py (98%) rename src/{ => kksubs}/kkp/controller/__init__.py (100%) rename src/{ => kksubs}/kkp/controller/project.py (98%) rename src/{ => kksubs}/kkp/data/__init__.py (100%) rename src/{ => kksubs}/kkp/data/config.py (97%) rename src/{ => kksubs}/kkp/service/__init__.py (100%) rename src/{ => kksubs}/kkp/service/studio_project.py (99%) rename src/{ => kksubs}/kkp/view/__init__.py (100%) rename src/{ => kksubs}/kkp/view/project.py (100%) rename src/{ => kksubs}/kkp/watcher/__init__.py (100%) rename src/{ => kksubs}/kkp/watcher/project.py (73%) create mode 100644 src/kksubs/koi/__init__.py rename src/{ => kksubs}/koi/app/controller.py (95%) rename src/{ => kksubs}/koi/cli.py (97%) rename src/{ => kksubs}/resources/__init__.py (100%) rename src/{ => kksubs}/resources/fonts/__init__.py (100%) rename src/{ => kksubs}/resources/fonts/roboto/OFL.txt (100%) rename src/{ => kksubs}/resources/fonts/roboto/README.txt (100%) rename src/{ => kksubs}/resources/fonts/roboto/Roboto-Regular.ttf (100%) rename src/{ => kksubs}/resources/fonts/roboto/__init__.py (100%) delete mode 100644 tox.ini diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..8d671f9 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,56 @@ +name: Publish kksubs + +on: + push: + tags: + - "v*" + +jobs: + tests: + uses: ./.github/workflows/tests.yml + + build: + name: Build + runs-on: ubuntu-latest + needs: tests + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Set up uv + uses: astral-sh/setup-uv@v7 + + - name: Build distribution + run: uv build + + - name: Store distribution packages + uses: actions/upload-artifact@v4 + with: + name: python-package-distributions + path: dist/ + + publish: + name: Publish + needs: build + runs-on: ubuntu-latest + environment: + name: pypi + url: https://pypi.org/p/kksubs + permissions: + id-token: write + + steps: + - name: Download dists + uses: actions/download-artifact@v4 + with: + name: python-package-distributions + path: dist/ + + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7cae49d..dadedcd 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,8 +1,15 @@ name: Tests on: - - push - - pull_request + pull_request: + branches: + - main + - 'dev-**/main' + push: + branches: + - main + workflow_call: + workflow_dispatch: jobs: test: @@ -13,10 +20,10 @@ jobs: python-version: ['3.10', '3.11', '3.12'] steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - - run: python -m pip install --upgrade pip - - run: pip install tox tox-gh-actions - - run: tox \ No newline at end of file + - uses: astral-sh/setup-uv@v7 + - run: uv sync --group dev + - run: uv run pytest tests diff --git a/README.md b/README.md index 73d5500..2d6fe96 100644 --- a/README.md +++ b/README.md @@ -13,10 +13,10 @@ The program is intended to work on a Windows OS with Python 3.10 or later. Open a Python virtual environment and install the Git repository. For example: ```console -$ pip install git+https://github.com/psilabs-dev/kksubs.git +$ uv tool install git+https://github.com/psilabs-dev/kksubs.git ``` Configure the application: ```console $ koi configure ``` -Command line reference ([koi](docs/command_line/koi.md)). \ No newline at end of file +Command line reference ([koi](docs/command_line/koi.md)). diff --git a/pyproject.toml b/pyproject.toml index 8f12168..abced61 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [build-system] -requires = ["setuptools>=45", "wheel"] -build-backend = "setuptools.build_meta" +requires = ["uv_build>=0.9.25,<0.10.0"] +build-backend = "uv_build" [project] name = "kksubs" @@ -15,7 +15,7 @@ dependencies = [ "pyyaml", ] -[project.optional-dependencies] +[dependency-groups] dev = [ "pytest", "pytest-cov", @@ -23,17 +23,11 @@ dev = [ ] [project.scripts] -koi = "koi.cli:cli" +koi = "kksubs.koi.cli:cli" -[tool.setuptools.packages.find] -where = ["src"] -exclude = ["tests*"] - -[tool.setuptools] -include-package-data = true - -[tool.setuptools.package-data] -"resources.fonts.roboto" = ["*.ttf"] +[tool.uv.build-backend] +module-name = "kksubs" +module-root = "src" [tool.pytest.ini_options] testpaths = ["tests"] diff --git a/src/kksubs/__init__.py b/src/kksubs/__init__.py index 6341afe..5f97b5c 100644 --- a/src/kksubs/__init__.py +++ b/src/kksubs/__init__.py @@ -1,4 +1,4 @@ -from kksubs.controller.subtitle import SubtitleController +from kksubs.core.controller.subtitle import SubtitleController # basic functions def create_project(workspace_directory:str=None): diff --git a/src/common/__init__.py b/src/kksubs/common/__init__.py similarity index 100% rename from src/common/__init__.py rename to src/kksubs/common/__init__.py diff --git a/src/common/data/__init__.py b/src/kksubs/common/data/__init__.py similarity index 100% rename from src/common/data/__init__.py rename to src/kksubs/common/data/__init__.py diff --git a/src/common/data/file.py b/src/kksubs/common/data/file.py similarity index 100% rename from src/common/data/file.py rename to src/kksubs/common/data/file.py diff --git a/src/common/data/representable.py b/src/kksubs/common/data/representable.py similarity index 100% rename from src/common/data/representable.py rename to src/kksubs/common/data/representable.py diff --git a/src/common/exceptions.py b/src/kksubs/common/exceptions.py similarity index 100% rename from src/common/exceptions.py rename to src/kksubs/common/exceptions.py diff --git a/src/common/import_utils.py b/src/kksubs/common/import_utils.py similarity index 100% rename from src/common/import_utils.py rename to src/kksubs/common/import_utils.py diff --git a/src/common/utils/__init__.py b/src/kksubs/common/utils/__init__.py similarity index 100% rename from src/common/utils/__init__.py rename to src/kksubs/common/utils/__init__.py diff --git a/src/common/utils/application.py b/src/kksubs/common/utils/application.py similarity index 100% rename from src/common/utils/application.py rename to src/kksubs/common/utils/application.py diff --git a/src/common/utils/coalesce.py b/src/kksubs/common/utils/coalesce.py similarity index 100% rename from src/common/utils/coalesce.py rename to src/kksubs/common/utils/coalesce.py diff --git a/src/common/utils/decorators.py b/src/kksubs/common/utils/decorators.py similarity index 100% rename from src/common/utils/decorators.py rename to src/kksubs/common/utils/decorators.py diff --git a/src/common/utils/file.py b/src/kksubs/common/utils/file.py similarity index 98% rename from src/common/utils/file.py rename to src/kksubs/common/utils/file.py index 8e0d5b2..8272ec3 100644 --- a/src/common/utils/file.py +++ b/src/kksubs/common/utils/file.py @@ -9,9 +9,9 @@ import time from typing import Dict, List, Set -from common.data.file import Bucket, FileType -from common.data.representable import RepresentableData -from common.utils.coalesce import coalesce +from kksubs.common.data.file import Bucket, FileType +from kksubs.common.data.representable import RepresentableData +from kksubs.common.utils.coalesce import coalesce logger = logging.getLogger(__name__) diff --git a/src/common/watcher/__init__.py b/src/kksubs/common/watcher/__init__.py similarity index 100% rename from src/common/watcher/__init__.py rename to src/kksubs/common/watcher/__init__.py diff --git a/src/common/watcher/abstract.py b/src/kksubs/common/watcher/abstract.py similarity index 96% rename from src/common/watcher/abstract.py rename to src/kksubs/common/watcher/abstract.py index f2dc7df..2cb77f5 100644 --- a/src/common/watcher/abstract.py +++ b/src/kksubs/common/watcher/abstract.py @@ -2,7 +2,7 @@ import logging import time import traceback -from common.exceptions import RetryWatcherPrompt +from kksubs.common.exceptions import RetryWatcherPrompt logger = logging.getLogger(__name__) diff --git a/src/common/watcher/file_change.py b/src/kksubs/common/watcher/file_change.py similarity index 95% rename from src/common/watcher/file_change.py rename to src/kksubs/common/watcher/file_change.py index 37885e8..eb5a0de 100644 --- a/src/common/watcher/file_change.py +++ b/src/kksubs/common/watcher/file_change.py @@ -1,6 +1,6 @@ import os from typing import Dict, List -from common.watcher.abstract import AbstractWatcher +from kksubs.common.watcher.abstract import AbstractWatcher class FileChangeWatcher(AbstractWatcher): diff --git a/src/kksubs/core/__init__.py b/src/kksubs/core/__init__.py new file mode 100644 index 0000000..c4b9977 --- /dev/null +++ b/src/kksubs/core/__init__.py @@ -0,0 +1 @@ +"""Core subtitle processing modules for kksubs.""" diff --git a/src/kksubs/cmd/__init__.py b/src/kksubs/core/cmd/__init__.py similarity index 100% rename from src/kksubs/cmd/__init__.py rename to src/kksubs/core/cmd/__init__.py diff --git a/src/kksubs/cmd/subtitle.py b/src/kksubs/core/cmd/subtitle.py similarity index 96% rename from src/kksubs/cmd/subtitle.py rename to src/kksubs/core/cmd/subtitle.py index 5312321..e84b0c3 100644 --- a/src/kksubs/cmd/subtitle.py +++ b/src/kksubs/core/cmd/subtitle.py @@ -1,8 +1,8 @@ import argparse import logging -from common.import_utils import get_kksubs_version +from kksubs.common.import_utils import get_kksubs_version -from kksubs.controller.subtitle import SubtitleController +from kksubs.core.controller.subtitle import SubtitleController log_levels = { "debug": logging.DEBUG, diff --git a/src/kksubs/controller/__init__.py b/src/kksubs/core/controller/__init__.py similarity index 100% rename from src/kksubs/controller/__init__.py rename to src/kksubs/core/controller/__init__.py diff --git a/src/kksubs/controller/subtitle.py b/src/kksubs/core/controller/subtitle.py similarity index 94% rename from src/kksubs/controller/subtitle.py rename to src/kksubs/core/controller/subtitle.py index 1ced9d1..719236a 100644 --- a/src/kksubs/controller/subtitle.py +++ b/src/kksubs/core/controller/subtitle.py @@ -1,10 +1,10 @@ import os -from kksubs.service.sub_project import SubtitleProjectService +from kksubs.core.service.sub_project import SubtitleProjectService from typing import Dict, List import logging -from common.utils.file import open_directory +from kksubs.common.utils.file import open_directory -from kksubs.watcher.subtitle import SubtitleWatcher +from kksubs.core.watcher.subtitle import SubtitleWatcher logger = logging.getLogger(__name__) diff --git a/src/kksubs/data/__init__.py b/src/kksubs/core/data/__init__.py similarity index 100% rename from src/kksubs/data/__init__.py rename to src/kksubs/core/data/__init__.py diff --git a/src/kksubs/data/abstract.py b/src/kksubs/core/data/abstract.py similarity index 88% rename from src/kksubs/data/abstract.py rename to src/kksubs/core/data/abstract.py index b08dc2d..ae5edb1 100644 --- a/src/kksubs/data/abstract.py +++ b/src/kksubs/core/data/abstract.py @@ -1,6 +1,6 @@ from abc import abstractclassmethod, abstractmethod -from common.data.representable import RepresentableData +from kksubs.common.data.representable import RepresentableData class BaseData(RepresentableData): field_name:str diff --git a/src/kksubs/data/subtitle/__init__.py b/src/kksubs/core/data/subtitle/__init__.py similarity index 100% rename from src/kksubs/data/subtitle/__init__.py rename to src/kksubs/core/data/subtitle/__init__.py diff --git a/src/kksubs/data/subtitle/style.py b/src/kksubs/core/data/subtitle/style.py similarity index 98% rename from src/kksubs/data/subtitle/style.py rename to src/kksubs/core/data/subtitle/style.py index a5da726..ea3ae73 100644 --- a/src/kksubs/data/subtitle/style.py +++ b/src/kksubs/core/data/subtitle/style.py @@ -2,9 +2,9 @@ from copy import deepcopy from typing import List -from common.data.representable import RepresentableData -from common.utils.coalesce import coalesce -from kksubs.data.subtitle.style_attributes import ( +from kksubs.common.data.representable import RepresentableData +from kksubs.common.utils.coalesce import coalesce +from kksubs.core.data.subtitle.style_attributes import ( Asset, Background, BaseData, BoxData, Brightness, CharacterDialogueConfig, Gaussian, Mask, Motion, OutlineData, OutlineData1, TextData ) diff --git a/src/kksubs/data/subtitle/style_attributes.py b/src/kksubs/core/data/subtitle/style_attributes.py similarity index 96% rename from src/kksubs/data/subtitle/style_attributes.py rename to src/kksubs/core/data/subtitle/style_attributes.py index 579833a..174594c 100644 --- a/src/kksubs/data/subtitle/style_attributes.py +++ b/src/kksubs/core/data/subtitle/style_attributes.py @@ -1,9 +1,9 @@ from copy import deepcopy -import kksubs.data.subtitle.style -from kksubs.data.abstract import BaseData -from common.utils.coalesce import coalesce -from kksubs.utils.sanitizers import to_float, to_integer, to_rgb_color, to_string, to_validated_value, to_xy_coords +import kksubs.core.data.subtitle.style +from kksubs.core.data.abstract import BaseData +from kksubs.common.utils.coalesce import coalesce +from kksubs.core.utils.sanitizers import to_float, to_integer, to_rgb_color, to_string, to_validated_value, to_xy_coords class TextData(BaseData): field_name = "text_data" @@ -422,8 +422,8 @@ def deserialize(cls, data=None): character_data = data.get('character') dialogue_data = data.get('dialogue') - character = kksubs.data.subtitle.style.Style.deserialize(character_data) if character_data is not None else None - dialogue = kksubs.data.subtitle.style.Style.deserialize(dialogue_data) if dialogue_data is not None else None + character = kksubs.core.data.subtitle.style.Style.deserialize(character_data) if character_data is not None else None + dialogue = kksubs.core.data.subtitle.style.Style.deserialize(dialogue_data) if dialogue_data is not None else None return CharacterDialogueConfig( enabled=enabled, diff --git a/src/kksubs/data/subtitle/style_row_enum.py b/src/kksubs/core/data/subtitle/style_row_enum.py similarity index 85% rename from src/kksubs/data/subtitle/style_row_enum.py rename to src/kksubs/core/data/subtitle/style_row_enum.py index bd0cfa3..4c9dbe2 100644 --- a/src/kksubs/data/subtitle/style_row_enum.py +++ b/src/kksubs/core/data/subtitle/style_row_enum.py @@ -1,8 +1,8 @@ from enum import Enum from typing import List -from kksubs.data.subtitle.style import Style, StyleRow -from kksubs.data.subtitle.style_attributes import BoxData +from kksubs.core.data.subtitle.style import Style, StyleRow +from kksubs.core.data.subtitle.style_attributes import BoxData grid4_complete:List[Style] = list() for i in range(4): diff --git a/src/kksubs/data/subtitle/subtitle.py b/src/kksubs/core/data/subtitle/subtitle.py similarity index 96% rename from src/kksubs/data/subtitle/subtitle.py rename to src/kksubs/core/data/subtitle/subtitle.py index 0ee6afc..3e947ef 100644 --- a/src/kksubs/data/subtitle/subtitle.py +++ b/src/kksubs/core/data/subtitle/subtitle.py @@ -2,8 +2,8 @@ import os from typing import Dict, List -from kksubs.data.abstract import RepresentableData -from kksubs.data.subtitle.style import Style +from kksubs.core.data.abstract import RepresentableData +from kksubs.core.data.subtitle.style import Style logger = logging.getLogger(__name__) diff --git a/src/kksubs/service/__init__.py b/src/kksubs/core/service/__init__.py similarity index 100% rename from src/kksubs/service/__init__.py rename to src/kksubs/core/service/__init__.py diff --git a/src/kksubs/service/extraction/__init__.py b/src/kksubs/core/service/extraction/__init__.py similarity index 100% rename from src/kksubs/service/extraction/__init__.py rename to src/kksubs/core/service/extraction/__init__.py diff --git a/src/kksubs/service/extraction/style.py b/src/kksubs/core/service/extraction/style.py similarity index 94% rename from src/kksubs/service/extraction/style.py rename to src/kksubs/core/service/extraction/style.py index 336ffd9..35fffcc 100644 --- a/src/kksubs/service/extraction/style.py +++ b/src/kksubs/core/service/extraction/style.py @@ -2,8 +2,8 @@ import re from typing import List, Dict, Union -from kksubs.data.subtitle.style import ContextLayer, Layer, Style, StyleMatrix, StyleRow -from kksubs.data.subtitle.style_row_enum import STYLE_ROW_ENUM +from kksubs.core.data.subtitle.style import ContextLayer, Layer, Style, StyleMatrix, StyleRow +from kksubs.core.data.subtitle.style_row_enum import STYLE_ROW_ENUM logger = logging.getLogger(__name__) diff --git a/src/kksubs/service/extraction/subtitle.py b/src/kksubs/core/service/extraction/subtitle.py similarity index 96% rename from src/kksubs/service/extraction/subtitle.py rename to src/kksubs/core/service/extraction/subtitle.py index f8b5146..ffb77ab 100644 --- a/src/kksubs/service/extraction/subtitle.py +++ b/src/kksubs/core/service/extraction/subtitle.py @@ -2,13 +2,13 @@ from typing import Dict, List, Set from copy import deepcopy -from kksubs.data.subtitle.style_attributes import ( +from kksubs.core.data.subtitle.style_attributes import ( Asset, Background, BaseData, BoxData, Brightness, CharacterDialogueConfig, Gaussian, Mask, Motion, OutlineData, OutlineData1, TextData ) -from kksubs.data.subtitle.style import Style -from kksubs.data.subtitle.subtitle import CharacterDialogueSubtitle, Subtitle, SubtitleGroup -# from kksubs.data.subtitle.subtitle import Background, BaseData, BoxData, Brightness, Gaussian, Mask, Motion, OutlineData, OutlineData1, Style, Subtitle, SubtitleGroup, TextData +from kksubs.core.data.subtitle.style import Style +from kksubs.core.data.subtitle.subtitle import CharacterDialogueSubtitle, Subtitle, SubtitleGroup +# from kksubs.core.data.subtitle.subtitle import Background, BaseData, BoxData, Brightness, Gaussian, Mask, Motion, OutlineData, OutlineData1, Style, Subtitle, SubtitleGroup, TextData # parsing/extraction, filtering, standardization logger = logging.getLogger(__name__) diff --git a/src/kksubs/service/file.py b/src/kksubs/core/service/file.py similarity index 91% rename from src/kksubs/service/file.py rename to src/kksubs/core/service/file.py index 9e43d9b..d3c5718 100644 --- a/src/kksubs/service/file.py +++ b/src/kksubs/core/service/file.py @@ -1,8 +1,8 @@ import os from typing import Dict, List, Union -from common.data.file import Bucket +from kksubs.common.data.file import Bucket -from common.utils.file import transfer, sync_bidirectional, sync_unidirectional, save_most_recent_path +from kksubs.common.utils.file import transfer, sync_bidirectional, sync_unidirectional, save_most_recent_path class FileService: diff --git a/src/kksubs/service/processor/__init__.py b/src/kksubs/core/service/processor/__init__.py similarity index 100% rename from src/kksubs/service/processor/__init__.py rename to src/kksubs/core/service/processor/__init__.py diff --git a/src/kksubs/service/processor/apply_text.py b/src/kksubs/core/service/processor/apply_text.py similarity index 100% rename from src/kksubs/service/processor/apply_text.py rename to src/kksubs/core/service/processor/apply_text.py diff --git a/src/kksubs/service/processor/motion_blur.py b/src/kksubs/core/service/processor/motion_blur.py similarity index 97% rename from src/kksubs/service/processor/motion_blur.py rename to src/kksubs/core/service/processor/motion_blur.py index 9846a03..629d98a 100644 --- a/src/kksubs/service/processor/motion_blur.py +++ b/src/kksubs/core/service/processor/motion_blur.py @@ -2,7 +2,7 @@ import cv2 from PIL import Image -from kksubs.service.processor.utils.image import in_cv2_environment +from kksubs.core.service.processor.utils.image import in_cv2_environment def apply_horizontal_blur(image, kernel_size=None): if kernel_size is None: diff --git a/src/kksubs/service/processor/utils/__init__.py b/src/kksubs/core/service/processor/utils/__init__.py similarity index 100% rename from src/kksubs/service/processor/utils/__init__.py rename to src/kksubs/core/service/processor/utils/__init__.py diff --git a/src/kksubs/service/processor/utils/image.py b/src/kksubs/core/service/processor/utils/image.py similarity index 100% rename from src/kksubs/service/processor/utils/image.py rename to src/kksubs/core/service/processor/utils/image.py diff --git a/src/kksubs/service/sub_project.py b/src/kksubs/core/service/sub_project.py similarity index 98% rename from src/kksubs/service/sub_project.py rename to src/kksubs/core/service/sub_project.py index c8223f3..fb43a62 100644 --- a/src/kksubs/service/sub_project.py +++ b/src/kksubs/core/service/sub_project.py @@ -11,14 +11,14 @@ import pickle -from kksubs.data.subtitle.style import Style -from kksubs.data.subtitle.subtitle import SubtitleGroup -from common.exceptions import InvalidProjectException, RetryWatcherPrompt - -from kksubs.service.extraction.subtitle import extract_subtitle_groups -from kksubs.service.extraction.style import extract_styles -from kksubs.service.subtitle import add_subtitles_to_image -from kksubs.utils.renamer import rename_images, update_images_in_textpath +from kksubs.core.data.subtitle.style import Style +from kksubs.core.data.subtitle.subtitle import SubtitleGroup +from kksubs.common.exceptions import InvalidProjectException, RetryWatcherPrompt + +from kksubs.core.service.extraction.subtitle import extract_subtitle_groups +from kksubs.core.service.extraction.style import extract_styles +from kksubs.core.service.subtitle import add_subtitles_to_image +from kksubs.core.utils.renamer import rename_images, update_images_in_textpath logger = logging.getLogger(__name__) diff --git a/src/kksubs/service/subtitle.py b/src/kksubs/core/service/subtitle.py similarity index 97% rename from src/kksubs/service/subtitle.py rename to src/kksubs/core/service/subtitle.py index e9ec220..a189172 100644 --- a/src/kksubs/service/subtitle.py +++ b/src/kksubs/core/service/subtitle.py @@ -3,13 +3,13 @@ from PIL import Image, ImageFont, ImageFilter, ImageEnhance import importlib.resources -from common.utils.coalesce import coalesce -from kksubs.data.subtitle.style_attributes import OutlineData -from kksubs.data.subtitle.subtitle import CharacterDialogueSubtitle, Subtitle -from kksubs.data.subtitle.style import Style -# from kksubs.data.subtitle.subtitle import OutlineData, Subtitle -from kksubs.service.processor.motion_blur import apply_motion_blur -from kksubs.service.processor.apply_text import create_text_layer +from kksubs.common.utils.coalesce import coalesce +from kksubs.core.data.subtitle.style_attributes import OutlineData +from kksubs.core.data.subtitle.subtitle import CharacterDialogueSubtitle, Subtitle +from kksubs.core.data.subtitle.style import Style +# from kksubs.core.data.subtitle.subtitle import OutlineData, Subtitle +from kksubs.core.service.processor.motion_blur import apply_motion_blur +from kksubs.core.service.processor.apply_text import create_text_layer import logging @@ -40,7 +40,7 @@ def _get_default_font(): """Get the default font, trying bundled font first, then system default.""" try: # Try to get the bundled font from package resources - font_files = importlib.resources.files('resources.fonts.roboto') + font_files = importlib.resources.files('kksubs.resources.fonts.roboto') font_path = font_files / 'Roboto-Regular.ttf' with importlib.resources.as_file(font_path) as font_file: return str(font_file) diff --git a/src/kksubs/utils/__init__.py b/src/kksubs/core/utils/__init__.py similarity index 100% rename from src/kksubs/utils/__init__.py rename to src/kksubs/core/utils/__init__.py diff --git a/src/kksubs/utils/renamer.py b/src/kksubs/core/utils/renamer.py similarity index 100% rename from src/kksubs/utils/renamer.py rename to src/kksubs/core/utils/renamer.py diff --git a/src/kksubs/utils/sanitizers.py b/src/kksubs/core/utils/sanitizers.py similarity index 100% rename from src/kksubs/utils/sanitizers.py rename to src/kksubs/core/utils/sanitizers.py diff --git a/src/kksubs/watcher/__init__.py b/src/kksubs/core/watcher/__init__.py similarity index 100% rename from src/kksubs/watcher/__init__.py rename to src/kksubs/core/watcher/__init__.py diff --git a/src/kksubs/watcher/subtitle.py b/src/kksubs/core/watcher/subtitle.py similarity index 92% rename from src/kksubs/watcher/subtitle.py rename to src/kksubs/core/watcher/subtitle.py index a14fdd8..28bf74f 100644 --- a/src/kksubs/watcher/subtitle.py +++ b/src/kksubs/core/watcher/subtitle.py @@ -2,8 +2,8 @@ import os import datetime -from kksubs.service.sub_project import SubtitleProjectService -from common.watcher.file_change import FileChangeWatcher +from kksubs.core.service.sub_project import SubtitleProjectService +from kksubs.common.watcher.file_change import FileChangeWatcher logger = logging.getLogger(__name__) diff --git a/src/kkp/__init__.py b/src/kksubs/kkp/__init__.py similarity index 100% rename from src/kkp/__init__.py rename to src/kksubs/kkp/__init__.py diff --git a/src/kkp/cmd/__init__.py b/src/kksubs/kkp/cmd/__init__.py similarity index 100% rename from src/kkp/cmd/__init__.py rename to src/kksubs/kkp/cmd/__init__.py diff --git a/src/kkp/cmd/project.py b/src/kksubs/kkp/cmd/project.py similarity index 98% rename from src/kkp/cmd/project.py rename to src/kksubs/kkp/cmd/project.py index 0e794ff..8d52da3 100644 --- a/src/kkp/cmd/project.py +++ b/src/kksubs/kkp/cmd/project.py @@ -1,8 +1,8 @@ import argparse import logging -from common.import_utils import get_kksubs_version +from kksubs.common.import_utils import get_kksubs_version -from kkp.controller.project import ProjectController +from kksubs.kkp.controller.project import ProjectController log_levels = { "debug": logging.DEBUG, diff --git a/src/kkp/controller/__init__.py b/src/kksubs/kkp/controller/__init__.py similarity index 100% rename from src/kkp/controller/__init__.py rename to src/kksubs/kkp/controller/__init__.py diff --git a/src/kkp/controller/project.py b/src/kksubs/kkp/controller/project.py similarity index 98% rename from src/kkp/controller/project.py rename to src/kksubs/kkp/controller/project.py index 2eae31f..84d0421 100644 --- a/src/kkp/controller/project.py +++ b/src/kksubs/kkp/controller/project.py @@ -5,23 +5,23 @@ from pathlib import Path from typing import Dict, List, Optional import yaml -from common.exceptions import InvalidProjectException +from kksubs.common.exceptions import InvalidProjectException import subprocess from packaging import version -from common.utils.file import open_directory -from common.import_utils import get_kksubs_version -from kkp.data.config import KKPSettings -from kksubs.service.file import FileService -from kkp.service.studio_project import StudioProjectService - -from kksubs.service.sub_project import SubtitleProjectService -from kkp.view.project import ProjectView -from kkp.watcher.project import ProjectWatcher -from common.utils.coalesce import coalesce -from common.utils.decorators import deprecated, spacing -from common.utils.application import get_config_path, get_application_root -from common.exceptions import NotConfiguredException +from kksubs.common.utils.file import open_directory +from kksubs.common.import_utils import get_kksubs_version +from kksubs.kkp.data.config import KKPSettings +from kksubs.core.service.file import FileService +from kksubs.kkp.service.studio_project import StudioProjectService + +from kksubs.core.service.sub_project import SubtitleProjectService +from kksubs.kkp.view.project import ProjectView +from kksubs.kkp.watcher.project import ProjectWatcher +from kksubs.common.utils.coalesce import coalesce +from kksubs.common.utils.decorators import deprecated, spacing +from kksubs.common.utils.application import get_config_path, get_application_root +from kksubs.common.exceptions import NotConfiguredException # config information CONFIG_FILE_NAME = 'config.yaml' diff --git a/src/kkp/data/__init__.py b/src/kksubs/kkp/data/__init__.py similarity index 100% rename from src/kkp/data/__init__.py rename to src/kksubs/kkp/data/__init__.py diff --git a/src/kkp/data/config.py b/src/kksubs/kkp/data/config.py similarity index 97% rename from src/kkp/data/config.py rename to src/kksubs/kkp/data/config.py index 57158b6..566146a 100644 --- a/src/kkp/data/config.py +++ b/src/kksubs/kkp/data/config.py @@ -3,7 +3,7 @@ from pathlib import Path from typing import Dict -from common.data.representable import RepresentableData +from kksubs.common.data.representable import RepresentableData class Settings(RepresentableData, ABC): name:str diff --git a/src/kkp/service/__init__.py b/src/kksubs/kkp/service/__init__.py similarity index 100% rename from src/kkp/service/__init__.py rename to src/kksubs/kkp/service/__init__.py diff --git a/src/kkp/service/studio_project.py b/src/kksubs/kkp/service/studio_project.py similarity index 99% rename from src/kkp/service/studio_project.py rename to src/kksubs/kkp/service/studio_project.py index ba81a0a..17466a2 100644 --- a/src/kkp/service/studio_project.py +++ b/src/kksubs/kkp/service/studio_project.py @@ -7,9 +7,9 @@ import fnmatch import datetime -from common.data.file import Bucket -from common.exceptions import InvalidProjectException -from kksubs.service.file import FileService +from kksubs.common.data.file import Bucket +from kksubs.common.exceptions import InvalidProjectException +from kksubs.core.service.file import FileService logger = logging.getLogger(__name__) diff --git a/src/kkp/view/__init__.py b/src/kksubs/kkp/view/__init__.py similarity index 100% rename from src/kkp/view/__init__.py rename to src/kksubs/kkp/view/__init__.py diff --git a/src/kkp/view/project.py b/src/kksubs/kkp/view/project.py similarity index 100% rename from src/kkp/view/project.py rename to src/kksubs/kkp/view/project.py diff --git a/src/kkp/watcher/__init__.py b/src/kksubs/kkp/watcher/__init__.py similarity index 100% rename from src/kkp/watcher/__init__.py rename to src/kksubs/kkp/watcher/__init__.py diff --git a/src/kkp/watcher/project.py b/src/kksubs/kkp/watcher/project.py similarity index 73% rename from src/kkp/watcher/project.py rename to src/kksubs/kkp/watcher/project.py index 4f9ee0c..a97f589 100644 --- a/src/kkp/watcher/project.py +++ b/src/kksubs/kkp/watcher/project.py @@ -1,8 +1,8 @@ -from kkp.service.studio_project import StudioProjectService -from kksubs.service.sub_project import SubtitleProjectService -from kksubs.watcher.subtitle import SubtitleWatcher +from kksubs.kkp.service.studio_project import StudioProjectService +from kksubs.core.service.sub_project import SubtitleProjectService +from kksubs.core.watcher.subtitle import SubtitleWatcher class ProjectWatcher(SubtitleWatcher): diff --git a/src/kksubs/koi/__init__.py b/src/kksubs/koi/__init__.py new file mode 100644 index 0000000..2e51a1e --- /dev/null +++ b/src/kksubs/koi/__init__.py @@ -0,0 +1 @@ +"""koi CLI package for kksubs.""" diff --git a/src/koi/app/controller.py b/src/kksubs/koi/app/controller.py similarity index 95% rename from src/koi/app/controller.py rename to src/kksubs/koi/app/controller.py index 4fddb0b..c362fc4 100644 --- a/src/koi/app/controller.py +++ b/src/kksubs/koi/app/controller.py @@ -3,7 +3,7 @@ import importlib.metadata import yaml -from common.utils.application import get_application_root, get_config_path +from kksubs.common.utils.application import get_application_root, get_config_path logger = logging.getLogger(__name__) diff --git a/src/koi/cli.py b/src/kksubs/koi/cli.py similarity index 97% rename from src/koi/cli.py rename to src/kksubs/koi/cli.py index e34b85f..0a0caed 100644 --- a/src/koi/cli.py +++ b/src/kksubs/koi/cli.py @@ -2,9 +2,9 @@ import logging import os -from kkp.controller.project import ProjectController +from kksubs.kkp.controller.project import ProjectController -from koi.app.controller import configure_application, show_application_version +from kksubs.koi.app.controller import configure_application, show_application_version logger = logging.getLogger(__name__) diff --git a/src/resources/__init__.py b/src/kksubs/resources/__init__.py similarity index 100% rename from src/resources/__init__.py rename to src/kksubs/resources/__init__.py diff --git a/src/resources/fonts/__init__.py b/src/kksubs/resources/fonts/__init__.py similarity index 100% rename from src/resources/fonts/__init__.py rename to src/kksubs/resources/fonts/__init__.py diff --git a/src/resources/fonts/roboto/OFL.txt b/src/kksubs/resources/fonts/roboto/OFL.txt similarity index 100% rename from src/resources/fonts/roboto/OFL.txt rename to src/kksubs/resources/fonts/roboto/OFL.txt diff --git a/src/resources/fonts/roboto/README.txt b/src/kksubs/resources/fonts/roboto/README.txt similarity index 100% rename from src/resources/fonts/roboto/README.txt rename to src/kksubs/resources/fonts/roboto/README.txt diff --git a/src/resources/fonts/roboto/Roboto-Regular.ttf b/src/kksubs/resources/fonts/roboto/Roboto-Regular.ttf similarity index 100% rename from src/resources/fonts/roboto/Roboto-Regular.ttf rename to src/kksubs/resources/fonts/roboto/Roboto-Regular.ttf diff --git a/src/resources/fonts/roboto/__init__.py b/src/kksubs/resources/fonts/roboto/__init__.py similarity index 100% rename from src/resources/fonts/roboto/__init__.py rename to src/kksubs/resources/fonts/roboto/__init__.py diff --git a/tests/test_common/test_coalesce.py b/tests/test_common/test_coalesce.py index 4414b80..e16c118 100644 --- a/tests/test_common/test_coalesce.py +++ b/tests/test_common/test_coalesce.py @@ -1,4 +1,4 @@ -from common.utils.coalesce import coalesce +from kksubs.common.utils.coalesce import coalesce def test_coalesce(): diff --git a/tests/test_common/test_file_operations.py b/tests/test_common/test_file_operations.py index 70612d2..8ad28cc 100644 --- a/tests/test_common/test_file_operations.py +++ b/tests/test_common/test_file_operations.py @@ -6,8 +6,8 @@ import pytest import shutil -from common.data.file import Bucket -from common.utils.file import sync_bidirectional, sync_unidirectional, transfer +from kksubs.common.data.file import Bucket +from kksubs.common.utils.file import sync_bidirectional, sync_unidirectional, transfer logger = logging.getLogger(__name__) diff --git a/tests/test_kkp/test_projects.py b/tests/test_kkp/test_projects.py index 155c3e0..b24ef3d 100644 --- a/tests/test_kkp/test_projects.py +++ b/tests/test_kkp/test_projects.py @@ -20,7 +20,7 @@ import os import pytest -from kkp.controller.project import ProjectController +from kksubs.kkp.controller.project import ProjectController def create_test_site(test_dir): diff --git a/tests/test_kksubs/test_character_dialogue_config.py b/tests/test_kksubs/test_character_dialogue_config.py index 4bf00fb..4b78849 100644 --- a/tests/test_kksubs/test_character_dialogue_config.py +++ b/tests/test_kksubs/test_character_dialogue_config.py @@ -1,6 +1,6 @@ import pytest -from kksubs.data.subtitle.style_attributes import CharacterDialogueConfig -from kksubs.data.subtitle.style import Style +from kksubs.core.data.subtitle.style_attributes import CharacterDialogueConfig +from kksubs.core.data.subtitle.style import Style def test_character_dialogue_config_deserialize_basic(): diff --git a/tests/test_kksubs/test_character_dialogue_integration.py b/tests/test_kksubs/test_character_dialogue_integration.py index 370004c..8710900 100644 --- a/tests/test_kksubs/test_character_dialogue_integration.py +++ b/tests/test_kksubs/test_character_dialogue_integration.py @@ -2,7 +2,7 @@ import tempfile import os from PIL import Image -from kksubs.controller.subtitle import SubtitleController +from kksubs.core.controller.subtitle import SubtitleController def generate_test_image(directory, image_name): diff --git a/tests/test_kksubs/test_character_dialogue_parsing.py b/tests/test_kksubs/test_character_dialogue_parsing.py index 6e38383..389d161 100644 --- a/tests/test_kksubs/test_character_dialogue_parsing.py +++ b/tests/test_kksubs/test_character_dialogue_parsing.py @@ -2,9 +2,9 @@ import tempfile import os from PIL import Image -from kksubs.service.extraction.subtitle import extract_subtitle_groups -from kksubs.service.extraction.style import extract_styles -from kksubs.data.subtitle.subtitle import CharacterDialogueSubtitle, Subtitle +from kksubs.core.service.extraction.subtitle import extract_subtitle_groups +from kksubs.core.service.extraction.style import extract_styles +from kksubs.core.data.subtitle.subtitle import CharacterDialogueSubtitle, Subtitle @pytest.fixture @@ -153,7 +153,7 @@ def test_parse_mixed_regular_and_character_dialogue(temp_image_dir): def test_parse_character_dialogue_with_matrix(temp_image_dir): """Test parsing character/dialogue with matrix-generated style IDs.""" # Check existing matrix tests to understand correct syntax - from kksubs.data.subtitle.style_row_enum import STYLE_ROW_ENUM + from kksubs.core.data.subtitle.style_row_enum import STYLE_ROW_ENUM # grid10_complete should already be defined in the enum assert STYLE_ROW_ENUM.get('grid10_complete') is not None diff --git a/tests/test_kksubs/test_font_handling.py b/tests/test_kksubs/test_font_handling.py index 235ea86..bea6e51 100644 --- a/tests/test_kksubs/test_font_handling.py +++ b/tests/test_kksubs/test_font_handling.py @@ -3,17 +3,17 @@ import pytest from PIL import Image -from kksubs.data.subtitle.subtitle import Subtitle -from kksubs.data.subtitle.style import Style -from kksubs.data.subtitle.style_attributes import TextData, BoxData -from kksubs.service.subtitle import add_subtitle_to_image +from kksubs.core.data.subtitle.subtitle import Subtitle +from kksubs.core.data.subtitle.style import Style +from kksubs.core.data.subtitle.style_attributes import TextData, BoxData +from kksubs.core.service.subtitle import add_subtitle_to_image @pytest.fixture(autouse=True) def setup_logging(): """Fixture to set up logging configuration for tests.""" # Suppress warnings for cleaner test output - logging.getLogger('kksubs.service.subtitle').setLevel(logging.ERROR) + logging.getLogger('kksubs.core.service.subtitle').setLevel(logging.ERROR) def test_missing_font(): diff --git a/tests/test_kksubs/test_serialization.py b/tests/test_kksubs/test_serialization.py index efb801e..3a2c02f 100644 --- a/tests/test_kksubs/test_serialization.py +++ b/tests/test_kksubs/test_serialization.py @@ -1,9 +1,9 @@ from typing import Type -from common.data.representable import RepresentableData -from kksubs.data.subtitle.style_attributes import Asset, Background, BoxData, Brightness, Gaussian, Motion, OutlineData, TextData -from kksubs.data.subtitle.style import Style -from kksubs.data.subtitle.subtitle import Subtitle, SubtitleGroup +from kksubs.common.data.representable import RepresentableData +from kksubs.core.data.subtitle.style_attributes import Asset, Background, BoxData, Brightness, Gaussian, Motion, OutlineData, TextData +from kksubs.core.data.subtitle.style import Style +from kksubs.core.data.subtitle.subtitle import Subtitle, SubtitleGroup def assert_representations_equal(representable_data: RepresentableData, representation_class: Type[RepresentableData]): diff --git a/tests/test_kksubs/test_style_behavior.py b/tests/test_kksubs/test_style_behavior.py index 4262d2e..f57c53a 100644 --- a/tests/test_kksubs/test_style_behavior.py +++ b/tests/test_kksubs/test_style_behavior.py @@ -8,14 +8,14 @@ import os from PIL import Image -from kksubs.data.subtitle.style_attributes import ( +from kksubs.core.data.subtitle.style_attributes import ( BoxData, Mask, Background, TextData, CharacterDialogueConfig ) -from kksubs.data.subtitle.style import Style -from kksubs.data.subtitle.subtitle import CharacterDialogueSubtitle -from kksubs.service.subtitle import _render_character_dialogue_subtitle -from kksubs.service.extraction.subtitle import extract_subtitle_groups -from kksubs.service.extraction.style import extract_styles +from kksubs.core.data.subtitle.style import Style +from kksubs.core.data.subtitle.subtitle import CharacterDialogueSubtitle +from kksubs.core.service.subtitle import _render_character_dialogue_subtitle +from kksubs.core.service.extraction.subtitle import extract_subtitle_groups +from kksubs.core.service.extraction.style import extract_styles def test_boxdata_coalesce_independence(): diff --git a/tests/test_kksubs/test_style_independence.py b/tests/test_kksubs/test_style_independence.py index 67e0db9..4440fdd 100644 --- a/tests/test_kksubs/test_style_independence.py +++ b/tests/test_kksubs/test_style_independence.py @@ -10,10 +10,10 @@ from copy import deepcopy from PIL import Image -from kksubs.data.subtitle.style import Style -from kksubs.data.subtitle.style_attributes import TextData, BoxData, CharacterDialogueConfig -from kksubs.service.extraction.subtitle import extract_subtitle_groups -from kksubs.service.extraction.style import extract_styles +from kksubs.core.data.subtitle.style import Style +from kksubs.core.data.subtitle.style_attributes import TextData, BoxData, CharacterDialogueConfig +from kksubs.core.service.extraction.subtitle import extract_subtitle_groups +from kksubs.core.service.extraction.style import extract_styles def test_coalesce_creates_independent_objects(): diff --git a/tests/test_kksubs/test_subtitling.py b/tests/test_kksubs/test_subtitling.py index 2d6e7ac..6133b45 100644 --- a/tests/test_kksubs/test_subtitling.py +++ b/tests/test_kksubs/test_subtitling.py @@ -18,7 +18,7 @@ import os import pytest -from kksubs.controller.subtitle import SubtitleController +from kksubs.core.controller.subtitle import SubtitleController def generate_images(directory, images): diff --git a/tox.ini b/tox.ini deleted file mode 100644 index a073660..0000000 --- a/tox.ini +++ /dev/null @@ -1,14 +0,0 @@ -[tox] -envlist = py312 - -[gh-actions] -python = - 3.12: py312 - -[testenv] -deps = - pytest - pytest-cov -commands = - pip install -e . - pytest \ No newline at end of file diff --git a/uv.lock b/uv.lock index fbc782b..3cad73f 100644 --- a/uv.lock +++ b/uv.lock @@ -154,7 +154,7 @@ dependencies = [ { name = "pyyaml" }, ] -[package.optional-dependencies] +[package.dev-dependencies] dev = [ { name = "pytest" }, { name = "pytest-cov" }, @@ -168,12 +168,15 @@ requires-dist = [ { name = "opencv-python" }, { name = "packaging" }, { name = "pillow" }, - { name = "pytest", marker = "extra == 'dev'" }, - { name = "pytest-cov", marker = "extra == 'dev'" }, { name = "pyyaml" }, - { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.14.14" }, ] -provides-extras = ["dev"] + +[package.metadata.requires-dev] +dev = [ + { name = "pytest" }, + { name = "pytest-cov" }, + { name = "ruff", specifier = ">=0.14.14" }, +] [[package]] name = "natsort"