Skip to content

Commit 569d218

Browse files
author
Sergio García Prado
committed
ISSUE #89
* Refactor code.
1 parent 86c44a9 commit 569d218

File tree

1 file changed

+7
-9
lines changed
  • packages/core/minos-microservice-networks/minos/networks/decorators

1 file changed

+7
-9
lines changed

packages/core/minos-microservice-networks/minos/networks/decorators/builders.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
)
1919
from typing import (
2020
Optional,
21-
Type,
2221
Union,
2322
)
2423

@@ -51,7 +50,7 @@ class EnrouteBuilder:
5150
"""Enroute builder class."""
5251

5352
def __init__(
54-
self, *classes: Union[str, Type], middleware: Optional[Union[str, Callable, list[Union[str, Callable]]]] = None
53+
self, *classes: Union[str, type], middleware: Optional[Union[str, Callable, list[Union[str, Callable]]]] = None
5554
):
5655
if middleware is None:
5756
middleware = tuple()
@@ -129,14 +128,13 @@ async def _wrapper(*ag, **kw):
129128

130129
# noinspection PyMethodMayBeStatic
131130
def _validate_not_redefined(self, decorators: Collection[EnrouteDecorator]) -> None:
132-
raw = set(map(lambda obj: (type(obj).__bases__[0], *obj), decorators))
131+
mapper = defaultdict(set)
132+
for decorator in decorators:
133+
mapper[tuple(decorator)].add(decorator)
133134

134-
if len(raw) == len(decorators):
135-
return
136-
137-
duplicated = next(iter(raw))
138-
decorator = duplicated[0](*duplicated[1:])
139-
raise MinosRedefinedEnrouteDecoratorException(f"{decorator} can be used only once.")
135+
for cases in mapper.values():
136+
if len(cases) > 1:
137+
raise MinosRedefinedEnrouteDecoratorException(f"Only one of {cases!r} can be used simultaneously.")
140138

141139
def _build_all_classes(self, method_name: str, **kwargs) -> dict[EnrouteDecorator, set[Handler]]:
142140
decomposed_handlers = defaultdict(set)

0 commit comments

Comments
 (0)