code: def datetime_ambiguous(dt, tz=None):
      
      if tz is None:
          if dt.tzinfo is None:
              raise ValueError('Datetime is naive and no time zone provided.')
  
          tz = dt.tzinfo
  
      # If a time zone defines its own "is_ambiguous" function, we'll use that.
      is_ambiguous_fn = getattr(tz, 'is_ambiguous', None)
      if is_ambiguous_fn is not None:
          try:
              return tz.is_ambiguous(dt)
          except:
              pass
  
      # If it doesn't come out and tell us it's ambiguous, we'll just check if
      # the fold attribute has any effect on this particular date and time.
      dt = dt.replace(tzinfo=tz)
      wall_0 = enfold(dt, fold=0)
      wall_1 = enfold(dt, fold=1)
  
      same_offset = wall_0.utcoffset() == wall_1.utcoffset()
      same_dst = wall_0.dst() == wall_1.dst()
  
      return not (same_offset and same_dst)
docs: Given a datetime and a time zone, determine whether or not a given datetime
      is ambiguous (i.e if there are two times differentiated only by their DST
      status).
  
      :param dt:
          A :class:`datetime.datetime` (whose time zone will be ignored if ``tz``
          is provided.)
  
      :param tz:
          A :class:`datetime.tzinfo` with support for the ``fold`` attribute. If
          ``None`` or not provided, the datetime's own time zone will be used.
  
      :return:
          Returns a boolean value whether or not the "wall time" is ambiguous in
          ``tz``.
  
      .. versionadded:: 2.6.0