Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

pycontrol-install

pycontrol-install manages the lifecycle of a global pyControl app. It installs pycontrol-gui and the pycontrol CLI with uv tool install, switches between published and editable local sources, updates and uninstalls the app, scaffolds plain-data workspaces, and manages the OS launcher.

Complete lifecycle

1. Install the manager

Install uv, then install pycontrol-install as a uv tool:

uv tool install --prerelease if-necessary-or-explicit pycontrol-install

For development of the manager itself, install its checkout as editable instead:

ROOT="/Users/lustiga/HHMI Dropbox/Andy Lustig/Code/karpova_lab/pyControl/rewrite"
uv tool install --editable "$ROOT/pycontrol-install"

Edits under pycontrol-install/src/ are then immediately live.

2. Install and launch pyControl

Install the published core and GUI, create a workspace, remember it, optionally create an OS launcher, and launch:

pycontrol-install my-workspace --launch

The workspace is pure data: it has no virtual environment, lockfile, or launcher script. After setup, launch the remembered workspace from the OS launcher or from any terminal:

pycontrol-gui

To initialize the current directory as the workspace, pass . explicitly:

pycontrol-install . --launch

To install the app without creating a workspace:

pycontrol-install

3. Switch to editable local core and GUI sources

Point the global app at sibling pycontrol-core/ and pycontrol-gui/ checkouts:

pycontrol-install --use-local "$ROOT"
pycontrol-gui

The global commands and OS launcher stay the same. Python source edits in both checkouts are immediately live; no reinstall is needed. Ordinary pycontrol-install workspace operations preserve this local mode.

--update-gui intentionally stops in local mode because replacing editable sources during an update would be surprising. Use Git to update the checkouts, or explicitly switch back to PyPI.

4. Switch back to published packages

pycontrol-install --use-pypi

This replaces both editable checkouts with the newest published core and GUI, while preserving installed optional extras.

5. Update published pyControl

pycontrol-install --update-gui

This refreshes the package index and reinstalls the newest published packages, preserving optional extras. It refuses to replace a local editable install; run --use-pypi first. uv tool upgrade pycontrol-gui is also available for published installs.

To update the separately installed manager:

uv tool upgrade pycontrol-install

An editable manager checkout does not need upgrading because its source edits are already live.

6. Uninstall

Remove the pyControl app, OS launcher, and all GUI QSettings:

pycontrol-install --uninstall

This removes the pycontrol-gui uv tool environment, including the injected core CLI. It deliberately leaves pycontrol-install available for a future reinstall. Remove the manager too when it is no longer wanted:

uv tool uninstall pycontrol-install

Usage

pycontrol-install [path] [--launch] [--force] [--shortcut | --no-shortcut]
pycontrol-install {--update-gui | --use-local ROOT | --use-pypi | --uninstall}

Without path, only the app is installed — no workspace is created or touched. Pass a path (. for the current directory) to also scaffold and remember a workspace; relative paths are resolved from the directory where the command is run. Re-running pycontrol-install is safe: the current PyPI or local source mode is preserved and workspace scaffolding is a safe merge.

Examples:

pycontrol-install                         # install/refresh the app only
pycontrol-install my-workspace --launch
pycontrol-install ~/pycontrol-workspaces/ws1 --with-slack
pycontrol-install my-workspace --no-shortcut

Integration helpers

Optional integration dependencies are installed into the global tool environment:

pycontrol-install my-workspace --with-slack
pycontrol-install my-workspace --with-notion
pycontrol-install my-workspace --with-s3
pycontrol-install my-workspace --with-integrations

To add an integration to an existing install without touching any workspace, combine it with --update-gui:

pycontrol-install --update-gui --with-slack

Analysis helpers

Install pandas dataframe support into the global app environment with:

pycontrol-install --with-analysis

This is separate from --with-integrations, which installs only the Slack, Notion, and S3 helpers. Re-running the installer or using --update-gui preserves the analysis extra recorded in the uv tool receipt.

Release smoke tests

Package indexes can be overridden:

pycontrol-install test-workspace \
  --index-url https://test.pypi.org/simple/ \
  --extra-index-url https://pypi.org/simple/

Development

uv sync --group dev
uv run pytest
uv run ruff check src tests

Release files for pycontrol-install 0.1.0a3

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

Source distribution (sdist)

Source distribution for pycontrol-install 0.1.0a3
File Size Uploaded
pycontrol_install-0.1.0a3.tar.gz 21.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pycontrol-install 0.1.0a3
File Interpreter ABI Platform
pycontrol_install-0.1.0a3-py3-none-any.whl Python 3 none any Details

Total release size: 35.7 kB

Release files / pycontrol_install-0.1.0a3.tar.gz

Download URL pycontrol_install-0.1.0a3.tar.gz
Size 21.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b95ae3c72ed0af0bbeeed488504fc7d0cc1b4784cefa64a68da3f79389810895
BLAKE2b-256 checksum
How to use checksums
a6d690b5674a9897f471c516140ca342ca3fe587098c499f77d6a6d3d5672a90
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / pycontrol_install-0.1.0a3-py3-none-any.whl

Download URL pycontrol_install-0.1.0a3-py3-none-any.whl
Size 14.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
845088b25657c5c6fe6b9a9b8931c08f4f02b445af6145237e91ac52187cf256
BLAKE2b-256 checksum
How to use checksums
6ebe6dd7f6257e44085069ed554151a341750e30f42528b851a8030aff7a2c4b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0
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