# Path: arq/typing.py
# WEEKDAYS = 'mon', 'tues', 'wed', 'thurs', 'fri', 'sat', 'sun'
# class WorkerCoroutine(Protocol):
# class StartupShutdown(Protocol):
# class WorkerSettingsBase(Protocol):
#     async def __call__(self, ctx: Dict[Any, Any], *args: Any, **kwargs: Any) -> Any:  # pragma: no cover
#     async def __call__(self, ctx: Dict[Any, Any]) -> Any:  # pragma: no cover
# 
# Path: arq/utils.py
# @overload
# def to_seconds(td: None) -> None:
#     pass


import asyncio
import dataclasses
from dataclasses import dataclass
from datetime import datetime, timedelta
from typing import Optional, Union
from pydantic.utils import import_string
from .typing import WEEKDAYS, OptionType, SecondsTimedelta, WeekdayOptionType, WorkerCoroutine
from .utils import to_seconds




@dataclass
class Options:
    month: OptionType
    day: OptionType

# Path: arq/typing.py
# WEEKDAYS = 'mon', 'tues', 'wed', 'thurs', 'fri', 'sat', 'sun'
# class WorkerCoroutine(Protocol):
# class StartupShutdown(Protocol):
# class WorkerSettingsBase(Protocol):
#     async def __call__(self, ctx: Dict[Any, Any], *args: Any, **kwargs: Any) -> Any:  # pragma: no cover
#     async def __call__(self, ctx: Dict[Any, Any]) -> Any:  # pragma: no cover
# 
# Path: arq/utils.py
# @overload
# def to_seconds(td: None) -> None:
#     pass


# Path: arq/cron.py
import asyncio
import dataclasses
from dataclasses import dataclass
from datetime import datetime, timedelta
from typing import Optional, Union
from pydantic.utils import import_string
from .typing import WEEKDAYS, OptionType, SecondsTimedelta, WeekdayOptionType, WorkerCoroutine
from .utils import to_seconds





@dataclass
class Options:
    month: OptionType
    day: OptionType

    weekday: WeekdayOptionType