Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,11 @@ Before releasing new minor or major versions, it's necessary to:

* Add sections for `New features`, `Important fixes` and `New API features` in `changelogs/Spyder-X.md`. For this take a look at closed issues and PRs for the current milestone.

* `git add .` and `git commit -m "Update Changelog"`
* Add changelog for new version to `spyder/plugins/application/widgets/appeal_page/changelog.md` (only `New features` and `Important fixes`).

* Update `CHANGELOG_URL` in `spyder/plugins/application/widgets/status.py` to point to the changelog for the new version.

* `git add .` and `git commit -m "Update Changelog [ci skip]"`

* Update [Announcements.md](Announcements.md) (this goes to our Google group) removing the outdated announcement of the same kind (major, minor, or beta/release candidate)

Expand Down
3 changes: 2 additions & 1 deletion binder/environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,11 @@ dependencies:
- ipython >=8.15.0,<10.0.0,!=8.17.1,!=9.1.0,!=9.2.0,!=9.3.0,!=9.4.0
- ipython_pygments_lexers >=1.0
- jedi >=0.17.2,<0.20.0
- lxml >=4.9.0
- jellyfish >=0.7
- jsonschema >=3.2.0
- keyring >=17.0.0
- lxml >=4.9.0
- markdown-it-py >=3.0.0
- nbconvert >=4.0
- numpydoc >=0.6.0
- packaging >=20.0
Expand Down
1 change: 1 addition & 0 deletions changelogs/Spyder-6.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

### API changes

* Add `sig_update_performed` signal to Update manager plugin.
* All public and most private APIs in `spyder.api` now have comprehensive
docstrings and type hints with descriptions, parameters, returns and raises,
and are thoroughly rewritten for correctness, clarity and proper formatting.
Expand Down
3 changes: 2 additions & 1 deletion requirements/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,11 @@ dependencies:
- ipython >=8.15.0,<10.0.0,!=8.17.1,!=9.1.0,!=9.2.0,!=9.3.0,!=9.4.0
- ipython_pygments_lexers >=1.0
- jedi >=0.17.2,<0.20.0
- lxml >=4.9.0
- jellyfish >=0.7
- jsonschema >=3.2.0
- keyring >=17.0.0
- lxml >=4.9.0
- markdown-it-py >=3.0.0
- nbconvert >=4.0
- numpydoc >=0.6.0
- packaging >=20.0
Expand Down
5 changes: 3 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ def run(self):
# =============================================================================
EXTLIST = ['.pot', '.po', '.mo', '.svg', '.png', '.css', '.html', '.js',
'.ini', '.txt', '.qss', '.ttf', '.json', '.rst', '.bloom',
'.ico', '.gif', '.mp3', '.ogg', '.sfd', '.bat', '.sh']
'.ico', '.gif', '.mp3', '.ogg', '.sfd', '.bat', '.sh', '.md']


# =============================================================================
Expand Down Expand Up @@ -285,9 +285,10 @@ def run(self):
'ipython_pygments_lexers>=1.0',
'jedi>=0.17.2,<0.20.0',
'jellyfish>=0.7',
'lxml>=4.9.0',
'jsonschema>=3.2.0',
'keyring>=17.0.0',
'lxml>=4.9.0',
'markdown-it-py>=3.0.0',
'nbconvert>=4.0',
'numpydoc>=0.6.0',
'packaging>=20.0',
Expand Down
5 changes: 5 additions & 0 deletions spyder/dependencies.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
JSONSCHEMA_REQVER = '>=3.2.0'
KEYRING_REQVER = '>=17.0.0'
LXML_REQVER = ">=4.9.0"
MARKDOWN_IT_REQVER = ">=3.0.0"
NBCONVERT_REQVER = '>=4.0'
NUMPYDOC_REQVER = '>=0.6.0'
PACKAGING_REQVER = '>=20.0'
Expand Down Expand Up @@ -172,6 +173,10 @@
'package_name': "lxml",
'features': _("Colorize SVG icons according to the interface theme"),
'required_version': LXML_REQVER},
{'modname': "markdown_it",
'package_name': "markdown-it-py",
'features': _("Render markdown content to HTML"),
'required_version': MARKDOWN_IT_REQVER},
{'modname': "nbconvert",
'package_name': "nbconvert",
'features': _("Manipulate Jupyter notebooks in the Editor"),
Expand Down
8 changes: 7 additions & 1 deletion spyder/plugins/application/container.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ class ApplicationActions:
SpyderTroubleshootingAction = "spyder_troubleshooting_action"
SpyderDependenciesAction = "spyder_dependencies_action"
SpyderSupportAction = "spyder_support_action"
ShowChangelogAction = "show_changelog_action"
HelpSpyderAction = "help_spyder_action"
SpyderAbout = "spyder_about_action"

Expand Down Expand Up @@ -296,11 +297,16 @@ def setup(self):
_("Spyder Google group"),
triggered=lambda: start_file(__forum_url__))

self.create_action(
ApplicationActions.ShowChangelogAction,
_("Show changelog"),
triggered=self.inapp_appeal_status.show_changelog,
)
self.create_action(
ApplicationActions.HelpSpyderAction,
_("Help Spyder..."),
icon=self.create_icon("inapp_appeal"),
triggered=self.inapp_appeal_status.show_appeal
triggered=self.inapp_appeal_status.show_appeal,
)

# About action
Expand Down
25 changes: 21 additions & 4 deletions spyder/plugins/application/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,8 @@ def on_initialize(self):
container.set_window(self._window)
self.sig_focused_plugin_changed.connect(self._update_focused_plugin)

# --------------------- PLUGIN INITIALIZATION -----------------------------
# ---- Plugin initialization
# -------------------------------------------------------------------------
@on_plugin_available(plugin=Plugins.IPythonConsole)
def on_ipythonconsole_available(self):
if self.is_plugin_available(Plugins.MainMenu):
Expand Down Expand Up @@ -177,7 +178,13 @@ def on_toolbar_available(self):
before=EditorWidgetActions.NewCell
)

# -------------------------- PLUGIN TEARDOWN ------------------------------
@on_plugin_available(plugin=Plugins.UpdateManager)
def on_update_manager_available(self):
update_manager = self.get_plugin(Plugins.UpdateManager)
update_manager.sig_update_performed.connect(self._on_spyder_update)

# ---- Plugin Teardown
# -------------------------------------------------------------------------
@on_plugin_teardown(plugin=Plugins.Preferences)
def on_preferences_teardown(self):
preferences = self.get_plugin(Plugins.Preferences)
Expand Down Expand Up @@ -222,6 +229,11 @@ def on_toolbar_teardown(self):
toolbar_id=ApplicationToolbars.File
)

@on_plugin_teardown(plugin=Plugins.UpdateManager)
def on_update_manager_teardowm(self):
update_manager = self.get_plugin(Plugins.UpdateManager)
update_manager.sig_update_performed.disconnect(self._on_spyder_update)

def on_close(self, _unused=True):
self.get_container().on_close()

Expand Down Expand Up @@ -438,12 +450,13 @@ def _populate_help_menu_support_section(self):
def _populate_help_menu_about_section(self):
"""Create Spyder base about actions."""
mainmenu = self.get_plugin(Plugins.MainMenu)
for about_action in [
for action in [
self.get_action(ApplicationActions.ShowChangelogAction),
self.get_action(ApplicationActions.HelpSpyderAction),
self.about_action,
]:
mainmenu.add_item_to_application_menu(
about_action,
action,
menu_id=ApplicationMenus.Help,
section=HelpMenuSections.About,
)
Expand Down Expand Up @@ -631,6 +644,10 @@ def _update_search_actions(self) -> None:
state = self.search_action_enabled.get(key, True)
action.setEnabled(state)

def _on_spyder_update(self):
container = self.get_container()
container.inapp_appeal_status.show_changelog()

# ---- Public API
# ------------------------------------------------------------------------
def get_application_context_menu(self, parent=None):
Expand Down
15 changes: 15 additions & 0 deletions spyder/plugins/application/widgets/appeal_page/changelog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# History of changes

## Version 6.1.2 (2025-12-17)

### New features

* Set a maximum number of plots in the Plots pane to prevent a memory leak when generating many of them.
* Simplify UX to create directories and files from the files/project explorer.
* Add support for Pylint 4.

### Important fixes

* Fix update process for installer based installations that require admin permissions on Windows.
* Fix Profiler error when the IPython console kernel takes time to start.
* General fixes to the API module (`spyder.api`) docstrings and typings.
Loading
Loading