robotcode 1.3.0.dev6__tar.gz → 1.5.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,7 +2,57 @@
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
- ## [Unreleased]
5
+ ## [1.5.0](https://github.com/robotcodedev/robotcode/compare/v1.4.0..v1.5.0) - 2025-07-07
6
+
7
+ ### Features
8
+
9
+ - **cli:** Add new command line switch `--log-config` to specify a python json log configuration ([31a11f2](https://github.com/robotcodedev/robotcode/commit/31a11f27b96fba6c879218c9b13cdea5f8bb89c3))
10
+ - **jsonrpcl:** Simplify error message formatting in JsonRPCProtocol for better readability in clients ([75614b0](https://github.com/robotcodedev/robotcode/commit/75614b05820f57c98c416949abced03970e0b429))
11
+
12
+
13
+ ### Refactor
14
+
15
+ - **langserver:** Remove some unused code ([fa429a5](https://github.com/robotcodedev/robotcode/commit/fa429a502e1901cfc0d4126c4047994a5fd5ee39))
16
+ - **langserver:** Simplify keyword renaming ([3836362](https://github.com/robotcodedev/robotcode/commit/3836362073599bcc32d9cb38425645d34d681f91))
17
+ - **langserver:** Simplify variable renaming ([779fd70](https://github.com/robotcodedev/robotcode/commit/779fd703339ce81124f03f08b73e2639d0729212))
18
+
19
+
20
+ ### Testing
21
+
22
+ - Update regression tests for RF 7.3.2 ([fd1b89a](https://github.com/robotcodedev/robotcode/commit/fd1b89ac17b1f378bc66c6d944afc92252f13ecf))
23
+
24
+
25
+ ## [1.4.0](https://github.com/robotcodedev/robotcode/compare/v1.3.0..v1.4.0) - 2025-06-30
26
+
27
+ ### Bug Fixes
28
+
29
+ - **langserver:** Remove timing messages from diagnostics in log ([c908485](https://github.com/robotcodedev/robotcode/commit/c90848514f713805fa330ccfc4344cc8775d0118))
30
+
31
+ - if you want to see it again, then you have to enable the log output for the language server
32
+
33
+
34
+
35
+ ### Documentation
36
+
37
+ - Update Python and Robot Framework version requirements and deprecation notice ([6396b7e](https://github.com/robotcodedev/robotcode/commit/6396b7ef76fd8d41c3d79afc0bab871342eb8622))
38
+
39
+
40
+ ### Features
41
+
42
+ - **langserver:** Improve and unify Robocop 6 configuration loading ([b3c5dd3](https://github.com/robotcodedev/robotcode/commit/b3c5dd3c50308116fc1e1de7adc156a6086cd8fd))
43
+
44
+ - Enhance configuration loading process
45
+ - Add notifications for faulty configurations
46
+
47
+
48
+
49
+ ### Refactor
50
+
51
+ - Simpify some logging code ([5ea1ca1](https://github.com/robotcodedev/robotcode/commit/5ea1ca1c77269df8ebcc70e9a86e77a89d9249a6))
52
+ - Switch lint environment to python 3.10 and corrected all linting errors and warnings ([19a2632](https://github.com/robotcodedev/robotcode/commit/19a26325454ba1b5e53b8548a16c0a3fbe8d5422))
53
+
54
+
55
+ ## [1.3.0](https://github.com/robotcodedev/robotcode/compare/v1.2.0..v1.3.0) - 2025-06-16
6
56
 
7
57
  ### Bug Fixes
8
58
 
@@ -10,8 +60,10 @@ All notable changes to this project will be documented in this file. See [conven
10
60
  - **cli:** Corrected monkey patching for click>=8.2.0 ([425e64d](https://github.com/robotcodedev/robotcode/commit/425e64ddf8c6a9a54ec6fe3d801253c2e3a2156a))
11
61
  - **debugger:** Improve termination handling ([a890264](https://github.com/robotcodedev/robotcode/commit/a890264547341c190eaef5e0240f0cc81deb3c70))
12
62
  - **formatting:** Improve message clarity for robocop formatting ([f71d15d](https://github.com/robotcodedev/robotcode/commit/f71d15df40f8bfd1f9f325d35e1ba73bcf16c9aa))
63
+ - **imports:** Corrected caching of already loaded resources ([4606c4f](https://github.com/robotcodedev/robotcode/commit/4606c4ff12906b54edfeb1e29927f61b2130332c))
13
64
  - **langserver:** Implemented support for robocop >= 6 checks ([8dc2f3c](https://github.com/robotcodedev/robotcode/commit/8dc2f3ce94bf6c6a771b6ffcc6a969ae617397e6))
14
65
  - **langserver:** Disable on-demand startup for the documentation server to ensure it launches on initialization ([81d63fa](https://github.com/robotcodedev/robotcode/commit/81d63faa5f0cfbcf95e293c53daeb80840117438))
66
+ - **listener:** Add 'robocop.toml' to monitored project files to allow detection of changes in robocop configuration ([987ea42](https://github.com/robotcodedev/robotcode/commit/987ea421f22b133851a462b921b7c3e1e5802a4a))
15
67
  - **net:** Move SO_REUSEADDR socket option setting to the correct location to speeding up port discovery and preventing bind failures. ([b54cc93](https://github.com/robotcodedev/robotcode/commit/b54cc9300abb4c7060bfa94cb2e1bfa272936eda))
16
68
  - **textmate:** Corrected highlightning of comments in variable section ([5204afb](https://github.com/robotcodedev/robotcode/commit/5204afbfdd7f745c3e00ebc8d59fa3ad992ec0a8))
17
69
  - **textmate:** Enhance variable assignment handling ([7333eb9](https://github.com/robotcodedev/robotcode/commit/7333eb9b2f46e2af25583af2d5346b4b92dd1137))
@@ -59,6 +111,11 @@ All notable changes to this project will be documented in this file. See [conven
59
111
  - **vscode:** Some refactorings and code cleanup ([d8eac38](https://github.com/robotcodedev/robotcode/commit/d8eac3808e23320fcb7efa92e85c574988d1a7ef))
60
112
 
61
113
 
114
+ ### Testing
115
+
116
+ - Update regression tests for RF 7.3.1 ([93bef41](https://github.com/robotcodedev/robotcode/commit/93bef414711e069fe097251892e3cc63fccf6392))
117
+
118
+
62
119
  ## [1.2.0](https://github.com/robotcodedev/robotcode/compare/v1.1.0..v1.2.0) - 2025-05-07
63
120
 
64
121
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: robotcode
3
- Version: 1.3.0.dev6
3
+ Version: 1.5.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,39 +34,39 @@ 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.3.0-dev.6
38
- Requires-Dist: robotcode-plugin==1.3.0-dev.6
39
- Requires-Dist: robotcode-robot==1.3.0-dev.6
37
+ Requires-Dist: robotcode-core==1.5.0
38
+ Requires-Dist: robotcode-plugin==1.5.0
39
+ Requires-Dist: robotcode-robot==1.5.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.3.0-dev.6; extra == 'all'
45
- Requires-Dist: robotcode-debugger==1.3.0-dev.6; extra == 'all'
46
- Requires-Dist: robotcode-language-server==1.3.0-dev.6; extra == 'all'
47
- Requires-Dist: robotcode-repl-server==1.3.0-dev.6; extra == 'all'
48
- Requires-Dist: robotcode-repl==1.3.0-dev.6; extra == 'all'
49
- Requires-Dist: robotcode-runner==1.3.0-dev.6; extra == 'all'
44
+ Requires-Dist: robotcode-analyze==1.5.0; extra == 'all'
45
+ Requires-Dist: robotcode-debugger==1.5.0; extra == 'all'
46
+ Requires-Dist: robotcode-language-server==1.5.0; extra == 'all'
47
+ Requires-Dist: robotcode-repl-server==1.5.0; extra == 'all'
48
+ Requires-Dist: robotcode-repl==1.5.0; extra == 'all'
49
+ Requires-Dist: robotcode-runner==1.5.0; extra == 'all'
50
50
  Requires-Dist: robotframework-robocop>=2.0.0; extra == 'all'
51
51
  Requires-Dist: robotframework-tidy>=2.0.0; extra == 'all'
52
52
  Provides-Extra: analyze
53
- Requires-Dist: robotcode-analyze==1.3.0-dev.6; extra == 'analyze'
53
+ Requires-Dist: robotcode-analyze==1.5.0; extra == 'analyze'
54
54
  Provides-Extra: colored
55
55
  Requires-Dist: rich; extra == 'colored'
56
56
  Provides-Extra: debugger
57
- Requires-Dist: robotcode-debugger==1.3.0-dev.6; extra == 'debugger'
57
+ Requires-Dist: robotcode-debugger==1.5.0; extra == 'debugger'
58
58
  Provides-Extra: languageserver
59
- Requires-Dist: robotcode-language-server==1.3.0-dev.6; extra == 'languageserver'
59
+ Requires-Dist: robotcode-language-server==1.5.0; extra == 'languageserver'
60
60
  Provides-Extra: lint
61
61
  Requires-Dist: robotframework-robocop>=2.0.0; extra == 'lint'
62
62
  Provides-Extra: repl
63
- Requires-Dist: robotcode-repl==1.3.0-dev.6; extra == 'repl'
63
+ Requires-Dist: robotcode-repl==1.5.0; extra == 'repl'
64
64
  Provides-Extra: replserver
65
- Requires-Dist: robotcode-repl-server==1.3.0-dev.6; extra == 'replserver'
65
+ Requires-Dist: robotcode-repl-server==1.5.0; extra == 'replserver'
66
66
  Provides-Extra: rest
67
67
  Requires-Dist: docutils; extra == 'rest'
68
68
  Provides-Extra: runner
69
- Requires-Dist: robotcode-runner==1.3.0-dev.6; extra == 'runner'
69
+ Requires-Dist: robotcode-runner==1.5.0; extra == 'runner'
70
70
  Provides-Extra: tidy
71
71
  Requires-Dist: robotframework-tidy>=2.0.0; extra == 'tidy'
72
72
  Provides-Extra: yaml
@@ -130,13 +130,44 @@ With RobotCode, you can focus on building and testing your automation workflows
130
130
 
131
131
  ## Requirements
132
132
 
133
- - Python 3.8 or newer
134
- - Robot Framework 4.1 or newer
133
+ ### Python and Robot Framework Versions
134
+ - Python 3.10 or newer
135
+ - Robot Framework 5.0 or newer
135
136
 
136
137
  ### IDE Support
137
138
 
138
- - Visual Studio Code 1.86 or newer
139
- - PyCharm 2024.3.2 or newer or IntelliJ IDEA 2024.3.2 or newer
139
+ - Visual Studio Code 1.99 or newer
140
+ - PyCharm 2025.1 or newer or IntelliJ IDEA 2025.1 or newer
141
+
142
+ ### Deprecated Python and Robot Framework Versions
143
+
144
+ **⚠️ DEPRECATION WARNING:**
145
+ Support for Python 3.8, 3.9, and Robot Framework 4.1 is deprecated and will be removed in a future release. To ensure compatibility and benefit from ongoing improvements, please upgrade to Python 3.10 or later and Robot Framework 5.0 or later.
146
+
147
+ **Python Version Requirements:**
148
+ Although Robot Framework still supports Python 3.8 and 3.9, RobotCode requires Python 3.10 or newer due to its use of more modern libraries and features. Many key tools in the ecosystem—such as robocop and the Browser library—have already dropped support for Python 3.8, which is no longer maintained. Python 3.9 will reach end-of-life on October 5, 2025.
149
+
150
+ **Robot Framework Version Requirements:**
151
+ Robot Framework 4.1 is outdated. Given the regular release cadence of Robot Framework—typically two major versions per year—maintaining support for older versions introduces significant overhead. That effort is better spent on supporting current and upcoming features.
152
+
153
+ **Compatibility and Limitations:**
154
+ RobotCode currently remains compatible with Python 3.8+ and Robot Framework 4.1+, but with important limitations:
155
+ • New features may not be available for older versions.
156
+ • Development and testing efforts are focused on newer versions.
157
+
158
+ **Why Python 3.10:**
159
+ After Python 3.9 reaches end-of-life, RobotCode will start using Python 3.10+ features that are not backward-compatible. Python 3.10 introduces several important improvements, including:
160
+ • Structural pattern matching
161
+ • More informative error messages
162
+ • Simplified type hints using the | operator
163
+ • Performance enhancements
164
+
165
+ These capabilities enable cleaner, more efficient code and improved developer experience.
166
+
167
+ **Recommendation:**
168
+ To get the most out of RobotCode, we recommend using:
169
+ • Python 3.10 or newer
170
+ • Robot Framework 5.0 or newer
140
171
 
141
172
 
142
173
  ## Getting Started
@@ -55,13 +55,44 @@ With RobotCode, you can focus on building and testing your automation workflows
55
55
 
56
56
  ## Requirements
57
57
 
58
- - Python 3.8 or newer
59
- - Robot Framework 4.1 or newer
58
+ ### Python and Robot Framework Versions
59
+ - Python 3.10 or newer
60
+ - Robot Framework 5.0 or newer
60
61
 
61
62
  ### IDE Support
62
63
 
63
- - Visual Studio Code 1.86 or newer
64
- - PyCharm 2024.3.2 or newer or IntelliJ IDEA 2024.3.2 or newer
64
+ - Visual Studio Code 1.99 or newer
65
+ - PyCharm 2025.1 or newer or IntelliJ IDEA 2025.1 or newer
66
+
67
+ ### Deprecated Python and Robot Framework Versions
68
+
69
+ **⚠️ DEPRECATION WARNING:**
70
+ Support for Python 3.8, 3.9, and Robot Framework 4.1 is deprecated and will be removed in a future release. To ensure compatibility and benefit from ongoing improvements, please upgrade to Python 3.10 or later and Robot Framework 5.0 or later.
71
+
72
+ **Python Version Requirements:**
73
+ Although Robot Framework still supports Python 3.8 and 3.9, RobotCode requires Python 3.10 or newer due to its use of more modern libraries and features. Many key tools in the ecosystem—such as robocop and the Browser library—have already dropped support for Python 3.8, which is no longer maintained. Python 3.9 will reach end-of-life on October 5, 2025.
74
+
75
+ **Robot Framework Version Requirements:**
76
+ Robot Framework 4.1 is outdated. Given the regular release cadence of Robot Framework—typically two major versions per year—maintaining support for older versions introduces significant overhead. That effort is better spent on supporting current and upcoming features.
77
+
78
+ **Compatibility and Limitations:**
79
+ RobotCode currently remains compatible with Python 3.8+ and Robot Framework 4.1+, but with important limitations:
80
+ • New features may not be available for older versions.
81
+ • Development and testing efforts are focused on newer versions.
82
+
83
+ **Why Python 3.10:**
84
+ After Python 3.9 reaches end-of-life, RobotCode will start using Python 3.10+ features that are not backward-compatible. Python 3.10 introduces several important improvements, including:
85
+ • Structural pattern matching
86
+ • More informative error messages
87
+ • Simplified type hints using the | operator
88
+ • Performance enhancements
89
+
90
+ These capabilities enable cleaner, more efficient code and improved developer experience.
91
+
92
+ **Recommendation:**
93
+ To get the most out of RobotCode, we recommend using:
94
+ • Python 3.10 or newer
95
+ • Robot Framework 5.0 or newer
65
96
 
66
97
 
67
98
  ## Getting Started
@@ -61,7 +61,7 @@ python = "3.8"
61
61
  post-install-commands = ["pip install -U -e {root:uri}/../robotframework"]
62
62
 
63
63
  [envs.devel]
64
- python = "3.8"
64
+ 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"]
@@ -131,7 +131,7 @@ matrix.rf.dependencies = [
131
131
  ]
132
132
 
133
133
  [envs.lint]
134
- python = "3.8"
134
+ python = "3.10"
135
135
  #skip-install = true
136
136
  #extra-dependencies = ["tomli>=2.0.0"]
137
137
  extra-dependencies = [
@@ -158,7 +158,7 @@ platform.windows.scripts = [
158
158
  [envs.build]
159
159
  skip-install = true
160
160
  detached = true
161
- python = "3.9"
161
+ python = "3.10"
162
162
  dependencies = ["GitPython", "semantic-version", "commitizen", "git-cliff"]
163
163
 
164
164
  [envs.build.scripts]
@@ -51,9 +51,9 @@ classifiers = [
51
51
  ]
52
52
  requires-python = ">=3.8"
53
53
  dependencies = [
54
- "robotcode-core==1.3.0-dev.6",
55
- "robotcode-plugin==1.3.0-dev.6",
56
- "robotcode-robot==1.3.0-dev.6",
54
+ "robotcode-core==1.5.0",
55
+ "robotcode-plugin==1.5.0",
56
+ "robotcode-robot==1.5.0",
57
57
  ]
58
58
  dynamic = ["version"]
59
59
 
@@ -71,24 +71,24 @@ robotcode = "robotcode.cli.__main__:main"
71
71
 
72
72
 
73
73
  [project.optional-dependencies]
74
- debugger = ["robotcode-debugger==1.3.0-dev.6"]
75
- languageserver = ["robotcode-language-server==1.3.0-dev.6"]
76
- runner = ["robotcode-runner==1.3.0-dev.6"]
77
- analyze = ["robotcode-analyze==1.3.0-dev.6"]
74
+ debugger = ["robotcode-debugger==1.5.0"]
75
+ languageserver = ["robotcode-language-server==1.5.0"]
76
+ runner = ["robotcode-runner==1.5.0"]
77
+ analyze = ["robotcode-analyze==1.5.0"]
78
78
  yaml = ["PyYAML>=5.4"]
79
79
  lint = ["robotframework-robocop>=2.0.0"]
80
80
  tidy = ["robotframework-tidy>=2.0.0"]
81
81
  rest = ["docutils"]
82
- repl = ["robotcode-repl==1.3.0-dev.6"]
83
- replserver = ["robotcode-repl-server==1.3.0-dev.6"]
82
+ repl = ["robotcode-repl==1.5.0"]
83
+ replserver = ["robotcode-repl-server==1.5.0"]
84
84
  colored = ["rich"]
85
85
  all = [
86
- "robotcode-debugger==1.3.0-dev.6",
87
- "robotcode-language-server==1.3.0-dev.6",
88
- "robotcode-runner==1.3.0-dev.6",
89
- "robotcode-analyze==1.3.0-dev.6",
90
- "robotcode-repl==1.3.0-dev.6",
91
- "robotcode-repl-server==1.3.0-dev.6",
86
+ "robotcode-debugger==1.5.0",
87
+ "robotcode-language-server==1.5.0",
88
+ "robotcode-runner==1.5.0",
89
+ "robotcode-analyze==1.5.0",
90
+ "robotcode-repl==1.5.0",
91
+ "robotcode-repl-server==1.5.0",
92
92
  "PyYAML>=5.4",
93
93
  "robotframework-robocop>=2.0.0",
94
94
  "robotframework-tidy>=2.0.0",
@@ -159,7 +159,7 @@ fail_under = 40
159
159
 
160
160
  [tool.ruff]
161
161
  line-length = 120
162
- target-version = "py38"
162
+ target-version = "py310"
163
163
  extend-exclude = ["bundled/libs", ".hatch"]
164
164
 
165
165
  [tool.ruff.lint]
@@ -216,7 +216,7 @@ mark-parentheses = false
216
216
 
217
217
 
218
218
  [tool.mypy]
219
- python_version = "3.8"
219
+ python_version = "3.10"
220
220
  strict = true
221
221
  warn_redundant_casts = true
222
222
  warn_unused_ignores = true
@@ -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.5.0"
@@ -1 +0,0 @@
1
- __version__ = "1.3.0-dev.6"
File without changes
File without changes