Skip to content

Define the top-level public API namespace (flat vs nested) #406

Description

@coretl

Spun out of the #388 DataType-drop work — the new *Meta types need a home, but the question is broader than that.

Decision to make

Adopt ophyd-async's big flat namespace (from fastcs import Controller, AttrRW, AttrR, attr, FloatMeta, ControllerFiller, ControllerRunner, ReadWriteIO, ..., mirroring from ophyd_async.core import ...) or keep the current nested structure (fastcs.attributes, fastcs.datatypes, fastcs.controllers, fastcs.methods, ...).

Why now

The refactor introduces a batch of new public names — the *Meta TypedDicts, the attr factory, ReadIO/WriteIO/ReadWriteIO, ControllerFiller, ControllerRunner, ConnectionFailedError, the Array1D/Table hints. Where they are exported from is the moment to settle flat-vs-nested: it is an API-convergence "false friend" surface (#388) and a breaking change best made pre-1.0.

Scope

  • Produce an ADR proposing flat vs nested, showing the import surface a downstream driver author sees, with the ophyd-async comparison.
  • Decide the canonical public export surface. Feature PRs (getter/setter IO rework; remove AttributeIORef and AttributeIO #392 etc.) may land new names in provisional modules and be re-exported/moved once this is settled — so this gates final module paths but does not block feature work.

Note

Design decision — settle with the team (produces an ADR). Not for the autonomous nightly job to churn import moves before it is decided.

Parent: #388
Blocked by: none

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    decisionDesign decision to settle with the team (produces an ADR); not for the autonomous nightly job

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions