fix preflight
This commit is contained in:
@@ -5,12 +5,16 @@ from __future__ import annotations
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import urllib.error
|
||||
import urllib.request
|
||||
from pathlib import Path
|
||||
|
||||
PYPI_JSON_URL = "https://pypi.org/pypi/orisys/json"
|
||||
|
||||
# Sibling repository that carries the public GitHub releases and their tags.
|
||||
RELEASE_REPO_DIRNAME = "orisys-sdk-release"
|
||||
|
||||
# orisys-<version>-<pytag>-<abitag>-<platformtag>.whl
|
||||
_WHEEL_NAME_RE = re.compile(r"^orisys-(?P<version>[^-]+)-[^-]+-[^-]+-.+\.whl$")
|
||||
|
||||
@@ -103,6 +107,42 @@ def _version_sort_key(name: str):
|
||||
return ([int(part) for part in parts] or [0], name)
|
||||
|
||||
|
||||
def git_tags(repo_root: Path) -> list[str]:
|
||||
"""Local git tags from this repo and the sibling release repo.
|
||||
|
||||
Tags are the only offline evidence that a version was already released
|
||||
(``v0.5.1`` in ``orisys-sdk-release`` marks a published GitHub release), so
|
||||
the duplicate guard works without network access.
|
||||
"""
|
||||
roots = [Path(repo_root)]
|
||||
sibling = Path(repo_root).parent / RELEASE_REPO_DIRNAME
|
||||
if sibling.is_dir():
|
||||
roots.append(sibling)
|
||||
|
||||
tags: set[str] = set()
|
||||
for root in roots:
|
||||
try:
|
||||
completed = subprocess.run(
|
||||
["git", "-C", str(root), "tag", "--list"],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=False,
|
||||
)
|
||||
except OSError:
|
||||
continue
|
||||
if completed.returncode != 0:
|
||||
continue
|
||||
tags.update(
|
||||
line.strip() for line in (completed.stdout or "").splitlines() if line.strip()
|
||||
)
|
||||
return sorted(tags)
|
||||
|
||||
|
||||
def released_tags_for(version: str, tags: list[str]) -> list[str]:
|
||||
"""Tag spellings that mark ``version`` as already released."""
|
||||
return sorted({version, f"v{version}"} & set(tags))
|
||||
|
||||
|
||||
def conda_envs_root() -> Path | None:
|
||||
"""Locate the conda envs directory the same way build/wheel/win.bat does."""
|
||||
override = os.getenv("CONDA_ENVS_ROOT")
|
||||
|
||||
Reference in New Issue
Block a user