aws / aws/aws-lambda-builders

Feature request: Add support for pyproject.toml

Aperta
#688 4 commenti 12 reazioni 0 assegnatari Vedi su GitHub
area/workflow/python_pip type/feature
Lingua principale
Python
Stelle
380
Fork
161
Merge medio
1g 1h
PR unite (30g)
2

Descrizione

### Describe your idea/feature/enhancement

As the Python ecosystem moves towards `pyproject.toml` as the standard for defining build system requirements and managing dependencies, it would be highly beneficial if there was a lambda builder to recognize and handle this file natively. Using `setup.py` is gradually being phased out in favor of `pyproject.toml` which modern package managers (like Poetry) support to align with PEP 517 and PEP 518 standards.

Currently, we either have to manually export our dependencies to a requirements.txt file, or have `makefile` as the build method in the `template.yaml` where the makefile is exporting the deps to a `requirement.txt` before preparing the function:
```yaml
# template.yaml
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: hello_world/
Handler: app.lambda_handler
Runtime: python3.12
Metadata:
BuildMethod: makefile
```

```makefile
build-HelloWorldFunction:
poetry export -f requirements.txt --output requirements.txt --without-hashes
pip install --target "$(ARTIFACTS_DIR)" -r requirements.txt
cp -r *.py $(ARTIFACTS_DIR)
```

This can be tedious when having to deal with multiple functions.

### Proposal

Implement a builder, similar to `python_pip` that parses `pyproject.toml`, recognizes the `build-backend` defined in `pyproject.toml` (such as `poetry` or `flit`) and handles dependencies installation accordingly. This way when invoking `sam build` the existence of `pyproject.toml` is also taken into consideration (and not only `requirements.txt` and `setup.py`). Based on this, it should be able to select the appropriate builder to use.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia esaminando il builder python_pip esistente e la selezione attuale di sam build tra requirements.txt e setup.py. Analizza come pyproject.toml potrebbe selezionare un builder e come valori di build-backend come Poetry o Flit determinerebbero l’installazione delle dipendenze; il lavoro è completato quando pyproject.toml viene riconosciuto e le funzioni vengono compilate senza esportare manualmente requirements.

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

Valutazione

Stack tecnologico
python
Ambito
build-system
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.