robotcode-debugger 1.3.0.dev3__tar.gz → 1.3.0.dev5__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 (24) hide show
  1. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/PKG-INFO +3 -3
  2. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/pyproject.toml +2 -2
  3. robotcode_debugger-1.3.0.dev5/src/robotcode/debugger/__version__.py +1 -0
  4. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/src/robotcode/debugger/dap_types.py +20 -0
  5. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/src/robotcode/debugger/debugger.py +38 -23
  6. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/src/robotcode/debugger/run.py +1 -1
  7. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/src/robotcode/debugger/server.py +6 -4
  8. robotcode_debugger-1.3.0.dev3/src/robotcode/debugger/__version__.py +0 -1
  9. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/.gitignore +0 -0
  10. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/LICENSE.txt +0 -0
  11. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/README.md +0 -0
  12. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/src/robotcode/debugger/__init__.py +0 -0
  13. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/src/robotcode/debugger/cli.py +0 -0
  14. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/src/robotcode/debugger/default_capabilities.py +0 -0
  15. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/src/robotcode/debugger/hooks.py +0 -0
  16. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/src/robotcode/debugger/id_manager.py +0 -0
  17. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/src/robotcode/debugger/launcher/__init__.py +0 -0
  18. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/src/robotcode/debugger/launcher/cli.py +0 -0
  19. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/src/robotcode/debugger/launcher/client.py +0 -0
  20. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/src/robotcode/debugger/launcher/run.py +0 -0
  21. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/src/robotcode/debugger/launcher/server.py +0 -0
  22. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/src/robotcode/debugger/listeners.py +0 -0
  23. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/src/robotcode/debugger/protocol.py +0 -0
  24. {robotcode_debugger-1.3.0.dev3 → robotcode_debugger-1.3.0.dev5}/src/robotcode/debugger/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: robotcode-debugger
3
- Version: 1.3.0.dev3
3
+ Version: 1.3.0.dev5
4
4
  Summary: RobotCode Debugger for Robot Framework
5
5
  Project-URL: Homepage, https://robotcode.io
6
6
  Project-URL: Donate, https://opencollective.com/robotcode
@@ -25,8 +25,8 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy
25
25
  Classifier: Topic :: Utilities
26
26
  Classifier: Typing :: Typed
27
27
  Requires-Python: >=3.8
28
- Requires-Dist: robotcode-jsonrpc2==1.3.0-dev.3
29
- Requires-Dist: robotcode-runner==1.3.0-dev.3
28
+ Requires-Dist: robotcode-jsonrpc2==1.3.0-dev.5
29
+ Requires-Dist: robotcode-runner==1.3.0-dev.5
30
30
  Requires-Dist: robotframework>=4.1.0
31
31
  Provides-Extra: debugpy
32
32
  Requires-Dist: debugpy; extra == 'debugpy'
@@ -28,8 +28,8 @@ classifiers = [
28
28
  dynamic = ["version"]
29
29
  dependencies = [
30
30
  "robotframework>=4.1.0",
31
- "robotcode-jsonrpc2==1.3.0-dev.3",
32
- "robotcode-runner==1.3.0-dev.3",
31
+ "robotcode-jsonrpc2==1.3.0-dev.5",
32
+ "robotcode-runner==1.3.0-dev.5",
33
33
  ]
34
34
 
35
35
  [project.optional-dependencies]
@@ -0,0 +1 @@
1
+ __version__ = "1.3.0-dev.5"
@@ -622,6 +622,26 @@ class TerminateResponse(Response):
622
622
  pass
623
623
 
624
624
 
625
+ class RestartArguments(Model):
626
+ arguments: Union[LaunchRequestArguments | AttachRequestArguments]
627
+
628
+
629
+ @dataclass
630
+ class _RestartRequest:
631
+ arguments: Optional[RestartArguments] = None
632
+
633
+
634
+ @dataclass
635
+ class RestartRequest(Request, _RestartRequest):
636
+ arguments: Optional[RestartArguments] = None
637
+ command: str = "restart"
638
+
639
+
640
+ @dataclass
641
+ class RestartResponse(Response):
642
+ pass
643
+
644
+
625
645
  @dataclass
626
646
  class StackFrameFormat(Model):
627
647
  parameters: Optional[bool] = None
@@ -449,6 +449,10 @@ class Debugger:
449
449
  if not self.main_thread_is_alive and thread_id != self.main_thread_id:
450
450
  raise InvalidThreadIdError(thread_id, self.main_thread_id)
451
451
 
452
+ def continue_all_if_paused(self) -> None:
453
+ if self.state == State.Paused:
454
+ self.continue_all()
455
+
452
456
  def continue_all(self) -> None:
453
457
  if self.main_thread_is_alive:
454
458
  self.continue_thread(self.main_thread_id)
@@ -1781,29 +1785,40 @@ class Debugger:
1781
1785
  result = None
1782
1786
 
1783
1787
  if len(test.body):
1784
- for kw in test.body:
1785
- with LOGGER.delayed_logging:
1786
- try:
1787
- result = self._run_keyword(kw, evaluate_context)
1788
- except (SystemExit, KeyboardInterrupt):
1789
- raise
1790
- except BaseException as e:
1791
- result = e
1792
- break
1793
- finally:
1794
- if get_robot_version() <= (7, 2):
1795
- messages = LOGGER._log_message_cache or []
1796
- for msg in messages or ():
1797
- # hack to get and evaluate log level
1798
- listener: Any = next(iter(LOGGER), None)
1799
- if listener is None or self.check_message_is_logged(listener, msg):
1800
- self.log_message(
1801
- {
1802
- "level": msg.level,
1803
- "message": msg.message,
1804
- "timestamp": msg.timestamp,
1805
- }
1806
- )
1788
+ if get_robot_version() >= (7, 3):
1789
+ for kw in test.body:
1790
+ with evaluate_context.output.delayed_logging:
1791
+ try:
1792
+ result = self._run_keyword(kw, evaluate_context)
1793
+ except (SystemExit, KeyboardInterrupt):
1794
+ raise
1795
+ except BaseException as e:
1796
+ result = e
1797
+ break
1798
+ else:
1799
+ for kw in test.body:
1800
+ with LOGGER.delayed_logging:
1801
+ try:
1802
+ result = self._run_keyword(kw, evaluate_context)
1803
+ except (SystemExit, KeyboardInterrupt):
1804
+ raise
1805
+ except BaseException as e:
1806
+ result = e
1807
+ break
1808
+ finally:
1809
+ if get_robot_version() <= (7, 2):
1810
+ messages = LOGGER._log_message_cache or []
1811
+ for msg in messages or ():
1812
+ # hack to get and evaluate log level
1813
+ listener: Any = next(iter(LOGGER), None)
1814
+ if listener is None or self.check_message_is_logged(listener, msg):
1815
+ self.log_message(
1816
+ {
1817
+ "level": msg.level,
1818
+ "message": msg.message,
1819
+ "timestamp": msg.timestamp,
1820
+ }
1821
+ )
1807
1822
  return result
1808
1823
 
1809
1824
  result = self.run_in_robot_thread(run_kw)
@@ -260,12 +260,12 @@ def run_debugger(
260
260
  )
261
261
  )
262
262
 
263
- server.protocol.exit(exit_code)
264
263
  except CancelledError:
265
264
  pass
266
265
  finally:
267
266
  if server.protocol.connected:
268
267
  server.protocol.terminate()
268
+ server.protocol.exit(exit_code)
269
269
 
270
270
  if not server.protocol.wait_for_disconnected():
271
271
  app.verbose("Timeout to get disconnected from client")
@@ -189,19 +189,21 @@ class DebugAdapterServerProtocol(DebugAdapterProtocol):
189
189
  async def _terminate(
190
190
  self,
191
191
  arguments: Optional[TerminateArguments] = None,
192
+ restart: Optional[bool] = None,
192
193
  *args: Any,
193
194
  **kwargs: Any,
194
195
  ) -> None:
195
- if not self._sigint_signaled:
196
+ Debugger.instance().terminate()
197
+
198
+ if not restart and not self._sigint_signaled:
196
199
  self._logger.info("Send SIGINT to process")
197
200
  signal.raise_signal(signal.SIGINT)
198
201
  self._sigint_signaled = True
199
- # Debugger.instance().continue_all()
202
+
203
+ Debugger.instance().continue_all_if_paused()
200
204
  else:
201
205
  await self.send_event_async(Event("terminateRequested"))
202
206
 
203
- Debugger.instance().terminate()
204
-
205
207
  self._logger.info("Send SIGTERM to process")
206
208
  signal.raise_signal(signal.SIGTERM)
207
209
 
@@ -1 +0,0 @@
1
- __version__ = "1.3.0-dev.3"