typeshed
fastapi
typeshed | fastapi | |
---|---|---|
24 | 470 | |
4,089 | 71,223 | |
1.8% | - | |
9.9 | 9.8 | |
2 days ago | 5 days ago | |
Python | Python | |
GNU General Public License v3.0 or later | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
typeshed
-
What's the point of using `Any` in Union, such as `str | Any`
"csv.pyi is from VS Code Pylance extension" is misleading. Yes, it's included in the code base of the extension, but it's likely originally from python/typeshed. I diffed csv.pyi in the extension and the repository, and they're exactly the same.
-
Importing python libraries "Cannot find implementation or library stub for module named ..."
You can check the typeshed library that offers stubs for many packages.
-
Ask HN: Will we see a TypeScript for Python?
https://github.com/python/typeshed is Python's equivalent of DefinitelyTyped. I'm not 100% sure why it's not more of a popular thing the way DefinitelyTyped is; I think there might, to some extent, be different attitudes around the appropriateness of having third-party typings for packages, when the actual maintainer of the package isn't interested in providing first-party ones.
-
Why Type Hinting Sucks!
https://github.com/python/mypy same with typeshed https://github.com/python/typeshed
-
When the client's management is happy but their dev team is a pain
Here's the tensorflow type stubs on typeshed. https://github.com/python/typeshed/tree/main/stubs/tensorflow
-
Offer to Type Hint API's, or Start a Statically Typed Python?
Also, be aware that there is already a central place for stubs files. If you are going to take the time to write one, contributing it there will help everyone if the package owners aren't already including some type hints.
-
Ruby 3.2’s YJIT is Production-Ready
Python's type hints are definitely an improvement and they're getting better all the time, but they're still frustrating to use at anything approaching the edge. I long for something as elegant and functional as TypeScript.
One hurdle I've stumbled over recently is the question "what is a type?", the answer can be surprising. Unions, for example, are types but not `Type`s. A function that takes an argument of type `Type` will not accept a Union. So if you want to write a function that effectively "casts" a parameter to a specified type, you can't. The best you can do is have an overload that accepts `Type` and does an actual cast, and then another that just turns it into `Any`. This is, in fact, how the standard library types its `cast` function [1]. The argument I've seen for the current behavior is that `Type` describes anything that can be passed to isinstance, but that's not a satisfying answer. Even then, `Union` can be passed to isinstance and still does not work with `Type`. Talk currently is to introduce a new kind of type called `TypeForm` or something to address this, which is certainly an improvement over nothing, but still feels like technical debt.
[1]: https://github.com/python/typeshed/blob/main/stdlib/typing.p...
-
GitHub stars won't pay your rent
>Ultimately if you care enough about Fody to spend over a hundred dollars worth of your time contributing to it, you probably care enough about Fody to drop them three dollars.
No, I really don't.
https://github.com/keepassxreboot/keepassxc/pull/8500 - I was randomly reading keepassxc's manpage and spotted a curious option, spent some time spelunking through the code and history to discover that it was an outdated option, sent a PR.
https://github.com/python/typeshed/pull/8617 - I converted one of the scripts I use in my DE from shell to Python, saw that VSCode has this new fancy typing support for Python, quickly found a basic bug in the type definitions for the os module, tested a fix locally, sent a PR.
https://gitlab.gnome.org/GNOME/gtk/-/issues/5250 - I found an issue with copy-paste on my phone, investigated it all the way through to the GTK stack, found the commits that introduced the issue, created a distro patch for it while discussing it with GTK upstream.
https://gitlab.alpinelinux.org/alpine/aports/-/merge_request... - I noticed that gnome-passwordsafe crashes some times, debugged it to discover that it was missing a dependency, sent a PR to the distro package to update the dependencies.
etc etc. I've made lots of fixes like these. I have no interest in paying for each and every one of them. The projects are all better off for fixes like mine and gatekeeping them on payment would've been nothing but their loss.
-
Wrapping my head around type hinting
The csv module is one of those standard library modules that doesn't provide its own type hints, but instead gets them through the external typeshed project, and (for compatibility/implementation reasons, I surmise) the name of these types sometimes don't quite align with the objects they correspond to. So, for all intents and purposes, _csv._reader is the correct name of the type that csv.reader() returns, as ugly as it is.
-
Using Mypy in Production
You have to do handling like that in other languages like TypeScript anyway.
Painpoint with type annotations:
- not being able to reuse "shapes" of data: TypedDict, NamedTuple, dataclasses.dataclass, and soon kwargs (PEP 692 [1]) all have named, typed fields now. You have to
- Since there's no generic "shape" structure that works across data types, there isn't a way to load up a JSON / YAML / TOML into a dictionary, upcast it via a `TypedGuard`, and pass it into a TypedDict / NamedTuple / Dataclass. dataclasses.asdict() or dataclasses.astuple() return naive / untyped tuples and dicts. Also the factory functions will not work with TypedDict or NamedTuple, respectively, even if you duplicate the fields by hand. See my post here: https://github.com/python/typeshed/issues/8580
- Standard library doesn't have runtime validation (e.g. pydantic / https://github.com/pydantic/pydantic).
- pytest fixtures are hard.
- Django is hard. PEP 681 may not be a saving grace either. [3]
[1] https://peps.python.org/pep-0692/
fastapi
-
Github Sponsor Sebastián Ramírez Python programmer
He is probably most well know for creating FastAPI that I taught to some of my clients and Typer that I've never used.
-
Python: A SQLAlchemy Wrapper Component That Works With Both Flask and FastAPI Frameworks
It has been an interesting exercise developing this wrapper component. The fact that it seamlessly integrates with the FastAPI framework is just a bonus for me; I didn't plan for it since I hadn't learned FastAPI at the time. I hope you find this post useful. Thank you for reading, and stay safe as always.
-
FastAPI Best Practices: A Condensed Guide with Examples
FastAPI is a modern, high-performance web framework for building APIs with Python, based on standard Python type hints.
-
Building an Email Assistant Application with Burr
In this tutorial, I will demonstrate how to use Burr, an open source framework (disclosure: I helped create it), using simple OpenAI client calls to GPT4, and FastAPI to create a custom email assistant agent. We’ll describe the challenge one faces and then how you can solve for them. For the application frontend we provide a reference implementation but won’t dive into details for it.
-
FastAPI Got Me an OpenAPI Spec Really... Fast
That’s when I found FastAPI.
-
How to Deploy a Fast API Application to a Kubernetes Cluster using Podman and Minikube
FastAPI & Uvicorn
-
Analysing FastAPI Middleware Performance
Discussion at FastAPI GitHub: https://github.com/tiangolo/fastapi/issues/2696
-
LangChain, Python, and Heroku
An API application framework (such as FastAPI)
-
Litestar – powerful, flexible, and highly performant Python ASGI framework
It’s been my experience that async Python frameworks tend to turn IO bound problems into CPU bound problems with a high enough request rate, because due to their nature they act as unbounded queues.
This ends up made worse if you’re using sync routes.
If you’re constrained on a resource such as a database connection pool, your framework will continue to pull http requests off the wire that a sane client will cancel and retry due to timeouts because it takes too long to get a connection out of the pool. Since there isn’t a straightforward way to cancel the execution of a route handler in every Python http framework I’ve seen exhibit this problem, the problem quickly snowballs.
This is an issue with fastapi, too- https://github.com/tiangolo/fastapi/issues/5759
-
AI-Powered Image Search with CLIP, pgvector, and Fast API
Fast API.
What are some alternatives?
pyre-check - Performant type-checking for python.
AIOHTTP - Asynchronous HTTP client/server framework for asyncio and Python
mypy - Optional static typing for Python
HS-Sanic - Async Python 3.6+ web server/framework | Build fast. Run fast. [Moved to: https://github.com/sanic-org/sanic]
NumPy - The fundamental package for scientific computing with Python.
Tornado - Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed.
flask-parameter-validation - Get and validate all Flask input parameters with ease.
django-ninja - 💨 Fast, Async-ready, Openapi, type hints based framework for building APIs
dactyl-keyboard - Web generator for dactyl keyboards.
Flask - The Python micro framework for building web applications.
Nuitka - Nuitka is a Python compiler written in Python. It's fully compatible with Python 2.6, 2.7, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, and 3.11. You feed it your Python app, it does a lot of clever things, and spits out an executable or extension module.
swagger-ui - Swagger UI is a collection of HTML, JavaScript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API.