text: Title: Lite: Plotly doesn't work when installed along with altair
  Body: ### Describe the bug
  
  In the `outbreak_forecast` demo running on Lite,
  Plotly throws the following error.
  
  `plotly==6.0.0` was released and it depends on `narwhals>=1.15.0` (https://github.com/plotly/plotly.py/blob/v6.0.0/packages/python/plotly/recipe/meta.yaml#L28).
  However, installing `altair` leads to install `narwhals==1.10.0` **even after `narwhals>=1.15.0` is installed and the older version of `narwhals` overrides the already installed version.** (Pyodide provides `narwhals==1.10.0` [as a native package](https://pyodide.org/en/stable/usage/packages-in-pyodide.html), but `micropip.install("plotly")` installs `narwhals` from PyPI).
  
  Then, the error says Plotly calls non-existing API of `narwhals`.
  
  This poor dependency resolution is a known bug of micropip, but looks like it's not easy to introduce a fix,
  so we should add some workaround on our end.
  (Ref: https://github.com/pyodide/micropip/issues/103 )
  
  ```
  webworker.js:368 Python error: Traceback (most recent call last):
    File "/lib/python3.12/site-packages/gradio/queueing.py", line 625, in process_events
      response = await route_utils.call_process_api(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/lib/python3.12/site-packages/gradio/route_utils.py", line 322, in call_process_api
      output = await app.get_blocks().process_api(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/lib/python3.12/site-packages/gradio/blocks.py", line 2044, in process_api
      result = await self.call_function(
               ^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/lib/python3.12/site-packages/gradio/blocks.py", line 1591, in call_function
      prediction = await anyio.to_thread.run_sync(  # type: ignore
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "<exec>", line 3, in mocked_anyio_to_thread_run_sync
    File "/lib/python3.12/site-packages/gradio/utils.py", line 883, in wrapper
      response = f(*args, **kwargs)
                 ^^^^^^^^^^^^^^^^^^
    File "app.py", line 33, in outbreak
      fig = px.line(df, x="day", y=countries)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/lib/python3.12/site-packages/plotly/express/_chart_types.py", line 270, in line
      return make_figure(args=locals(), constructor=go.Scatter)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/lib/python3.12/site-packages/plotly/express/_core.py", line 2477, in make_figure
      args = build_dataframe(args, constructor)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/lib/python3.12/site-packages/plotly/express/_core.py", line 1727, in build_dataframe
      df_output, wide_id_vars = process_args_into_dataframe(
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/lib/python3.12/site-packages/plotly/express/_core.py", line 1343, in process_args_into_dataframe
      df_output[col_name] = to_named_series(
                            ^^^^^^^^^^^^^^^^
    File "/lib/python3.12/site-packages/plotly/express/_core.py", line 1175, in to_named_series
      x = nw.from_native(x, series_only=True, pass_through=True)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  TypeError: from_native() got an unexpected keyword argument 'pass_through'
  ```
  
  ### Have you searched existing issues?  🔎
  
  - [x] I have searched and found no existing issues
  
  ### Reproduction
  
  Run the `outbreak_forecast` demo on Lite.
  
  ### Screenshot
  
  _No response_
  
  ### Logs
  
  ```shell
  
  ```
  
  ### System Info
  
  ```shell
  Lite
  ```
  
  ### Severity
  
  I can work around it