Skip to content

Commit 4bc95be

Browse files
committed
refactor a bit
1 parent 59dc6a5 commit 4bc95be

1 file changed

Lines changed: 13 additions & 14 deletions

File tree

injector/__init__.py

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -540,27 +540,26 @@ def multibind(
540540
provider = binding.provider
541541
assert isinstance(provider, ListOfProviders)
542542

543-
if isinstance(provider, MultiBindProvider):
543+
if isinstance(provider, MultiBindProvider) and isinstance(to, list):
544544
try:
545545
element_type = get_args(_punch_through_alias(interface))[0]
546546
except IndexError:
547547
raise InvalidInterface(
548548
f"Use typing.List[T] or list[T] to specify the element type of the list"
549549
)
550-
for element in _ensure_iterable(to):
550+
for element in to:
551551
provider.append(self.provider_for(element_type, element))
552-
elif isinstance(provider, MapBindProvider):
553-
if isinstance(to, dict):
554-
try:
555-
value_type = get_args(_punch_through_alias(interface))[1]
556-
except IndexError:
557-
raise InvalidInterface(
558-
f"Use typing.Dict[K, V] or dict[K, V] to specify the value type of the dict"
559-
)
560-
for key, value in to.items():
561-
provider.append(KeyValueProvider(key, self.provider_for(value_type, value)))
562-
else:
563-
provider.append(self.provider_for(interface, to))
552+
elif isinstance(provider, MapBindProvider) and isinstance(to, dict):
553+
try:
554+
value_type = get_args(_punch_through_alias(interface))[1]
555+
except IndexError:
556+
raise InvalidInterface(
557+
f"Use typing.Dict[K, V] or dict[K, V] to specify the value type of the dict"
558+
)
559+
for key, value in to.items():
560+
provider.append(KeyValueProvider(key, self.provider_for(value_type, value)))
561+
else:
562+
provider.append(self.provider_for(interface, to))
564563

565564
def install(self, module: _InstallableModuleType) -> None:
566565
"""Install a module into this binder.

0 commit comments

Comments
 (0)