v0.51.1 - fix --dev reloading bug
What's Changed
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sparckles/Robyn/pull/739
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sparckles/Robyn/pull/740
- fix: robyn dev loading bug by @sansyrox in https://github.com/sparckles/Robyn/pull/743
Full Changelog: https://github.com/sparckles/Robyn/compare/v0.51.0...v0.51.1
v0.51.0 - add a way to serve html strings
What's Changed
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sparckles/Robyn/pull/736
- feat: add a way to serve htmls by @sansyrox in https://github.com/sparckles/Robyn/pull/730
- fix(releases.jsx): docs' heading colors by @sansyrox in https://github.com/sparckles/Robyn/pull/737
Full Changelog: https://github.com/sparckles/Robyn/compare/v0.50.0...v0.51.0
v0.50.0 - add direct rust imports!
What's Changed
- feat: add rust imports by @sansyrox in https://github.com/sparckles/Robyn/pull/717
- fix: rust imports by @sansyrox in https://github.com/sparckles/Robyn/pull/733
- docs: fix web sockets docs by @sansyrox in https://github.com/sparckles/Robyn/pull/732
Full Changelog: https://github.com/sparckles/Robyn/compare/v0.49.3...v0.50.0
Docs - https://robyn.tech/documentation/api_reference/using_rust_directly
A detailed thought process here - https://sanskar.wtf/posts/future-of-web-apis
v0.49.3 - fix cli invocation
What's Changed
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sparckles/Robyn/pull/715
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sparckles/Robyn/pull/719
- Add argument 'origins' to Cors docs by @carlosm27 in https://github.com/sparckles/Robyn/pull/710
- docs: fix docs color scheme by @sansyrox in https://github.com/sparckles/Robyn/pull/720
- docs: fix headers docs by @sansyrox in https://github.com/sparckles/Robyn/pull/721
- feat: make startup link log clickable by @sansyrox in https://github.com/sparckles/Robyn/pull/722
- fix: cli invocation for Robyn by @sansyrox in https://github.com/sparckles/Robyn/pull/723
Sample Usage
robyn --versionworks now. No need forpython -m robyn --version
Full Changelog: https://github.com/sparckles/Robyn/compare/v0.49.0...v0.49.3
v0.49.0 - [BREAKING 🚨] - make `--dev` command a module only command
What's Changed
- docs: fix broken link for di page by @sansyrox in https://github.com/sparckles/Robyn/pull/707
- feat: make the cli the entry point by @sansyrox in https://github.com/sparckles/Robyn/pull/713
- docs: add docs for --dev flag by @sansyrox in https://github.com/sparckles/Robyn/pull/714
Full Changelog: https://github.com/sparckles/Robyn/compare/v0.48.0...v0.49.0
Now, --dev mode only works as a module command, e.g. python -m robyn --dev
We had to make --dev command as a module only command to add support for file deletion. Deletion of files would break the module imports otherwise.
v0.48.0 - add dependency injections
What's Changed
- feat: add dependency injections by @DarrenSeng @Frodriguez116 @sansyrox in https://github.com/sparckles/Robyn/pull/569
New Contributors
- @DarrenSeng made their first contribution in https://github.com/sparckles/Robyn/pull/569
- @Frodriguez116 made their first contribution in https://github.com/sparckles/Robyn/pull/569
Full Changelog: https://github.com/sparckles/Robyn/compare/v0.47.0...v0.48.0
Sample Usage
https://robyn.tech/documentation/api_reference/dependency_injection
v0.47.0 - [BREAKING 🚨] - Replace `headers` dict with a custom `multimap`
What's Changed
- feat: add multimap headers by @sansyrox in https://github.com/sparckles/Robyn/pull/704
New headers object
class Headers:
def __init__(self, default_headers: Optional[dict]) -> None:
pass
def set(self, key: str, value: str) -> None:
"""
Sets the value of the header with the given key.
If the key already exists, the value will be appended to the list of values.
Args:
key (str): The key of the header
value (str): The value of the header
"""
pass
def get(self, key: str) -> Optional[str]:
"""
Gets the last value of the header with the given key.
Args:
key (str): The key of the header
"""
pass
def populate_from_dict(self, headers: dict[str, str]) -> None:
"""
Populates the headers from a dictionary.
Args:
headers (dict[str, str]): The dictionary of headers
"""
pass
def contains(self, key: str) -> bool:
"""
Returns:
True if the headers contain the key, False otherwise
Args:
key (str): The key of the header
"""
pass
def is_empty(self) -> bool:
pass
Full Changelog: https://github.com/sparckles/Robyn/compare/v0.46.0...v0.47.0
v0.46.0 - [BREAKING 🚨] - Replace `queries` with `query_params` and replace `dict` with a custom `multimap`
What's Changed
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sparckles/Robyn/pull/683
- Fix a few typos in documentation by @danielhoherd in https://github.com/sparckles/Robyn/pull/689
- docs: replace beta community link with new link by @sansyrox in https://github.com/sparckles/Robyn/pull/690
- Fix typo in file uploads docs by @Abdur-rahmaanJ in https://github.com/sparckles/Robyn/pull/694
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sparckles/Robyn/pull/692
- docs: add docs for v0.45.0 - improve create robyn app by @sansyrox in https://github.com/sparckles/Robyn/pull/700
- fix: add a multi map data structure to query parameters by @sansyrox in https://github.com/sparckles/Robyn/pull/699
New Contributors
- @danielhoherd made their first contribution in https://github.com/sparckles/Robyn/pull/689
Full Changelog: https://github.com/sparckles/Robyn/compare/v0.45.0...v0.46.0
v0.45.0 - Create Robyn App on steroids!
What's Changed
- feat: add ability in robyn cli to scaffold example programs with various DBs by @bwdq in https://github.com/sparckles/Robyn/pull/584
- fix: .gitignore fix for docs_src by @Mr-Sunglasses in https://github.com/sparckles/Robyn/pull/673
- style: add better log message for route population by @sansyrox in https://github.com/sparckles/Robyn/pull/682
Doc Updates
- docs: update metadata by @sansyrox in https://github.com/sparckles/Robyn/pull/674
- docs: Changing from bash to python for authentication script by @jeasoft in https://github.com/sparckles/Robyn/pull/677
- docs: fix pip install command for strawberry and Robyn by @jeasoft in https://github.com/sparckles/Robyn/pull/676
- docs: fix import error in plugin docs by @Mr-Sunglasses in https://github.com/sparckles/Robyn/pull/681
- docs: Fixing Future Roadmap path by @jeasoft in https://github.com/sparckles/Robyn/pull/675
- docs: add Daniel's testimonial by @sansyrox in https://github.com/sparckles/Robyn/pull/670
New Contributors
- @bwdq made their first contribution in https://github.com/sparckles/Robyn/pull/584
- @jeasoft made their first contribution in https://github.com/sparckles/Robyn/pull/677
Full Changelog: https://github.com/sparckles/Robyn/compare/v0.44.2...v0.45.0
Sample Usage
python3 -m robyn --create
? Directory Path: .
? Need Docker? (Y/N) Y
? Please select project type (Mongo/Postgres/Sqlalchemy/Prisma): Postgres
Creating a new Robyn project '/Users/sanskar/test_dumpster/robyn-new'...
New Robyn project created in '/Users/sanskar/test_dumpster/robyn-new'
v0.44.2 - support Python 3.12 and minor fixes in main cli
What's Changed
- Add robyn env docs by @sansyrox in https://github.com/sparckles/Robyn/pull/655
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sparckles/Robyn/pull/660
- migrate to new docs by @sansyrox in https://github.com/sparckles/Robyn/pull/661
- style: adopt ruff format by @sansyrox in https://github.com/sparckles/Robyn/pull/665
- docs: update docs link by @sansyrox in https://github.com/sparckles/Robyn/pull/666
- chore: adopt python 3.12 by @sansyrox in https://github.com/sparckles/Robyn/pull/668
Full Changelog: https://github.com/sparckles/Robyn/compare/v0.44.1...v0.44.2
v0.44.1 - fix import-error in --create robyn app and other fixes
What's Changed
- docs: Docs suggestions by @elliotwaite in https://github.com/sparckles/Robyn/pull/650
- fix broken links in docs readme by @Daksh in https://github.com/sparckles/Robyn/pull/652
- docs: New docs fixes by @elliotwaite in https://github.com/sparckles/Robyn/pull/651
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sparckles/Robyn/pull/649
- ci: use nox by @IdoKendo in https://github.com/sparckles/Robyn/pull/623
- fix: import-error and broken docs by @Mr-Sunglasses in https://github.com/sparckles/Robyn/pull/658
New Contributors
- @elliotwaite made their first contribution in https://github.com/sparckles/Robyn/pull/650
- @Daksh made their first contribution in https://github.com/sparckles/Robyn/pull/652
Full Changelog: https://github.com/sparckles/Robyn/compare/v0.44.0...v0.44.1
v0.44.0 - [🚨BREAKING] - Add a new way of using websockets - implement broadcasts and sends
What's Changed
- fix: websockets by @sansyrox in https://github.com/sparckles/Robyn/pull/620
- docs: add docs for request.json by @sansyrox in https://github.com/sparckles/Robyn/pull/641
- docs: add docs for architecture by @sansyrox in https://github.com/sparckles/Robyn/pull/645
- docs: add docs for framework performance comparison by @sansyrox in https://github.com/sparckles/Robyn/pull/647
- docs: add docs for plugins by @sansyrox in https://github.com/sparckles/Robyn/pull/648
@websocket.on("message")
async def message(ws: WebSocketConnector, msg: str) -> str:
global websocket_state
websocket_id = ws.id
state = websocket_state[websocket_id]
resp = ""
if state == 0:
resp = "Whaaat??"
await ws.async_broadcast("This is a broadcast message")
ws.sync_send_to(websocket_id, "This is a message to self")
elif state == 1:
resp = "Whooo??"
elif state == 2:
resp = "*chika* *chika* Slim Shady."
websocket_state[websocket_id] = (state + 1) % 3
return resp
Full Changelog: https://github.com/sparckles/Robyn/compare/v0.43.0...v0.44.0
v0.43.0 - Breaking 🚨 - Replace `url` parameter in the `app.start` and fix app router headers
What's Changed
- fix: pass response headers from app to router by @IdoKendo in https://github.com/sparckles/Robyn/pull/625
- Replace
urlparameter in theapp.startby @carlosm27 in https://github.com/sparckles/Robyn/pull/614
Full Changelog: https://github.com/sparckles/Robyn/compare/v0.42.2...v0.43.0
v0.42.1 - expose Url objects for test clients and performance improvements
What's Changed
- Update README.md by @tushar5526 in https://github.com/sparckles/Robyn/pull/634
- feat: enable lazy evaluation for logger by @IdoKendo in https://github.com/sparckles/Robyn/pull/633
- feat: add Request and Url objects constructors to enable easier testing by @IdoKendo in https://github.com/sparckles/Robyn/pull/630
New Contributors
- @tushar5526 made their first contribution in https://github.com/sparckles/Robyn/pull/634
Full Changelog: https://github.com/sparckles/Robyn/compare/v0.42.0...v0.42.1
v0.42.0 - add `request.json()` with startup performance improvements
What's Changed
- DOCS: fixes broken link to resources on README by @github-education in https://github.com/sparckles/Robyn/pull/628
- fix: remove redundant Arc by @IdoKendo in https://github.com/sparckles/Robyn/pull/626
- feat: add request.json() method by @IdoKendo in https://github.com/sparckles/Robyn/pull/629
New Contributors
- @github-education made their first contribution in https://github.com/sparckles/Robyn/pull/628
Full Changelog: https://github.com/sparckles/Robyn/compare/v0.41.1...v0.42.0
v0.41.1 - Improved logging and adding a --version flag
What's Changed
- docs: add new docs website by @sansyrox in https://github.com/sparckles/robyn/pull/608
- feat: log routes when the router is populated by @carlosm27 in https://github.com/sparckles/robyn/pull/609
- feat: add a --version flag by @sansyrox in https://github.com/sparckles/robyn/pull/619
Full Changelog: https://github.com/sparckles/robyn/compare/v0.41.0...v0.41.1
v0.41.0 - Replace body with description parameter and reduce wheel size
What's Changed
- chore: decrease .whl filesize by @IdoKendo in https://github.com/sparckles/robyn/pull/603
- fix: replace body with description by @sansyrox in https://github.com/sparckles/robyn/pull/604
Full Changelog: https://github.com/sparckles/robyn/compare/v0.40.0...v0.41.0
v0.40.0 - allow adding routes without using decorator
What's Changed
- docs(README): Replace sansyrox with sparckles by @sansyrox in https://github.com/sparckles/robyn/pull/598
- feat: allow adding routes without using decorator by @IdoKendo in https://github.com/sparckles/robyn/pull/592
- ci: drop sun and ibm support by @sansyrox in https://github.com/sparckles/robyn/pull/601
- Add proper condition for installing uvloop by @banipreetr in https://github.com/sparckles/robyn/pull/595
New Contributors
- @banipreetr made their first contribution in https://github.com/sparckles/robyn/pull/595
Full Changelog: https://github.com/sparckles/robyn/compare/v0.39.0...v0.40.0
v0.39.0 - Breaking - Replace body with description parameter in the Response object
What's Changed
- Feat/398 use poetry by @IdoKendo in https://github.com/sparckles/robyn/pull/512
- feat: Improved the Current CLI. by @Mr-Sunglasses in https://github.com/sparckles/robyn/pull/556
- ci: sync release and preview release actions by @sansyrox in https://github.com/sparckles/robyn/pull/581
- Replace body with description parameter in Response object by @carlosm27 in https://github.com/sparckles/robyn/pull/580
- chore: remove python3.7 support by @sansyrox in https://github.com/sparckles/robyn/pull/591
- docs: add robyn-rate-limits to plugins doc by @IdoKendo in https://github.com/sparckles/robyn/pull/596
Full Changelog: https://github.com/sparckles/robyn/compare/v0.38.0...v0.39.0
v0.38.0 - An improved CLI for create-robyn-app
What's Changed
- Feat/398 use poetry by @IdoKendo in https://github.com/sparckles/robyn/pull/512
- feat: Improved the Current CLI. by @Mr-Sunglasses in https://github.com/sparckles/robyn/pull/556
- ci: sync release and preview release actions by @sansyrox in https://github.com/sparckles/robyn/pull/581
https://github.com/sparckles/robyn/assets/29942790/afcfb08e-1f43-43d1-879c-b23e876527df
Full Changelog: https://github.com/sparckles/robyn/compare/v0.37.0...v0.38.0
v0.37.0 - faster jsonification - implement a rust based json serializations
What's Changed
- Typo Fix in Docs by @ruslan-korneev in https://github.com/sparckles/robyn/pull/563
- chore: fix pyproject implementation style by @sansyrox in https://github.com/sparckles/robyn/pull/522
- feat: faster jsonification by @sansyrox in https://github.com/sparckles/robyn/pull/571
New Contributors
- @ruslan-korneev made their first contribution in https://github.com/sparckles/robyn/pull/563
Full Changelog: https://github.com/sparckles/robyn/compare/v0.36.2...v0.37.0
v0.35.0 - Add ability to share client messages and add --open flag to open browser on successful start
What's Changed
- Adds ability to share messages from client with py by @urjitbhatia in https://github.com/sansyrox/robyn/pull/537
- feat: add --open flag to open browser on successful start of the server by @IdoKendo in https://github.com/sansyrox/robyn/pull/517
Full Changelog: https://github.com/sansyrox/robyn/compare/v0.34.0...v0.35.0
v0.34.0 - Make web sockets standard compliant and allow middlewares to return Response objects
What's Changed
- Don't respond with pong when a pong message is received. by @urjitbhatia in https://github.com/sansyrox/robyn/pull/536
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sansyrox/robyn/pull/540
- feat: allow before middlewares to return Response objects by @AntoineRR in https://github.com/sansyrox/robyn/pull/534
Full Changelog: https://github.com/sansyrox/robyn/compare/v0.33.0...v0.34.0
v0.33.0 - Adds ip_addr field in the request object and add const style http enums
What's Changed
- feat: add ip_addr field to Request object by @IdoKendo in https://github.com/sansyrox/robyn/pull/530
- feat: Migrated Enum style error codes to constants style by @Mr-Sunglasses in https://github.com/sansyrox/robyn/pull/533
New Contributors
- @Mr-Sunglasses made their first contribution in https://github.com/sansyrox/robyn/pull/533
Full Changelog: https://github.com/sansyrox/robyn/compare/v0.32.0...v0.33.0
v0.32.0 - Implement SubRouters
We're proud to announce the addition of SubRouters to Robyn. This feature allows developers to create subrouters, providing a convenient way to group routes together.
The functionality of SubRouters extends to both normal routes and web sockets, acting as a smaller-scale replica of the main router. SubRouters can be utilized in exactly the same way as the main router, with the minor prerequisite of adding the SubRouter to the main router.
We hope you enjoy the increased flexibility this feature brings to your routing capabilities in Robyn! As always, we look forward to your feedback.
What's Changed
- Update features.md - change query param syntax by @urjitbhatia in https://github.com/sansyrox/robyn/pull/520
- Comply with pyproject definition by @Kludex in https://github.com/sansyrox/robyn/pull/521
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sansyrox/robyn/pull/523
- Routers by @Noborita9 and @sansyrox in https://github.com/sansyrox/robyn/pull/497
New Contributors
- @urjitbhatia made their first contribution in https://github.com/sansyrox/robyn/pull/520
Sample Usage
SubRouters
You can create subrouters in Robyn. This is useful when you want to group routes together.
Subrouters can be used for both normal routes and web sockets. They are basically a mini version of the main router and can be used in the same way.
The only caveat is that you need to add the subrouter to the main router.
from robyn import Robyn, SubRouter
app = Robyn(__file__)
sub_router = SubRouter("/sub_router")
@sub_router.get("/hello")
def hello():
return "Hello, world"
web_socket = SubRouter("/web_socket")
@web_socket.message()
async def hello():
return "Hello, world"
app.add_sub_router(sub_router)
Full Changelog: https://github.com/sansyrox/robyn/compare/v0.31.0...v0.32.0
