Feature request: Add support for pyproject.toml
- 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