Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Repeated content appearing in cells #3554

Open
essicolo opened this issue Jan 23, 2025 · 10 comments
Open

Repeated content appearing in cells #3554

essicolo opened this issue Jan 23, 2025 · 10 comments
Labels
bug Something isn't working

Comments

@essicolo
Copy link

Describe the bug

After leaving a notebook idle for about 15 minutes, the content and import statements are duplicated multiple times within the cells.

Environment

{
  "marimo": "0.10.16",
  "OS": "Windows",
  "OS Version": "10",
  "Processor": "Intel64 Family 6 Model 186 Stepping 2, GenuineIntel",
  "Python Version": "3.12.8",
  "Binaries": {
    "Browser": "--",
    "Node": "v23.1.0"
  },
  "Dependencies": {
    "click": "8.1.7",
    "docutils": "0.21.2",
    "itsdangerous": "2.2.0",
    "jedi": "0.19.2",
    "markdown": "3.7",
    "narwhals": "1.22.0",
    "packaging": "24.2",
    "psutil": "6.1.1",
    "pygments": "2.19.1",
    "pymdown-extensions": "10.14",
    "pyyaml": "6.0.2",
    "ruff": "0.9.2",
    "starlette": "0.45.2",
    "tomlkit": "0.13.2",
    "typing-extensions": "4.12.2",
    "uvicorn": "0.34.0",
    "websockets": "14.1"
  },
  "Optional Dependencies": {
    "altair": "5.0.1",
    "duckdb": "1.1.3",
    "pandas": "2.2.3"
  }
}

Code to reproduce

import marimo

__generated_with = "0.10.16"
app = marimo.App()


@app.cell
def _():
    import marimo as mo
    return (mo,)


@app.cell(hide_code=True)
def _(mo):
    mo.md(
        r"""
        # 5. Marimo

        Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.
        """
    )
    return


@app.cell
def _():
    return


if __name__ == "__main__":
    app.run()

Became the following

import marimo

__generated_with = "0.10.16"
app = marimo.App()


app._unparsable_cell(
    r"""
    import marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as moimport marimo as mo
    """,
    name="_"
)


app._unparsable_cell(
    r"""
    mo.md(
        r\"\"\"
        # 5. Marimo

        Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.
        \"\"\"
    )# 5. Marimo

    Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.mo.md(
        r\"\"\"
        # 5. Marimo

        Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.
        \"\"\"
    )# 5. Marimo

    Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.mo.md(
        r\"\"\"
        # 5. Marimo

        Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.
        \"\"\"
    )# 5. Marimo

    Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.mo.md(
        r\"\"\"
        # 5. Marimo

        Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.
        \"\"\"
    )# 5. Marimo

    Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.mo.md(
        r\"\"\"
        # 5. Marimo

        Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.
        \"\"\"
    )# 5. Marimo

    Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.mo.md(
        r\"\"\"
        # 5. Marimo

        Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.
        \"\"\"
    )# 5. Marimo

    Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.mo.md(
        r\"\"\"
        # 5. Marimo

        Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.
        \"\"\"
    )# 5. Marimo

    Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.mo.md(
        r\"\"\"
        # 5. Marimo

        Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.
        \"\"\"
    )# 5. Marimo

    Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.mo.md(
        r\"\"\"
        # 5. Marimo

        Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.
        \"\"\"
    )# 5. Marimo

    Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.mo.md(
        r\"\"\"
        # 5. Marimo

        Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.
        \"\"\"
    )# 5. Marimo

    Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.mo.md(
        r\"\"\"
        # 5. Marimo

        Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.
        \"\"\"
    )# 5. Marimo

    Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.mo.md(
        r\"\"\"
        # 5. Marimo

        Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.
        \"\"\"
    )# 5. Marimo

    Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.mo.md(
        r\"\"\"
        # 5. Marimo

        Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.
        \"\"\"
    )# 5. Marimo

    Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.mo.md(
        r\"\"\"
        # 5. Marimo

        Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.
        \"\"\"
    )# 5. Marimo

    Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.mo.md(
        r\"\"\"
        # 5. Marimo

        Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.
        \"\"\"
    )# 5. Marimo

    Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.mo.md(
        r\"\"\"
        # 5. Marimo

        Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.
        \"\"\"
    )# 5. Marimo

    Ce chapitre est dédié à la découverte des carnets *Marimo*. Si vous préférez coder en Python dans une autre interface (Pycharm, VSCode), vous pouvez passer au chapitre 6.
    """,
    name="_",
    column=None, disabled=False, hide_code=True
)


if __name__ == "__main__":
    app.run()

@essicolo essicolo added the bug Something isn't working label Jan 23, 2025
@mscolnick
Copy link
Contributor

Do you have any experimental flags set? How are you running mairmo?

@essicolo
Copy link
Author

I ran marimo in Edge in a mamba environment (nevertheless installed with pip), no collaboration but all experimental flags were on, with Ollama chatbot.

@mscolnick
Copy link
Contributor

If the RTC flag was on (and even if it was only you), that could be the reason. I am betting if you disconnect/reconnect for a second, I bet there is a mismatch in state such that the RTC plugin thinks there is no code so applies the existing code.

@danmackinlay
Copy link

danmackinlay commented Jan 25, 2025

Can confirm this behaviour occurred for me also with RTC over an unreliable connection

@robd518
Copy link

robd518 commented Feb 12, 2025

Also confirmed when RTC is enabled this occurs.

@jmollix
Copy link

jmollix commented Feb 12, 2025

I am also experiencing this issue when RTC is enabled

@mscolnick
Copy link
Contributor

hey everyone, I just merged a potential fix and released 0.11.5. Can folks try it out and let me know if they are still experiencing this issue?

@robd518
Copy link

robd518 commented Feb 17, 2025

I deployed 0.11.5 and unfortunately am unable to login and test the fix.

If I include the access_token parameter(i.e. - http://127.0.0.1:2718?access_token=giantmeteor2024justenditalreadyloljk-nobutreally), I'm able to log in just fine.

If I don't - and I try to login via the auth page - I get the following error in the browser:{"detail":"'NoneType' object has no attribute 'is_authenticated'"}.

Console logs display the following stack below - then my container restarts. Happy to provide more details if needed.

ERROR:    Exception in ASGI application
  + Exception Group Traceback (most recent call last):
  |   File "/home/app_user/venv/lib/python3.13/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/home/app_user/venv/lib/python3.13/site-packages/starlette/middleware/base.py", line 178, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ~~~~~~~~~~~~~~~~~~~~~~~^^
  |   File "/home/app_user/venv/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 767, in __aexit__
  |     raise BaseExceptionGroup(
  |         "unhandled errors in a TaskGroup", self._exceptions
  |     )
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/home/app_user/venv/lib/python3.13/site-packages/marimo/_server/api/middleware.py", line 146, in dispatch
    |     return await call_next(request)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/home/app_user/venv/lib/python3.13/site-packages/starlette/middleware/base.py", line 154, in call_next
    |     raise app_exc
    |   File "/home/app_user/venv/lib/python3.13/site-packages/starlette/middleware/base.py", line 141, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/home/app_user/venv/lib/python3.13/site-packages/marimo/_server/api/auth.py", line 248, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/home/app_user/venv/lib/python3.13/site-packages/starlette/middleware/authentication.py", line 48, in __call__
    |     await self.app(scope, receive, send)
    |   File "/home/app_user/venv/lib/python3.13/site-packages/marimo/_server/api/auth.py", line 237, in wrapped_app
    |     await app(scope, receive, send)
    |   File "/home/app_user/venv/lib/python3.13/site-packages/starlette/middleware/cors.py", line 93, in __call__
    |     await self.simple_response(scope, receive, send, request_headers=headers)
    |   File "/home/app_user/venv/lib/python3.13/site-packages/starlette/middleware/cors.py", line 144, in simple_response
    |     await self.app(scope, receive, send)
    |   File "/home/app_user/venv/lib/python3.13/site-packages/marimo/_server/api/middleware.py", line 101, in __call__
    |     return await self.app(scope, receive, send)
    |   File "/home/app_user/venv/lib/python3.13/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/home/app_user/venv/lib/python3.13/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/home/app_user/venv/lib/python3.13/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/home/app_user/venv/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/home/app_user/venv/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/home/app_user/venv/lib/python3.13/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/home/app_user/venv/lib/python3.13/site-packages/marimo/_server/router.py", line 54, in wrapper_func
    |     response = await func(request=request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/home/app_user/venv/lib/python3.13/site-packages/marimo/_server/api/endpoints/login.py", line 108, in login_submit
    |     if request.user.is_authenticated:
    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    | AttributeError: 'NoneType' object has no attribute 'is_authenticated'


During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/home/app_user/venv/lib/python3.13/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        self.scope, self.receive, self.send
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^

@mscolnick
Copy link
Contributor

@robd518 this was fixed in 0.11.6

@robd518
Copy link

robd518 commented Feb 18, 2025

Upon further testing with 0.11.6, the cell contents are still duplicating themselves. I can't reliably reproduce it, though. It just "seems" to happen occasionally.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

5 participants