Bug: PythonUvBuilder resolves local requirements from the caller directory
I maintainer di solito rispondono entro 6 giorni
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
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di aws/aws-lambda-builders
-
python_uv: `UvConfig.compile_bytecode` is never passed to uv, so the option has no effectForse già presa @xujiantop-crypto l’ha presa 51 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
aws/aws-lambda-builders#925 · 1 reazione ·
I maintainer di solito rispondono entro 6 giorni
-
Bug: PythonUvBuilder does not target Lambda manylinux compatibilityForse già presa @vinsymoyya l’ha presa oggi. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 70/100
aws/aws-lambda-builders#955 · 1 commento ·
I maintainer di solito rispondono entro 6 giorni
-
Bytecode compiled during build is always discarded at runtime: SAM packaging writes 1980 timestamps, so timestamp-based .pyc never validateForse già presa @xujiantop-crypto l’ha presa 51 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 64/100
aws/aws-lambda-builders#924 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 6 giorni
-
Bug: PythonUvBuilder fails to build app with dependencies on editable installs in the workspaceForse già presa @noritada l’ha presa 120 giorni fa. Apertastage/needs-triage
Difficoltà 3/5 1-2 giorni Idoneità per principianti 25/100
aws/aws-lambda-builders#892 ·
I maintainer di solito rispondono entro 6 giorni
-
Feature request: Add native uv support and configurationForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertastage/needs-triage type/feature
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
aws/aws-lambda-builders#839 · 3 commenti · 1 reazione ·
I maintainer di solito rispondono entro 6 giorni
Tutte le issue di aws/aws-lambda-builders
Issue simili
-
Remove the `pull_request_target` workflow before GitHub blocks itForse già presa @jat255 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
IBM/mcp-context-forge#7483 ·
I maintainer di solito rispondono entro 2 giorni
-
bug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
[Bug Report]: OpenAI 辅助 API 连通性测试因输出上限仅 1 token 误报“未知错误”Forse già presa @fjfanjian l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Project-N-E-K-O/N.E.K.O#3640 ·
I maintainer di solito rispondono entro 1 giorno
-
author-page correction
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
acl-org/acl-anthology#10808 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno