Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
13 changes: 13 additions & 0 deletions docs/resources/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
env:
metadata:
instrument: demo
sources:
- kind: deviceManager
module: blueapi.tutorial.devices
- kind: planFunctions
module: dodal.plans
- kind: planFunctions
module: dodal.plan_stubs.wrapped
stomp:
enabled: true
url: tcp://localhost:61613/
5 changes: 4 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ license.file = "LICENSE"
readme = "README.md"
requires-python = ">=3.11"

[project.optional-dependencies]
demo = ["dls-dodal>=1.69.0", "ophyd-async[sim]"]

[dependency-groups]
dev = [
"ophyd_async[sim]",
Expand Down Expand Up @@ -76,7 +79,7 @@ dev = [
"tiled[minimal-server]>=0.2.4", # For system-test of dls.py
"respx",
"pytest-xdist[psutil]",
"httpx2>=2.5.0"
"httpx2>=2.5.0",
]

[project.scripts]
Expand Down
Empty file.
31 changes: 31 additions & 0 deletions src/blueapi/tutorial/devices.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
from dodal.device_manager import DeviceManager
from ophyd_async import sim

devices = DeviceManager()


@devices.fixture
def path_provider():
from pathlib import Path

from ophyd_async.core import AutoIncrementFilenameProvider, StaticPathProvider

return StaticPathProvider(
AutoIncrementFilenameProvider(base_filename="demo"),
Path("/tmp"),
)


@devices.fixture
def pattern_generator():
return sim.PatternGenerator()


@devices.factory()
def stage(pattern_generator) -> sim.SimStage:
return sim.SimStage(pattern_generator)


@devices.factory()
def det(path_provider, pattern_generator) -> sim.SimBlobDetector:
return sim.SimBlobDetector(path_provider, pattern_generator)
18 changes: 18 additions & 0 deletions tests/unit_tests/tutorial/test_devices.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from pathlib import Path

import pytest

from blueapi.config import ApplicationConfig, ConfigLoader
from blueapi.core.context import BlueskyContext


@pytest.fixture
def context() -> BlueskyContext:
loader = ConfigLoader(ApplicationConfig)
loader.use_values_from_yaml(Path("docs/resources/config.yaml"))
config: ApplicationConfig = loader.load()
return BlueskyContext(configuration=config)


def test_devices_loaded_from_module(context):
assert "det", "stage" in context.devices
9 changes: 9 additions & 0 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.