Skip to content

Releases: sparckles/Robyn

v0.50.0 - add direct rust imports!

08 Jan 11:53

Choose a tag to compare

What's Changed

Full Changelog: 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

27 Dec 18:28

Choose a tag to compare

What's Changed

Sample Usage

  • robyn --version works now. No need for python -m robyn --version

Full Changelog: v0.49.0...v0.49.3

v0.49.0 - [BREAKING 🚨] - make `--dev` command a module only command

10 Dec 21:17

Choose a tag to compare

What's Changed

Full Changelog: 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

03 Dec 21:42

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 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`

02 Dec 10:16

Choose a tag to compare

What's Changed

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: v0.46.0...v0.47.0

v0.46.0 - [BREAKING 🚨] - Replace `queries` with `query_params` and replace `dict` with a custom `multimap`

25 Nov 20:27

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.45.0...v0.46.0

v0.45.0 - Create Robyn App on steroids!

06 Nov 17:45

Choose a tag to compare

What's Changed

  • feat: add ability in robyn cli to scaffold example programs with various DBs by @bwdq in #584
  • fix: .gitignore fix for docs_src by @Mr-Sunglasses in #673
  • style: add better log message for route population by @sansyrox in #682

Doc Updates

New Contributors

Full Changelog: 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

29 Oct 13:53

Choose a tag to compare

What's Changed

Full Changelog: v0.44.1...v0.44.2

v0.44.1 - fix import-error in --create robyn app and other fixes

22 Oct 21:06

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.44.0...v0.44.1

v0.44.0 - [🚨BREAKING] - Add a new way of using websockets - implement broadcasts and sends

15 Oct 01:22

Choose a tag to compare

What's Changed

@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: v0.43.0...v0.44.0