Skip to content

Commit 4a6d366

Browse files
authored
Merge pull request #58 from modern-python/entering-scopes
add methods to enter and close scopes
2 parents 23ddea9 + db9b50d commit 4a6d366

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

packages/modern-di/modern_di/container.py

+16-7
Original file line numberDiff line numberDiff line change
@@ -119,16 +119,29 @@ def reset_override(self, provider_id: str | None = None) -> None:
119119
else:
120120
self._overrides.pop(provider_id, None)
121121

122-
async def __aenter__(self) -> "Container":
122+
def async_enter(self) -> "Container":
123123
self._is_async = True
124124
return self
125125

126+
def sync_enter(self) -> "Container":
127+
self._is_async = False
128+
return self
129+
126130
async def async_close(self) -> None:
127131
self._check_entered()
128132
for provider_state in reversed(self._provider_states.values()):
129133
await provider_state.async_tear_down()
130134
self._exit()
131135

136+
def sync_close(self) -> None:
137+
self._check_entered()
138+
for provider_state in reversed(self._provider_states.values()):
139+
provider_state.sync_tear_down()
140+
self._exit()
141+
142+
async def __aenter__(self) -> "Container":
143+
return self.async_enter()
144+
132145
async def __aexit__(
133146
self,
134147
exc_type: type[BaseException] | None,
@@ -138,16 +151,12 @@ async def __aexit__(
138151
await self.async_close()
139152

140153
def __enter__(self) -> "Container":
141-
self._is_async = False
142-
return self
154+
return self.sync_enter()
143155

144156
def __exit__(
145157
self,
146158
exc_type: type[BaseException] | None,
147159
exc_value: BaseException | None,
148160
traceback: types.TracebackType | None,
149161
) -> None:
150-
self._check_entered()
151-
for provider_state in reversed(self._provider_states.values()):
152-
provider_state.sync_tear_down()
153-
self._exit()
162+
self.sync_close()

0 commit comments

Comments
 (0)