class_docstr: This is an abstract base class for time zones represented by an annual
  transition into and out of DST. Child classes should implement the following
  methods:
  
      * ``__init__(self, *args, **kwargs)``
      * ``transitions(self, year)`` - this is expected to return a tuple of
        datetimes representing the DST on and off transitions in standard
        time.
  
  A fully initialized ``tzrangebase`` subclass should also provide the
  following attributes:
      * ``hasdst``: Boolean whether or not the zone uses DST.
      * ``_dst_offset`` / ``_std_offset``: :class:`datetime.timedelta` objects
        representing the respective UTC offsets.
      * ``_dst_abbr`` / ``_std_abbr``: Strings representing the timezone short
        abbreviations in DST and STD, respectively.
      * ``_hasdst``: Whether or not the zone has DST.
  
  .. versionadded:: 2.6.0
code: def _isdst(self, dt):
      if not self.hasdst:
          return False
      elif dt is None:
          return None
  
      transitions = self.transitions(dt.year)
  
      if transitions is None:
          return False
  
      dt = dt.replace(tzinfo=None)
  
      isdst = self._naive_isdst(dt, transitions)
  
      # Handle ambiguous dates
      if not isdst and self.is_ambiguous(dt):
          return not self._fold(dt)
      else:
          return isdst
  
imports: from six import PY2
  from functools import wraps
  from datetime import datetime, timedelta, tzinfo
label_desc: Use image node_id 7 for calling the tzrangebase obj's underlying member method code with example usage: obj._isdst(dt) and returns: False, False, unknown, isdst, None