robotcode-repl 2.9.0.dev68__tar.gz → 2.9.0.dev79__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/PKG-INFO +2 -2
  2. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/pyproject.toml +1 -1
  3. robotcode_repl-2.9.0.dev79/src/robotcode/repl/__version__.py +1 -0
  4. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/_debug/__init__.py +2 -0
  5. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/_debug/controller.py +13 -0
  6. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/_debug/types.py +9 -0
  7. robotcode_repl-2.9.0.dev79/src/robotcode/repl/_session.py +1230 -0
  8. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/cli.py +114 -38
  9. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/console_interpreter.py +22 -10
  10. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/hooks.py +2 -1
  11. robotcode_repl-2.9.0.dev79/src/robotcode/repl/session_cli.py +547 -0
  12. robotcode_repl-2.9.0.dev68/src/robotcode/repl/__version__.py +0 -1
  13. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/.gitignore +0 -0
  14. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/README.md +0 -0
  15. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/Repl/__init__.py +0 -0
  16. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/Repl/repl.py +0 -0
  17. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/__init__.py +0 -0
  18. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/_backends.py +0 -0
  19. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/_indent.py +0 -0
  20. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/_keyword_lookup.py +0 -0
  21. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/_progress.py +0 -0
  22. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/_pt/__init__.py +0 -0
  23. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/_pt/completion.py +0 -0
  24. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/_pt/components.py +0 -0
  25. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/_pt/doc_viewer.py +0 -0
  26. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/_pt/history.py +0 -0
  27. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/_pt/lexer.py +0 -0
  28. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/_session_export.py +0 -0
  29. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/base_interpreter.py +0 -0
  30. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/doc_cli.py +0 -0
  31. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/prompt_toolkit_interpreter.py +0 -0
  32. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/py.typed +0 -0
  33. {robotcode_repl-2.9.0.dev68 → robotcode_repl-2.9.0.dev79}/src/robotcode/repl/run.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: robotcode-repl
3
- Version: 2.9.0-dev.68
3
+ Version: 2.9.0-dev.79
4
4
  Summary: RobotCode REPL for Robot Framework
5
5
  Project-URL: Homepage, https://robotcode.io
6
6
  Project-URL: Donate, https://opencollective.com/robotcode
@@ -27,7 +27,7 @@ Classifier: Topic :: Utilities
27
27
  Classifier: Typing :: Typed
28
28
  Requires-Python: >=3.10
29
29
  Requires-Dist: prompt-toolkit!=3.0.52
30
- Requires-Dist: robotcode-runner==2.9.0-dev.68
30
+ Requires-Dist: robotcode-runner==2.9.0-dev.79
31
31
  Description-Content-Type: text/markdown
32
32
 
33
33
  # robotcode-repl
@@ -29,7 +29,7 @@ classifiers = [
29
29
  ]
30
30
  dynamic = ["version"]
31
31
  dependencies = [
32
- "robotcode-runner==2.9.0-dev.68",
32
+ "robotcode-runner==2.9.0-dev.79",
33
33
  "prompt_toolkit!=3.0.52"
34
34
  ]
35
35
 
@@ -0,0 +1 @@
1
+ __version__ = "2.9.0-dev.79"
@@ -11,6 +11,7 @@ are concerns of a particular front-end. The CLI front-end is the
11
11
  from .controller import DebugController
12
12
  from .types import (
13
13
  Breakpoint,
14
+ BreakpointState,
14
15
  DebugTerminated,
15
16
  Frontend,
16
17
  ResumeAction,
@@ -23,6 +24,7 @@ from .types import (
23
24
 
24
25
  __all__ = [
25
26
  "Breakpoint",
27
+ "BreakpointState",
26
28
  "DebugController",
27
29
  "DebugTerminated",
28
30
  "Frontend",
@@ -9,6 +9,7 @@ Registered as an execution observer via ``BaseInterpreter.register_observer``.
9
9
  """
10
10
 
11
11
  import contextlib
12
+ import dataclasses
12
13
  import re
13
14
  import reprlib
14
15
  import weakref
@@ -26,6 +27,7 @@ from robotcode.robot.utils import RF_VERSION
26
27
  from ..base_interpreter import result_definition_names, result_qualified_name
27
28
  from .types import (
28
29
  Breakpoint,
30
+ BreakpointState,
29
31
  DebugTerminated,
30
32
  Frontend,
31
33
  ResumeAction,
@@ -221,6 +223,17 @@ class DebugController:
221
223
  self._breakpoints.remove(bp)
222
224
  return True
223
225
 
226
+ def breakpoint_state(self) -> BreakpointState:
227
+ """The breakpoints and the exception breakpoints as they are, for `restore_breakpoints` in another process."""
228
+ return BreakpointState(list(self._breakpoints), self._next_bp_id, sorted(self._exception_filters))
229
+
230
+ def restore_breakpoints(self, state: BreakpointState) -> None:
231
+ """Take over the breakpoints of `breakpoint_state`, in place of those set so far. Their hit counts start at 0,
232
+ as `.ignore` counts the hits of a run."""
233
+ self._breakpoints = [dataclasses.replace(bp, hits=0) for bp in state.breakpoints]
234
+ self._next_bp_id = state.next_id
235
+ self._exception_filters = set(state.exception_filters)
236
+
224
237
  def set_exception_breakpoints(self, filters: Iterable[str]) -> None:
225
238
  """Arm exception breakpoints. Recognised filters: ``failed_keyword``
226
239
  (stop at every failing keyword) and ``uncaught_failed_keyword`` (only
@@ -90,6 +90,15 @@ class Breakpoint:
90
90
  hits: int = 0
91
91
 
92
92
 
93
+ @dataclass
94
+ class BreakpointState:
95
+ """The breakpoints and the exception breakpoints of a `DebugController` as they are, for one in another process."""
96
+
97
+ breakpoints: List[Breakpoint]
98
+ next_id: int
99
+ exception_filters: List[str]
100
+
101
+
93
102
  @dataclass
94
103
  class StopEvent:
95
104
  reason: StopReason