Skip to content

Commit 42f2e5c

Browse files
authored
fix: A scoped slot injectable no longer locks the module
1 parent d764c39 commit 42f2e5c

2 files changed

Lines changed: 12 additions & 7 deletions

File tree

injection/_core/injectables.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -209,10 +209,6 @@ class ScopedSlotInjectable[T](Injectable[T]):
209209
scope_name: str
210210
key: SlotKey[T] = field(default_factory=SlotKey)
211211

212-
@property
213-
def is_locked(self) -> bool:
214-
return in_scope_cache(self.key, self.scope_name)
215-
216212
async def aget_instance(self) -> T:
217213
return self.get_instance()
218214

@@ -227,9 +223,6 @@ def get_instance(self) -> T:
227223
f"The slot for `{self.cls}` isn't set in the current `{scope_name}` scope."
228224
) from exc
229225

230-
def unlock(self) -> None:
231-
remove_scoped_values(self.key, self.scope_name)
232-
233226

234227
@dataclass(repr=False, eq=False, frozen=True, slots=True)
235228
class ShouldBeInjectable[T](Injectable[T]):

tests/core/test_module.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,18 @@ def test_reserve_scoped_slot_with_several_definitions_raise_injection_error(
243243
with pytest.raises(InjectionError):
244244
scope.set_slot(slot_key, instance2)
245245

246+
def test_reserve_scoped_slot_with_unlock(self, module):
247+
scope_name = "test"
248+
slot_key = module.reserve_scoped_slot(SomeClass, scope_name)
249+
250+
with define_scope(scope_name) as scope:
251+
instance = SomeClass()
252+
scope.set_slot(slot_key, instance)
253+
254+
assert module.get_instance(SomeClass) is instance
255+
module.unlock()
256+
assert module.get_instance(SomeClass) is instance
257+
246258
"""
247259
init_modules
248260
"""

0 commit comments

Comments
 (0)