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 dst(self, dt):
      isdst = self._isdst(dt)
  
      if isdst is None:
          return None
      elif isdst:
          return self._dst_base_offset
      else:
          return ZERO
  
imports: from six import PY2
  from functools import wraps
  from datetime import datetime, timedelta, tzinfo
label_desc: Use image node_id 3 for calling the tzrangebase obj's underlying member method code with example usage: obj.dst(dt) and returns: None, self, ZERO