Skip to content

WIP: What is the current state of the refactor#402

Draft
coretl wants to merge 11 commits into
mainfrom
refactor
Draft

WIP: What is the current state of the refactor#402
coretl wants to merge 11 commits into
mainfrom
refactor

Conversation

@coretl

@coretl coretl commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

This PR is not to be merged, but is there so we can make drive-by comments on lines of code as we see them be accepted in PRs into the refactor branch. When we are happy we will flip this PR to non-draft and this will become what is merged.

@coderabbitai

coderabbitai Bot commented Jul 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 159a1278-a881-4372-9f3f-69420c6a90ac

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Jul 20, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 91.25%. Comparing base (8c54354) to head (85df0f5).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #402   +/-   ##
=======================================
  Coverage   91.25%   91.25%           
=======================================
  Files          72       72           
  Lines        2892     2892           
=======================================
  Hits         2639     2639           
  Misses        253      253           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Comment thread docs/explanations/decisions/0019-embedded-ophyd-async-connector.md Outdated
Comment thread docs/explanations/decisions/0019-embedded-ophyd-async-connector.md Outdated
Comment on lines +154 to +159
3. Where does `@scan`-derived state that isn't exposed as a `Signal` go —
is it simply invisible to ophyd-async (server-side only, as the mapping
table states), or does some `@scan` output need a path to surface as a
`SignalR` (e.g. `fastcs-eiger`'s `update_voltages` `@scan` feeding
per-ramp `AttrR`s — those `AttrR`s are visible, but would a *pure*
`@scan`-only value ever need exposing)?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I don't understand this. Isn't @scan just driving the update? Doesn't all the data have to go in Attr instances anyway which are mapped to Signals?

@shihab-dls have I missed something?

Comment thread docs/explanations/decisions/0019-embedded-ophyd-async-connector.md Outdated
Comment thread docs/explanations/decisions/0019-embedded-ophyd-async-connector.md Outdated
coretl and others added 2 commits July 21, 2026 10:09
Incorporate coretl's inline review decisions: drop DataType (python types +
*Meta), unify callback IO into the @attr factory, the __init__ filler rule +
no-hints/Optional/external-add, nested Limits with inheritance, get_setpoint +
ControllerRunner(start/stop) owning reconnect, severity enum, args/returns
typed separately (kwargs -> spike #403), enum/Table handling, and dropping the
Device.disconnect proposal for connect(force_reconnect=True) + atexit. Remaining
deferred items (@shihab-dls, @Tom-Willemsen) kept as explicit open questions.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LgnovZ7FWY8YptwqiufTbX
Define the *Meta TypedDicts + Unpack overloads for the procedural spelling,
the superset Meta for generic extras (SCPIParam), attribute-stored resolved
meta, and the filler's runtime validation of annotated metadata against the
datatype. Clarify in ADR 13 that hinted attributes exist after __init__ (filler
creates them unfilled), not after initialise(). Module home for the new names
deferred to #406 (top-level API namespace: flat vs nested).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LgnovZ7FWY8YptwqiufTbX
Per @Tom-Willemsen on PR #402 (r3621453680): SECoP devices are discovered
entirely from an over-the-wire `describe`, so you never statically know
something is a command without knowing its signature. There is no "known
command, unknown args" middle case — P/T are either completely known
(static `Command[P, T]`) or the whole structure is unknown (built at
runtime). Remove the `Any` args/returns option and the `Command[Any, Any]`
consequence; resolve the open question awaiting @Tom-Willemsen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LgnovZ7FWY8YptwqiufTbX
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.

3 participants