Skip to content

Marimo replaces builtin print, breaking Numba @njit compilation #9765

@ribas591

Description

@ribas591

Describe the bug

Numba fails to compile functions using print() inside a marimo notebook.

Minimal example:

from numba import njit

@njit
def test():
    print(123)

test()

This raises:

Untyped global name 'print': Cannot determine Numba type of <class 'function'>

However, replacing print with builtins.print works:

import builtins
from numba import njit

@njit
def test():
    builtins.print(123)

test()

Inspection shows that marimo replaces the builtin print with a Python function wrapper:


import builtins

print(print)
print(builtins.print)
print(print is builtins.print)

Output:

<function print at 0x7fd99e334fe0>
<built-in function print>
False

This appears to break libraries such as Numba that special-case the builtin print.

Will you submit a PR?

  • Yes

Environment

Details
{
  "marimo": "0.23.8",
  "editable": false,
  "location": "/home/ar/Work/back/.venv/lib/python3.12/site-packages/marimo",
  "OS": "Linux",
  "OS Version": "7.0.10-201.fc44.x86_64",
  "Processor": "",
  "Python Version": "3.12.12",
  "Locale": "--",
  "Binaries": {
    "Browser": "--",
    "Node": "v22.22.2",
    "uv": "0.11.2 (x86_64-unknown-linux-gnu)"
  },
  "Dependencies": {
    "click": "8.4.1",
    "docutils": "0.23",
    "itsdangerous": "2.2.0",
    "jedi": "0.19.2",
    "markdown": "3.10.2",
    "narwhals": "2.21.2",
    "packaging": "26.2",
    "psutil": "7.2.2",
    "pygments": "2.20.0",
    "pymdown-extensions": "10.21.3",
    "pyyaml": "6.0.3",
    "starlette": "1.2.1",
    "tomlkit": "0.15.0",
    "typing-extensions": "4.15.0",
    "uvicorn": "0.48.0",
    "websockets": "16.0"
  },
  "Optional Dependencies": {
    "loro": "1.10.3",
    "mcp": "1.27.2",
    "pandas": "3.0.3",
    "polars": "1.41.2",
    "python-lsp-ruff": "2.3.1",
    "python-lsp-server": "1.14.0",
    "ruff": "0.15.15"
  },
  "Experimental Flags": {
    "external_agents": true
  }
}

Code to reproduce

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions