Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
1d66e11
docs(initiative-g): phase 3 design + swarm-ready plan + module scaffo…
matteius May 12, 2026
59a180f
docs(initiative-g): lock in Q-A through Q-F phase-3 decisions
matteius May 12, 2026
98e2036
feat(resolver): T2 — MetadataFetcher (PEP 658 + wheel-head fallback) …
matteius May 12, 2026
1cab24c
feat(resolver): T1 — Requirement dataclass for pure-python backend (I…
matteius May 12, 2026
9966c53
test(resolver): T11 — Requirement unit-test coverage ≥ 95 % (Initiati…
matteius May 12, 2026
16cede4
feat(resolver): T3 — PurePythonProvider.identify + Candidate.extras (…
matteius May 12, 2026
62c6fbc
test(resolver): T12 — MetadataFetcher unit-test coverage ≥ 90 % (Init…
matteius May 12, 2026
67a8e40
feat(resolver): T4 — PurePythonProvider.find_matches (Initiative G ph…
matteius May 12, 2026
aec0f52
feat(resolver): T5 — PurePythonProvider.get_preference (Q-C strict mi…
matteius May 13, 2026
e71a66b
feat(resolver): T6 — PurePythonProvider.is_satisfied_by (Initiative G…
matteius May 13, 2026
0f1c6f7
feat(resolver): T7 — PurePythonProvider.get_dependencies + _SdistEnco…
matteius May 13, 2026
2985cba
test(resolver): T8 — PurePythonProvider integration smoke + _drive_re…
matteius May 13, 2026
338b40b
test(resolver): T13 — PurePythonProvider unit-test coverage ≥ 90 % (I…
matteius May 13, 2026
c50ca51
feat(resolver): T9 — PurePythonBackend + fail-loud sdist + Q-F pre-ch…
matteius May 13, 2026
c7939d7
feat(resolver): T10 — register PurePythonBackend in backend registry …
matteius May 13, 2026
299fac0
test(resolver): T14 — PurePythonBackend unit-test coverage ≥ 90 % (In…
matteius May 13, 2026
6dabccb
fix(resolver): T9b — PurePythonBackend self-bootstraps collaborators …
matteius May 13, 2026
5ae94db
feat(lock): T_PLUMBING — --backend CLI flag + [pipenv] resolver_backe…
matteius May 13, 2026
27f2730
fix(resolver): response shape polymorphism for PipSession vs urllib3 …
matteius May 13, 2026
2ae89ea
docs(initiative-g): phase 3b plan — sdists + markers + CI dogfood
matteius May 13, 2026
a4371c6
feat(resolver): T_M1 — Requirement.introducing_marker for transitive …
matteius May 13, 2026
55d9259
feat(resolver): T_S1 — pure_python_sdist.py PEP 517 METADATA extracto…
matteius May 13, 2026
63487d4
feat(resolver): T_S2 — fetch_metadata routes sdist candidates through…
matteius May 13, 2026
921796a
feat(resolver): T_M2 — get_dependencies threads Requires-Dist marker …
matteius May 13, 2026
49bcf83
feat(resolver): T_M3 — _translate_mapping emits markers from Requires…
matteius May 13, 2026
779f75a
refactor(resolver): T_S3 — remove _SdistEncountered fail-loud from pr…
matteius May 13, 2026
62d336f
feat(resolver): T_M4 — _translate_mapping emits source name for index…
matteius May 13, 2026
855afcd
refactor(resolver): T_S4 — repurpose Q-F pre-check as top-level empti…
matteius May 13, 2026
8906ca5
feat(resolver): T_S5 — _translate_mapping collects hashes from all di…
matteius May 13, 2026
f62f224
test(resolver): T_M5 — marker / index / hash edge-case coverage (Init…
matteius May 13, 2026
2501292
test(resolver): T_S6 — defensive gap-fill tests for sdist + bootstrap…
matteius May 13, 2026
75a420b
ci(resolver): T_CI1 — dogfood pure-python backend in CI matrix (Initi…
matteius May 13, 2026
2a19393
docs(resolver): T_CI2 — Phase 3b acceptance gate + Q-A flip (Initiati…
matteius May 13, 2026
822eb21
perf(install): make Pipfile name recasing opt-in (PIPENV_RECASE_PIPFILE)
matteius May 13, 2026
a5773f0
refactor(pipfile): recase opt-in moves from PIPENV_RECASE_PIPFILE env…
matteius May 13, 2026
9f22a1f
fix(test): use tmp_path instead of /dev/shm in archive-extracts-to-no…
matteius May 13, 2026
47f035a
fix(resolver/pure-python): strip pip CLI flags from wire-shape spec_v…
matteius May 13, 2026
dd985b4
feat(resolver/pure-python): build sdist METADATA in PEP 517 isolated env
matteius May 13, 2026
45b5d12
vendor build backend
matteius May 13, 2026
4bfc9e7
vendor build backend
matteius May 13, 2026
2db794c
docs(news): update sdist-build-isolation fragment for vendored :pypi:…
matteius May 13, 2026
3df8a81
fix(resolver/pure-python): honour PEP 592 yanked + raise resolver rou…
matteius May 13, 2026
6f2a0e8
fix(resolver/pure-python): prefer wheels over sdists at the same vers…
matteius May 13, 2026
1c31441
fix(resolver/pure-python): two-pass prerelease filter — strict first,…
matteius May 13, 2026
8158e8b
fix(resolver/pure-python): thread extras through find_matches/get_dep…
matteius May 13, 2026
9e6ee5e
perf(install): parallel wheel pre-fetch before pip install — ~30% col…
matteius May 13, 2026
2dd5ac6
refactor(install): drop redundant --upgrade from sync's pip install; …
matteius May 13, 2026
bc39dd7
Potential fix for pull request finding
matteius May 13, 2026
3979d5a
Potential fix for pull request finding
matteius May 13, 2026
1432492
fix: include effective resolver backend in resolution cache key
Copilot May 13, 2026
4d4ec6a
fix: sanitize sdist archive_name, use urllib3.Timeout, include PIPENV…
Copilot May 13, 2026
e91f686
chore: clarify default backend cache-key compatibility comment
Copilot May 13, 2026
ce59b17
refine: address code review feedback on three PR fixes
Copilot May 13, 2026
a14fd2b
fix: non-blocking executor shutdown on sdist timeout; fix _FakeSessio…
Copilot May 13, 2026
5b1044c
fix: add prefetch cleanup, update design doc, add sdist hash verifica…
Copilot May 13, 2026
e62ca29
docs: clarify Path.name/daemon-thread behavior in sdist cleanup code
Copilot May 13, 2026
63ef7e6
refactor: move imports to module level per code review
Copilot May 13, 2026
1f40f7c
fix: address remaining Phase VI review feedback
matteius Aug 3, 2026
4e0311d
Merge remote-tracking branch 'origin/maintenance/code-cleanup-phase5-…
matteius Aug 3, 2026
e7b79f4
Merge remote-tracking branch 'origin/maintenance/code-cleanup-phase5-…
matteius Aug 3, 2026
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
57 changes: 57 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,63 @@ jobs:
run: |
pipenv run pytest -ra -n auto -v --fulltrace tests

tests-pure-python-backend:
# Initiative G phase 3b (T_CI1): run the full pipenv test suite
# under ``PIPENV_RESOLVER=pure-python`` to dogfood the new
# pure-Python resolver backend. Non-blocking
# (``continue-on-error: true``) — the acceptance gate is "matrix
# runs and produces a result", not "matrix passes", until the
# backend reaches feature parity with pip. Ubuntu + 3.12 only at
# this phase to keep CI minutes reasonable; widen the matrix once
# the backend is consistently green.
name: Tests (pure-python backend) / Ubuntu / 3.12
needs: [tests-smoke]
runs-on: ubuntu-latest
continue-on-error: true
timeout-minutes: 45
steps:
- uses: actions/checkout@v5
- name: Set up Python 3.12
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install latest pip, setuptools, wheel
run: |
python -m pip install --upgrade pip setuptools wheel
- name: Install dependencies
env:
PIPENV_DEFAULT_PYTHON_VERSION: "3.12"
PYTHONWARNINGS: ignore:DEPRECATION
PYTHONIOENCODING: "utf-8"
GIT_ASK_YESNO: "false"
run: |
git submodule sync
git submodule update --init --recursive
python -m pip install -e . --upgrade
pipenv install --deploy --dev --python=3.12
pipenv run python -m pip install -e ".[tests,dev]" --upgrade
- name: Run pypiserver with pipenv
run: |
pipenv run pypi-server --version
pipenv run pypi-server run -v --host=0.0.0.0 --port=8080 --hash-algo=sha256 --disable-fallback --welcome /dev/null ./tests/pypi/ ./tests/fixtures &
- name: Run tests with pure-python backend
env:
PIPENV_DEFAULT_PYTHON_VERSION: "3.12"
PYTHONWARNINGS: ignore:DEPRECATION
PIPENV_NOSPIN: "1"
CI: "1"
GIT_ASK_YESNO: "false"
PYPI_VENDOR_DIR: "./tests/pypi/"
PYTHONIOENCODING: "utf-8"
GIT_SSH_COMMAND: ssh -o StrictHostKeyChecking=accept-new -o CheckHostIP=no
# T_CI1 (Initiative G phase 3b): select the pure-Python
# backend via the documented env-var path. Honoured by
# ``pipenv.resolver.core._selected_backend_name`` after the
# parent-side CLI / Pipfile chain falls through.
PIPENV_RESOLVER: pure-python
run: |
pipenv run pytest -ra -n auto -v --fulltrace tests

resolver-module-coverage:
# Initiative G phase 1 (T17): enforce per-module coverage floors
# for the new pure-Python simple-API client surface. Without this
Expand Down
Loading
Loading