Skip to content

y5gfunc.source.wobbly.timecodes.base

base

Timecode generator base class and factory.

Classes:

Name Description
TimecodeGenerator

Timecode generator base class

TimecodeGeneratorFactory

Timecode generator factory

TimecodeGenerator

TimecodeGenerator(project: ProjectData)

Bases: ABC

Timecode generator base class

Initialize timecode generator

Parameters:

Name Type Description Default

project

ProjectData

Project data

required

Methods:

Name Description
generate

Generate timecode string

Attributes:

Name Type Description
project
Source code in y5gfunc/source/wobbly/timecodes/base.py
def __init__(self, project: ProjectData):
    """
    Initialize timecode generator

    Args:
        project: Project data
    """
    self.project = project
    self.decimated_by_cycle, self.ranges = get_decimation_info(project)

project instance-attribute

project = project

generate abstractmethod

generate() -> str

Generate timecode string

Returns:

Type Description
str

Timecode string

Source code in y5gfunc/source/wobbly/timecodes/base.py
@abstractmethod
def generate(self) -> str:
    """
    Generate timecode string

    Returns:
        Timecode string
    """
    pass

TimecodeGeneratorFactory

Timecode generator factory

Methods:

Name Description
register

Decorator for registering timecode generator classes

create

Create timecode generator instance

register classmethod

register(version: str) -> Callable

Decorator for registering timecode generator classes

Parameters:

Name Type Description Default

version

str

Timecode version

required

Returns:

Type Description
Callable

Decorator function

Source code in y5gfunc/source/wobbly/timecodes/base.py
@classmethod
def register(cls, version: str) -> Callable:
    """
    Decorator for registering timecode generator classes

    Args:
        version: Timecode version

    Returns:
        Decorator function
    """

    def decorator(
        generator_cls: Type[TimecodeGenerator],
    ) -> Type[TimecodeGenerator]:
        cls._generators[version] = generator_cls
        return generator_cls

    return decorator

create classmethod

Create timecode generator instance

Parameters:

Name Type Description Default

version

str

Timecode version

required

project

ProjectData

Project data

required

Returns:

Type Description
TimecodeGenerator

Timecode generator instance

Source code in y5gfunc/source/wobbly/timecodes/base.py
@classmethod
def create(cls, version: str, project: ProjectData) -> TimecodeGenerator:
    """
    Create timecode generator instance

    Args:
        version: Timecode version
        project: Project data

    Returns:
        Timecode generator instance
    """

    if version not in cls._generators:
        raise ValueError(f"Unsupported timecode version: {version}")

    generator_cls = cls._generators[version]
    return generator_cls(project)