Skip to content

Commit ba0409d

Browse files
committed
Fix accidentally broken Python pre-3.10 compatibility
Tests started failing like ________________________ test_newtype_integration_works ________________________ Traceback (most recent call last): File "/home/runner/work/injector/injector/injector_test.py", line 1398, in test_newtype_integration_works injector = Injector([configure]) File "/home/runner/work/injector/injector/injector/__init__.py", line 904, in __init__ self.binder.install(module) File "/home/runner/work/injector/injector/injector/__init__.py", line 573, in install instance(self) File "/home/runner/work/injector/injector/injector_test.py", line 1396, in configure binder.bind(UserID, to=123) File "/home/runner/work/injector/injector/injector/__init__.py", line 474, in bind self._bindings[interface] = self.create_binding(interface, to, scope) File "/home/runner/work/injector/injector/injector/__init__.py", line 578, in create_binding provider = self.provider_for(interface, to) File "/home/runner/work/injector/injector/injector/__init__.py", line 640, in provider_for raise UnknownProvider('couldn\'t determine provider for %r to %r' % (interface, to)) injector.UnknownProvider: couldn't determine provider for <function NewType.<locals>.new_type at 0x7f64edc69d90> to 123 when I merged d7f6f39.
1 parent 3a63a32 commit ba0409d

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

injector/__init__.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -700,7 +700,13 @@ def _is_specialization(cls: type, generic_class: Any) -> bool:
700700

701701

702702
def _punch_through_alias(type_: Any) -> type:
703-
if type(type_).__module__ == 'typing' and type(type_).__name__ == 'NewType':
703+
if (
704+
sys.version_info < (3, 10)
705+
and getattr(type_, '__qualname__', '') == 'NewType.<locals>.new_type'
706+
or sys.version_info >= (3, 10)
707+
and type(type_).__module__ == 'typing'
708+
and type(type_).__name__ == 'NewType'
709+
):
704710
return type_.__supertype__
705711
else:
706712
return type_

0 commit comments

Comments
 (0)