{"id":18620521,"url":"https://github.com/simonsobs/socs","last_synced_at":"2026-02-11T04:11:32.701Z","repository":{"id":37470263,"uuid":"186511668","full_name":"simonsobs/socs","owner":"simonsobs","description":"Simons Observatory specific OCS agents.","archived":false,"fork":false,"pushed_at":"2026-02-05T16:33:43.000Z","size":11194,"stargazers_count":14,"open_issues_count":122,"forks_count":15,"subscribers_count":23,"default_branch":"main","last_synced_at":"2026-02-06T01:54:29.469Z","etag":null,"topics":["docker","emulator","library","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simonsobs.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE.txt","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":"2019-05-13T23:52:37.000Z","updated_at":"2026-02-05T16:33:47.000Z","dependencies_parsed_at":"2024-05-28T16:42:08.552Z","dependency_job_id":"40bbe958-5716-4ba8-a513-525025d71692","html_url":"https://github.com/simonsobs/socs","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/simonsobs/socs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonsobs%2Fsocs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonsobs%2Fsocs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonsobs%2Fsocs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonsobs%2Fsocs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simonsobs","download_url":"https://codeload.github.com/simonsobs/socs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonsobs%2Fsocs/sbom","scorecard":{"id":571469,"data":{"date":"2025-08-11","repo":{"name":"github.com/simonsobs/socs","commit":"7db35e22bfd7ccbf73ef2857bc98adb734a47ec9"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"checks":[{"name":"Code-Review","score":8,"reason":"Found 24/30 approved changesets -- score normalized to 8","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"26 commit(s) and 15 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/deploy.yml:1","Warn: no topLevel permission defined: .github/workflows/develop.yml:1","Warn: no topLevel permission defined: .github/workflows/pytest.yml:1","Warn: no topLevel permission defined: .github/workflows/skipped-pytest.yml:1","Warn: no topLevel permission defined: .github/workflows/skipped-test-build.yml:1","Warn: no topLevel permission defined: .github/workflows/test-build.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: BSD 2-Clause \"Simplified\" License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/deploy.yml:17"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"65 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2020-25 / GHSA-gwp7-vqr5-h33h","Warn: Project is vulnerable to: PYSEC-2023-163 / GHSA-f73w-4m7g-ch9x","Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: GHSA-267x-w5hx-8hjr","Warn: Project is vulnerable to: GHSA-33h2-69j3-r336","Warn: Project is vulnerable to: GHSA-3448-vrgh-85xr","Warn: Project is vulnerable to: GHSA-5rpc-gwh9-q9fg","Warn: Project is vulnerable to: GHSA-634c-v2xv-ffpg","Warn: Project is vulnerable to: GHSA-6v6p-p97v-g2p7","Warn: Project is vulnerable to: GHSA-83rh-hx5x-q9p5","Warn: Project is vulnerable to: GHSA-8849-5h85-98qw","Warn: Project is vulnerable to: GHSA-89rj-5ggj-3p9p","Warn: Project is vulnerable to: GHSA-8w3x-457r-wg53","Warn: Project is vulnerable to: GHSA-9g8h-pjm4-q92p","Warn: Project is vulnerable to: GHSA-c7gp-2pch-qh2v","Warn: Project is vulnerable to: GHSA-cvhw-2593-5j2q","Warn: Project is vulnerable to: GHSA-fffj-9qwg-qmh5","Warn: Project is vulnerable to: GHSA-fm39-cw8h-3p63","Warn: Project is vulnerable to: GHSA-fr58-2xhv-qp3w","Warn: Project is vulnerable to: GHSA-fvq6-392h-6mjj","Warn: Project is vulnerable to: GHSA-fw99-f933-rgh8","Warn: Project is vulnerable to: GHSA-hxfw-jm98-v4mq","Warn: Project is vulnerable to: GHSA-jcxv-2j3h-mg59","Warn: Project is vulnerable to: GHSA-jggw-2q6g-c3m6","Warn: Project is vulnerable to: GHSA-m43c-649m-pm48","Warn: Project is vulnerable to: GHSA-m6vm-8g8v-xfjh","Warn: Project is vulnerable to: GHSA-pqjj-6f5q-gqph","Warn: Project is vulnerable to: GHSA-q799-q27x-vp7w","Warn: Project is vulnerable to: GHSA-qr4w-53vh-m672","Warn: Project is vulnerable to: GHSA-rqxg-xvcq-3v2f","Warn: Project is vulnerable to: GHSA-vc29-rj92-gc7j","Warn: Project is vulnerable to: GHSA-w96g-3p64-63wr","Warn: Project is vulnerable to: GHSA-wq8f-wvqp-xvvm","Warn: Project is vulnerable to: GHSA-x3rm-644h-67m8","Warn: Project is vulnerable to: PYSEC-2023-183","Warn: Project is vulnerable to: PYSEC-2020-73","Warn: Project is vulnerable to: PYSEC-2021-142 / GHSA-8q59-q68h-6hv4","Warn: Project is vulnerable to: PYSEC-2018-49 / GHSA-rprw-h62v-c2w7","Warn: Project is vulnerable to: PYSEC-2014-14 / GHSA-652x-xj99-gmcc","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2014-13 / GHSA-cfj3-7x9c-4p3h","Warn: Project is vulnerable to: PYSEC-2018-28 / GHSA-x84v-xcm2-53pg","Warn: Project is vulnerable to: PYSEC-2019-156 / GHSA-xp76-357g-9wqq","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114","Warn: Project is vulnerable to: PYSEC-2017-74","Warn: Project is vulnerable to: GHSA-32gv-6cf3-wcmq","Warn: Project is vulnerable to: PYSEC-2020-214 / GHSA-3gqj-cmxr-p4x2","Warn: Project is vulnerable to: PYSEC-2019-129 / GHSA-65rm-h285-5cc5","Warn: Project is vulnerable to: PYSEC-2019-128 / GHSA-6cc5-2vg4-cc7m","Warn: Project is vulnerable to: GHSA-8r99-h8j2-rw64","Warn: Project is vulnerable to: PYSEC-2022-195 / GHSA-c2jg-hw38-jrqq","Warn: Project is vulnerable to: GHSA-c8m8-j448-xjx7","Warn: Project is vulnerable to: PYSEC-2024-75 / GHSA-cf56-g6w6-pqq2","Warn: Project is vulnerable to: PYSEC-2020-259 / GHSA-h96w-mmrf-2h6v","Warn: Project is vulnerable to: PYSEC-2020-260 / GHSA-p5xh-vx83-mxcj","Warn: Project is vulnerable to: PYSEC-2023-224 / GHSA-xc8x-vp79-p3wm","Warn: Project is vulnerable to: PYSEC-2019-212"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/simonsobs/socs/deploy.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deploy.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/simonsobs/socs/deploy.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy.yml:74: update your workflow using https://app.stepsecurity.io/secureworkflow/simonsobs/socs/deploy.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy.yml:79: update your workflow using https://app.stepsecurity.io/secureworkflow/simonsobs/socs/deploy.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/develop.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/simonsobs/socs/develop.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/develop.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/simonsobs/socs/develop.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/develop.yml:74: update your workflow using https://app.stepsecurity.io/secureworkflow/simonsobs/socs/develop.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/develop.yml:79: update your workflow using https://app.stepsecurity.io/secureworkflow/simonsobs/socs/develop.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pytest.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/simonsobs/socs/pytest.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pytest.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/simonsobs/socs/pytest.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pytest.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/simonsobs/socs/pytest.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-build.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/simonsobs/socs/test-build.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:5: pin your Docker image by updating simonsobs/ocs:v0.11.3-19-gd729e04 to simonsobs/ocs:v0.11.3-19-gd729e04@sha256:e1adbc4e41621cee6ec8aea810d38170ed7588f996bb00c949615be779fec931","Warn: containerImage not pinned by hash: docker/hwp_picoscope/Dockerfile:2","Warn: containerImage not pinned by hash: docker/pysmurf_controller/Dockerfile:1: pin your Docker image by updating simonsobs/so_smurf_base:v0.0.6 to simonsobs/so_smurf_base:v0.0.6@sha256:a33c25c8110120c840a3cc390153b956e34684d4a9b9ea34b61dffac66d113fe","Warn: containerImage not pinned by hash: docker/wiregrid_actuator/Dockerfile:1","Warn: containerImage not pinned by hash: simulators/lakeshore240/Dockerfile:5","Warn: containerImage not pinned by hash: simulators/lakeshore372/Dockerfile:5","Warn: pipCommand not pinned by hash: Dockerfile:38","Warn: pipCommand not pinned by hash: Dockerfile:39","Warn: pipCommand not pinned by hash: Dockerfile:40-41","Warn: pipCommand not pinned by hash: Dockerfile:47","Warn: pipCommand not pinned by hash: docker/pysmurf_controller/Dockerfile:9","Warn: pipCommand not pinned by hash: docker/pysmurf_controller/Dockerfile:10","Warn: pipCommand not pinned by hash: docker/pysmurf_controller/Dockerfile:17","Warn: pipCommand not pinned by hash: docker/pysmurf_controller/Dockerfile:19","Warn: pipCommand not pinned by hash: docker/wiregrid_actuator/Dockerfile:11-25","Warn: pipCommand not pinned by hash: .github/workflows/deploy.yml:83","Warn: pipCommand not pinned by hash: .github/workflows/deploy.yml:95","Warn: pipCommand not pinned by hash: .github/workflows/develop.yml:83","Warn: pipCommand not pinned by hash: .github/workflows/develop.yml:95","Warn: pipCommand not pinned by hash: .github/workflows/pytest.yml:39","Warn: pipCommand not pinned by hash: .github/workflows/pytest.yml:46","Warn: pipCommand not pinned by hash: .github/workflows/pytest.yml:47","Warn: pipCommand not pinned by hash: .github/workflows/pytest.yml:67","Info:   0 out of   9 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   6 containerImage dependencies pinned","Info:   3 out of  20 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}}]},"last_synced_at":"2025-08-20T16:27:48.817Z","repository_id":37470263,"created_at":"2025-08-20T16:27:48.817Z","updated_at":"2025-08-20T16:27:48.817Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29327087,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T03:52:29.695Z","status":"ssl_error","status_checked_at":"2026-02-11T03:52:23.094Z","response_time":97,"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":["docker","emulator","library","python"],"created_at":"2024-11-07T04:06:39.198Z","updated_at":"2026-02-11T04:11:32.685Z","avatar_url":"https://github.com/simonsobs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"========================================\nSOCS - Simons Observatory Control System\n========================================\n\n| |pypi| |versions| |docker| |license|\n| |tests| |pre-commit| |coverage| |docs|\n\nOverview\n--------\n\nThis repository, `SOCS`_, contains hardware control code for the\nSimons Observatory.  This code operates within the framework provided\nby `OCS`_.\n\n.. _`OCS`: https://github.com/simonsobs/ocs/\n.. _SOCS: https://github.com/simonsobs/socs/\n\nInstallation\n------------\n\nInstall and update with pip::\n\n    $ pip3 install -U socs\n\nYou may install optional dependencies by including one or more agent group\nnames on installation, for example::\n\n    $ pip3 install -U socs[labjack,synacc]\n\nFor a complete list of agent groups see the `Installation Documentation`_.\n\nIf you would like to install all optional dependencies use the special varient\n\"all\"::\n\n    $ pip3 install -U socs[all]\n\n**Note:** Not all optional dependencies can be installed this way. See the\n`Installation Documentation`_ for more info on specific agent dependencies.\n\n.. _`Installation Documentation`: https://socs.readthedocs.io/en/main/user/installation.html\n\nInstalling from Source\n``````````````````````\n\nIf you are considering contributing to SOCS, or would like to use an unreleased\nfeature, you will want to install from source. To do so, clone this repository\nand install using pip:\n\n.. code-block:: bash\n\n    git clone https://github.com/simonsobs/socs.git\n    cd socs/\n    pip3 install -r requirements.txt\n    pip3 install .\n\nIn order for OCS tools to find these agents, you must add the full\npath to the agents directory, e.g. ``/home/simons/code/socs/agents/``,\nto your OCS site config file. Do so by adding the following under your\nconfigured host if it does not already exist:\n\n.. code-block:: yaml\n\n  # List of additional paths to Agent plugin modules.\n  'agent-paths': [\n    '/path/to/socs/agents/',\n  ],\n\nSee the `ocs docs`_ for more details.\n\n.. _`ocs docs`: https://ocs.readthedocs.io/en/main/developer/site_config.html\n\nDocker Images\n-------------\nDocker images for SOCS and each Agent are available on `Docker Hub`_. Official\nreleases will be tagged with their release version, i.e. ``v0.1.0``. These are\nonly built on release, and the ``latest`` tag will point to the latest of these\nreleased tags. These should be considered stable.\n\nTest images will be tagged with the latest released version tag, the number of\ncommits ahead of that release, the latest commit hash, i.e.\n``v0.0.2-81-g9c10ba6-dev``. These get built on each commit to the ``main``\nbranch, and are useful for testing and development, but should be considered\nunstable.\n\n.. _Docker Hub: https://hub.docker.com/u/simonsobs\n\nDocumentation\n-------------\nThe SOCS documentation can be built using Sphinx. There is a separate\n``requirements.txt`` file in the ``docs/`` directory to install Sphinx and any\nadditional documentation dependencies::\n\n  cd docs/\n  pip3 install -r requirements.txt\n  make html\n\nYou can then open ``docs/_build/html/index.html`` in your preferred web\nbrowser. You can also find a copy hosted on `Read the Docs`_.\n\n.. _Read the Docs: https://socs.readthedocs.io/en/latest/\n\nTests\n-----\nThe tests for SOCS are run using pytest, and should be run from the\n``tests/`` directory::\n\n  $ cd tests/\n  $ python3 -m pytest --cov\n\nFor more details see `tests/README.rst \u003ctests_\u003e`_.\n\n.. _tests: https://github.com/simonsobs/socs/blob/main/tests/README.rst\n\nContributing\n------------\nFor guidelines on how to contribute to OCS see `CONTRIBUTING.rst`_.\n\n.. _CONTRIBUTING.rst: https://github.com/simonsobs/socs/blob/main/CONTRIBUTING.rst\n\nLicense\n--------\nThis project is licensed under the BSD 2-Clause License - see the\n`LICENSE.txt`_ file for details.\n\n.. _LICENSE.txt: https://github.com/simonsobs/socs/blob/main/LICENSE.txt\n\n\n.. |coverage| image:: https://coveralls.io/repos/github/simonsobs/socs/badge.svg\n    :target: https://coveralls.io/github/simonsobs/socs\n\n.. |docker| image:: https://img.shields.io/badge/dockerhub-latest-blue\n    :target: https://hub.docker.com/r/simonsobs/socs\n\n.. |docs| image:: https://readthedocs.org/projects/socs/badge/?version=main\n    :target: https://socs.readthedocs.io/en/main/?badge=main\n    :alt: Documentation Status\n\n.. |license| image:: https://img.shields.io/pypi/l/socs\n    :target: LICENSE.txt\n    :alt: PyPI - License\n\n.. |pre-commit| image:: https://results.pre-commit.ci/badge/github/simonsobs/socs/main.svg\n   :target: https://results.pre-commit.ci/latest/github/simonsobs/socs/main\n   :alt: pre-commit.ci status\n\n.. |pypi| image:: https://img.shields.io/pypi/v/socs\n   :target: https://pypi.org/project/socs/\n   :alt: PyPI Package\n\n.. |tests| image:: https://github.com/simonsobs/socs/actions/workflows/develop.yml/badge.svg?branch=main\n    :target: https://github.com/simonsobs/socs/actions/workflows/develop.yml\n    :alt: GitHub Workflow Status\n\n.. |versions| image:: https://img.shields.io/pypi/pyversions/socs\n    :alt: PyPI - Python Version\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonsobs%2Fsocs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimonsobs%2Fsocs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonsobs%2Fsocs/lists"}