Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -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
21 changes: 14 additions & 7 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -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:
Expand All @@ -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
- uses: astral-sh/setup-uv@v7
- run: uv sync --group dev
- run: uv run pytest tests
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)).
Command line reference ([koi](docs/command_line/koi.md)).
20 changes: 7 additions & 13 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -15,25 +15,19 @@ dependencies = [
"pyyaml",
]

[project.optional-dependencies]
[dependency-groups]
dev = [
"pytest",
"pytest-cov",
"ruff>=0.14.14",
]

[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"]
Expand Down
2 changes: 1 addition & 1 deletion src/kksubs/__init__.py
Original file line number Diff line number Diff line change
@@ -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):
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
6 changes: 3 additions & 3 deletions src/common/utils/file.py → src/kksubs/common/utils/file.py
Original file line number Diff line number Diff line change
Expand Up @@ -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__)

Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -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__)

Expand Down
Original file line number Diff line number Diff line change
@@ -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):

Expand Down
1 change: 1 addition & 0 deletions src/kksubs/core/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Core subtitle processing modules for kksubs."""
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -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,
Expand Down
Original file line number Diff line number Diff line change
@@ -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__)

Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
)
Expand Down
Original file line number Diff line number Diff line change
@@ -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"
Expand Down Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
@@ -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):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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__)

Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -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__)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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__)
Expand Down
Original file line number Diff line number Diff line change
@@ -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:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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__)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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)
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -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__)

Expand Down
File renamed without changes.
File renamed without changes.
Loading