#NEWLINE# @ property #NEWLINE# def typeQname( self ) : #NEWLINE# #INDENT# '(QName) -- Value of type attribute, if any, or if type contains an annonymously-named\n        type definition (as sub-elements), then QName formed of element QName with anonymousTypeSuffix\n        appended to localName.  If neither type attribute or nested type definition, then attempts\n        to get type definition in turn from substitution group element.' #NEWLINE# try : #NEWLINE# #INDENT# return self . _typeQname #NEWLINE# #UNINDENT# except AttributeError : #NEWLINE# #INDENT# if self . get ( 'type' ) : #NEWLINE# #INDENT# self . _typeQname = self . schemaNameQname ( self . get ( 'type' ) ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# qn = self . qname #NEWLINE# if ( qn is not None ) : #NEWLINE# #INDENT# typeQname = ModelValue . QName ( qn . prefix , qn . namespaceURI , ( qn . localName + anonymousTypeSuffix ) ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# typeQname = None #NEWLINE# #UNINDENT# if ( typeQname in self . modelXbrl . qnameTypes ) : #NEWLINE# #INDENT# self . _typeQname = typeQname #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# subs = self . substitutionGroup #NEWLINE# if ( subs is not None ) : #NEWLINE# #INDENT# self . _typeQname = subs . typeQname #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# self . _typeQname = XbrlConst . qnXsdDefaultType #NEWLINE# #UNINDENT# #UNINDENT# #UNINDENT# return self . _typeQname