All the latest Robyn releases, right here.

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 --version works now. No need for python -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 url parameter in the app.start by @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.2 - fix minor issue with --create flag

Full Changelog: https://github.com/sparckles/Robyn/compare/v0.42.1...v0.42.2

  • Fix Typo - https://github.com/sparckles/Robyn/commit/bb0b8e23be5fa2a7eb148c7cd5ad52623db50a78

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.36.2 - Fixes Robyn CLI Docker Support

What's Changed

  • Fix Robyn CLI Docker Support - https://github.com/sparckles/robyn/commit/cc25de91cb6a261753392730e800d99e6ac0a1f7

Full Changelog: https://github.com/sparckles/robyn/compare/v0.36.0...v0.36.2

v0.36.0 - Add authentication Support

What's Changed

  • feat: add authentication support by @AntoineRR in https://github.com/sparckles/robyn/pull/501

Full Changelog: https://github.com/sparckles/robyn/compare/v0.35.1...v0.36.0

v0.35.1 - make returning text from websocket messages optional

What's Changed

  • make returning text from websocket messages optional by @urjitbhatia in https://github.com/sansyrox/robyn/pull/545

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.35.0...v0.35.1

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

v0.31.0 - Add a global exception handler decorator

What's Changed

  • feat: add app.exception decorator to handle errors by @IdoKendo in https://github.com/sansyrox/robyn/pull/510

New Contributors

  • @IdoKendo made their first contribution in https://github.com/sansyrox/robyn/pull/510

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.30.0...v0.31.0

v0.30.0 - BIRTHDAY RELEASE 🎂 - Add Global Middlewares

What's Changed

  • feat: add global middlewares, which are middleware executed before or… by @AntoineRR in https://github.com/sansyrox/robyn/pull/498
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sansyrox/robyn/pull/516

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.29.0...v0.30.0

v0.29.0 - Add docker support in create robyn app

What's Changed

  • documentation update by @yednapg in https://github.com/sansyrox/robyn/pull/493
  • Feat: Cli improvements by @Oluwaseun241 in https://github.com/sansyrox/robyn/pull/481

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.28.4...v0.29.0

v0.28.4 - Fix binary file uploading, improve error tracebacks and improve logging

What's Changed

  • added discord link by @yednapg in https://github.com/sansyrox/robyn/pull/488
  • ✨ feat: display traceback for execute_http_function by @mirecl in https://github.com/sansyrox/robyn/pull/478
  • ✨ feat: display Robyn version on start app by @mirecl in https://github.com/sansyrox/robyn/pull/479
  • feat: fix binary file uploading by @sansyrox in https://github.com/sansyrox/robyn/pull/491
  • feat: improve logging by @sansyrox in https://github.com/sansyrox/robyn/pull/490
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sansyrox/robyn/pull/489

New Contributors

  • @yednapg made their first contribution in https://github.com/sansyrox/robyn/pull/488

Full Changelog: https://github.com/sansyrox/robyn/compare/v0.28.3...v0.28.4