def add_conversion_step(self, converter: Converter[S, T], inplace: bool = False):
        """
        Utility method to add a converter to this chain. If inplace is True, this object is modified and
        None is returned. Otherwise, a copy is returned

        :param converter: the converter to add
        :param inplace: boolean indicating whether to modify this object (True) or return a copy (False)
        :return: None or a copy with the converter added
        """
        # it the current chain is generic, raise an error
        if self.is_generic() and converter.is_generic():
            raise ValueError('Cannot chain this generic converter chain to the provided converter : it is generic too!')

        # if the current chain is able to transform its input into a valid input for the new converter
        elif converter.can_be_appended_to(self, self.strict):
            if inplace:
                self._converters_list.append(converter)
                # update the current destination type
                self.to_type = converter.to_type
                return
            else:
                new = copy(self)
                new._converters_list.append(converter)
                # update the current destination type
                new.to_type = converter.to_type
                return new
        else:
            raise TypeError('Cannnot register a converter on this conversion chain : source type \'' +
                            get_pretty_type_str(converter.from_type)
                            + '\' is not compliant with current destination type of the chain : \'' +
                            get_pretty_type_str(self.to_type) + ' (this chain performs '
                            + ('' if self.strict else 'non-') + 'strict mode matching)')
def add_conversion_step ( self , converter : Converter [ S , T ] , inplace : bool = False ) : if self . is_generic ( ) and converter . is_generic ( ) : raise ValueError ( 'Cannot chain this generic converter chain to the provided converter : it is generic too!' ) elif converter . can_be_appended_to ( self , self . strict ) : if inplace : self . _converters_list . append ( converter ) self . to_type = converter . to_type return else : new = copy ( self ) new . _converters_list . append ( converter ) new . to_type = converter . to_type return new else : raise TypeError ( 'Cannnot register a converter on this conversion chain : source type \'' + get_pretty_type_str ( converter . from_type ) + '\' is not compliant with current destination type of the chain : \'' + get_pretty_type_str ( self . to_type ) + ' (this chain performs ' + ( '' if self . strict else 'non-' ) + 'strict mode matching)' )
Utility method to add a converter to this chain. If inplace is True, this object is modified and
        None is returned. Otherwise, a copy is returned

        :param converter: the converter to add
        :param inplace: boolean indicating whether to modify this object (True) or return a copy (False)
        :return: None or a copy with the converter added