Bug: PythonUvBuilder resolves local requirements from the caller directory

Aperta Adatta ai principianti
#952 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 6 giorni

@vinsymoyya ci sta già lavorando.

Dal 5/11/2026.

  • #953 di @vinsymoyya — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
78/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
python
Ambito
build-system

Direzione di ricerca

Inizia in aws_lambda_builders.workflows.python_uv.packager, in PythonUvDependencyBuilder.build_dependencies, poi confronta il percorso di build di requirements con quello di pyproject, che fornisce una directory di lavoro. Riproduci il problema con il wheel locale e requirements.txt descritti nell’issue, eseguendo il build dall’esterno della directory della funzione. Il risultato atteso è che il wheel venga risolto relativamente al manifest e che il suo modulo venga scritto nella directory degli artefatti richiesta.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Description

PythonUvBuilder resolves relative wheel and local package paths in a requirements manifest against the process working directory, rather than the manifest directory. A function with a vendored wheel therefore fails when built from its parent directory. The pyproject build path already supplies a working directory to uv; the requirements build path does not.

Steps to reproduce

With aws-lambda-builders 1.68.0 and uv installed, run this from outside the temporary function directory:

from pathlib import Path
from tempfile import TemporaryDirectory
from zipfile import ZipFile
from aws_lambda_builders.workflows.python_uv.packager import PythonUvDependencyBuilder

with TemporaryDirectory() as directory:
    root = Path(directory)
    app = root / "function"
    app.mkdir()
    wheel = app / "local_demo-1.0.0-py3-none-any.whl"
    with ZipFile(wheel, "w") as archive:
        archive.writestr("local_demo.py", "VALUE = 42\n")
        archive.writestr("local_demo-1.0.0.dist-info/METADATA",
                        "Metadata-Version: 2.1\nName: local-demo\nVersion: 1.0.0\n")
        archive.writestr("local_demo-1.0.0.dist-info/WHEEL",
                        "Wheel-Version: 1.0\nRoot-Is-Purelib: true\nTag: py3-none-any\n")
        archive.writestr("local_demo-1.0.0.dist-info/RECORD", "")
    manifest = app / "requirements.txt"
    manifest.write_text(f"./{wheel.name}\n", encoding="utf-8")
    target, scratch = root / "artifacts", root / "scratch"
    target.mkdir()
    scratch.mkdir()
    PythonUvDependencyBuilder(runtime="python3.13").build_dependencies(
        str(target), str(scratch), str(manifest)
    )
Observed result

UvBuildError: ... UV pip install failed: ... Distribution not found at: file:///<caller-directory>/local_demo-1.0.0-py3-none-any.whl

The wheel exists in function/; it is looked up outside that directory. This also reproduces through LambdaBuilder.build() with either absolute or relative build paths.

Expected result

Install the local wheel from the requirements manifest's directory and write its module into the requested artifact directory, independently of the caller's working directory.

Environment
  • Windows, Python 3.13.3, uv 0.11.26
  • aws-lambda-builders 1.68.0, develop commit e3e14536501e38b0d6d8db582ddec6d0e0bd6f8a
  • Reproduction uses a local wheel only; no AWS account or package index is needed.

I checked the open and closed issue/PR history. #887 addresses workspace-root discovery for pyproject builds; this reproduction uses only requirements.txt and no workspace.

Lingua principale
Python
Stelle
381
Fork
161
Merge medio
5g 14h
PR unite (30g)
3

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di aws/aws-lambda-builders

Tutte le issue di aws/aws-lambda-builders

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.