Skip to main content

emzed.spyder

emzed.spyder is a customized distribution of the Spyder IDE for the emzed mass spectrometry platform (ETH Zurich, Scientific IT Services).

emzed Related Functions in the Spyder Terminal

remote_interpreter_startup.py is injected as the IPython kernel startup file. Because it runs as a startup script, everything defined at its top level lands directly in the user namespace — including emzed itself (preloaded) and all emzed_* helper functions listed below:

Function Description
emzed_help list all emzed specific commands
emzed_edit_config reopen the first-run configuration dialog
emzed_update Update emzed and emzed_gui
emzed_check_versions Check installed vs. latest versions
emzed_install_ext Install an emzed extension

To separate projects with separated virtual environments or to create emzed extensions:

Function Description
emzed_project_new Create a new project
emzed_project_activate Switch the active project
emzed_project_deactivate Deactivate the current project
emzed_project_list List all projects
emzed_project_update Reinstall project after setup.py changes
emzed_project_test Run the project's test suite
emzed_project_test_coverage Run tests and open coverage report
emzed_project_build_wheel Build a distributable wheel
emzed_project_upload / emzed_project_upload_test Upload to PyPI

Run emzed_help() in the console for a full listing.

Project locations on disk

Projects are stored in a platform-specific folder:

  • macOS/Linux: ~/.emzed3_projects/<project_name>/
  • Windows: %APPDATA%\emzed3_projects\<project_name>\

Each project folder contains a .venv/ subdirectory with the project's own Python environment.

Project workflow

emzed_project_new(name) scaffolds a new project using a cookiecutter template. It:

  1. Creates the project folder under the projects directory above.
  2. Generates a setup.py, requirements_dev.txt, LICENSE.txt, and a src/emzed_ext_<name>/ package skeleton.
  3. Creates a .venv/ that inherits emzed and its dependencies from the shared remote venv (via a .pth file), so only project-specific packages need to be installed on top.
  4. Activates the new project and opens setup.py in the editor.

After editing setup.py and requirements_dev.txt, run emzed_project_update() to install the project and its dependencies into the project venv.

emzed_project_activate(name) switches the active project — the next IPython console that opens will use that project's .venv as its Python interpreter and start in the project folder. Only one project can be active at a time; emzed_project_deactivate() returns to the default remote venv.

Variable Explorer Integration

emzed_spyder_kernels.py runs inside the remote kernel and patches spyder_kernels.utils.nsview so that emzed-specific types display correctly in Spyder's variable explorer:

Patch Effect
get_type_string Shows "Table", "PeakMap", or "ImmutablePeakMap" as the type
get_size Shows meaningful size (e.g. "42 row x 5 columns" for a Table)
value_to_display Shows column names for Table objects
is_supported Marks Table/ImmutablePeakMap as not directly serialisable
globalsfilter Hides closed Table/ImmutablePeakMap objects from the explorer

These patches must live in the kernel process (not Spyder's process) because the variable explorer inspects live objects — but isinstance checks cannot be used from the Spyder side, since emzed is only installed in the remote venv. Instead, patch_gui.py detects Table/PeakMap by the type name string returned from the kernel when a double-click occurs, then calls _inspect() directly in the remote shell to open the viewer without copying data across the process boundary.

Architecture

The project is a thin wrapper around Spyder that patches it at startup time. It does not fork Spyder — it installs alongside it and monkey-patches live classes before Spyder finishes booting.

Entry point: emzed_spyder.start:main imports patch_all, then delegates to spyder.app.start.main.

Patch modules (applied in strict order)

Module What it patches
patch_config.py Config folder location, splash/icon assets, theme, update checks, startup scripts
patch_gui.py Window title, variable explorer double-click, code completion filtering, IPython prompt, console working directory
patch_remote_kernel_startup.py Kernel spec (argv, env), console banner with ASCII art, active project/runtime status, and version check

The ordering is critical: set_remote_python_interpreter must run after all config patches because Spyder caches some config at import time.

Two-Venv Model

emzed.spyder uses two separate Python environments:

  • Spyder venv — runs the IDE itself (PyQt5, Spyder, emzed_spyder)
  • Remote venv (~/.emzed3/remote_venv/) — runs user code; contains emzed, emzed_gui, emzed_spyder_kernels

At startup, the remote venv is validated (required packages are imported to confirm they work) and recreated from scratch if invalid, downloading setup files from GitLab.

User projects each get their own .venv that inherits from the remote venv via a .pth file, avoiding re-installation of the heavy emzed stack.

CI/CD and Tooling

  • CI: GitLab CI (.gitlab-ci.yml)
  • Linting: ruff, black, flake8 via pre-commit hooks
  • Dependency management: uv
  • Platform notes: PyQt5 is pinned on Windows; uv environments are scoped to Linux and Windows (macOS uses system Qt)

Metadata

Release files for emzed-spyder 3.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for emzed-spyder 3.0.3
File Size Uploaded
emzed_spyder-3.0.3.tar.gz 4.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for emzed-spyder 3.0.3
File Interpreter ABI Platform
emzed_spyder-3.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 9.0 MB

Release files / emzed_spyder-3.0.3.tar.gz

Download URL emzed_spyder-3.0.3.tar.gz
Size 4.5 MB
Tags Source
SHA-256 checksum
How to use checksums
c83236fbe443f25f03ceaa7d9442301749a75f435709a437f162df9434191120
BLAKE2b-256 checksum
How to use checksums
3452a1826a498222c1d32a10ed52b9353408b397d105cb0842173ea581255927
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release files / emzed_spyder-3.0.3-py3-none-any.whl

Download URL emzed_spyder-3.0.3-py3-none-any.whl
Size 4.5 MB
Tags Python 3
SHA-256 checksum
How to use checksums
5b7ab10005511428c8f351d8b1bd94ce93beb195007f26618530f5fdd4cd487d
BLAKE2b-256 checksum
How to use checksums
156f948a0387d220d3ccbc8a9f79d32690787c8d4156857fe1b8e4546ecb711d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page