From 957fed75e22371088131f4b79e32506a06fdec94 Mon Sep 17 00:00:00 2001 From: Lea Evers Date: Mon, 9 Mar 2026 16:05:22 +0100 Subject: [PATCH 1/4] use gitPython to fetch intro.md and further.md from plugins --- pixi.lock | 130 ++++++++++++++++++++++++++------------ pixi.toml | 1 + source/collect_plugins.py | 35 +++++----- 3 files changed, 110 insertions(+), 56 deletions(-) diff --git a/pixi.lock b/pixi.lock index 6f772ea..ac352cf 100644 --- a/pixi.lock +++ b/pixi.lock @@ -6,6 +6,8 @@ environments: - url: https://conda.anaconda.org/bioconda/ indexes: - https://pypi.org/simple + options: + pypi-prerelease-mode: if-necessary-or-explicit packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 @@ -26,6 +28,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-hcacfade_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-15.2.0-h862fb80_13.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda @@ -35,12 +39,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_8.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-h1aa0949_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.17.0-h4e3cde8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.18.0-hcf29cc6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-h767d61c_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-h73f6952_107.conda @@ -73,10 +77,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ratelimit-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.12.12-h718f522_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda @@ -87,6 +92,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_8.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py314h0f05182_1.conda @@ -100,7 +106,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/c4/ad/5ce88458a6d01147d600d72bb55f5086ff3ffa5f4085c6d3e37e91f4d591/pypi_simple-1.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/14/a0/bb38d3b76b8cae341dad93a2dd83ab7462e6dbcdd84d43f54ee60a8dc167/soupsieve-2.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9b/e9/ca6a7178677bb171c8fd7f9eab726c00182168d38a79d2a58e7678590227/sphinxawesome_theme-5.3.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 @@ -349,6 +354,31 @@ packages: purls: [] size: 27972 timestamp: 1763064850441 +- conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda + sha256: dbbec21a369872c8ebe23cb9a3b9d63638479ee30face165aa0fccc96e93eec3 + md5: 7c14f3706e099f8fcd47af2d494616cc + depends: + - python >=3.9 + - smmap >=3.0.1,<6 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/gitdb?source=hash-mapping + size: 53136 + timestamp: 1735887290843 +- conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.conda + sha256: 8043bcb4f59d17467c6c2f8259e7ded18775de5d62a8375a27718554d9440641 + md5: 74c0cfdd5359cd2a1f178a4c3d0bd3a5 + depends: + - gitdb >=4.0.1,<5 + - python >=3.10 + - typing_extensions >=3.10.0.2 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/gitpython?source=hash-mapping + size: 158433 + timestamp: 1767358832407 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda sha256: 84c64443368f84b600bfecc529a1194a3b14c3656ee2e832d15a20e0329b6da3 md5: 164fc43f0b53b6e3a7bc7dce5e4f1dc9 @@ -451,21 +481,22 @@ packages: purls: [] size: 134088 timestamp: 1754905959823 -- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 - md5: 3f43953b7d3fb3aaa1d0d0723d91e368 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda + sha256: 3e307628ca3527448dd1cb14ad7bb9d04d1d28c7d4c5f97ba196ae984571dd25 + md5: fb53fb07ce46a575c5d004bbc96032c2 depends: - - keyutils >=1.6.1,<2.0a0 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - openssl >=3.3.1,<4.0a0 + - __glibc >=2.17,<3.0.a0 + - keyutils >=1.6.3,<2.0a0 + - libedit >=3.1.20250104,<3.2.0a0 + - libedit >=3.1.20250104,<4.0a0 + - libgcc >=14 + - libstdcxx >=14 + - openssl >=3.5.5,<4.0a0 license: MIT license_family: MIT purls: [] - size: 1370023 - timestamp: 1719463201255 + size: 1386730 + timestamp: 1769769569681 - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-h1aa0949_0.conda sha256: 32321d38b8785ef8ddcfef652ee370acee8d944681014d47797a18637ff16854 md5: 1450224b3e7d17dfeb985364b77a4d47 @@ -479,23 +510,23 @@ packages: purls: [] size: 753744 timestamp: 1763060439129 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.17.0-h4e3cde8_0.conda - sha256: 100e29ca864c32af15a5cc354f502d07b2600218740fdf2439fa7d66b50b3529 - md5: 01e149d4a53185622dc2e788281961f2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.18.0-hcf29cc6_1.conda + sha256: c84e8dccb65ad5149c0121e4b54bdc47fa39303fd5f4979b8c44bb51b39a369b + md5: 1707cdd636af2ff697b53186572c9f77 depends: - __glibc >=2.17,<3.0.a0 - - krb5 >=1.21.3,<1.22.0a0 + - krb5 >=1.22.2,<1.23.0a0 - libgcc >=14 - libnghttp2 >=1.67.0,<2.0a0 - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 - zstd >=1.5.7,<1.6.0a0 license: curl license_family: MIT purls: [] - size: 460366 - timestamp: 1762333743748 + size: 463621 + timestamp: 1770892808818 - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 md5: c277e0a4d549b03ac1e9d6cbbe3d017b @@ -519,19 +550,19 @@ packages: purls: [] size: 112766 timestamp: 1702146165126 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda - sha256: da2080da8f0288b95dd86765c801c6e166c4619b910b11f9a8446fb852438dc2 - md5: 4211416ecba1866fab0c6470986c22d6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda + sha256: d78f1d3bea8c031d2f032b760f36676d87929b18146351c4464c66b0869df3f5 + md5: e7f7ce06ec24cfcfb9e36d28cf82ba57 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 constrains: - - expat 2.7.1.* + - expat 2.7.4.* license: MIT license_family: MIT purls: [] - size: 74811 - timestamp: 1752719572741 + size: 76798 + timestamp: 1771259418166 - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda sha256: 25cbdfa65580cfab1b8d15ee90b4c9f1e0d72128f1661449c9a999d341377d54 md5: 35f29eec58405aaf55e01cb470d8c26a @@ -964,23 +995,24 @@ packages: purls: [] size: 282480 timestamp: 1740379431762 -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhd8ed1ab_0.conda - sha256: 8dc54e94721e9ab545d7234aa5192b74102263d3e704e6d0c8aa7008f2da2a7b - md5: db0c6b99149880c8ba515cf4abe93ee4 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda + sha256: 7813c38b79ae549504b2c57b3f33394cea4f2ad083f0994d2045c2e24cb538c5 + md5: c65df89a0b2e321045a9e01d1337b182 depends: + - python >=3.10 - certifi >=2017.4.17 - charset-normalizer >=2,<4 - idna >=2.5,<4 - - python >=3.9 - urllib3 >=1.21.1,<3 + - python constrains: - chardet >=3.0.2,<6 license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/requests?source=compressed-mapping - size: 59263 - timestamp: 1755614348400 + size: 63602 + timestamp: 1766926974520 - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda sha256: d5c73079c1dd2c2a313c3bfd81c73dbd066b7eb08d213778c8bff520091ae894 md5: c1c9b02933fdb2cfb791d936c20e887e @@ -1018,6 +1050,17 @@ packages: - pkg:pypi/ruff?source=hash-mapping size: 10836594 timestamp: 1757055819993 +- conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda + sha256: eb92d0ad94b65af16c73071cc00cc0e10f2532be807beb52758aab2b06eb21e2 + md5: 87f47a78808baf2fa1ea9c315a1e48f1 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/smmap?source=hash-mapping + size: 26051 + timestamp: 1739781801801 - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.0.1-pyhd8ed1ab_0.conda sha256: 17007a4cfbc564dc3e7310dcbe4932c6ecb21593d4fec3c68610720f19e73fb2 md5: 755cf22df8693aa0d1aec1c123fa5863 @@ -1169,11 +1212,6 @@ packages: purls: [] size: 3284905 timestamp: 1763054914403 -- pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl - name: typing-extensions - version: 4.15.0 - sha256: f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548 - requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl name: typing-inspection version: 0.4.2 @@ -1181,6 +1219,18 @@ packages: requires_dist: - typing-extensions>=4.12.0 requires_python: '>=3.9' +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda + sha256: 032271135bca55aeb156cee361c81350c6f3fb203f57d024d7e5a1fc9ef18731 + md5: 0caa1af407ecff61170c9437a808404d + depends: + - python >=3.10 + - python + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 51692 + timestamp: 1756220668932 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda sha256: 5aaa366385d716557e365f0a4e9c3fca43ba196872abbbe3d56bb610d131e192 md5: 4222072737ccff51314b5ece9c7d6f5a diff --git a/pixi.toml b/pixi.toml index 40e9be1..a0f492a 100644 --- a/pixi.toml +++ b/pixi.toml @@ -20,6 +20,7 @@ cmake = ">=4.1.1,<5" gcc_linux-64 = ">=15.1.0,<16" pkgconfig = ">=1.5.5,<2" ruff = ">=0.12.11,<0.13" +gitpython = ">=3.1.46,<4" [pypi-dependencies] sphinxawesome-theme = ">=5.3.2, <6" diff --git a/source/collect_plugins.py b/source/collect_plugins.py index 2fcde18..48a6698 100644 --- a/source/collect_plugins.py +++ b/source/collect_plugins.py @@ -9,6 +9,9 @@ import tempfile import textwrap from typing import Any, Dict, List +import git +import io +import tempfile import uuid from pypi_simple import PyPISimple @@ -338,27 +341,27 @@ def collect_plugins(): SECTION_MARK_ORDER = '#*=-^"~:`_+<' +def retrieve_plugin_markdown_files(repo_url: str, branches:[str], section: str): + """ + fetch the intro.md and further.md doc files provided by plugins + """ + docs_path = f"docs/{section}.md" + tmpdir = tempfile.mkdtemp() + for branch in branches: + try: + repo = git.Repo.clone_from(repo_url, to_path=tmpdir, bare=True) + docs_content = repo.git.show(f"{branch}:{docs_path}") + shutil.rmtree(tmpdir) + return docs_content + except git.GitCommandError as e: + print(f"Failed to get cached git source file {branch}:{docs_path}: {e}. ") + shutil.rmtree(tmpdir) def get_docs(repository: str | None, section: str, branches=["main", "master"]): if repository is None: return None + retrieved = retrieve_plugin_markdown_files(repository, branches, section) - def retrieve(): - for branch in branches: - if repository.startswith("https://github.com"): - docs = requests.get( - f"{repository}/blob/{branch}/docs/{section}.md?raw=true" - ) - if docs.status_code == 200: - return docs.text - elif repository.startswith("https://gitlab.com"): - docs = requests.get( - f"{repository}/-/raw/{branch}/docs/{section}.md?raw=true" - ) - if docs.status_code == 200: - return docs.text - - retrieved = retrieve() if retrieved is not None: renderer = m2r2.RestRenderer() renderer.hmarks = { From ff1a4c1987bd502481f960493ad5b560b798a55b Mon Sep 17 00:00:00 2001 From: Lea Evers Date: Mon, 9 Mar 2026 16:26:37 +0100 Subject: [PATCH 2/4] formatting fixes --- .github/workflows/deploy.yml | 38 ++++++++++++++++++------------------ source/collect_plugins.py | 6 +++--- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e688a1f..3b6dfd5 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -2,11 +2,11 @@ name: Deploy on: push: - branches: [ main ] + branches: [main] workflow_dispatch: schedule: # * is a special character in YAML so you have to quote this string - - cron: '50 4 * * *' + - cron: "50 4 * * *" defaults: run: @@ -16,8 +16,8 @@ jobs: deploy: # Grant GITHUB_TOKEN the permissions required to make a Pages deployment permissions: - pages: write # to deploy to Pages - id-token: write # to verify the deployment originates from an appropriate source + pages: write # to deploy to Pages + id-token: write # to verify the deployment originates from an appropriate source environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} @@ -25,22 +25,22 @@ jobs: # Specify runner + deployment step runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - - uses: prefix-dev/setup-pixi@v0.9.0 - with: - cache: true + - uses: prefix-dev/setup-pixi@v0.9.0 + with: + cache: true - - name: Building - run: pixi run build + - name: Building + run: pixi run build - - name: Setup Pages - uses: actions/configure-pages@v5 - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 - with: - path: "build" + - name: Setup Pages + uses: actions/configure-pages@v5 + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: "build" - - name: Deploy artifact - id: deployment - uses: actions/deploy-pages@v4 + - name: Deploy artifact + id: deployment + uses: actions/deploy-pages@v4 diff --git a/source/collect_plugins.py b/source/collect_plugins.py index 48a6698..dc71a4a 100644 --- a/source/collect_plugins.py +++ b/source/collect_plugins.py @@ -10,8 +10,6 @@ import textwrap from typing import Any, Dict, List import git -import io -import tempfile import uuid from pypi_simple import PyPISimple @@ -341,7 +339,8 @@ def collect_plugins(): SECTION_MARK_ORDER = '#*=-^"~:`_+<' -def retrieve_plugin_markdown_files(repo_url: str, branches:[str], section: str): + +def retrieve_plugin_markdown_files(repo_url: str, branches: [str], section: str): """ fetch the intro.md and further.md doc files provided by plugins """ @@ -357,6 +356,7 @@ def retrieve_plugin_markdown_files(repo_url: str, branches:[str], section: str): print(f"Failed to get cached git source file {branch}:{docs_path}: {e}. ") shutil.rmtree(tmpdir) + def get_docs(repository: str | None, section: str, branches=["main", "master"]): if repository is None: return None From 30519348bc362f14ce6dd9ed4395a63623cb2371 Mon Sep 17 00:00:00 2001 From: Lea Evers Date: Mon, 9 Mar 2026 17:02:12 +0100 Subject: [PATCH 3/4] add git to pixi file --- pixi.lock | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ pixi.toml | 1 + 2 files changed, 66 insertions(+) diff --git a/pixi.lock b/pixi.lock index ac352cf..a59e15d 100644 --- a/pixi.lock +++ b/pixi.lock @@ -28,6 +28,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-hcacfade_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-15.2.0-h862fb80_13.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/git-2.53.0-pl5321h6d3cee1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda @@ -50,6 +51,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-h73f6952_107.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-h767d61c_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda @@ -60,6 +62,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-h4852527_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-he9a06e4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/m2r2-0.3.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markupsafe-3.0.3-pyh7db6752_0.conda @@ -67,6 +70,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h4bc722e_1009.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgconfig-1.5.5-pyhd8ed1ab_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda @@ -354,6 +359,23 @@ packages: purls: [] size: 27972 timestamp: 1763064850441 +- conda: https://conda.anaconda.org/conda-forge/linux-64/git-2.53.0-pl5321h6d3cee1_0.conda + sha256: 33b20cf09ff1c6ca960e6c5f7fad1f08ffd3112a87d79e42ed56f4e1b4cdefe3 + md5: ad8d4260a6dae5f55960b26b237d576b + depends: + - __glibc >=2.28,<3.0.a0 + - libcurl >=8.18.0,<9.0a0 + - libexpat >=2.7.3,<3.0a0 + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - pcre2 >=10.47,<10.48.0a0 + - perl 5.* + license: GPL-2.0-or-later and LGPL-2.1-or-later + purls: [] + size: 11447951 + timestamp: 1770982660115 - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda sha256: dbbec21a369872c8ebe23cb9a3b9d63638479ee30face165aa0fccc96e93eec3 md5: 7c14f3706e099f8fcd47af2d494616cc @@ -618,6 +640,16 @@ packages: purls: [] size: 447919 timestamp: 1759967942498 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda + sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f + md5: 915f5995e94f60e9a4826e0b0920ee88 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: LGPL-2.1-only + purls: [] + size: 790176 + timestamp: 1754908768807 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda sha256: f2591c0069447bbe28d4d696b7fcb0c5bd0b4ac582769b89addbcf26fb3430d8 md5: 1a580f7796c7bf6393fddb8bbbde58dc @@ -740,6 +772,15 @@ packages: purls: [] size: 895108 timestamp: 1753948278280 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 md5: edb0dca6bc32e4f4789199455a1dbeb8 @@ -834,6 +875,30 @@ packages: - pkg:pypi/packaging?source=hash-mapping size: 62477 timestamp: 1745345660407 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda + sha256: 5e6f7d161356fefd981948bea5139c5aa0436767751a6930cb1ca801ebb113ff + md5: 7a3bff861a6583f1889021facefc08b1 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc >=14 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 1222481 + timestamp: 1763655398280 +- conda: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda + build_number: 7 + sha256: 9ec32b6936b0e37bcb0ed34f22ec3116e75b3c0964f9f50ecea5f58734ed6ce9 + md5: f2cfec9406850991f4e3d960cc9e3321 + depends: + - libgcc-ng >=12 + - libxcrypt >=4.4.36 + license: GPL-1.0-or-later OR Artistic-1.0-Perl + purls: [] + size: 13344463 + timestamp: 1703310653947 - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h4bc722e_1009.conda sha256: c9601efb1af5391317e04eca77c6fe4d716bf1ca1ad8da2a05d15cb7c28d7d4e md5: 1bee70681f504ea424fb07cdb090c001 diff --git a/pixi.toml b/pixi.toml index a0f492a..96301ed 100644 --- a/pixi.toml +++ b/pixi.toml @@ -21,6 +21,7 @@ gcc_linux-64 = ">=15.1.0,<16" pkgconfig = ">=1.5.5,<2" ruff = ">=0.12.11,<0.13" gitpython = ">=3.1.46,<4" +git = ">=2.53.0,<3" [pypi-dependencies] sphinxawesome-theme = ">=5.3.2, <6" From 1132d5bbec88e7fe7d77e64b50d82dda9c8e24c5 Mon Sep 17 00:00:00 2001 From: Lea Evers Date: Mon, 9 Mar 2026 17:02:31 +0100 Subject: [PATCH 4/4] recreate tempfile for each branch --- source/collect_plugins.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/source/collect_plugins.py b/source/collect_plugins.py index dc71a4a..eda915f 100644 --- a/source/collect_plugins.py +++ b/source/collect_plugins.py @@ -345,16 +345,14 @@ def retrieve_plugin_markdown_files(repo_url: str, branches: [str], section: str) fetch the intro.md and further.md doc files provided by plugins """ docs_path = f"docs/{section}.md" - tmpdir = tempfile.mkdtemp() for branch in branches: try: - repo = git.Repo.clone_from(repo_url, to_path=tmpdir, bare=True) - docs_content = repo.git.show(f"{branch}:{docs_path}") - shutil.rmtree(tmpdir) + with tempfile.TemporaryDirectory() as tmpdir: + repo = git.Repo.clone_from(repo_url, to_path=tmpdir, bare=True) + docs_content = repo.git.show(f"{branch}:{docs_path}") return docs_content except git.GitCommandError as e: print(f"Failed to get cached git source file {branch}:{docs_path}: {e}. ") - shutil.rmtree(tmpdir) def get_docs(repository: str | None, section: str, branches=["main", "master"]):