Skip to content

Add keyword classes and keys.list/describe services#13

Merged
mikelangmayr merged 2 commits intomainfrom
mike/keywords
Apr 27, 2026
Merged

Add keyword classes and keys.list/describe services#13
mikelangmayr merged 2 commits intomainfrom
mike/keywords

Conversation

@mikelangmayr
Copy link
Copy Markdown
Collaborator

  • add Keyword class to libby
  • add keyword types (bool, int, float, string, trigger)
  • update README

Comment thread libby/keyword.py
Copy link
Copy Markdown
Collaborator

@prkrtg prkrtg Apr 27, 2026

Choose a reason for hiding this comment

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

I think this makes it

        FloatKeyword(f"positionvalue{s}",
                     getter=lambda: self.controller.get_pos(self.device_key, self.axis),
                     setter=self._set_position,
                     validator=self._check_soft_limits,
                     units=self.units,
                     description="Stage position in engineering units."),

What about making a builder object?

from libby import (
    FloatKeyword
)

class KeywordBuilder:
    def __init__(self, daemon):
        self._daemon = daemon
        self._keywords = []

    def _add(self, kw):
        self._keywords.append(kw)
        return kw

    def float(self, name, *, get=None, set=None, units=None,
              description="", nullable=False, validator=None):
        return self._add(
            FloatKeyword(
                name,
                getter=get,
                setter=set,
                units=units,
                description=description,
                nullable=nullable,
                validator=validator,
            )
        )

Then in Hispec

class HispecDaemon:
    def __init__(self):
        self.keywords = KeywordBuilder(self)

def on_start(self, _libby):
    self.keywords.float(
        "position",
        get=lambda: self.controller.get_pos(...),
        set=self._set_position,
        units="mm",
        description="Stage position",
    )

@mikelangmayr mikelangmayr merged commit b5393bc into main Apr 27, 2026
@mikelangmayr mikelangmayr deleted the mike/keywords branch April 27, 2026 22:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants