Skip to content

Commit 1384b50

Browse files
committed
fix: remove sessions' backend stack
1 parent 9a88669 commit 1384b50

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
@@ -180,7 +180,6 @@ def __init__(self, backend: Backend, ctx: Context | None = None):
180180
"""
181181
self.backend = backend
182182
self.ctx: Context = ctx if ctx is not None else SimpleContext()
183-
self._backend_stack: list[Backend] = []
184183
self._session_logger = FancyLogger.get_logger()
185184
self._context_token = None
186185

@@ -196,29 +195,8 @@ def __exit__(self, exc_type, exc_val, exc_tb):
196195
_context_session.reset(self._context_token)
197196
self._context_token = None
198197

199-
def _push_model_state(self, new_backend: Backend):
200-
"""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`."""
201-
self._backend_stack.append(self.backend)
202-
self.backend = new_backend
203-
204-
def _pop_model_state(self) -> bool:
205-
"""Pops the model state.
206-
207-
The backend and model options used within a `Context` can be temporarily changed by pushing and popping from the model state.
208-
This function restores the model's previous backend and model_opts from the `self._backend_stack`.
209-
210-
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.
211-
"""
212-
try:
213-
b = self._backend_stack.pop()
214-
self.backend = b
215-
return True
216-
except Exception:
217-
return False
218-
219198
def __copy__(self):
220199
new = MelleaSession(backend=self.backend, ctx=self.ctx)
221-
new._backend_stack = self._backend_stack.copy()
222200
new._session_logger = self._session_logger
223201
# Explicitly don't copy over the _context_token.
224202

@@ -254,7 +232,6 @@ def reset(self):
254232
def cleanup(self) -> None:
255233
"""Clean up session resources."""
256234
self.reset()
257-
self._backend_stack.clear()
258235
if hasattr(self.backend, "close"):
259236
self.backend.close() # type: ignore
260237

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)