Skip to content

Commit 2e5be4f

Browse files
committed
fix: remove sessions' backend stack
1 parent cd08ec6 commit 2e5be4f

File tree

2 files changed

+0
-48
lines changed

2 files changed

+0
-48
lines changed

mellea/stdlib/session.py

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,6 @@ def __init__(self, backend: Backend, ctx: Context | None = None):
176176
"""
177177
self.backend = backend
178178
self.ctx: Context = ctx if ctx is not None else SimpleContext()
179-
self._backend_stack: list[Backend] = []
180179
self._session_logger = FancyLogger.get_logger()
181180
self._context_token = None
182181

@@ -192,29 +191,8 @@ def __exit__(self, exc_type, exc_val, exc_tb):
192191
_context_session.reset(self._context_token)
193192
self._context_token = None
194193

195-
def _push_model_state(self, new_backend: Backend):
196-
"""The backend used within a `Context` can be temporarily changed. This method changes the model's backend, while saving the current settings in the `self._backend_stack`."""
197-
self._backend_stack.append(self.backend)
198-
self.backend = new_backend
199-
200-
def _pop_model_state(self) -> bool:
201-
"""Pops the model state.
202-
203-
The backend and model options used within a `Context` can be temporarily changed by pushing and popping from the model state.
204-
This function restores the model's previous backend and model_opts from the `self._backend_stack`.
205-
206-
Question: should this logic be moved into context? I really want to keep `Session` as simple as possible... see true motivation in the docstring for the class.
207-
"""
208-
try:
209-
b = self._backend_stack.pop()
210-
self.backend = b
211-
return True
212-
except Exception:
213-
return False
214-
215194
def __copy__(self):
216195
new = MelleaSession(backend=self.backend, ctx=self.ctx)
217-
new._backend_stack = self._backend_stack.copy()
218196
new._session_logger = self._session_logger
219197
# Explicitly don't copy over the _context_token.
220198

@@ -250,7 +228,6 @@ def reset(self):
250228
def cleanup(self) -> None:
251229
"""Clean up session resources."""
252230
self.reset()
253-
self._backend_stack.clear()
254231
if hasattr(self.backend, "close"):
255232
self.backend.close() # type: ignore
256233

test/stdlib_basics/test_session.py

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -125,30 +125,5 @@ def test_session_copy_with_context_ops(m_session):
125125
assert m1.ctx.previous_node.previous_node is m_session.ctx
126126
assert m2.ctx.previous_node.previous_node is m_session.ctx
127127

128-
def test_session_copy_with_backend_stack(m_session):
129-
# Assert expected values from cloning.
130-
m1 = m_session.clone()
131-
assert m1.backend is m_session.backend
132-
assert m1._session_logger is m_session._session_logger
133-
assert m1._backend_stack is not m_session._backend_stack
134-
135-
# Assert that pushing to a backend stack doesn't change it for sessions previously cloned from it.
136-
new_backend = OllamaModelBackend()
137-
m_session._push_model_state(new_backend=new_backend)
138-
assert len(m_session._backend_stack) == 1
139-
assert len(m1._backend_stack) == 0
140-
assert m1.backend is not m_session.backend
141-
142-
# Assert that newly cloned sessions don't cause errors with changes to the backend stack.
143-
m2 = m_session.clone()
144-
assert len(m2._backend_stack) == 1
145-
146-
# They should still be different lists.
147-
assert m2._backend_stack is not m_session._backend_stack
148-
assert m2._pop_model_state()
149-
assert len(m2._backend_stack) == 0
150-
assert len(m_session._backend_stack) == 1
151-
assert m2.backend is m1.backend
152-
153128
if __name__ == "__main__":
154129
pytest.main([__file__])

0 commit comments

Comments
 (0)