Skip to content

Commit

Permalink
df: Remove multiple inheritance from NamedTuple
Browse files Browse the repository at this point in the history
Python 3.9 does not allow this. Use dataclasses instead.

Fixes: #1052

Signed-off-by: John Andersen <johnandersenpdx@gmail.com>
  • Loading branch information
pdxjohnny committed May 10, 2021
1 parent acd139b commit 11d6c25
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 8 deletions.
8 changes: 6 additions & 2 deletions dffml/df/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
Optional,
Set,
)
from dataclasses import is_dataclass
from dataclasses import dataclass, is_dataclass, replace
from contextlib import asynccontextmanager

from .exceptions import NotOpImp
Expand Down Expand Up @@ -988,13 +988,17 @@ class OperationException(Exception):
"""


class BaseOrchestratorConfig(BaseConfig, NamedTuple):
@dataclass(frozen=True)
class BaseOrchestratorConfig:
input_network: BaseInputNetwork
operation_network: BaseOperationNetwork
lock_network: BaseLockNetwork
opimp_network: BaseOperationImplementationNetwork
rchecker: BaseRedundancyChecker

def _replace(self, **kwargs):
return replace(self, **kwargs)


class BaseOrchestratorContext(BaseDataFlowObjectContext):
@abc.abstractmethod
Expand Down
16 changes: 10 additions & 6 deletions dffml/df/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import itertools
import pkg_resources
from enum import Enum
from dataclasses import dataclass, field, asdict
from dataclasses import dataclass, field, asdict, replace
from typing import (
NamedTuple,
Union,
Expand Down Expand Up @@ -167,18 +167,22 @@ class FailedToLoadOperation(Exception):
"""


@dataclass(frozen=True)
@base_entry_point("dffml.operation", "operation")
class Operation(NamedTuple, Entrypoint):
class Operation(Entrypoint):
name: str
inputs: Dict[str, Definition] = {}
outputs: Dict[str, Definition] = {}
inputs: Dict[str, Definition] = field(default_factory=lambda: {})
outputs: Dict[str, Definition] = field(default_factory=lambda: {})
stage: Stage = Stage.PROCESSING
conditions: Optional[List[Definition]] = []
expand: Optional[List[str]] = []
conditions: Optional[List[Definition]] = field(default_factory=lambda: [])
expand: Optional[List[str]] = field(default_factory=lambda: [])
instance_name: Optional[str] = None
validator: bool = False
retry: int = 0

def _replace(self, **kwargs):
return replace(self, **kwargs)

def export(self):
exported = {
"name": self.name,
Expand Down

0 comments on commit 11d6c25

Please sign in to comment.