All the latest Robyn releases, right here.

v0.54.2 - fix: request.json to remove the extra double quotes in string types

What's Changed

  • docs: fix path params docs by @sansyrox in https://github.com/sparckles/Robyn/pull/794
  • docs: remove redundant imports from js code by @sansyrox in https://github.com/sparckles/Robyn/pull/790
  • docs: fix documentation about middlewares by @sansyrox in https://github.com/sparckles/Robyn/pull/795
  • chore: [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sparckles/Robyn/pull/798
  • chore: [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sparckles/Robyn/pull/803
  • chore: update setup.py by @jeffwidman in https://github.com/sparckles/Robyn/pull/806
  • fix: request.json by @sansyrox in https://github.com/sparckles/Robyn/pull/808

New Contributors

  • @jeffwidman made their first contribution in https://github.com/sparckles/Robyn/pull/806

Full Changelog: https://github.com/sparckles/Robyn/compare/v0.54.1...v0.54.2

v0.54.1 - fix before request middleware for file uploads

What's Changed

  • ci(commitizen): enforce conventional-commit syntax by @iiian in https://github.com/sparckles/Robyn/pull/776
  • feat: add a default type in Query Params get by @sansyrox in https://github.com/sparckles/Robyn/pull/787
  • fix: before request middleware for file uploads by @sansyrox in https://github.com/sparckles/Robyn/pull/785

New Contributors

  • @iiian made their first contribution in https://github.com/sparckles/Robyn/pull/776

Full Changelog: https://github.com/sparckles/Robyn/compare/v0.54.0...v0.54.1

v0.54.0 - add form data handling and file handling

What's Changed

  • feat: add form data handling and file handling by @sansyrox in https://github.com/sparckles/Robyn/pull/778
  • tests: add tests for form data by @sansyrox in https://github.com/sparckles/Robyn/pull/781

Full Changelog: https://github.com/sparckles/Robyn/compare/v0.53.2...v0.54.0

v0.53.2 - add __contains__ in headers

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

What's Changed

  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sparckles/Robyn/pull/774
  • fix: add contains in headers by @sansyrox in https://github.com/sparckles/Robyn/pull/775
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sparckles/Robyn/pull/779

Full Changelog: https://github.com/sparckles/Robyn/compare/v0.53.1...v0.53.2

v0.53.1 - fix internal json rendering

What's Changed

  • fix: replace jsonify with orjson by @sansyrox in https://github.com/sparckles/Robyn/pull/772

Full Changelog: https://github.com/sparckles/Robyn/compare/v0.53.0...v0.53.1

v0.53.0 - [BREAKING 🚨] - add a tuple return type and dict return cast to json

What's Changed

  • docs: fix serve html and html docs by @sansyrox in https://github.com/sparckles/Robyn/pull/770
  • feat: allow dictionary being returned directly by @sansyrox in https://github.com/sparckles/Robyn/pull/768

Full Changelog: https://github.com/sparckles/Robyn/compare/v0.52.3...v0.53.0

v0.52.3 - fix the export namespace for websockets

What's Changed

  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sparckles/Robyn/pull/762
  • chore(deps): bump the github-actions group with 1 update by @dependabot in https://github.com/sparckles/Robyn/pull/760
  • fix release ci by @sansyrox in https://github.com/sparckles/Robyn/pull/764
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sparckles/Robyn/pull/766

Full Changelog: https://github.com/sparckles/Robyn/compare/v0.52.1...v0.52.3

v0.52.2 - Fix a typo in sqlalchemy and CI fixes

What's Changed

  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sparckles/Robyn/pull/751
  • Keep GitHub Actions up to date with GitHub's Dependabot by @cclauss in https://github.com/sparckles/Robyn/pull/754
  • chore(deps): bump the github-actions group with 7 updates by @dependabot in https://github.com/sparckles/Robyn/pull/757
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sparckles/Robyn/pull/752
  • Distutils is removed in Python 3.12 so switch to setuptools by @cclauss in https://github.com/sparckles/Robyn/pull/753
  • fix: typo in sqlalchemy scaffold by @sansyrox in https://github.com/sparckles/Robyn/pull/759

New Contributors

  • @dependabot made their first contribution in https://github.com/sparckles/Robyn/pull/757

Full Changelog: https://github.com/sparckles/Robyn/compare/v0.52.0...v0.52.1

v0.52.0 - Add sqlmodel in Robyn scaffolds!

What's Changed

  • Added sqlmodel scaffold by @leogregianin in https://github.com/sparckles/Robyn/pull/749

New Contributors

  • @leogregianin made their first contribution in https://github.com/sparckles/Robyn/pull/749

Full Changelog: https://github.com/sparckles/Robyn/compare/v0.51.3...v0.52.0

v0.51.3 - fix Dockerfile in robyn scaffolds

What's Changed

  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/sparckles/Robyn/pull/747
  • fix: requirements.txt order in robyn scaffolds by @sansyrox in https://github.com/sparckles/Robyn/pull/750

Full Changelog: https://github.com/sparckles/Robyn/compare/v0.51.2...v0.51.3

v0.51.2 - implement [] sets and gets in headers

What's Changed

  • chore: fix pyproject and poetry run test_server and implement [] sets and gets in headers command by @AntoineRR in https://github.com/sparckles/Robyn/pull/746

Full Changelog: https://github.com/sparckles/Robyn/compare/v0.51.1...v0.51.2

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 --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