From 2d413a5e38c08b59e031e3cffe59ee463b63ac32 Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Tue, 26 May 2026 11:14:38 -0500 Subject: [PATCH] nixpkgs-plugin-update: preserve slash tags --- .../src/nixpkgs_plugin_update/__init__.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/nixpkgs-plugin-update/nixpkgs-plugin-update/src/nixpkgs_plugin_update/__init__.py b/pkgs/development/python-modules/nixpkgs-plugin-update/nixpkgs-plugin-update/src/nixpkgs_plugin_update/__init__.py index 6afe8aed52e3..4b205624417d 100644 --- a/pkgs/development/python-modules/nixpkgs-plugin-update/nixpkgs-plugin-update/src/nixpkgs_plugin_update/__init__.py +++ b/pkgs/development/python-modules/nixpkgs-plugin-update/nixpkgs-plugin-update/src/nixpkgs_plugin_update/__init__.py @@ -25,7 +25,7 @@ from multiprocessing.dummy import Pool from pathlib import Path from tempfile import NamedTemporaryFile from typing import Any, Callable -from urllib.parse import urljoin, urlparse, urlsplit +from urllib.parse import unquote, urljoin, urlparse, urlsplit import git from packaging.version import InvalidVersion, parse as parse_version @@ -143,6 +143,16 @@ def first_release_tag(tags: list[str]) -> str | None: return None +def tag_from_github_atom_href(href: str) -> str | None: + path = urlparse(href).path + marker = "/releases/tag/" + if marker in path: + return unquote(path.split(marker, 1)[1]) + + tag_name = Path(path).name + return unquote(tag_name) if tag_name else None + + class Repo: def __init__(self, uri: str, branch: str) -> None: self.uri = uri @@ -359,7 +369,7 @@ class RepoGitHub(Repo): if not href: continue - tag_name = Path(urlparse(href).path).name + tag_name = tag_from_github_atom_href(href) if tag_name: tags.append(tag_name)