code: def replace(self, year=None, month=None, day=None, hour=None, minute=None,
                  second=None, microsecond=None, tzinfo=None):
          
  
          if year is None:
              year = self.year
          if month is None:
              month = self.month
          if day is None:
              day = self.day
          if hour is None:
              hour = self.hour
          if minute is None:
              minute = self.minute
          if second is None:
              second = self.second
          if microsecond is None:
              microsecond = self.microsecond
          if tzinfo is None:
              tzinfo = self.tzinfo
  
          if year > 0:
              cls = datetime
          else:
              cls = extended_datetime
  
          return cls(
              year,
              month,
              day,
              hour,
              minute,
              second,
              microsecond,
              tzinfo
          )
docs: Returns a new datetime.datetime or asn1crypto.util.extended_datetime
          object with the specified components replaced
  
          :return:
              A datetime.datetime or asn1crypto.util.extended_datetime object