pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/pre-commit/pre-commit-mirror-maker/pull/259/files

ithubassets.com/assets/primer-primitives-10bf9dd67e3d70bd.css" /> Support Go module fallback for nested package paths by mxr · Pull Request #259 · pre-commit/pre-commit-mirror-maker · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 22 additions & 5 deletions pre_commit_mirror_maker/languages.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
from __future__ import annotations

import json
import os
import re
import subprocess
import urllib.error
import urllib.request

from packaging import requirements
Expand Down Expand Up @@ -41,11 +43,26 @@ def golang_get_package_versions(package_name: str) -> list[str]:
r'[A-Z]',
lambda m: f'!{m.group(0).lower()}', package_name,
)
url = f'https://proxy.golang.org/{escaped}/@v/list'
resp = urllib.request.urlopen(url).read().decode()
return sorted(
(v.removeprefix('v') for v in resp.splitlines()),
key=version.parse,

# Greedily choose the longest non-404 path
# (based on https://go.dev/ref/mod#resolve-pkg-mod)
while escaped:
url = f'https://proxy.golang.org/{escaped}/@v/list'
try:
resp = urllib.request.urlopen(url).read().decode()
except urllib.error.HTTPError as exc:
if exc.code == 404:
escaped = os.path.dirname(escaped)
continue
raise

return sorted(
(v.removeprefix('v') for v in resp.splitlines()),
key=version.parse,
)

raise ValueError(
f'Cannot find package name {package_name} on proxy.golang.org',
)


Expand Down
18 changes: 16 additions & 2 deletions tests/languages_test.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
from __future__ import annotations

import pytest

from pre_commit_mirror_maker.languages import golang_get_package_versions
from pre_commit_mirror_maker.languages import node_get_package_versions
from pre_commit_mirror_maker.languages import python_get_package_versions
Expand Down Expand Up @@ -42,8 +44,20 @@ def test_rust_get_package_version_output():
assert_all_text(ret)


def test_golang_get_package_version_output():
ret = golang_get_package_versions('mvdan.cc/gofumpt')
@pytest.mark.parametrize(
'package_name',
(
'mvdan.cc/gofumpt',
'mvdan.cc/sh/v3/cmd/shfmt',
),
)
def test_golang_get_package_version_output(package_name):
ret = golang_get_package_versions(package_name)
assert ret
assert not any(v.startswith('v') for v in ret)
assert_all_text(ret)


def test_golang_get_package_version_invalid_package():
with pytest.raises(ValueError):
golang_get_package_versions('mvdan.cc/foo')
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy