code: def test_repair_100x_random_daily(self):
      tkr = "PNL.L"
      dat = yf.Ticker(tkr, session=self.session)
      tz_exchange = dat.fast_info["timezone"]
  
      data_cols = ["Low", "High", "Open", "Close", "Adj Close"]
      df = _pd.DataFrame(
          data={
              "Open": [478, 476, 476, 472],
              "High": [478, 477.5, 477, 475],
              "Low": [474.02, 474, 473, 470.75],
              "Close": [475.5, 475.5, 474.5, 475],
              "Adj Close": [475.5, 475.5, 474.5, 475],
              "Volume": [436414, 485947, 358067, 287620],
          },
          index=_pd.to_datetime(
              [
                  _dt.date(2022, 11, 1),
                  _dt.date(2022, 10, 31),
                  _dt.date(2022, 10, 28),
                  _dt.date(2022, 10, 27),
              ]
          ),
      )
      df = df.sort_index()
      df.index.name = "Date"
      df_bad = df.copy()
      df_bad.loc["2022-11-01", "Close"] *= 100
      df_bad.loc["2022-10-31", "Low"] *= 100
      df_bad.loc["2022-10-27", "Open"] *= 100
      df.index = df.index.tz_localize(tz_exchange)
      df_bad.index = df_bad.index.tz_localize(tz_exchange)
  
      df_repaired = dat._fix_unit_random_mixups(
          df_bad, "1d", tz_exchange, prepost=False
      )
  
      # First test - no errors left
      for c in data_cols:
          self.assertTrue(
              _np.isclose(df_repaired[c], df[c], rtol=1e-2).all()
          )
  
      # Second test - all differences should be either ~1x or ~100x
      ratio = df_bad[data_cols].values / df[data_cols].values
      ratio = ratio.round(2)
      # - round near-100 ratio to 100:
      f = ratio > 90
      ratio[f] = (ratio[f] / 10).round().astype(
          int
      ) * 10  # round ratio to nearest 10
      # - now test
      f_100 = ratio == 100
      f_1 = ratio == 1
      self.assertTrue((f_100 | f_1).all())
  
      self.assertTrue("Repaired?" in df_repaired.columns)
      self.assertFalse(df_repaired["Repaired?"].isna().any())
  
imports: from .context import yfinance
  from .context import session_gbl
  import unittest
  import os
  import datetime
  import pytz
  import numpy
  import pandas
label_desc: Use image node_id 6 for calling the TestPriceRepair obj's underlying member method code with example usage: obj.test_repair_100x_random_daily() without return types