Skip to content

#2293: rework spyder as ide tool commandlet - #2333

Open
JoelAdbu wants to merge 20 commits into
devonfw:mainfrom
JoelAdbu:feature/2293-rework-spyder-as-ideToolCommandlet
Open

#2293: rework spyder as ide tool commandlet#2333
JoelAdbu wants to merge 20 commits into
devonfw:mainfrom
JoelAdbu:feature/2293-rework-spyder-as-ideToolCommandlet

Conversation

@JoelAdbu

@JoelAdbu JoelAdbu commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

This PR fixes #2293

Implemented changes:

  • added new interface for IDE specific features
  • extracted workspace configuration logic into new class
  • PipBasedIdeToolCommandlet and IdeToolCommandlet are implementing this new interface
  • added new merger for .ini files
  • adjusted Spyder conf variable to get configuration from workspace
  • added new interface for plugin features
  • extracted plugin logic from PluginBasedToolCommandlet to new class
  • PluginBasedToolCommandlet and PipBasedToolCommandlet are implementing the new plugin features interface

Testing instructions

Please add conscise, understandable instructions on how a reviewer can test/verify the functionality of your contribution here:

Test for workspace configuration

  1. Run
mvn clean test
  1. Create a new project with the updated settings repository
ide create spyder https://github.com/JoelAdbu/ide-settings/tree/feature/2293-rework-spyder-as-ide-commandlet
  1. Add the following spyder configuration to settings/spyder/workspace/update/.spyder-py3/config/spyder.ini with following content:
[appearance]
ui_theme = dark
font/family = JetBrains Mono
font/size = 25
app_font/family = JetBrains Mono
app_font/size = 25
monospace_app_font/family = JetBrains Mono
monospace_app_font/size = 25
selected = obsidian
 
[main]
font/family = JetBrains Mono
font/size = 25
  1. Go to settings/spyder/plugins and set one of the plugins (e.g. SpyderLineProfiler) to active= true.

  2. Start spyder

ide spyder
  1. Verify Spyder opens the correct project.
  2. Verify that the configured settings are applied (e.g. dark theme, Obsidian color scheme, JetBrains Mono font, font size 25)
  3. Verify plugin line-profiler is downloaded and applied (in settings tab -> Line Profiler)

Verify plugin support and workspace configuration still work for IDEs (VS Code, IntelliJ, Eclipse)

 

  1. Use the same project.

  2. Modify a workspace setting, for example in:

vscode/workspace/update/.vscode/.userdata/User/settings.properties
 
Add the following setting:
 

"editor.fontSize": 30

 
4. Enable one or more plugins by setting active=true, for example in:
 
vscode/plugins/angular2.properties
 
5. Start VS Code:
 

ide vscode
  1. Verify that the editor font size is visibly larger than the default value.
  • Alternatively, open the VS Code settings and verify that editor.fontSize is set to 30.
     
  1. Verify that the configured plugins have been installed successfully.
  • Check that the plugin files are present under plugins/vscode/....
  • Verify that the plugin appears in the VS Code Extensions view.
  • Verify that the plugin is enabled and usable inside VS Code.


Checklist for this PR

Make sure everything is checked before merging this PR. For further info please also see
our DoD.

  • When running mvn clean test locally all tests pass and build is successful
  • PR title is of the form #«issue-id»: «brief summary» (e.g. #921: fixed setup.bat and not feature/921 fixed setup.bat). If no issue ID exists, title only.
  • PR top-level comment summaries what has been done and contains link to addressed issue(s)
  • PR and issue(s) have suitable labels
  • Issue is set to In Progress and assigned to you or there is no issue (might happen for very small PRs)
  • You followed all coding conventions
  • You have added the issue implemented by your PR in CHANGELOG.adoc unless issue is labelled
    with internal
  • You have not changed any dependency in pom.xml files or otherwise if runtime dependencies changed, you have updated our LICENSE.asciidoc
  • You have formulated clear instructions on how to test your contribution under "Testing instructions"

- extracted workspace Configuration logic and repository import into a new class IdeWorkspaceConfigurer
- added new  extensible interface IdeFeature so workspace configuration is not only available for IdeToolCommandlets but also for Ide's that extend different classes like PipBasedIdeToolCommandlet
- PipbasedIdeToolCommandlet implementes IdeFeatures via extracted logic of Workspaceconfigurer
- since repository import method is defined by the new interface it should be triggered by all commandlets that are implementing this interface
- configureWorkspace now needs to be public
- added env variable to override default config dir of spyder with specific IDEasy configdir
- added logic to set working directory for spyder
- added new merge for .ini files
- added Merger for .ini files
- fixed tests
- refactoring
- refactoring
@coveralls

coveralls commented Aug 14, 2026

Copy link
Copy Markdown
Collaborator

Coverage Report for CI Build 33411924319

Coverage decreased (-0.5%) to 73.138%

Details

  • Coverage decreased (-0.5%) from the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • 44 coverage regressions across 4 files.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

44 previously-covered lines in 4 files lost coverage.

File Lines Losing Coverage Coverage
com/devonfw/tools/ide/tool/pip/PipBasedIdeToolCommandlet.java 31 46.43%
com/devonfw/tools/ide/merge/DirectoryMerger.java 10 66.38%
com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java 2 88.24%
com/devonfw/tools/ide/tool/plugin/PluginBasedCommandlet.java 1 95.0%

Coverage Stats

Coverage Status
Relevant Lines: 18566
Covered Lines: 14199
Line Coverage: 76.48%
Relevant Branches: 8208
Covered Branches: 5383
Branch Coverage: 65.58%
Branches in Coverage %: Yes
Coverage Strength: 3.26 hits per line

💛 - Coveralls

 - adjusted toolArg to open correct project path
@JoelAdbu JoelAdbu added enhancement New feature or request spyder Python IDE labels Aug 26, 2026
- refactoring
- added methods to PluginFeatures interface
- refactoring of Plugin logic from PluginBasedCommandlet to plugin manager
- Eclipse adjustment due to refactoring
- PipbasedideToolCommandlet now implements PluginFeatures to have Plugin support for pip based ide's
- fix to use correct plugin conf path
- fix for tests
- added test for PipBasedIdeToolCommandlet
- added new test helper
- added new test to SpyderTest.java
- adjusted PipBasedIdeToolCommandletTest
@JoelAdbu
JoelAdbu marked this pull request as ready for review August 31, 2026 08:37
@hohwille hohwille moved this from 🆕 New to 🏗 In progress in IDEasy board Aug 31, 2026
- resolving merge conficts ...
@JoelAdbu JoelAdbu moved this from 🏗 In progress to Team Review in IDEasy board Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request spyder Python IDE

Projects

Status: Team Review

Development

Successfully merging this pull request may close these issues.

Rework spyder as IdeToolCommandlet

3 participants