robotcode 1.4.0__tar.gz → 1.6.0__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.
@@ -2,6 +2,66 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [conventional commits](https://www.conventionalcommits.org/) for commit guidelines.
4
4
 
5
+ ## [1.6.0](https://github.com/robotcodedev/robotcode/compare/v1.5.0..v1.6.0) - 2025-07-30
6
+
7
+ ### Bug Fixes
8
+
9
+ - **core:** Remove unnecessary socket option for address reuse in find_free_port ([1ee754a](https://github.com/robotcodedev/robotcode/commit/1ee754abc7b27a8d2d70e15f39dad8ec0febc4da))
10
+ - **debugger:** Enhance error handling in DAPClient and simplify port allocation for new testrun sessions ([43f242d](https://github.com/robotcodedev/robotcode/commit/43f242d61dc0e249e1912ac0d7be8df63478d802))
11
+
12
+ - every new test run gets it's own tcp port
13
+
14
+ - **debugger:** Only sync when not in CallKeyword state ([709798a](https://github.com/robotcodedev/robotcode/commit/709798ac5cfbdf84ede7282d396bcae03a7e33f7))
15
+
16
+
17
+ ### Documentation
18
+
19
+ - Remove robotframework-tidy from docs ([c259a0f](https://github.com/robotcodedev/robotcode/commit/c259a0f42819e25603ff333afdf6fc9c00b6b279))
20
+
21
+
22
+ ### Features
23
+
24
+ - **debug:** Better synchronization between test view and execution in intellij-client, part 2 ([4ce87a2](https://github.com/robotcodedev/robotcode/commit/4ce87a2a86c72c944fab5de1288d08ecc33928e7))
25
+ - **debugger:** Better synchronization between test view and execution in vscode, part 1 ([63c895f](https://github.com/robotcodedev/robotcode/commit/63c895f8d78ba0db64c32c4100ab09bf42941232))
26
+ - **robotcode:** Remove robotframework-tidy from optional-dependencies ([205cfd1](https://github.com/robotcodedev/robotcode/commit/205cfd1a93aae3bfc4e062d1d16b0dd3ad2e4f98))
27
+
28
+
29
+ ### Refactor
30
+
31
+ - **debugger:** Split get_variables method and splitup version specific behavior for exception handling ([c828202](https://github.com/robotcodedev/robotcode/commit/c828202021d8b0eb0e4862fec0e96713977cfe62))
32
+ - **debugger:** Break down complex evaluate() method ([4c6b9af](https://github.com/robotcodedev/robotcode/commit/4c6b9afc988a0b4838e16bd9f57b4d57db278721))
33
+ - **debugger:** Optimize cache management and improve regex matching performance ([2edfeea](https://github.com/robotcodedev/robotcode/commit/2edfeea3d884b486b19d3c6ab4b6e76e03572b57))
34
+ - **debugger:** Enhance type safety by introducing protocols and type definitions for log messages and attributes ([a65b9b9](https://github.com/robotcodedev/robotcode/commit/a65b9b95cf66d3b513da2c50d1409a56887c9963))
35
+ - **debugger:** Replace magic numbers with named constants for better readability ([65b0912](https://github.com/robotcodedev/robotcode/commit/65b091218e2ed5552e6d2a84ab61600ecbdc75a3))
36
+ - **debugger:** Replace instance method calls with property access for consistency ([8ea82e4](https://github.com/robotcodedev/robotcode/commit/8ea82e45f4d343431aa42dfd525ed5ccb09d4df7))
37
+ - **instructions:** Clarify implementation guidelines and communication flow ([b37be1c](https://github.com/robotcodedev/robotcode/commit/b37be1c683467ba4f3557127cb6337d5baad19c3))
38
+ - **langserver:** Improve performance and memory consumption for semantic tokens ([e8297ff](https://github.com/robotcodedev/robotcode/commit/e8297ffc2f093cbab7eeff0bbecc7fba3dd5f330))
39
+ - **langserver:** Remove unused semantic token types and update regression tests ([6b262b5](https://github.com/robotcodedev/robotcode/commit/6b262b54d3aa53e55f4661b289f7959baf1f260a))
40
+ - **langserver:** Remove unused methods to simplify code ([96ba516](https://github.com/robotcodedev/robotcode/commit/96ba5162238fe04ca9b2473dcc512b94efc8cf7f))
41
+ - **langserver:** Optimize memory consumption and perfomance in semantic token highlighter ([7e5e8e3](https://github.com/robotcodedev/robotcode/commit/7e5e8e3b9ebc0a3a1ce0a0dccee4cdf160d7bdb5))
42
+ - **langserver:** Remove some unneeded casts ([c82a604](https://github.com/robotcodedev/robotcode/commit/c82a6040ea9b6d786e0af9cf5078780e2aaf7437))
43
+
44
+
45
+ ## [1.5.0](https://github.com/robotcodedev/robotcode/compare/v1.4.0..v1.5.0) - 2025-07-07
46
+
47
+ ### Features
48
+
49
+ - **cli:** Add new command line switch `--log-config` to specify a python json log configuration ([31a11f2](https://github.com/robotcodedev/robotcode/commit/31a11f27b96fba6c879218c9b13cdea5f8bb89c3))
50
+ - **jsonrpcl:** Simplify error message formatting in JsonRPCProtocol for better readability in clients ([75614b0](https://github.com/robotcodedev/robotcode/commit/75614b05820f57c98c416949abced03970e0b429))
51
+
52
+
53
+ ### Refactor
54
+
55
+ - **langserver:** Remove some unused code ([fa429a5](https://github.com/robotcodedev/robotcode/commit/fa429a502e1901cfc0d4126c4047994a5fd5ee39))
56
+ - **langserver:** Simplify keyword renaming ([3836362](https://github.com/robotcodedev/robotcode/commit/3836362073599bcc32d9cb38425645d34d681f91))
57
+ - **langserver:** Simplify variable renaming ([779fd70](https://github.com/robotcodedev/robotcode/commit/779fd703339ce81124f03f08b73e2639d0729212))
58
+
59
+
60
+ ### Testing
61
+
62
+ - Update regression tests for RF 7.3.2 ([fd1b89a](https://github.com/robotcodedev/robotcode/commit/fd1b89ac17b1f378bc66c6d944afc92252f13ecf))
63
+
64
+
5
65
  ## [1.4.0](https://github.com/robotcodedev/robotcode/compare/v1.3.0..v1.4.0) - 2025-06-30
6
66
 
7
67
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: robotcode
3
- Version: 1.4.0
3
+ Version: 1.6.0
4
4
  Summary: Command line interface for RobotCode
5
5
  Project-URL: Homepage, https://robotcode.io
6
6
  Project-URL: Donate, https://opencollective.com/robotcode
@@ -34,41 +34,38 @@ Classifier: Topic :: Text Editors :: Integrated Development Environments (IDE)
34
34
  Classifier: Topic :: Utilities
35
35
  Classifier: Typing :: Typed
36
36
  Requires-Python: >=3.8
37
- Requires-Dist: robotcode-core==1.4.0
38
- Requires-Dist: robotcode-plugin==1.4.0
39
- Requires-Dist: robotcode-robot==1.4.0
37
+ Requires-Dist: robotcode-core==1.6.0
38
+ Requires-Dist: robotcode-plugin==1.6.0
39
+ Requires-Dist: robotcode-robot==1.6.0
40
40
  Provides-Extra: all
41
41
  Requires-Dist: docutils; extra == 'all'
42
42
  Requires-Dist: pyyaml>=5.4; extra == 'all'
43
43
  Requires-Dist: rich; extra == 'all'
44
- Requires-Dist: robotcode-analyze==1.4.0; extra == 'all'
45
- Requires-Dist: robotcode-debugger==1.4.0; extra == 'all'
46
- Requires-Dist: robotcode-language-server==1.4.0; extra == 'all'
47
- Requires-Dist: robotcode-repl-server==1.4.0; extra == 'all'
48
- Requires-Dist: robotcode-repl==1.4.0; extra == 'all'
49
- Requires-Dist: robotcode-runner==1.4.0; extra == 'all'
44
+ Requires-Dist: robotcode-analyze==1.6.0; extra == 'all'
45
+ Requires-Dist: robotcode-debugger==1.6.0; extra == 'all'
46
+ Requires-Dist: robotcode-language-server==1.6.0; extra == 'all'
47
+ Requires-Dist: robotcode-repl-server==1.6.0; extra == 'all'
48
+ Requires-Dist: robotcode-repl==1.6.0; extra == 'all'
49
+ Requires-Dist: robotcode-runner==1.6.0; extra == 'all'
50
50
  Requires-Dist: robotframework-robocop>=2.0.0; extra == 'all'
51
- Requires-Dist: robotframework-tidy>=2.0.0; extra == 'all'
52
51
  Provides-Extra: analyze
53
- Requires-Dist: robotcode-analyze==1.4.0; extra == 'analyze'
52
+ Requires-Dist: robotcode-analyze==1.6.0; extra == 'analyze'
54
53
  Provides-Extra: colored
55
54
  Requires-Dist: rich; extra == 'colored'
56
55
  Provides-Extra: debugger
57
- Requires-Dist: robotcode-debugger==1.4.0; extra == 'debugger'
56
+ Requires-Dist: robotcode-debugger==1.6.0; extra == 'debugger'
58
57
  Provides-Extra: languageserver
59
- Requires-Dist: robotcode-language-server==1.4.0; extra == 'languageserver'
58
+ Requires-Dist: robotcode-language-server==1.6.0; extra == 'languageserver'
60
59
  Provides-Extra: lint
61
60
  Requires-Dist: robotframework-robocop>=2.0.0; extra == 'lint'
62
61
  Provides-Extra: repl
63
- Requires-Dist: robotcode-repl==1.4.0; extra == 'repl'
62
+ Requires-Dist: robotcode-repl==1.6.0; extra == 'repl'
64
63
  Provides-Extra: replserver
65
- Requires-Dist: robotcode-repl-server==1.4.0; extra == 'replserver'
64
+ Requires-Dist: robotcode-repl-server==1.6.0; extra == 'replserver'
66
65
  Provides-Extra: rest
67
66
  Requires-Dist: docutils; extra == 'rest'
68
67
  Provides-Extra: runner
69
- Requires-Dist: robotcode-runner==1.4.0; extra == 'runner'
70
- Provides-Extra: tidy
71
- Requires-Dist: robotframework-tidy>=2.0.0; extra == 'tidy'
68
+ Requires-Dist: robotcode-runner==1.6.0; extra == 'runner'
72
69
  Provides-Extra: yaml
73
70
  Requires-Dist: pyyaml>=5.4; extra == 'yaml'
74
71
  Description-Content-Type: text/markdown
@@ -65,13 +65,10 @@ python = "3.10"
65
65
 
66
66
  [[envs.devel.matrix]]
67
67
  python = ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
68
- rf = ["rf41", "rf50", "rf60", "rf61", "rf70", "rf71", "rf72", "rf73"]
68
+ rf = ["rf50", "rf60", "rf61", "rf70", "rf71", "rf72", "rf73"]
69
69
 
70
70
  [envs.devel.overrides]
71
71
  matrix.rf.dependencies = [
72
- { value = "robotframework~=4.1.0", if = [
73
- "rf41",
74
- ] },
75
72
  { value = "robotframework~=5.0.0", if = [
76
73
  "rf50",
77
74
  ] },
@@ -100,13 +97,10 @@ dependencies = ["pytest", "pytest-html", "pytest_asyncio>=0.23", "pyyaml"]
100
97
  pre-install-commands = ["python ./scripts/install_packages.py"]
101
98
 
102
99
  [[envs.test.matrix]]
103
- rf = ["rf41", "rf50", "rf60", "rf61", "rf70", "rf71", "rf72", "rf73"]
100
+ rf = ["rf50", "rf60", "rf61", "rf70", "rf71", "rf72", "rf73"]
104
101
 
105
102
  [envs.test.overrides]
106
103
  matrix.rf.dependencies = [
107
- { value = "robotframework~=4.1.0", if = [
108
- "rf41",
109
- ] },
110
104
  { value = "robotframework~=5.0.0", if = [
111
105
  "rf50",
112
106
  ] },
@@ -148,6 +142,7 @@ features = ["all"]
148
142
  typing = "mypy --no-incremental --cache-dir /dev/null {args:.}"
149
143
  style = ["ruff check .", "ruff format --diff ."]
150
144
  all = ["style", "typing"]
145
+ fix = ["ruff check --fix .", "ruff format ."]
151
146
 
152
147
  [envs.lint.overrides]
153
148
  platform.windows.scripts = [
@@ -51,9 +51,9 @@ classifiers = [
51
51
  ]
52
52
  requires-python = ">=3.8"
53
53
  dependencies = [
54
- "robotcode-core==1.4.0",
55
- "robotcode-plugin==1.4.0",
56
- "robotcode-robot==1.4.0",
54
+ "robotcode-core==1.6.0",
55
+ "robotcode-plugin==1.6.0",
56
+ "robotcode-robot==1.6.0",
57
57
  ]
58
58
  dynamic = ["version"]
59
59
 
@@ -71,27 +71,25 @@ robotcode = "robotcode.cli.__main__:main"
71
71
 
72
72
 
73
73
  [project.optional-dependencies]
74
- debugger = ["robotcode-debugger==1.4.0"]
75
- languageserver = ["robotcode-language-server==1.4.0"]
76
- runner = ["robotcode-runner==1.4.0"]
77
- analyze = ["robotcode-analyze==1.4.0"]
74
+ debugger = ["robotcode-debugger==1.6.0"]
75
+ languageserver = ["robotcode-language-server==1.6.0"]
76
+ runner = ["robotcode-runner==1.6.0"]
77
+ analyze = ["robotcode-analyze==1.6.0"]
78
78
  yaml = ["PyYAML>=5.4"]
79
79
  lint = ["robotframework-robocop>=2.0.0"]
80
- tidy = ["robotframework-tidy>=2.0.0"]
81
80
  rest = ["docutils"]
82
- repl = ["robotcode-repl==1.4.0"]
83
- replserver = ["robotcode-repl-server==1.4.0"]
81
+ repl = ["robotcode-repl==1.6.0"]
82
+ replserver = ["robotcode-repl-server==1.6.0"]
84
83
  colored = ["rich"]
85
84
  all = [
86
- "robotcode-debugger==1.4.0",
87
- "robotcode-language-server==1.4.0",
88
- "robotcode-runner==1.4.0",
89
- "robotcode-analyze==1.4.0",
90
- "robotcode-repl==1.4.0",
91
- "robotcode-repl-server==1.4.0",
85
+ "robotcode-debugger==1.6.0",
86
+ "robotcode-language-server==1.6.0",
87
+ "robotcode-runner==1.6.0",
88
+ "robotcode-analyze==1.6.0",
89
+ "robotcode-repl==1.6.0",
90
+ "robotcode-repl-server==1.6.0",
92
91
  "PyYAML>=5.4",
93
92
  "robotframework-robocop>=2.0.0",
94
- "robotframework-tidy>=2.0.0",
95
93
  "docutils",
96
94
  "rich",
97
95
  ]
@@ -1,4 +1,6 @@
1
+ import json
1
2
  import logging
3
+ import logging.config
2
4
  from pathlib import Path
3
5
  from typing import Any, List, Literal, Optional
4
6
 
@@ -35,8 +37,11 @@ click.Parameter.make_metavar = my_make_metavar # type: ignore[method-assign]
35
37
 
36
38
 
37
39
  class RobotCodeFormatter(logging.Formatter):
38
- def __init__(self, *args: Any, **kwargs: Any) -> None:
39
- super().__init__(*args, **kwargs)
40
+ def __init__(self, *args: Any, defaults: Any = None, **kwargs: Any) -> None:
41
+ defaults = defaults or {}
42
+ if defaults.get("indent") is None:
43
+ defaults["indent"] = ""
44
+ super().__init__(*args, defaults=defaults, **kwargs)
40
45
 
41
46
 
42
47
  @click.group(
@@ -162,6 +167,21 @@ class RobotCodeFormatter(logging.Formatter):
162
167
  help="Enables logging of method/function calls.",
163
168
  show_envvar=True,
164
169
  )
170
+ @click.option(
171
+ "--log-config",
172
+ type=click.Path(
173
+ file_okay=True,
174
+ dir_okay=False,
175
+ readable=True,
176
+ exists=True,
177
+ path_type=str,
178
+ ),
179
+ help="Path to a logging configuration file. This must be a valid Python logging configuration file in JSON format."
180
+ " If this option is set, the other logging options are ignored.",
181
+ default=None,
182
+ show_default=True,
183
+ show_envvar=True,
184
+ )
165
185
  @click.option(
166
186
  "--default-path",
167
187
  "-dp",
@@ -220,6 +240,7 @@ def robotcode(
220
240
  log_style: Literal["%", "{", "$"],
221
241
  log_filename: Optional[str],
222
242
  log_calls: bool,
243
+ log_config: Optional[Path],
223
244
  default_path: Optional[List[str]],
224
245
  launcher_script: Optional[str] = None,
225
246
  debugpy: bool = False,
@@ -257,7 +278,21 @@ def robotcode(
257
278
  app.config.log_level = log_level
258
279
  app.config.log_calls = log_calls
259
280
 
260
- if log:
281
+ if log_config:
282
+ if log_calls:
283
+ LoggingDescriptor.set_call_tracing(True)
284
+
285
+ app.verbose(f"Loading logging configuration from '{log_config}'")
286
+ try:
287
+ with open(log_config, "r", encoding="utf-8") as f:
288
+ config = json.load(f)
289
+
290
+ logging.config.dictConfig(config)
291
+
292
+ except Exception as e:
293
+ app.error(f"Failed to load logging configuration from '{log_config}': {e}")
294
+
295
+ elif log:
261
296
  if log_calls:
262
297
  LoggingDescriptor.set_call_tracing(True)
263
298
 
@@ -269,9 +304,7 @@ def robotcode(
269
304
  )
270
305
 
271
306
  try:
272
- logging.root.handlers[0].formatter = RobotCodeFormatter(
273
- fmt=log_format, style=log_style, defaults={"indent": ""}
274
- )
307
+ logging.root.handlers[0].formatter = RobotCodeFormatter(fmt=log_format, style=log_style)
275
308
  except TypeError:
276
309
  pass
277
310
 
@@ -0,0 +1 @@
1
+ __version__ = "1.6.0"
@@ -1 +0,0 @@
1
- __version__ = "1.4.0"
File without changes
File without changes
File without changes