code: def test_month_start_datetime(
      dt: datetime,
      expected: datetime,
      time_unit: TimeUnit,
      tzinfo: ZoneInfo | None,
      time_zone: str | None,
  ) -> None:
      ser = (
          pl.Series([dt])
          .dt.replace_time_zone(time_zone)
          .dt.cast_time_unit(time_unit)
      )
      result = ser.dt.month_start().item()
      assert result == expected.replace(tzinfo=tzinfo)
  
imports: from __future__ import annotations
  import sys
  from datetime import date, datetime, time, timedelta
  from typing import TYPE_CHECKING
  import pytest
  import polars
  from polars.datatypes import DTYPE_TEMPORAL_UNITS
  from polars.dependencies import _ZONEINFO_AVAILABLE
  from polars.exceptions import ComputeError, InvalidOperationError
  from polars.testing import assert_frame_equal, assert_series_equal
label_desc: Use image node_id 12 for calling a global function with example usage: test_month_start_datetime(dt, expected, time_unit, tzinfo, time_zone) without return types