{"id":30865076,"url":"https://github.com/ozi-project/tap-producer","last_synced_at":"2025-09-07T20:21:10.792Z","repository":{"id":246849621,"uuid":"823912364","full_name":"OZI-Project/TAP-Producer","owner":"OZI-Project","description":"Test Anything Protocol producer API for Python.","archived":false,"fork":false,"pushed_at":"2025-06-14T01:03:24.000Z","size":665,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-14T01:27:40.406Z","etag":null,"topics":["test-anything-protocol","testing"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/TAP-Producer","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/OZI-Project.png","metadata":{"files":{"readme":"README","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-07-04T02:01:23.000Z","updated_at":"2025-06-14T01:03:28.000Z","dependencies_parsed_at":"2024-08-22T23:55:20.883Z","dependency_job_id":"9fab8724-aaaf-497b-b59a-bfad3f2789d0","html_url":"https://github.com/OZI-Project/TAP-Producer","commit_stats":null,"previous_names":["ozi-project/tap-producer"],"tags_count":58,"template":false,"template_full_name":null,"purl":"pkg:github/OZI-Project/TAP-Producer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OZI-Project%2FTAP-Producer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OZI-Project%2FTAP-Producer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OZI-Project%2FTAP-Producer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OZI-Project%2FTAP-Producer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OZI-Project","download_url":"https://codeload.github.com/OZI-Project/TAP-Producer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OZI-Project%2FTAP-Producer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274088875,"owners_count":25220316,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["test-anything-protocol","testing"],"created_at":"2025-09-07T20:21:01.459Z","updated_at":"2025-09-07T20:21:10.781Z","avatar_url":"https://github.com/OZI-Project.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n.. OZI\n  Classifier: License-Expression :: Apache-2.0 WITH LLVM-exception\n  Classifier: License-File :: LICENSE.txt\n\n..\n  Part of TAP-Producer.\n  See LICENSE.txt in the project root for details.\n\n============\nTAP-Producer\n============\n\nProducer for Test Anything Protocol output in Python.\n\n.. code-block::\n\n   from tap_producer import TAP\n   with TAP() as t:\n     t.ok('passed')\n     t.ok('also passed')\n     \nThe TAP class automatically counts test points at call time for TAP version 12, 13, and 14.\n\n.. code-block::\n\n   from tap_producer import TAP\n   @TAP(plan=1, version=14)\n   def f() -\u003e None:\n      TAP.ok('reason')\n   f()\n\nTAP can also be used as a function decorator.\n\n.. code-block::\n\n   from tap_producer import TAP\n   TAP.version(14)\n   TAP.ok('passed')\n   TAP.end()\n\nThe TAP class can also be used as a purely functional API. Normally TAP calls ``end()`` on its own. \n\n.. code-block::\n\n   from tap_producer import TAP\n   with TAP() as t:\n      t.ok('passed').comment('debug information')\n      if FAIL_CONDITION:\n         t.not_ok('did not pass')\n         t.bail_out()\n\nTAP using version 12 supports plan, ok, not ok, diagnostic comment, and bail out\nfunctionality.\n\n.. code-block::\n\n   with TAP(version=13).subtest('subtest') as st:\n      st.plan(count=1, skip_count=0).ok('ok', {'yaml-key': 'yaml-val'})\n\nTAP version 13 supports the aforementioned as well as subtest context manager\nand YAML diagnostic output.\n\n.. code-block::\n\n   from tap_producer import TAP\n   with TAP() as t:\n      with t.suppress():\n         t.ok('passed but suppressed')\n      with t.strict()\n         t.not_ok('this is now a Python exception')\n\nTAP-Producer also includes two decorators, a suppress context manager for\nsuppressing TAP output and a strict context manager for raising not ok test\ncases to Python errors.\n\nLicense\n-------\n\nLicensed Apache-2.0 WITH LLVM-exception, no NOTICE file needed if you want\nto vendor TAP-Producer into your project, see LICENSE.txt for more information.\n\n.. image:: https://raw.githubusercontent.com/sigstore/community/main/artwork/badge/sigstore_codesigned_purple.png\n :align: right\n :height: 140\n :target: https://www.sigstore.dev/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fozi-project%2Ftap-producer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fozi-project%2Ftap-producer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fozi-project%2Ftap-producer/lists"}