msw-tasks-core 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. msw_tasks_core-0.2.0/.gitignore +9 -0
  2. msw_tasks_core-0.2.0/LICENSE +0 -0
  3. msw_tasks_core-0.2.0/PKG-INFO +65 -0
  4. msw_tasks_core-0.2.0/README.md +40 -0
  5. msw_tasks_core-0.2.0/VERSION +1 -0
  6. msw_tasks_core-0.2.0/pyproject.toml +129 -0
  7. msw_tasks_core-0.2.0/src/murineshiftwork/_version.py +24 -0
  8. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_calibration_liquid_dynamic/__init__.py +0 -0
  9. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_calibration_liquid_dynamic/task.py +660 -0
  10. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_calibration_liquid_dynamic/task.yaml +47 -0
  11. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_calibration_liquid_static/task.py +214 -0
  12. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_calibration_liquid_static/task.yaml +23 -0
  13. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_calibration_sound_latency/task.py +90 -0
  14. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_test_barcode_iti/task.py +168 -0
  15. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_test_barcode_iti/task.yaml +15 -0
  16. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_test_bpod_connect/task.py +54 -0
  17. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_test_bpod_connect/task.yaml +2 -0
  18. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_test_flush_valves/task.py +77 -0
  19. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_test_flush_valves/task.yaml +27 -0
  20. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_test_minimal_task/task.py +49 -0
  21. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_test_pulsepal_connect/task.py +52 -0
  22. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_test_pulsepal_connect/task.yaml +3 -0
  23. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_test_stage_move/task.py +196 -0
  24. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_test_ttl_barcodes/task.py +89 -0
  25. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_test_ttl_outputs/task.py +48 -0
  26. msw_tasks_core-0.2.0/src/murineshiftwork/tasks/_test_video/task.py +111 -0
  27. msw_tasks_core-0.2.0/tests/data.placeholder.txt +1 -0
@@ -0,0 +1,9 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.egg-info/
4
+ dist/
5
+ build/
6
+ .eggs/
7
+ .venv/
8
+ *.so
9
+ src/murineshiftwork/_version.py
File without changes
@@ -0,0 +1,65 @@
1
+ Metadata-Version: 2.4
2
+ Name: msw-tasks-core
3
+ Version: 0.2.0
4
+ Summary: Murine Shift Work core tasks: liquid/sound calibration and hardware test protocols.
5
+ Author-email: "Lars B. Rollik" <lars@rollik.me>
6
+ License-File: LICENSE
7
+ Requires-Python: >=3.12
8
+ Requires-Dist: msw-core>=0.1.0
9
+ Requires-Dist: numpy
10
+ Requires-Dist: one-axis-stage
11
+ Requires-Dist: pybpod-api
12
+ Requires-Dist: pyyaml
13
+ Requires-Dist: tqdm
14
+ Provides-Extra: dev
15
+ Requires-Dist: commitizen; extra == 'dev'
16
+ Requires-Dist: mypy; extra == 'dev'
17
+ Requires-Dist: pre-commit; extra == 'dev'
18
+ Requires-Dist: pytest; extra == 'dev'
19
+ Requires-Dist: pytest-cov; extra == 'dev'
20
+ Requires-Dist: ruff; extra == 'dev'
21
+ Provides-Extra: docs
22
+ Requires-Dist: mkdocs-material; extra == 'docs'
23
+ Requires-Dist: mkdocstrings[python]; extra == 'docs'
24
+ Description-Content-Type: text/markdown
25
+
26
+ # msw-tasks-core
27
+
28
+ Core task set for [Murine Shift Work](https://github.com/MurineShiftWork/murineshiftwork):
29
+ liquid and sound calibration protocols, plus minimal hardware test tasks.
30
+
31
+ Installs as a namespace contributor to `murineshiftwork.tasks.*`.
32
+ Tasks are discoverable by the `msw` CLI via both namespace path scan and `msw.tasks` entry points.
33
+
34
+ ## Installation
35
+
36
+ ```bash
37
+ pip install msw-tasks-core
38
+ ```
39
+
40
+ Requires `murineshiftwork` to be installed.
41
+
42
+ ## Tasks included
43
+
44
+ **Calibration**
45
+ - `_calibration_liquid_dynamic` - dynamic liquid volume calibration
46
+ - `_calibration_liquid_static` - static liquid volume calibration
47
+ - `_calibration_sound_latency` - sound output latency measurement
48
+
49
+ **Hardware tests**
50
+ - `_test_bpod_connect` - verify Bpod serial connection
51
+ - `_test_flush_valves` - flush all Bpod valve ports
52
+ - `_test_minimal_task` - minimal state-machine smoke test
53
+ - `_test_pulsepal_connect` - verify PulsePal connection
54
+ - `_test_stage_move` - exercise one-axis stage movement
55
+ - `_test_ttl_barcodes` - TTL barcode encoding/decoding test
56
+ - `_test_ttl_outputs` - BNC TTL output test
57
+ - `_test_barcode_iti` - barcode-in-ITI timing test
58
+ - `_test_video` - video acquisition smoke test
59
+
60
+ ## Development
61
+
62
+ ```bash
63
+ # from workspace root
64
+ uv sync
65
+ ```
@@ -0,0 +1,40 @@
1
+ # msw-tasks-core
2
+
3
+ Core task set for [Murine Shift Work](https://github.com/MurineShiftWork/murineshiftwork):
4
+ liquid and sound calibration protocols, plus minimal hardware test tasks.
5
+
6
+ Installs as a namespace contributor to `murineshiftwork.tasks.*`.
7
+ Tasks are discoverable by the `msw` CLI via both namespace path scan and `msw.tasks` entry points.
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ pip install msw-tasks-core
13
+ ```
14
+
15
+ Requires `murineshiftwork` to be installed.
16
+
17
+ ## Tasks included
18
+
19
+ **Calibration**
20
+ - `_calibration_liquid_dynamic` - dynamic liquid volume calibration
21
+ - `_calibration_liquid_static` - static liquid volume calibration
22
+ - `_calibration_sound_latency` - sound output latency measurement
23
+
24
+ **Hardware tests**
25
+ - `_test_bpod_connect` - verify Bpod serial connection
26
+ - `_test_flush_valves` - flush all Bpod valve ports
27
+ - `_test_minimal_task` - minimal state-machine smoke test
28
+ - `_test_pulsepal_connect` - verify PulsePal connection
29
+ - `_test_stage_move` - exercise one-axis stage movement
30
+ - `_test_ttl_barcodes` - TTL barcode encoding/decoding test
31
+ - `_test_ttl_outputs` - BNC TTL output test
32
+ - `_test_barcode_iti` - barcode-in-ITI timing test
33
+ - `_test_video` - video acquisition smoke test
34
+
35
+ ## Development
36
+
37
+ ```bash
38
+ # from workspace root
39
+ uv sync
40
+ ```
@@ -0,0 +1 @@
1
+ 0.2.0
@@ -0,0 +1,129 @@
1
+ [build-system]
2
+ requires = ["hatchling", "hatch-vcs"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "msw-tasks-core"
7
+ dynamic = ["version"]
8
+ description = "Murine Shift Work core tasks: liquid/sound calibration and hardware test protocols."
9
+ readme = { file = "README.md", content-type = "text/markdown" }
10
+ license = { file = "LICENSE" }
11
+ authors = [
12
+ { name = "Lars B. Rollik", email = "lars@rollik.me" },
13
+ ]
14
+ requires-python = ">=3.12"
15
+ dependencies = [
16
+ "msw-core>=0.1.0",
17
+ "pybpod-api",
18
+ "numpy",
19
+ "tqdm",
20
+ "one-axis-stage",
21
+ "pyyaml",
22
+ ]
23
+
24
+ [project.optional-dependencies]
25
+ dev = [
26
+ "commitizen",
27
+ "pytest",
28
+ "pytest-cov",
29
+ "pre-commit",
30
+ "ruff",
31
+ "mypy",
32
+ ]
33
+ docs = [
34
+ "mkdocs-material",
35
+ "mkdocstrings[python]",
36
+ ]
37
+
38
+ # ---------------------------------------------------------------------------
39
+ # Task entry-point registration
40
+ # Bundled tasks are also discoverable via murineshiftwork.tasks namespace scan.
41
+ # ---------------------------------------------------------------------------
42
+
43
+ [project.entry-points."msw.tasks"]
44
+ _calibration_liquid_dynamic = "murineshiftwork.tasks._calibration_liquid_dynamic.task"
45
+ _calibration_liquid_static = "murineshiftwork.tasks._calibration_liquid_static.task"
46
+ _calibration_sound_latency = "murineshiftwork.tasks._calibration_sound_latency.task"
47
+ _test_bpod_connect = "murineshiftwork.tasks._test_bpod_connect.task"
48
+ _test_flush_valves = "murineshiftwork.tasks._test_flush_valves.task"
49
+ _test_minimal_task = "murineshiftwork.tasks._test_minimal_task.task"
50
+ _test_pulsepal_connect = "murineshiftwork.tasks._test_pulsepal_connect.task"
51
+ _test_stage_move = "murineshiftwork.tasks._test_stage_move.task"
52
+ _test_ttl_barcodes = "murineshiftwork.tasks._test_ttl_barcodes.task"
53
+ _test_ttl_outputs = "murineshiftwork.tasks._test_ttl_outputs.task"
54
+ _test_barcode_iti = "murineshiftwork.tasks._test_barcode_iti.task"
55
+ _test_video = "murineshiftwork.tasks._test_video.task"
56
+
57
+ # ---------------------------------------------------------------------------
58
+ # Build
59
+ # ---------------------------------------------------------------------------
60
+
61
+ [tool.hatch.version]
62
+ source = "vcs"
63
+ fallback-version = "0.1.0"
64
+
65
+ [tool.hatch.build.hooks.vcs]
66
+ version-file = "src/murineshiftwork/_version.py"
67
+
68
+ [tool.hatch.build.targets.wheel]
69
+ packages = ["src/murineshiftwork"]
70
+ artifacts = [
71
+ "src/murineshiftwork/**/*.yaml",
72
+ ]
73
+
74
+ [tool.hatch.build.targets.sdist]
75
+ include = [
76
+ "/src/murineshiftwork",
77
+ "/tests",
78
+ "/README.md",
79
+ "/LICENSE",
80
+ "/pyproject.toml",
81
+ "/VERSION",
82
+ ]
83
+
84
+ # ---------------------------------------------------------------------------
85
+ # Pytest
86
+ # ---------------------------------------------------------------------------
87
+
88
+ [tool.pytest.ini_options]
89
+ testpaths = ["tests"]
90
+ addopts = "--cov=src/murineshiftwork --durations=0"
91
+
92
+ # ---------------------------------------------------------------------------
93
+ # Ruff
94
+ # ---------------------------------------------------------------------------
95
+
96
+ [tool.ruff]
97
+ line-length = 88
98
+ indent-width = 4
99
+ src = ["src"]
100
+
101
+ [tool.ruff.lint]
102
+ select = ["E", "W", "F", "I", "UP", "YTT", "SIM", "PTH"]
103
+ ignore = ["E501"]
104
+ fixable = ["ALL"]
105
+
106
+ [tool.ruff.format]
107
+ quote-style = "double"
108
+ indent-style = "space"
109
+ line-ending = "auto"
110
+
111
+ # ---------------------------------------------------------------------------
112
+ # Mypy
113
+ # ---------------------------------------------------------------------------
114
+
115
+ [tool.mypy]
116
+ python_version = "3.12"
117
+ ignore_missing_imports = true
118
+
119
+ # ---------------------------------------------------------------------------
120
+ # Commitizen
121
+ # ---------------------------------------------------------------------------
122
+
123
+ [tool.commitizen]
124
+ name = "cz_conventional_commits"
125
+ version_provider = "commitizen"
126
+ version = "0.2.0"
127
+ tag_format = "v$version"
128
+ update_changelog_on_bump = false
129
+ version_files = ["VERSION"]
@@ -0,0 +1,24 @@
1
+ # file generated by vcs-versioning
2
+ # don't change, don't track in version control
3
+ from __future__ import annotations
4
+
5
+ __all__ = [
6
+ "__version__",
7
+ "__version_tuple__",
8
+ "version",
9
+ "version_tuple",
10
+ "__commit_id__",
11
+ "commit_id",
12
+ ]
13
+
14
+ version: str
15
+ __version__: str
16
+ __version_tuple__: tuple[int | str, ...]
17
+ version_tuple: tuple[int | str, ...]
18
+ commit_id: str | None
19
+ __commit_id__: str | None
20
+
21
+ __version__ = version = '0.2.0'
22
+ __version_tuple__ = version_tuple = (0, 2, 0)
23
+
24
+ __commit_id__ = commit_id = None