{"id":37081054,"url":"https://github.com/git-pull/gp-libs","last_synced_at":"2026-01-14T09:50:34.211Z","repository":{"id":58614252,"uuid":"532373261","full_name":"git-pull/gp-libs","owner":"git-pull","description":"Incubator for pytest and sphinx helpers for git-pull python projects","archived":false,"fork":false,"pushed_at":"2026-01-10T17:41:24.000Z","size":1804,"stargazers_count":3,"open_issues_count":10,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-11T05:20:48.821Z","etag":null,"topics":["doctest","docutils","pytest","restructuredtext"],"latest_commit_sha":null,"homepage":"https://gp-libs.git-pull.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/git-pull.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES","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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2022-09-03T21:02:26.000Z","updated_at":"2026-01-10T17:41:27.000Z","dependencies_parsed_at":"2026-01-04T06:01:27.602Z","dependency_job_id":null,"html_url":"https://github.com/git-pull/gp-libs","commit_stats":null,"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"purl":"pkg:github/git-pull/gp-libs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/git-pull%2Fgp-libs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/git-pull%2Fgp-libs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/git-pull%2Fgp-libs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/git-pull%2Fgp-libs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/git-pull","download_url":"https://codeload.github.com/git-pull/gp-libs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/git-pull%2Fgp-libs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28416120,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T08:38:59.149Z","status":"ssl_error","status_checked_at":"2026-01-14T08:38:43.588Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["doctest","docutils","pytest","restructuredtext"],"created_at":"2026-01-14T09:50:33.504Z","updated_at":"2026-01-14T09:50:34.205Z","avatar_url":"https://github.com/git-pull.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gp-libs \u0026middot; [![Python Package](https://img.shields.io/pypi/v/gp-libs.svg)](https://pypi.org/project/gp-libs/) [![License](https://img.shields.io/github/license/git-pull/gp-libs.svg)](https://github.com/git-pull/gp-libs/blob/master/LICENSE) [![Code Coverage](https://codecov.io/gh/git-pull/gp-libs/branch/master/graph/badge.svg)](https://codecov.io/gh/git-pull/gp-libs)\n\nIncubating / [dogfooding] some sphinx extensions and pytest plugins on\ngit-pull projects, e.g. [cihai], [vcs-python], or [tmux-python].\n\n[dogfooding]: https://en.wikipedia.org/wiki/Eating_your_own_dog_food\n[cihai]: https://github.com/cihai\n[vcs-python]: https://github.com/vcs-python\n[tmux-python]: https://github.com/tmux-python\n\n## `doctest` for reStructured and markdown\n\nTwo components:\n\n1. `doctest_docutils` module: Same specification as `doctest`, but can parse reStructuredText\n   and markdown\n2. `pytest_doctest_docutils`: Pytest plugin, collects test items for pytest for reStructuredText and markdown files\n\n   This means you can do:\n\n   ```console\n   $ pytest docs\n   ```\n\n### doctest module\n\nThis extends standard library `doctest` to support anything docutils can parse.\nIt can parse reStructuredText (.rst) and markdown (.md).\n\nSee more: \u003chttps://gp-libs.git-pull.com/doctest/\u003e\n\n#### Supported styles\n\nIt supports two barebones directives:\n\n- docutils' `doctest_block`\n\n  ```rst\n  \u003e\u003e\u003e 2 + 2\n  4\n  ```\n\n- `.. doctest::` directive\n\n  reStructuredText:\n\n  ```rst\n  .. doctest::\n\n     \u003e\u003e\u003e 2 + 2\n     4\n  ```\n\n  Markdown (requires [myst-parser]):\n\n  ````markdown\n  ```{doctest}\n  \u003e\u003e\u003e 2 + 2\n  4\n  ```\n  ````\n\n[myst-parser]: https://myst-parser.readthedocs.io/en/latest/\n\n#### Usage\n\nThe `doctest_docutils` module preserves standard library's usage conventions:\n\n##### reStructuredText\n\n```console\n$ python -m doctest_docutils README.rst -v\n```\n\nThat's what `doctest` does by design.\n\n##### Markdown\n\nIf you install [myst-parser], doctest will run on .md files.\n\n```console\n$ python -m doctest_docutils README.md -v\n```\n\n### pytest plugin\n\n_This plugin disables [pytest's standard `doctest` plugin]._\n\nThis plugin integrates with the `doctest_docutils` module with pytest to enable seamless testing of docs, `conftest.py` fixtures and all.\n\n```console\n$ pytest docs/\n```\n\nLike the above module, it supports docutils' own `doctest_block` and a basic\n`.. doctest::` directive.\n\nSee more: \u003chttps://gp-libs.git-pull.com/doctest/pytest.html\u003e\n\n[pytest's standard `doctest` plugin]: https://docs.pytest.org/en/stable/how-to/doctest.html#doctest\n\n## sphinx plugins\n\n### Plain-text issue linker (`linkify-issues`)\n\nWe need to parse plain text, e.g. #99999, to point to the project tracker at\nhttps://github.com/git-pull/gp-libs/issues/99999. This way the markdown looks\ngood anywhere you render it, including GitHub and GitLab.\n\n#### Configuration\n\nIn your _conf.py_:\n\n1. Add `'linkify_issues'` to `extensions`\n\n   ```python\n   extensions = [\n       # ...\n       \"linkify_issues\",\n   ]\n   ```\n\n2. Configure your issue URL, `issue_url_tpl`:\n\n   ```python\n   # linkify_issues\n   issue_url_tpl = 'https://github.com/git-pull/gp-libs/issues/{issue_id}'\n   ```\n\n   The config variable is formatted via {meth}`str.format` where `issue_id` is\n   `42` if the text is \\#42.\n\nSee more: \u003chttps://gp-libs.git-pull.com/linkify_issues/\u003e\n\n## Install\n\n```console\n$ pip install --user gp-libs\n```\n\n### Developmental releases\n\nYou can test the unpublished version of g before its released.\n\n- [pip](https://pip.pypa.io/en/stable/):\n\n  ```console\n  $ pip install --user --upgrade --pre gp-libs\n  ```\n\n# Minimum requirements\n\nTo lift the development burden of supporting legacy APIs, as this package is\nlightly used, minimum constraints have been pinned:\n\n- docutils: 0.20.1+\n- myst-parser: 2.0.0+\n\nIf you have even passing interested in supporting legacy versions, file an\nissue on the tracker.\n\n# More information\n\n- Python support: \u003e= 3.10, pypy\n- Source: \u003chttps://github.com/git-pull/gp-libs\u003e\n- Docs: \u003chttps://gp-libs.git-pull.com\u003e\n- Changelog: \u003chttps://gp-libs.git-pull.com/history.html\u003e\n- Issues: \u003chttps://github.com/git-pull/gp-libs/issues\u003e\n- Test Coverage: \u003chttps://codecov.io/gh/git-pull/gp-libs\u003e\n- pypi: \u003chttps://pypi.python.org/pypi/gp-libs\u003e\n- License: [MIT](https://opensource.org/licenses/MIT).\n\n[![Docs](https://github.com/git-pull/gp-libs/workflows/docs/badge.svg)](https://gp-libs.git-pull.com)\n[![Build Status](https://github.com/git-pull/gp-libs/workflows/tests/badge.svg)](https://github.com/git-pull/gp-libs/actions?query=workflow%3A%22tests%22)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgit-pull%2Fgp-libs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgit-pull%2Fgp-libs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgit-pull%2Fgp-libs/lists"}