add own base package as dependency

This commit is contained in:
2025-03-14 11:55:52 +01:00
parent 28b3b8d144
commit a8e9a3466e
3 changed files with 18 additions and 38 deletions

View File

@@ -2,47 +2,13 @@ from __future__ import annotations
import enum
import typing as t
from collections.abc import Iterator, MutableMapping
from dataclasses import dataclass, field
import pandas as pd
from dopt_basics.datastructures import DualDict
from pydantic import BaseModel, ConfigDict, SkipValidation
# ** Data Structures
K = t.TypeVar("K")
V = t.TypeVar("V")
class DualDict(MutableMapping[K, V]):
def __init__(self, **kwargs: V):
self._store: dict[K, V] = dict(**kwargs)
self._inverted = self._calc_inverted()
@property
def inverted(self) -> dict[V, K]:
return self._inverted
def _calc_inverted(self) -> dict[V, K]:
return {val: key for key, val in self.items()}
def __setitem__(self, key: K, value: V) -> None:
self._store[key] = value
self._inverted[value] = key
def __getitem__(self, key: K) -> V:
return self._store[key]
def __delitem__(self, key: K) -> None:
value = self._store[key]
del self._store[key]
del self._inverted[value]
def __iter__(self) -> Iterator[K]:
return iter(self._store)
def __len__(self) -> int:
return len(self._store)
__all__ = ["DualDict"]
# ** Pipeline state management
StatusDescription: t.TypeAlias = tuple[str, int, str]