docs: def preprocess(self, dt):
          """ Preprocess the `dt` with `localize()` and `astz()` """
          # Process
          try:  # this block should not raise errors, and if it does -- they should not be wrapped with `Invalid`
              # localize
              if self.localize and dt.tzinfo is None:
                  dt = self.localize(dt)
  
              # astimezone
              if self.astz and dt.tzinfo is not None:
                  dt = self.astz(dt)
  
              # Finish
              return dt
          except Exception as e:
              if isinstance(e, Invalid):
                  raise
              six.reraise(RuntimeError, e)