The singlefile-ness of Bottle is no longer unique.
For example, the modern day Fastapi built on async ASGI (and ranks top in framework benchmarks) is also single file.
FastAPI and Starlette both have tons of files, and even subpackages. Bottle ships as only a single bottle.py file, with no external dependencies (only Python standard library). FastAPI depends on Starlette, and both have a set of optional external dependencies.
> However, it is a bit tricky to run Bottle with production grade servers like gunicorn/uwsgi.
It’s indeed strange to call any WSGI-capable framework (all of them?) tricky to deploy with gunicorn/uwsgi. All you need to do is expose the WSGI object.
https://github.com/tiangolo/fastapi
or Fastapi for that matter - https://github.com/encode/starlette
However, it is a bit tricky to run Bottle with production grade servers like gunicorn/uwsgi.