def normalize_frame(<EOL>self,<EOL>module=None,<EOL>function=None,<EOL>file=None,<EOL>line=None,<EOL>module_offset=None,<EOL>offset=None,<EOL>normalized=None,<EOL>**kwargs  <EOL>):
<EOL>if normalized is not None:<EOL><INDENT>return normalized<EOL><DEDENT>if function:<EOL><INDENT>if file and (parse_source_file(file) or '<STR_LIT>').endswith('<STR_LIT>'):<EOL><INDENT>return self.normalize_rust_function(<EOL>function=function,<EOL>line=line<EOL>)<EOL><DEDENT>return self.normalize_cpp_function(<EOL>function=function,<EOL>line=line<EOL>)<EOL><DEDENT>if file and line:<EOL><INDENT>filename = file.rstrip('<STR_LIT>')<EOL>if '<STR_LIT:\\>' in filename:<EOL><INDENT>file = filename.rsplit('<STR_LIT:\\>')[-<NUM_LIT:1>]<EOL><DEDENT>else:<EOL><INDENT>file = filename.rsplit('<STR_LIT:/>')[-<NUM_LIT:1>]<EOL><DEDENT>return '<STR_LIT>'.format(file, line)<EOL><DEDENT>if not module and not module_offset and offset:<EOL><INDENT>return '<STR_LIT>'.format(offset)<EOL><DEDENT>return '<STR_LIT>'.format(module or '<STR_LIT>', module_offset)<EOL>
Normalizes a single frame

        Returns a structured conglomeration of the input parameters to serve as
        a signature. The parameter names of this function reflect the exact
        names of the fields from the jsonMDSW frame output. This allows this
        function to be invoked by passing a frame as ``**a_frame``.

        Sometimes, a frame may already have a normalized version cached. If
        that exists, return it instead.