@@ -71,12 +71,10 @@ projects.
7171- Use linters with default configurations
7272 - Unless there is an absolute need for a change
7373
74- ## APIs
74+ ## REST APIs
7575
76- - We follow the [ jsonapi.org] specification.
77- - When in doubt, or if something is unclear in the [ jsonapi.org] specification,
78- refer to the [ GitHub REST API] documentation for a well thought real life
79- example.
76+ - We try to follow the [ GitHub REST API] documentation and the [ jsonapi.org]
77+ specification for error management.
8078- Zalando provides very good
8179 [ RESTful API Guidelines] ( https://opensource.zalando.com/restful-api-guidelines/ )
8280 worth following
@@ -85,19 +83,11 @@ projects.
8583
8684### Project management
8785
88- - [ poetry ] : Python project management de facto standard
86+ - [ uv ] : The future of Python project management
8987
9088We recommend using [ just] for managing administration tasks, but for more
9189complex scenarios [ invoke] is an acceptable replacement.
9290
93- ### Poetry settings
94-
95- Each project must create a local virtual environment at its root :
96-
97- ``` bash
98- poetry config virtualenvs.in-project true --local
99- ```
100-
10191### pyproject.toml
10292
10393Describes special sections to add to the ` pyproject.toml ` configuration file.
@@ -138,10 +128,10 @@ addopts = "-p no:warnings --cov-report term-missing --cov-report html --xdoctest
138128To quickly start a project, run the following commands:
139129
140130``` bash
141- export POETRY_PROJECT =my-project
142- poetry new ${POETRY_PROJECT }
143- cd ${POETRY_PROJECT }
144- poetry add -G dev \
131+ export PYTHON_PROJECT =my-project
132+ uv init ${PYTHON_PROJECT }
133+ cd ${PYTHON_PROJECT }
134+ uv add -- dev \
145135 bpython \
146136 furo\
147137 isort \
@@ -159,6 +149,11 @@ poetry add -G dev \
159149 xdoctest
160150```
161151
152+ ### Legacy
153+
154+ - [ poetry] : Python project management de facto standard
155+ - This project was replaced by the team in January 2025.
156+
162157### Libraries
163158
164159#### Production
@@ -207,12 +202,16 @@ poetry add -G dev \
207202- [ axum] : asynchronous HTTP server framework
208203- [ color-eyre] : error report handler
209204- [ clap] : elegant CLI
205+ - [ chrono] : full-featured datetime library
210206- [ indicatif] : progress reporting
207+ - [ progenitor] : OpenAPI client generator
211208- [ reqwest] : asynchronous HTTP client
212209- [ serde] : serialization/deserialization framework
213210- [ seaorm] : async & dynamic ORM
214211- [ tokio] : asynchronous runtime
215212- [ tracing.rs] : a scoped, structured logging and diagnostics system
213+ - [ utoipa] : simple, fast, code first and compile time generated OpenAPI
214+ documentation
216215
217216## Shell
218217
@@ -225,7 +224,8 @@ poetry add -G dev \
225224
226225## Tooling
227226
228- - [ just] : General purpose task runner
227+ - [ just] : general purpose task runner
228+ - [ hyperfine] : benchmark compiled binaries
229229
230230## Web
231231
@@ -255,14 +255,12 @@ Add the new `font-faces` to `styles/globals.css`:
255255
256256@font-face {
257257 font-family : " Dharma Gothic E" ;
258- src : url (" ../public/fonts/Dharma Type - DharmaGothicE-ExBold.otf" )
259- format (" opentype" );
258+ src : url (" ../public/fonts/Dharma Type - DharmaGothicE-ExBold.otf" ) format (" opentype" );
260259}
261260
262261@font-face {
263262 font-family : " Dharma Gothic E" ;
264- src : url (" ../public/fonts/Dharma Type - DharmaGothicE-ExLight.otf" )
265- format (" opentype" );
263+ src : url (" ../public/fonts/Dharma Type - DharmaGothicE-ExLight.otf" ) format (" opentype" );
266264}
267265```
268266
@@ -298,6 +296,7 @@ Here are the components collection that have been selected by the team:
298296[ aiohttp ] : https://docs.aiohttp.org/en/stable/
299297[ clap ] : https://clap.rs/
300298[ color-eyre ] : https://github.com/yaahc/color-eyre
299+ [ chrono ] : https://github.com/chronotope/chrono
301300[ furo ] : https://pradyunsg.me/furo
302301[ indicatif ] : https://github.com/mitsuhiko/indicatif
303302[ invoke ] : https://www.pyinvoke.org
@@ -307,6 +306,7 @@ Here are the components collection that have been selected by the team:
307306[ myst-parser ] : https://myst-parser.readthedocs.io/en/latest
308307[ next.js ] : https://nextjs.org/docs
309308[ poetry ] : https://python-poetry.org
309+ [ progenitor ] : https://github.com/oxidecomputer/progenitor
310310[ pydantic ] : https://pydantic-docs.helpmanual.io
311311[ pytest-cov ] : https://github.com/pytest-dev/pytest-cov
312312[ pytest-mock ] : https://github.com/pytest-dev/pytest-mock
@@ -330,11 +330,14 @@ Here are the components collection that have been selected by the team:
330330[ tokio ] : https://tokio.rs
331331[ typer ] : https://typer.tiangolo.com
332332[ typescript ] : https://www.typescriptlang.org
333+ [ uv ] : https://docs.astral.sh/uv/
334+ [ utoipa ] : https://github.com/juhaku/utoipa
333335[ xdoctest ] : https://github.com/Erotemic/xdoctest
334336
335337<!-- Tooling -->
336338
337339[ just ] : https://github.com/casey/just
340+ [ hyperfine ] : https://github.com/sharkdp/hyperfine
338341
339342<!-- General links -->
340343
0 commit comments