Skip to content

Developer Guide

This section is for extending Laser Setup: writing new measurement procedures, adding instruments, defining parameters, and understanding the internals.

Prerequisites

  • You've followed the Tutorials and understand the experiment window, configuration and instruments.
  • You have a working dev environment: uv sync (see Installation).

Development conventions

  • Style: flake8 with max-line-length = 100, max-complexity = 15; F401 (unused import) is ignored in __init__.py files. Run it with:

    uv run --group dev flake8 laser_setup
    
  • Dependencies: add runtime deps to [project].dependencies and dev/docs tools to the matching [dependency-groups] in pyproject.toml, then uv lock to refresh uv.lock.

  • Python version: the repo pins 3.12 via .python-version so wheels are available for every dependency.
  • Build on PyMeasure. Before writing a procedure or instrument, skim the PyMeasure docs — Laser Setup reuses its Procedure, Parameter, Instrument and managed-window classes.