<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def parse_signature(cls, signature):
 """Parse signature declartion string Uses :py:attr:`signature_pattern` to parse out pieces of constraint signatures. Pattern should provide the following named groups: prefix Object prefix, such as a namespace member Object member name arguments Declaration arguments, if this is a callable constraint :param signature: construct signature :type signature: string """

        assert cls.signature_pattern is not None
        pattern = re.compile(cls.signature_pattern, re.VERBOSE)
        match = pattern.match(signature)
        if match:
            groups = match.groupdict()
            arguments = None
            if 'arguments' in groups and groups['arguments'] is not None:
                arguments = re.split(r'\,\s+', groups['arguments'])
            return DotNetSignature(
                prefix=groups.get('prefix', None),
                member=groups.get('member', None),
                arguments=arguments
            )
        raise ValueError('Could not parse signature: {0}'.format(signature))