Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
b2d9877
ENH: try uv and standardize pyproject.toml entrypoint stuff
ZLLentz Feb 21, 2026
fd1b76e
ENH: checkpoint, the builder builds something close to useful
ZLLentz Feb 27, 2026
2af82d3
ENH: add Makefile for convenient rebuild/iteration on layouts
ZLLentz Feb 27, 2026
baa28cd
ENH: implement more automation for setting up designer entrypoints
ZLLentz Feb 27, 2026
a42684e
FIX/ENH: resolve circular imports, make widget discovery even more au…
ZLLentz Feb 27, 2026
2f85811
FIX: don't re-make when just the version updates
ZLLentz Feb 27, 2026
d6b41c2
MNT: normalize generated base class names
ZLLentz Feb 27, 2026
65aece1
REF: reduce complexity of build function by splitting it up
ZLLentz Feb 27, 2026
434d655
ENH: add designer dialog extensions for macro and rules to auto widgets
ZLLentz Feb 27, 2026
2d6b9d8
ENH: add icons to the widgets I added recently
ZLLentz Feb 28, 2026
33fc0c1
DOC: rewrite the readme
ZLLentz Feb 28, 2026
cd8eb26
Merge branch 'master' into enh_motor_widgets
ZLLentz Feb 28, 2026
b9b205c
ENH: plausible starting point for ensuring pyuic compilation at packa…
ZLLentz Mar 10, 2026
41cd57b
TST: add some basic end to end tests for the builder
ZLLentz Mar 10, 2026
0ca4b74
TST: compare classes with issubclass, not isinstance
ZLLentz Mar 10, 2026
40a7208
FIX: add missing __init__.py to make builder a real module
ZLLentz Mar 10, 2026
d8cb67c
BLD: rename docs to doc to match CI expectation
ZLLentz Mar 10, 2026
8ef8224
BLD: try to include the makefile too? Is that why it doesn't make?
ZLLentz Mar 10, 2026
b0e09d3
BLD: the Makefile didn't matter
ZLLentz Mar 10, 2026
b25a942
BLD: setup.py was in the wrong directory...
ZLLentz Mar 10, 2026
556b02c
BLD: specify build dependencies required to make
ZLLentz Mar 10, 2026
128838e
BLD: add build requirements to the conda recipe too
ZLLentz Mar 10, 2026
7fe378f
MNT: uv.lock updated for docs -> doc
ZLLentz Mar 10, 2026
30d7139
CI: try different way of running conda tests
ZLLentz Mar 12, 2026
d57d57f
TST: add tests that we included all the widgets in the entrypoint pro…
ZLLentz Mar 12, 2026
f2bd11c
BLD: add tomlkit as a test dependency for the new test
ZLLentz Mar 12, 2026
3b0c16c
FIX: not every widget was included
ZLLentz Mar 12, 2026
cddac2f
STY: automatic fixes from pre-commit run --all-files
ZLLentz Mar 12, 2026
96bd725
STY: manual fixes from pre-commit output
ZLLentz Mar 12, 2026
b487207
BLD: jinja2 is needed to run the tests now
ZLLentz Mar 12, 2026
1cec097
TST: add missing conda test requirements
ZLLentz Mar 12, 2026
daf7b01
TST: remove the toml test, it's extra and can't work with the install…
ZLLentz Mar 12, 2026
77ffcc4
DOC/TST: add sizing/naming rules and make failing test with existing …
ZLLentz Mar 18, 2026
90101ac
MNT: add vscode settings folder to gitignore
ZLLentz Mar 18, 2026
ef3a6b3
MNT/DOC: align first set of composite widget names with convention
ZLLentz Mar 18, 2026
1e6bba1
FIX: avoid circular imports by not importing from pydm.widgets.qtplugins
ZLLentz Mar 18, 2026
d765416
TST: make it more clear why this test has failed
ZLLentz Mar 18, 2026
fd6e880
MNT: settle on size constraints
ZLLentz Mar 18, 2026
208e56d
FIX: make smaract row conform to conventions
ZLLentz Mar 18, 2026
a08f803
FIX: parent the macro editor so it appears in a good location on screen
ZLLentz Mar 18, 2026
5351089
MNT: correct type annotation
ZLLentz Mar 18, 2026
4573b5d
FIX: make the dialog's changes actually save properly
ZLLentz Mar 18, 2026
934f56d
MNT/STY: update pre-commit versions and re-run
ZLLentz Mar 19, 2026
d859a70
BLD: we probably don't need the ui source in the distribution
ZLLentz Mar 19, 2026
cdf7c70
DOC: fix out of date example
ZLLentz Mar 19, 2026
09953d1
DOC: clarify
ZLLentz Mar 19, 2026
ca6a634
DOC: nitpick tense, phrasing
ZLLentz Mar 19, 2026
6574b48
MNT: remove flake8 settings clutter, we are using ruff now
ZLLentz Mar 20, 2026
0b3780d
MNT: update copyright year
ZLLentz Mar 20, 2026
17b40f1
FIX: motor record fields should get precision from PV
ZLLentz Mar 20, 2026
4d67746
ENH: make it much easier to set up a proper python environment for in…
ZLLentz Mar 25, 2026
ff6282e
CI: try the specific pyqt version we use in prod
ZLLentz Mar 25, 2026
d11f0c8
CI: try unpinned, which is what this repo was doing previously
ZLLentz Mar 25, 2026
7a779d7
CI: try adding docs build extra
ZLLentz Mar 25, 2026
bec6973
FIX: only iterate over the macros found in this widget
ZLLentz Mar 27, 2026
f313a17
MNT: stay in-process for generatic uic files
ZLLentz Mar 27, 2026
58f19ec
MNT: switch to new name for ruff-check hook
ZLLentz Mar 27, 2026
650e69b
ENH: use a real parser to give feedback when the build script is used…
ZLLentz Mar 27, 2026
caffd98
MNT: skip checking the generated ui directory for designer widgets
ZLLentz Mar 27, 2026
725f47e
TST: first pass at some probably broken tests for the builder
ZLLentz Mar 27, 2026
5655337
TST: fix names in test ui
ZLLentz Mar 27, 2026
be2989f
FIX: make macro regex non-greedy to be able to parse multiple macros …
ZLLentz Mar 27, 2026
431a5da
DOC: update the readme with dev instructions and a new limitation
ZLLentz Mar 28, 2026
7fdc872
STY: nitpick the newline spacing for generated base file
ZLLentz Mar 28, 2026
dd7ecf8
TST: switch the test case to the variant we already support in the code
ZLLentz Mar 28, 2026
a6a4057
TST: fix lingering typos and misunderstandings about how inspect works
ZLLentz Mar 28, 2026
ca3a53f
BLD: try specifying qtpy as a build dep
ZLLentz Mar 28, 2026
895aa14
BLD: also add qtpy as a conda build dependency
ZLLentz Mar 28, 2026
951cacb
DOC: update some missing info on env setup for
ZLLentz Apr 2, 2026
dc2a5ce
TST: formally address container widget sizing in the test suite
ZLLentz Apr 8, 2026
08e49f3
DOC: update pull request template for a custom-made pre-merge checkli…
ZLLentz Apr 8, 2026
48d4d57
DOC: correct error, use correct font awesome prefix
ZLLentz Apr 8, 2026
1dc000c
MNT: sanitize pythonpath variable in try script to avoid pollution
ZLLentz Apr 8, 2026
22acd5f
TST: fix typo in assert
ZLLentz Apr 8, 2026
0914cf5
DOC: clarify the off-limits folders for widgets
ZLLentz Apr 8, 2026
0cc39d2
WIP: large reorganization/rework/extension from review for better UX,…
ZLLentz Apr 9, 2026
03cb5c8
FIX: use path to python executable, not source, doesn't work like tha…
ZLLentz Apr 9, 2026
5dc699e
FIX: fix some of the more obvious problems in builder
ZLLentz Apr 9, 2026
b15f281
FIX: checkpoint, many things work now. Probably not the unit tests.
ZLLentz Apr 9, 2026
6b89e36
FIX: files missed in last commit
ZLLentz Apr 9, 2026
0ecb99e
ENH: formatting consistency in builds, small tweaks
ZLLentz Apr 10, 2026
1652da3
DOC: clarify makefile comment
ZLLentz Apr 10, 2026
656dd78
MNT: rename all of the widget groups for consistency
ZLLentz Apr 10, 2026
4364529
MNT: no longer require external env variable
ZLLentz Apr 10, 2026
6e3d084
DOC: update docs for recent changes
ZLLentz Apr 10, 2026
5e536b1
MNT: include 7 day delay for autobuilt envs in this repo
ZLLentz Apr 10, 2026
b4c13e9
BLD: fix venv builds using too old pip and related issues
ZLLentz Apr 10, 2026
fe1229c
DOC: update readme with one more note about designer widget order
ZLLentz Apr 10, 2026
c7f9b99
DOC/MNT: update guidance and rename widgets
ZLLentz Apr 10, 2026
e2bd95f
FIX: reduce content margins to match outer frame position to other ro…
ZLLentz Apr 10, 2026
c5a4c9d
FIX: add missing HLS, LLS PVs to indicators
ZLLentz Apr 10, 2026
a3e2af2
TST: slightly extend and repair test suite
ZLLentz Apr 10, 2026
d49e7fd
CI: back to standard (updated) CI workflow
ZLLentz Apr 10, 2026
0ec77b3
FIX: use explicit recursive make steps in all target to ensure order …
ZLLentz Apr 13, 2026
14176c7
ENH: generate enum with icon options to make selecting icon nicer
ZLLentz Apr 14, 2026
28532fb
ENH: add a quick gui that launches and can show all the available ico…
ZLLentz Apr 14, 2026
d416684
FIX: expose only valid icons that render cleanly
ZLLentz Apr 14, 2026
1697982
DOC: add documentation to the icon options getter
ZLLentz Apr 14, 2026
104f094
MNT: avoid updating init filestamps if they already exist, allows us …
ZLLentz Apr 14, 2026
dfc2cf4
DOC: readme content tweaks and additions
ZLLentz Apr 14, 2026
40025b8
DOC: rework widget instructions in tutorial form
ZLLentz Apr 14, 2026
d75dcb5
DOC: manual nitpicks and response to review
ZLLentz Apr 16, 2026
939a5ff
DOC: apply spelling and consistency fixes from LLM
ZLLentz Apr 16, 2026
89ed66c
DOC: missed a spot for literal
ZLLentz Apr 16, 2026
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
23 changes: 0 additions & 23 deletions .flake8

This file was deleted.

26 changes: 0 additions & 26 deletions .github/ISSUE_TEMPLATE.md

This file was deleted.

15 changes: 12 additions & 3 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,15 @@
<!-- Include where the changes made have been documented. -->
<!-- This can simply be a comment in the code or updating a docstring -->

<!--
## Screenshots (if appropriate):
-->
## Screenshots
<!-- Include a screenshot of the related widgets in designer and in pydm -->

## Pre-merge Checklist
- [ ] Screenshots of these widgets in designer are included above (`try_in_designer.sh`)
- [ ] Screenshots of these widgets working in PyDM are included above (`try_in_pydm.sh`)
- [ ] Code works interactively
- [ ] Code contains descriptive docstrings, including context and API
- [ ] New/changed functions and methods are covered in the test suite where possible
- [ ] New/changed widgets are part of the test suite (semi-automatic)
- [ ] Test suite passes locally
- [ ] Test suite passes on GitHub Actions
4 changes: 3 additions & 1 deletion .github/workflows/standard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ jobs:
# Extras to be installed only for conda-based testing:
conda-testing-extras: ""
# Extras to be installed only for pip-based testing:
pip-testing-extras: ""
pip-testing-extras: "PyQt5"
# Extras to be installed only for docs builds (pip)
docs-build-extras: "PyQt5"
# Set if using setuptools-scm for the conda-build workflow
use-setuptools-scm: true
13 changes: 10 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,6 @@ target/
# Jupyter Notebook
.ipynb_checkpoints

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

Expand Down Expand Up @@ -106,3 +103,13 @@ venv.bak/

# mypy
.mypy_cache/

# setuptools_scm
*/_version.py

# pyuic5
**/ui/*.py
Comment thread
KaushikMalapati marked this conversation as resolved.
!**/ui/__init__.py

# vscode
.vscode/*
45 changes: 21 additions & 24 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,25 @@ exclude: |
)$

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: no-commit-to-branch
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-ast
- id: check-case-conflict
- id: check-json
- id: check-merge-conflict
- id: check-symlinks
- id: check-xml
- id: check-yaml
exclude: '^(conda-recipe/meta.yaml)$'
- id: debug-statements
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: no-commit-to-branch
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-ast
- id: check-case-conflict
- id: check-json
- id: check-merge-conflict
- id: check-symlinks
- id: check-xml
- id: check-yaml
exclude: '^(conda-recipe/meta.yaml)$'
- id: debug-statements

- repo: https://github.com/pycqa/flake8.git
rev: 7.2.0
hooks:
- id: flake8

- repo: https://github.com/timothycrosley/isort
rev: 6.0.1
hooks:
- id: isort
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.15.6
hooks:
- id: ruff-check # run the linter
args: [ --fix ] # and the safe fixes
Comment thread
KaushikMalapati marked this conversation as resolved.
- id: ruff-format # run the formatter
1 change: 1 addition & 0 deletions .python-version
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No way uv wants this here instead of in the pyproject.toml.

What a funny little file

Copy link
Copy Markdown
Member Author

@ZLLentz ZLLentz Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's kind of funny, I think the ethos is that this is "main" maintained python version for the repo while the pyproject.toml documents the compatibility range

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.12
2 changes: 1 addition & 1 deletion LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright (c) 2023, The Board of Trustees of the Leland Stanford Junior
Copyright (c) 2026, The Board of Trustees of the Leland Stanford Junior
University, through SLAC National Accelerator Laboratory (subject to receipt
of any required approvals from the U.S. Dept. of Energy). All rights reserved.
Redistribution and use in source and binary forms, with or without
Expand Down
6 changes: 0 additions & 6 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
include pcdswidgets/_version.py

include AUTHORS.rst
include CONTRIBUTING.rst
include LICENSE.md
include MANIFEST.in
include README.md

include dev-requirements.txt
include docs-requirements.txt
include requirements.txt
51 changes: 51 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
.PHONY: all build inits venv

UI_SOURCE := $(wildcard pcdswidgets/ui/*/*/*.ui)
PY_SOURCE := $(filter-out pcdswidgets/builder/ui/%.py, $(filter-out pcdswidgets/_version.py, $(shell find pcdswidgets -name "*.py")))

PY_FORM := $(UI_SOURCE:pcdswidgets/ui/%.ui=pcdswidgets/generated/%_form.py)
PY_BASE := $(UI_SOURCE:pcdswidgets/ui/%.ui=pcdswidgets/generated/%_base.py)
PY_MAIN := $(UI_SOURCE:pcdswidgets/ui/%.ui=pcdswidgets/%.py)

BIN := .venv/bin
BUILD_CMD := $(BIN)/python -m pcdswidgets.builder.build
CHECK_FIX := $(BIN)/ruff check --exit-zero --fix --quiet
FORMAT := $(BIN)/ruff format --quiet

# We need to update the venv before doing any step and after doing all of them
# The order matters here, except the py files in the build target could be done in any order
all:
$(MAKE) venv
$(MAKE) build
$(MAKE) inits
$(MAKE) pyproject.toml
$(MAKE) venv

build: $(PY_FORM) $(PY_BASE) $(PY_MAIN) inits

# Need to re-run form and base if the ui file is updated
$(PY_FORM): pcdswidgets/generated/%_form.py: pcdswidgets/ui/%.ui
$(BUILD_CMD) uic $^
$(CHECK_FIX) $@
$(FORMAT) $@

$(PY_BASE): pcdswidgets/generated/%_base.py: pcdswidgets/ui/%.ui
$(BUILD_CMD) base $^
$(CHECK_FIX) $@
$(FORMAT) $@

# Only run if the target is missing: user can edit these
$(PY_MAIN):
$(BUILD_CMD) main $(@:pcdswidgets/%.py=pcdswidgets/ui/%.ui)
$(CHECK_FIX) $@
$(FORMAT) $@

inits:
$(BIN)/python -m pcdswidgets.builder.inits

# Rerun if any python file is updated
pyproject.toml: $(PY_SOURCE)
$(BIN)/python -m pcdswidgets.builder.entrypoint_finder

venv:
./build_local_venv.sh
Loading
Loading