Skip to content

Overview

Class Diagram

classDiagram
  class AuthenticationError {
  }
  class ClientBody {
    name : Optional[str]
    notes : Optional[str]
    status : Optional[str]
    workspace_id : Optional[int]
    format_body(workspace_id: int) dict[str, Any]
  }
  class ClientEndpoint {
    endpoint
    model
    create_client(body: ClientBody) Optional[TogglClient]
    delete_client(client: TogglClient | int) None
    get_client(client_id: int | TogglClient) Optional[TogglClient]
    get_clients(status: Optional[str], name: Optional[str]) list[TogglClient]
    update_client(client: TogglClient | int, body: ClientBody) Optional[TogglClient]
  }
  class CustomDecoder {
    MATCH_DICT : Final[dict[str, type[TogglClass]]]
    decode(obj: Any) Any
  }
  class CustomEncoder {
    default(o: Any) Any
  }
  class JSONCache {
    cache_path
    parent
    session
    add_entries(update: list[TogglClass] | TogglClass) None
    add_entry(item: TogglClass) None
    commit() None
    delete_entries(update: list[TogglClass] | TogglClass) None
    delete_entry(entry: TogglClass) None
    find_entry(entry: TogglClass | dict) Optional[TogglClass]
    load_cache() list[TogglClass]
    query() list[TogglClass]
    save_cache(update: Iterable[TogglClass] | TogglClass, method: RequestMethod) None
    update_entries(update: list[TogglClass] | TogglClass) None
  }
  class JSONSession {
    data : list[TogglClass]
    max_length : int
    timestamp : datetime
    version : str
    commit(path: Path) None
    load(path: Path, expire_after: timedelta) None
    process_data(data: list[TogglClass]) list[TogglClass]
  }
  class ProjectBody {
    active : bool
    client_id : Optional[int]
    client_name : Optional[str]
    color : Optional[str]
    end_date : Optional[datetime | date]
    is_private : Optional[bool]
    name : Optional[str]
    start_date : Optional[datetime | date]
    workspace_id : Optional[int]
    format_body(workspace_id: int) dict[str, Any]
  }
  class ProjectEndpoint {
    BASIC_COLORS : Final[dict[str, str]]
    endpoint
    model
    add_project(body: ProjectBody) Optional[TogglProject]
    delete_project(project: TogglProject | int) None
    edit_project(project: TogglProject | int, body: ProjectBody) Optional[TogglProject]
    get_color(color: str) str
    get_color_id(color: str) int
    get_project(project_id: int | TogglProject) Optional[TogglProject]
    get_projects() Optional[list[TogglProject]]
  }
  class RequestMethod {
    name
  }
  class SqliteCache {
    cache_path
    database
    metadata
    session
    add_entries(entry: Iterable[TogglClass] | TogglClass) None
    commit() None
    delete_entries(entry: Iterable[TogglClass] | TogglClass) None
    find_entry(query: TogglClass | dict) Optional[TogglClass]
    load_cache() Query[TogglClass]
    query() Query[TogglClass]
    save_cache(entry: list[TogglClass] | TogglClass, method: RequestMethod) None
    update_entries(entry: Iterable[TogglClass] | TogglClass) None
  }
  class TagEndpoint {
    endpoint
    model
    create_tag(name: str) TogglTag
    delete_tag(tag: TogglTag) None
    get_tags() list[TogglTag]
    update_tag(tag: TogglTag) TogglTag
  }
  class TogglCache {
    cache_path
    expire_after
    parent
    add_entries(update: list[TogglClass])* None
    commit()* None
    delete_entries(update: list[TogglClass] | TogglClass)* None
    find_entry(entry: TogglClass | dict)* Optional[TogglClass]
    find_method(method: RequestMethod) Callable | None
    load_cache()* Iterable[TogglClass]
    query()* Iterable[TogglClass]
    save_cache(entry: list[TogglClass] | TogglClass, method: RequestMethod)* None
    update_entries(update: list[TogglClass] | TogglClass)* None
  }
  class TogglCachedEndpoint {
    cache
    endpoint
    load_cache() Iterable[TogglClass]
    query() Iterable[TogglClass]
    request(parameters: str, headers: Optional[dict], body: Optional[dict], method: RequestMethod) Optional[TogglClass | Iterable[TogglClass]]
    save_cache(response: list[TogglClass] | TogglClass, method: RequestMethod) None
  }
  class TogglClass {
    id : int
    name : str
    timestamp : Optional[datetime]
    from_kwargs()* TogglClass
  }
  class TogglClient {
  }
  class TogglEndpoint {
    BASE_ENDPOINT : Final[str]
    HEADERS : Final[dict]
    NOT_FOUND : Final[int]
    OK_RESPONSE : Final[int]
    SERVER_ERROR : Final[int]
    endpoint
    model
    workspace_id : int
    method(method: RequestMethod) Callable
    process_models(data: list[dict[str, Any]]) list[TogglClass]
    request(parameters: str, headers: Optional[dict], body: Optional[dict], method: RequestMethod) Optional[list[TogglClass] | TogglClass]
  }
  class TogglProject {
    active : bool
    client : Optional[int]
    color : str
    from_kwargs() TogglProject
  }
  class TogglTag {
    from_kwargs() TogglTag
  }
  class TogglTracker {
    duration : Optional[timedelta]
    project : Optional[int]
    start : datetime
    stop : Optional[datetime | str]
    tags : list[TogglTag]
    from_kwargs() TogglTracker
    get_tags() list[TogglTag]
    running() bool
  }
  class TogglWorkspace {
    from_kwargs() TogglWorkspace
  }
  class TrackerBody {
    created_with : str
    description : Optional[str]
    duration : Optional[int | timedelta]
    project_id : Optional[int]
    shared_with_user_ids : list[int]
    start : Optional[datetime]
    start_date : Optional[date]
    stop : Optional[datetime]
    tag_action : Optional[Literal['add', 'remove']]
    tag_ids : list[int]
    tags : list[str]
    workspace_id : Optional[int]
    format_body(workspace_id: int) dict[str, Any]
  }
  class TrackerEndpoint {
    TRACKER_ALREADY_STOPPED : Final[int]
    endpoint
    model
    add_tracker(body: TrackerBody) Optional[TogglTracker]
    delete_tracker(tracker: TogglTracker | int) None
    edit_tracker(tracker: TogglTracker | int, body: TrackerBody) Optional[TogglTracker]
    stop_tracker(tracker: TogglTracker | int) Optional[TogglTracker]
  }
  class UTCDateTime {
    cache_ok : bool
    impl
    process_bind_param(value: datetime, _) Optional[datetime]
    process_result_value(value: Optional[datetime], _) Optional[datetime]
  }
  class UserEndpoint {
    TRACKER_NOT_RUNNING : Final[int]
    endpoint
    model
    check_authentication() bool
    current_tracker() Optional[TogglTracker]
    get_tracker(tracker_id: int | TogglTracker) Optional[TogglTracker]
    get_trackers(since: Optional[int | datetime], before: Optional[date], start_date: Optional[date], end_date: Optional[date]) list[TogglTracker]
  }
  class WorkspaceChild {
    workspace : int
    from_kwargs() WorkspaceChild
  }
  class WorkspaceEndpoint {
    endpoint
    model
    get_workspace() Optional[TogglWorkspace]
  }
  ClientEndpoint --|> TogglCachedEndpoint
  JSONCache --|> TogglCache
  SqliteCache --|> TogglCache
  TogglCachedEndpoint --|> TogglEndpoint
  TogglClient --|> WorkspaceChild
  TogglProject --|> WorkspaceChild
  TogglTag --|> WorkspaceChild
  TogglTracker --|> WorkspaceChild
  TogglWorkspace --|> TogglClass
  WorkspaceChild --|> TogglClass
  ProjectEndpoint --|> TogglCachedEndpoint
  TagEndpoint --|> TogglCachedEndpoint
  TrackerEndpoint --|> TogglCachedEndpoint
  UserEndpoint --|> TogglCachedEndpoint
  WorkspaceEndpoint --|> TogglCachedEndpoint
  JSONSession --* JSONCache : session
  TogglCache --o TogglCachedEndpoint : _cache

Package Diagram

classDiagram
  class toggl_api {
  }
  class config {
  }
  class modules {
  }
  class client {
  }
  class meta {
  }
  class base_endpoint {
  }
  class cache {
  }
  class base_cache {
  }
  class json_cache {
  }
  class sqlite_cache {
  }
  class cached_endpoint {
  }
  class enums {
  }
  class models {
  }
  class models {
  }
  class schema {
  }
  class project {
  }
  class tag {
  }
  class tracker {
  }
  class user {
  }
  class workspace {
  }
  class utility {
  }
  class version {
  }
  toggl_api --> config
  toggl_api --> modules
  toggl_api --> models
  toggl_api --> version
  modules --> client
  modules --> meta
  modules --> project
  modules --> tag
  modules --> tracker
  modules --> user
  modules --> workspace
  client --> meta
  client --> models
  meta --> base_endpoint
  meta --> cache
  meta --> cached_endpoint
  meta --> enums
  base_endpoint --> enums
  base_endpoint --> models
  cache --> base_cache
  cache --> json_cache
  cache --> sqlite_cache
  base_cache --> enums
  json_cache --> base_cache
  json_cache --> models
  json_cache --> utility
  json_cache --> version
  sqlite_cache --> base_cache
  sqlite_cache --> models
  cached_endpoint --> base_endpoint
  cached_endpoint --> enums
  models --> models
  models --> schema
  models --> utility
  schema --> models
  project --> meta
  project --> models
  project --> utility
  tag --> meta
  tag --> models
  tracker --> meta
  tracker --> models
  tracker --> utility
  user --> meta
  user --> models
  workspace --> meta
  workspace --> models
  base_cache ..> meta
  base_cache ..> models
  json_cache ..> meta
  json_cache ..> cached_endpoint
  sqlite_cache ..> meta
  cached_endpoint ..> cache
  cached_endpoint ..> models