From 1cb9b9c6224a42ff0cc38f6798528c27c218195f Mon Sep 17 00:00:00 2001 From: Karim Alibhai Date: Wed, 5 Jul 2023 20:23:45 -0400 Subject: [PATCH 1/5] Update lazy_type.py --- strawberry/lazy_type.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/strawberry/lazy_type.py b/strawberry/lazy_type.py index 54f23b1957..ab319a6d16 100644 --- a/strawberry/lazy_type.py +++ b/strawberry/lazy_type.py @@ -68,11 +68,11 @@ def __call__(self): # pragma: no cover class StrawberryLazyReference: - def __init__(self, module: str) -> None: + def __init__(self, module: str, package: Optional[str] = None) -> None: self.module = module - self.package = None + self.package = package - if module.startswith("."): + if module.startswith(".") and not package: frame = inspect.stack()[2][0] # TODO: raise a nice error if frame is None assert frame is not None @@ -82,5 +82,5 @@ def resolve_forward_ref(self, forward_ref: ForwardRef) -> LazyType: return LazyType(forward_ref.__forward_arg__, self.module, self.package) -def lazy(module_path: str) -> StrawberryLazyReference: - return StrawberryLazyReference(module_path) +def lazy(module_path: str, package: Optional[str] = None) -> StrawberryLazyReference: + return StrawberryLazyReference(module_path, package) From 52a642ce39d20b61f06ecc6006d39e2647ea1fa0 Mon Sep 17 00:00:00 2001 From: Karim Alibhai Date: Wed, 5 Jul 2023 20:49:31 -0400 Subject: [PATCH 2/5] Update lazy_type.py --- strawberry/lazy_type.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/strawberry/lazy_type.py b/strawberry/lazy_type.py index ab319a6d16..dc36c0b1cb 100644 --- a/strawberry/lazy_type.py +++ b/strawberry/lazy_type.py @@ -68,12 +68,12 @@ def __call__(self): # pragma: no cover class StrawberryLazyReference: - def __init__(self, module: str, package: Optional[str] = None) -> None: + def __init__(self, module: str) -> None: self.module = module - self.package = package + self.package = None if module.startswith(".") and not package: - frame = inspect.stack()[2][0] + frame = inspect.currentframe().f_back.f_back # TODO: raise a nice error if frame is None assert frame is not None self.package = cast(str, frame.f_globals["__package__"]) @@ -82,5 +82,5 @@ def resolve_forward_ref(self, forward_ref: ForwardRef) -> LazyType: return LazyType(forward_ref.__forward_arg__, self.module, self.package) -def lazy(module_path: str, package: Optional[str] = None) -> StrawberryLazyReference: - return StrawberryLazyReference(module_path, package) +def lazy(module_path: str) -> StrawberryLazyReference: + return StrawberryLazyReference(module_path) From 53e2124fa7b1ff8392cc9c846092cc67e0135726 Mon Sep 17 00:00:00 2001 From: Karim Alibhai Date: Wed, 5 Jul 2023 20:49:55 -0400 Subject: [PATCH 3/5] Update lazy_type.py --- strawberry/lazy_type.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/strawberry/lazy_type.py b/strawberry/lazy_type.py index dc36c0b1cb..e0757a9d82 100644 --- a/strawberry/lazy_type.py +++ b/strawberry/lazy_type.py @@ -72,7 +72,7 @@ def __init__(self, module: str) -> None: self.module = module self.package = None - if module.startswith(".") and not package: + if module.startswith("."): frame = inspect.currentframe().f_back.f_back # TODO: raise a nice error if frame is None assert frame is not None From 0b426e50038b0df5c90df55fd5dcfa36c69185bf Mon Sep 17 00:00:00 2001 From: Karim Alibhai Date: Wed, 5 Jul 2023 20:57:16 -0400 Subject: [PATCH 4/5] Create RELEASE.md --- RELEASE.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 RELEASE.md diff --git a/RELEASE.md b/RELEASE.md new file mode 100644 index 0000000000..d46956a68b --- /dev/null +++ b/RELEASE.md @@ -0,0 +1,3 @@ +Release type: patch + +This release includes a performance improvement to `strawberry.lazy()` to allow relative module imports to be resolved faster. From 42a3679217f5829081498e24716b9b991cf63ddf Mon Sep 17 00:00:00 2001 From: Karim Alibhai Date: Thu, 6 Jul 2023 17:39:49 -0400 Subject: [PATCH 5/5] Update lazy_type.py --- strawberry/lazy_type.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/strawberry/lazy_type.py b/strawberry/lazy_type.py index e0757a9d82..214502124f 100644 --- a/strawberry/lazy_type.py +++ b/strawberry/lazy_type.py @@ -73,7 +73,7 @@ def __init__(self, module: str) -> None: self.package = None if module.startswith("."): - frame = inspect.currentframe().f_back.f_back + frame = sys._getframe(2) # TODO: raise a nice error if frame is None assert frame is not None self.package = cast(str, frame.f_globals["__package__"])