{"id":25895417,"url":"https://github.com/diamondlightsource/fastcs-odin","last_synced_at":"2026-01-16T10:23:16.011Z","repository":{"id":232987340,"uuid":"785728640","full_name":"DiamondLightSource/fastcs-odin","owner":"DiamondLightSource","description":"FastCS support for the Odin detector software framework","archived":false,"fork":false,"pushed_at":"2026-01-12T15:25:45.000Z","size":9487,"stargazers_count":1,"open_issues_count":7,"forks_count":2,"subscribers_count":18,"default_branch":"main","last_synced_at":"2026-01-13T19:48:42.999Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DiamondLightSource.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-04-12T13:53:20.000Z","updated_at":"2025-12-22T14:38:16.000Z","dependencies_parsed_at":"2024-04-29T01:29:05.527Z","dependency_job_id":"92a50947-7ee9-4348-be76-20b4b5fbc7b0","html_url":"https://github.com/DiamondLightSource/fastcs-odin","commit_stats":null,"previous_names":["diamondlightsource/odin-fastcs","diamondlightsource/fastcs-odin"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/DiamondLightSource/fastcs-odin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiamondLightSource%2Ffastcs-odin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiamondLightSource%2Ffastcs-odin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiamondLightSource%2Ffastcs-odin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiamondLightSource%2Ffastcs-odin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DiamondLightSource","download_url":"https://codeload.github.com/DiamondLightSource/fastcs-odin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiamondLightSource%2Ffastcs-odin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-02T22:31:14.761Z","updated_at":"2026-01-16T10:23:15.987Z","avatar_url":"https://github.com/DiamondLightSource.png","language":"Python","readme":"[![CI](https://github.com/DiamondLightSource/fastcs-odin/actions/workflows/ci.yml/badge.svg)](https://github.com/DiamondLightSource/fastcs-odin/actions/workflows/ci.yml)\n[![Coverage](https://codecov.io/gh/DiamondLightSource/fastcs-odin/branch/main/graph/badge.svg)](https://codecov.io/gh/DiamondLightSource/fastcs-odin)\n[![PyPI](https://img.shields.io/pypi/v/fastcs-odin.svg)](https://pypi.org/project/fastcs-odin)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\n# FastCS Odin\n\nFastCS support for the Odin detector software framework\n\nSource          | \u003chttps://github.com/DiamondLightSource/fastcs-odin\u003e\n:---:           | :---:\nPyPI            | `pip install fastcs-odin`\nDocker          | `docker run ghcr.io/diamondlightsource/fastcs-odin:latest`\nDocumentation   | \u003chttps://diamondlightsource.github.io/fastcs-odin\u003e\nReleases        | \u003chttps://github.com/DiamondLightSource/fastcs-odin/releases\u003e\n\n## Development\n\nIn most cases it should be sufficient to work within the fastcs-odin devcontainer (or a\nvirtualenv) and run the unit tests to develop new features and bug fixes.\n\nIn order to develop and test fastcs-odin alongside local dev versions of odin-control\nand odin-data applications, a development environment can be run up from the odin-data\ndevcontainer.\n\n### Full Development Environment\n\nThe following instructions assume use of vscode, as it makes it very convenient to set up\nan environment that \"just works\". However, it is possible to run the same environment up\nmanually using the [odin-data-developer] container and the following steps should still\nprovide a good overview.\n\nNote, commands starting with `\u003e` are vscode commands and can be run with `Ctrl+Shift+P`,\nwhile commands starting with `$` are bash commands to be run in a terminal (inside the\nvscode devcontainer).\n\n1. Clone [odin-data] (next to fastcs-odin), checkout the `fastcs-dev` branch and re-open\n   in devcontainer\n2. Add fastcs-odin to the workspace `\u003e Workspaces: Add Folder to Workspace...`\n\n    i. If it asks to reload window, then do so\n\n3. Install the recommended extensions with `\u003e Extensions: Show Recommended Extensions`\n4. Build odin-data into `/odin`\n\n    i. `\u003e CMake: Delete Cache and Reconfigure` and select a compiler, e.g.\n    `/usr/bin/gcc`\n\n    ii. `\u003e CMake: Install`\n\n5. Install fastcs-odin and its odin dev environment\n\n    i. `\u003e Python: Select Interpreter`, `Select at workspace level` and select\n    `/venv/bin/python`\n\n    ii. Run `$ pip install -e .[dev,odin]` at the root of fastcs-odin\n\n6. Prepare the dev environment (in the root of fastcs-odin)\n\n    i. `$ dev/configure.sh one_node_fp /workspaces/odin-data/vscode_prefix /venv`\n\n    ii. `$ zellij`, wait for it to finish installing and close with `Ctrl+Q`\n\n7. Run the dev environment (in the root of fastcs-odin)\n\n    i. `$ dev/start.sh`\n\n8. `\u003e Debug: Select and Start Debugging` and select `Odin IOC` to run the IOC\n\nUIs will be generated in the root of fastcs-odin that can be opened in Phoebus. This is\nthe clearest way to see the PVs that have been generated for the Odin server. It is also\npossible to run `dbl()` in the EPICS shell to print a flat list of PVs.\n\nTo run a dev version of any of the applications, stop that process in the deployment (by\nclicking the pane and pressing `Ctrl+C`) then run/debug it manually. There is a vscode\nlaunch config for an odin server using the same config as the dev deployment for this\npurpose.\n\nTo run local versions of odin-data / odin-control python applications install it into\nthe virtual environment with `$ pip install -e ...` to override the versions installed\nfrom GitHub.\n\n### Isolated Development Environment\n\nWhile it is necessary to work on odin-control / odin-data alongside fastcs-odin in some\ncases, once these additions have been made they should be backed by tests that can be\nrun without the full development environment. This means in most case it is possible to\ndevelop fastcs-odin in isolation and trust the unit tests to give a good indication\nthat things are working as expected, and so that the same checks can be made in CI and\nreduce manual testing during code review.\n\nIt is possible to test some functionality in isolation by dumping server responses and\ncreating tests that parse those responses. Responses can be dumped from various Odin\nsystems and tests written against them that can run in CI to ensure support for those\nsystems is not broken (or get early warning that an adapter needs to be updated to work\nwith the latest fastcs-odin). The `tests/dump_server_response.py` helper script will\ngenerate json files for each adapter in an Odin server to write tests against.\n\n[odin-data]: https://github.com/odin-detector/odin-data\n[odin-data-developer]: https://github.com/odin-detector/odin-data/pkgs/container/odin-data-developer\n\n\u003c!-- README only content. Anything below this line won't be included in index.md --\u003e\n\nSee https://diamondlightsource.github.io/fastcs-odin for more detailed documentation.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiamondlightsource%2Ffastcs-odin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiamondlightsource%2Ffastcs-odin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiamondlightsource%2Ffastcs-odin/lists"}