{"id":19304292,"url":"https://github.com/tfcollins/pytest-libiio","last_synced_at":"2026-03-11T06:31:24.439Z","repository":{"id":40253499,"uuid":"298898089","full_name":"tfcollins/pytest-libiio","owner":"tfcollins","description":"pytest plugin for working with libiio contexts","archived":false,"fork":false,"pushed_at":"2026-03-06T12:26:25.000Z","size":3086,"stargazers_count":2,"open_issues_count":5,"forks_count":11,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-03-06T16:29:49.774Z","etag":null,"topics":["libiio","pytest"],"latest_commit_sha":null,"homepage":"https://tfcollins.github.io/pytest-libiio/master","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tfcollins.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"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":"2020-09-26T20:55:44.000Z","updated_at":"2026-03-05T14:59:59.000Z","dependencies_parsed_at":"2023-11-17T03:57:21.142Z","dependency_job_id":"bd31094a-125c-400b-95c6-6dd5b5984b41","html_url":"https://github.com/tfcollins/pytest-libiio","commit_stats":{"total_commits":122,"total_committers":8,"mean_commits":15.25,"dds":"0.15573770491803274","last_synced_commit":"9f6e5498ea7b39db81b752a5a5c5634f5e10a396"},"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/tfcollins/pytest-libiio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tfcollins%2Fpytest-libiio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tfcollins%2Fpytest-libiio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tfcollins%2Fpytest-libiio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tfcollins%2Fpytest-libiio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tfcollins","download_url":"https://codeload.github.com/tfcollins/pytest-libiio/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tfcollins%2Fpytest-libiio/sbom","scorecard":{"id":875808,"data":{"date":"2025-08-11","repo":{"name":"github.com/tfcollins/pytest-libiio","commit":"98523cf8682233e20d898d0e8a7e96371399157b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.2,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/18 approved changesets -- score normalized to 0","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":"21 commit(s) and 0 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":"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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/doc.yml:1","Warn: no topLevel permission defined: .github/workflows/test.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":"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/doc.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/tfcollins/pytest-libiio/doc.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/doc.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/tfcollins/pytest-libiio/doc.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/doc.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/tfcollins/pytest-libiio/doc.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/tfcollins/pytest-libiio/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/tfcollins/pytest-libiio/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/tfcollins/pytest-libiio/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/tfcollins/pytest-libiio/test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:75: update your workflow using https://app.stepsecurity.io/secureworkflow/tfcollins/pytest-libiio/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/tfcollins/pytest-libiio/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/tfcollins/pytest-libiio/test.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/doc.yml:19","Warn: pipCommand not pinned by hash: .github/workflows/doc.yml:20","Warn: pipCommand not pinned by hash: .github/workflows/test.yml:70","Warn: pipCommand not pinned by hash: .github/workflows/test.yml:71","Warn: pipCommand not pinned by hash: .github/workflows/test.yml:24","Warn: pipCommand not pinned by hash: .github/workflows/test.yml:49","Info:   0 out of   8 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   0 out of   6 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"}},{"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/test.yml:54"],"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":"Vulnerabilities","score":0,"reason":"15 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2024-48 / GHSA-fj7x-q9j7-g6q6","Warn: Project is vulnerable to: PYSEC-2018-19 / GHSA-232r-66cg-79px","Warn: Project is vulnerable to: PYSEC-2008-8 / GHSA-wqmm-q65g-2hqr","Warn: Project is vulnerable to: PYSEC-2022-166","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-2019-217 / GHSA-462w-v97r-4m45","Warn: Project is vulnerable to: PYSEC-2014-8 / GHSA-8r7q-cvjq-x353","Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: PYSEC-2014-82 / GHSA-fqh9-2qgg-h84h","Warn: Project is vulnerable to: PYSEC-2021-66 / GHSA-g3rq-g295-4j3m","Warn: Project is vulnerable to: GHSA-h5c8-rqwp-cp95","Warn: Project is vulnerable to: GHSA-h75v-3vvj-5mfj","Warn: Project is vulnerable to: PYSEC-2019-220 / GHSA-hj2j-77xm-mc5v","Warn: Project is vulnerable to: GHSA-q2x7-8rv6-6q7h"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 15 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"}}]},"last_synced_at":"2025-08-24T05:56:52.528Z","repository_id":40253499,"created_at":"2025-08-24T05:56:52.529Z","updated_at":"2025-08-24T05:56:52.529Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30373448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T06:09:32.197Z","status":"ssl_error","status_checked_at":"2026-03-11T06:09:17.086Z","response_time":84,"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":["libiio","pytest"],"created_at":"2024-11-09T23:29:23.504Z","updated_at":"2026-03-11T06:31:23.474Z","avatar_url":"https://github.com/tfcollins.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"=============\npytest-libiio\n=============\n\n.. image:: https://img.shields.io/pypi/v/pytest-libiio.svg\n    :target: https://pypi.org/project/pytest-libiio\n    :alt: PyPI version\n\n.. image:: https://img.shields.io/pypi/pyversions/pytest-libiio.svg\n    :target: https://pypi.org/project/pytest-libiio\n    :alt: Python versions\n\n.. image:: https://travis-ci.org/tfcollins/pytest-libiio.svg?branch=master\n    :target: https://travis-ci.org/tfcollins/pytest-libiio\n    :alt: See Build Status on Travis CI\n\n.. image:: https://coveralls.io/repos/github/tfcollins/pytest-libiio/badge.svg?branch=master\n    :target: https://coveralls.io/github/tfcollins/pytest-libiio?branch=master\n    :alt: See Coverage Status on Coveralls\n\n.. image:: https://readthedocs.org/projects/pytest-libiio/badge/?version=latest\n    :target: https://pytest-libiio.readthedocs.io/en/latest/?badge=latest\n    :alt: Documentation Status\n\nA pytest plugin to manage interfacing with libiio contexts\n\n----\n\npytest-libiio is pytest plugin to manage interfacing with libiio contexts. This plugin is handy for leveraging the (new) zeroconf features of libiio to find, filter, and map libiio contexts to tests. It was created for `pyadi-iio \u003chttps://pypi.org/project/pyadi-iio/\u003e`_ testing but is used in other applications that need an organized way to handle libiio contexts without hardcoding URIs or lots of boilerplate code.\n\n\nRequirements\n------------\n\n* libiio and pylibiio\n* pytest\n* pyyaml\n\nFor development the following are also needed:\n\n* tox\n* pytest-mock\n* pre-commit\n* isort\n* flake8\n* codespell\n* black\n\n\nInstallation\n------------\n\nYou can install \"pytest-libiio\" via `pip`_ from `PyPI`_::\n\n    $ pip install pytest-libiio\n\n\nUsage\n-----\n\nThis plugin is used to make the access of libiio contexts easier and to provide a unified API through fixtures.\n\nAccessing contexts\n^^^^^^^^^^^^^^^^^^\n\nGet list of context descriptions of all found contained\n\n.. code-block:: python\n\n  import pytest\n  import iio\n\n\n  def test_libiio_device(context_desc):\n      hardware = [\"pluto\", \"adrv9361\", \"fmcomms2\"]\n      for ctx_desc in context_desc:\n          if ctx_desc[\"hw\"] in hardware:\n              ctx = iio.Context(ctx_desc[\"uri\"])\n      if not ctx:\n          pytest.skip(\"No required hardware found\")\n\nRequire certain hardware through marks\n\n.. code-block:: python\n\n  import pytest\n  import iio\n\n\n  @pytest.mark.iio_hardware(\"adrv9361\")\n  def test_libiio_device(context_desc):\n      for ctx_desc in context_desc:\n          ctx = iio.Context(ctx_desc[\"uri\"])\n          ...\n\nFuture ideas\n------------\nMock testing is common with libiio's python library since hardware is needed otherwise. In future releases we hope to extend features in pytest-mock through this plugin to make mocking libiio more streamlined.\n\nContributing\n------------\nContributions are very welcome. Tests can be run with `tox`_, please ensure\nthe coverage at least stays the same before you submit a pull request.\n\nLicense\n-------\n\nDistributed under the terms of the `BSD-3`_ license, \"pytest-libiio\" is free and open source software\n\n\nIssues\n------\n\nIf you encounter any problems, please `file an issue`_ along with a detailed description.\n\n.. _`Cookiecutter`: https://github.com/audreyr/cookiecutter\n.. _`@hackebrot`: https://github.com/hackebrot\n.. _`MIT`: http://opensource.org/licenses/MIT\n.. _`BSD-3`: http://opensource.org/licenses/BSD-3-Clause\n.. _`GNU GPL v3.0`: http://www.gnu.org/licenses/gpl-3.0.txt\n.. _`Apache Software License 2.0`: http://www.apache.org/licenses/LICENSE-2.0\n.. _`cookiecutter-pytest-plugin`: https://github.com/pytest-dev/cookiecutter-pytest-plugin\n.. _`file an issue`: https://github.com/tfcollins/pytest-libiio/issues\n.. _`pytest`: https://github.com/pytest-dev/pytest\n.. _`tox`: https://tox.readthedocs.io/en/latest/\n.. _`pip`: https://pypi.org/project/pip/\n.. _`PyPI`: https://pypi.org/project\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftfcollins%2Fpytest-libiio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftfcollins%2Fpytest-libiio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftfcollins%2Fpytest-libiio/lists"}