Skip to content

Commit 40984ed

Browse files
authored
Merge pull request #151 from grillazz/94-add-test-coverage
update README.md
2 parents 37ea51b + bbe01f7 commit 40984ed

File tree

2 files changed

+24
-18
lines changed

2 files changed

+24
-18
lines changed

README.md

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,22 +37,27 @@
3737
[//]: # (TODO: Usage,Roadmap, Contributing, License, Contact)
3838

3939

40+
## About The Project
4041

42+
This example demonstrates the seamless integration of [FastAPI](https://fastapi.tiangolo.com/), a modern, high-performance web framework,
43+
with [Pydantic 2.0](https://github.com/pydantic/pydantic), a robust and powerful data validation library.
44+
The integration is further enhanced by the use of [SQLAlchemy ORM](https://www.sqlalchemy.org/), a popular and feature-rich Object-Relational Mapping tool,
45+
and [PostgreSQL16](https://www.postgresql.org/about/news/postgresql-16-released-2715/) relational database.
4146

47+
The entire stack is connected using the [asyncpg](https://github.com/MagicStack/asyncpg) Database Client Library,
48+
which provides a robust and efficient way to interact with PostgreSQL databases in Python,
49+
leveraging the power of asyncio and event loops.
4250

51+
Notably, this example showcases the latest and greatest versions of SQLAlchemy and psycopg,
52+
which are renowned for their robustness, power, and speed. The inclusion of FastAPI adds a modern, fast, and high-performance web framework to the mix
53+
allowing for the rapid development of APIs with Python 3.8+.
4354

44-
## About The Project
45-
46-
Example of [FastAPI](https://fastapi.tiangolo.com/) integration supported by almighty [Pydantic 2.0](https://github.com/pydantic/pydantic)
47-
with [SQLAlchemy ORM](https://www.sqlalchemy.org/) and PostgreSQL16
48-
connected via fastest Database Client Library for python/asyncio [asyncpg](https://github.com/MagicStack/asyncpg).
55+
FastAPI has received significant recognition in the industry, including a review on thoughtworks Technology Radar in April 2021,
56+
where it was classified as a Trial technology, with comments praising its performance, ease of use,
57+
and features such as API documentation using OpenAPI. Additionally, FastAPI was recognized in the Python Developers Survey 2022 Results,
58+
conducted by the Python Software Foundation and JetBrains, where it was reported that 1 in 4 Python developers use FastAPI,
59+
with a 4 percentage point increase from the previous year.
4960

50-
Beside of using latest and greatest version of [SQLAlchemy](https://www.sqlalchemy.org/) with it robustness, powerfulness and speed
51-
of [asyncpg](https://github.com/MagicStack/asyncpg) there is [FastAPI](https://fastapi.tiangolo.com/) (modern, fast (high-performance),
52-
web framework for building APIs with Python 3.8+ based on standard Python type hints.) already reviewed
53-
on [thoughtworks](https://www.thoughtworks.com/radar/languages-and-frameworks?blipid=202104087) and noted in
54-
Python Developers [Survey 2021 Results](https://lp.jetbrains.com/python-developers-survey-2021/#FrameworksLibraries)
55-
as the fifth official annual Python Developers Survey, conducted as a collaborative effort between the Python Software Foundation and JetBrains.
5661

5762
### Built With
5863
[![FastAPI][fastapi.tiangolo.com]][fastapi-url]
@@ -144,6 +149,7 @@ I've included a few of my favorites to kick things off!
144149
* [SQL Code Generator](https://github.com/agronholm/sqlacodegen)
145150
* [Passlib - password hashing library for Python](https://passlib.readthedocs.io/en/stable/)
146151
* [Polars - fast DataFrame library for Rust and Python](https://docs.pola.rs/)
152+
* [Rich - Traceback and logging, made easy](https://rich.readthedocs.io/en/stable/traceback.html)
147153

148154
<p align="right">(<a href="#readme-top">back to top</a>)</p>
149155

@@ -181,11 +187,11 @@ I've included a few of my favorites to kick things off!
181187
[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555
182188
[linkedin-url]: https://www.linkedin.com/in/python-has-powers/
183189

184-
[fastapi.tiangolo.com]: https://img.shields.io/badge/FastAPI-0.110.0-009485?style=for-the-badge&logo=fastapi&logoColor=white
190+
[fastapi.tiangolo.com]: https://img.shields.io/badge/FastAPI-0.111.0-009485?style=for-the-badge&logo=fastapi&logoColor=white
185191
[fastapi-url]: https://fastapi.tiangolo.com/
186-
[pydantic.com]: https://img.shields.io/badge/Pydantic-2.6.4-e92063?style=for-the-badge&logo=pydantic&logoColor=white
192+
[pydantic.com]: https://img.shields.io/badge/Pydantic-2.7.1-e92063?style=for-the-badge&logo=pydantic&logoColor=white
187193
[pydantic-url]: https://docs.pydantic.dev/latest/
188-
[sqlalchemy.org]: https://img.shields.io/badge/SQLAlchemy-2.0.28-bb0000?color=bb0000&style=for-the-badge
194+
[sqlalchemy.org]: https://img.shields.io/badge/SQLAlchemy-2.0.30-bb0000?color=bb0000&style=for-the-badge
189195
[sqlalchemy-url]: https://docs.sqlalchemy.org/en/20/
190196
[uvicorn.org]: https://img.shields.io/badge/Uvicorn-0.29.0-2094f3?style=for-the-badge&logo=uvicorn&logoColor=white
191197
[uvicorn-url]: https://www.uvicorn.org/
@@ -198,5 +204,5 @@ I've included a few of my favorites to kick things off!
198204

199205
[rich.readthedocs.io]: https://img.shields.io/badge/rich-13.7.1-009485?style=for-the-badge&logo=rich&logoColor=white
200206
[rich-url]: https://rich.readthedocs.io/en/latest/
201-
[redis.io]: https://img.shields.io/badge/redis-5.0.3-dc382d?style=for-the-badge&logo=redis&logoColor=white
207+
[redis.io]: https://img.shields.io/badge/redis-5.0.4-dc382d?style=for-the-badge&logo=redis&logoColor=white
202208
[redis-url]: https://redis.io/

config.ini

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,20 @@ qualname = uvicorn.access
2626

2727
[handler_stream]
2828
class = app.utils.logging.RichConsoleHandler
29-
kwargs = {"omit_repeated_times":True, "show_time": False, "enable_link_path": False, "tracebacks_show_locals": True}
29+
kwargs = {"omit_repeated_times":True, "show_time": False, "enable_link_path": False, "tracebacks_show_locals": True, "rich_tracebacks": True}
3030
args = (100, "white")
3131
formatter = default
3232
stream = ext://sys.stdout
3333

3434
[handler_sqlalchemy]
3535
class = app.utils.logging.RichConsoleHandler
36-
kwargs = {"omit_repeated_times":True, "show_time": False, "enable_link_path": False, "tracebacks_show_locals": True}
36+
kwargs = {"omit_repeated_times":True, "show_time": False, "enable_link_path": False, "tracebacks_show_locals": True, "rich_tracebacks": True}
3737
args = (100, "magenta")
3838
formatter = default
3939

4040
[handler_uvicorn]
4141
class = app.utils.logging.RichConsoleHandler
42-
kwargs = {"omit_repeated_times":True, "show_time": False, "enable_link_path": False, "tracebacks_show_locals": True}
42+
kwargs = {"omit_repeated_times":True, "show_time": False, "enable_link_path": False, "tracebacks_show_locals": True, "rich_tracebacks": True}
4343
args = (100, "yellow")
4444
formatter = default
4545

0 commit comments

Comments
 (0)