Bug: PythonUvBuilder resolves local requirements from the caller directory

Ouverte Adaptée aux débutants
#952 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 6 jours

@vinsymoyya y travaille déjà.

Depuis le 5/11/2026.

  • #953 par @vinsymoyya — ouverte

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
78/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
python
Domaine
build-system

Piste de recherche

Commencez dans aws_lambda_builders.workflows.python_uv.packager, à PythonUvDependencyBuilder.build_dependencies, puis comparez le chemin de build de requirements avec celui de pyproject, qui fournit un répertoire de travail. Reproduisez le problème avec le wheel local et requirements.txt décrits dans l’issue, en lançant le build depuis l’extérieur du répertoire de la fonction. Le résultat attendu est que le wheel soit résolu par rapport au manifeste et que son module soit écrit dans le répertoire d’artefacts demandé.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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.

Langage dominant
Python
Étoiles
381
Forks
161
Merge moyen
5 j 14 h
PR mergées (30 j)
3

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de aws/aws-lambda-builders

Toutes les issues de aws/aws-lambda-builders

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.