add own base package as dependency
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user