o
    ja                     @   s  d Z ddlmZ ddlZddlZddlmZmZmZm	Z	m
Z
mZmZ ddlmZmZmZ ddlmZmZmZmZmZ dd	lmZ dd
lmZ ddlmZmZmZmZ ddlm Z m!Z! dd Z"dd Z#dd Z$dd Z%dd Z&dd Z'dd Z(G dd de)Z*G dd de*Z+G dd  d e*Z,G d!d" d"e)Z-G d#d$ d$e-Z.G d%d& d&e-Z/G d'd( d(e-Z0G d)d* d*e-Z1G d+d, d,e-Z2G d-d. d.e-Z3G d/d0 d0e-Z4G d1d2 d2e-Z5dS )3
    )linesepN   )CLASS_ABSTRACTCLASS_STRUCTURALCLASS_AUXILIARYATTRIBUTE_USER_APPLICATIONATTRIBUTE_DIRECTORY_OPERATIONATTRIBUTE_DISTRIBUTED_OPERATIONATTRIBUTE_DSA_OPERATION   )SEQUENCE_TYPESSTRING_TYPESget_config_parameter)escape_bytes	json_hookcheck_json_dictformat_json
to_unicode)CaseInsensitiveWithAliasDict)format_attribute_values)Oidsdecode_oidsdecode_syntaxoid_to_string)LDAPSchemaErrorLDAPDefinitionErrorc                 C   s(   | t krdS | tkrdS | tkrdS dS )N
StructuralAbstract	Auxiliaryz	<unknown>)r   r   r   value r"   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/ldap3/protocol/rfc4512.pyconstant_to_class_kind(   s   r$   c                 C   s4   | t krdS | tkrdS | tkrdS | tkrdS dS )NzUser ApplicationzDirectory operationzDistributed operationzDSA operationunknownr   r	   r
   r   r    r"   r"   r#   constant_to_attribute_usage3      r'   c                 C   s4   | dkrt S | dkrtS | dkrtS | dkrtS dS )NuserApplicationsdirectoryOperationdistributedOperationdSAOperationr%   r&   r    r"   r"   r#   attribute_usage_to_constant@   r(   r-   c                 C   sN   |   }|s	t S |d dkr|d dkr|dd }|d}dd |D S )	Nr   ()r   'c                 S   s"   g | ]}|  r| d   qS )r1   strip.0elementr"   r"   r#   
<listcomp>V   s   " z)quoted_string_to_list.<locals>.<listcomp>)r3   listsplit)quoted_stringstringelementsr"   r"   r#   quoted_string_to_listM   s   
r=   c                 C   sD   |   }|d dkr|d dkr|dd }|d}dd |D S )	Nr   r.   r/   r0   r   $c                 S   s   g | ]
}|  r|  qS r"   r2   r4   r"   r"   r#   r7   ^       z'oids_string_to_list.<locals>.<listcomp>)r3   r9   )
oid_stringr;   r<   r"   r"   r#   oids_string_to_listY   s
   
rA   c                 C   s$   |   }|d\}}}|t|fS )N )r3   	partitionr=   )extension_stringr;   name_valuesr"   r"   r#   extension_to_tuplea   s   rH   c                 C   sR   t | ts| S d}| D ]}|t |trt|nt|d 7 }q|r'|d d S dS )N , )
isinstancer   list_to_stringstr)list_objectrr6   r"   r"   r#   rM   g   s   
$rM   c                   @   sT   e Zd Zdd ZedddZedddZ			dd
dZdd Z			dddZ	dS )BaseServerInfoc                 C   s   t || _d S N)dictraw)selfraw_attributesr"   r"   r#   __init__s   s   zBaseServerInfo.__init__Nc                 C   s  t d}tj|td}d|vsd|vrtd|rt }nt }|r<|d D ]}t||dd |d | D |||< q&n|d D ]}dd |d | D ||< q@| j|d kr^td	| j |d d
krkt	||d S |d dkrd|vrytdt
|d ||d S tdt|d  d )NCASE_INSENSITIVE_SCHEMA_NAMES)object_hookrT   typezinvalid JSON definitionc                 S      g | ]}|qS r"   r"   r5   r!   r"   r"   r#   r7          z,BaseServerInfo.from_json.<locals>.<listcomp>c                 S   r[   r"   r"   r\   r"   r"   r#   r7      r]   zJSON info not of type DsaInfo
SchemaInfoschema_entryzinvalid schema in JSONzinvalid Info type z in JSON definition)r   jsonloadsr   r   r   rS   r   __name__r^   r_   rN   )clsjson_definitionschemacustom_formatterconf_case_insensitive_schema
definition
attributes	attributer"   r"   r#   	from_jsonv   s,   &zBaseServerInfo.from_jsonc                 C   s4   t |tr
t|d}| j| ||d}|  |S )NrP   )rf   rg   )rL   r   openrl   readclose)rd   targetrf   rg   newr"   r"   r#   	from_file   s
   

zBaseServerInfo.from_file   Tc                 C   s4   t |tr
t|d}|| j||d |  d S )Nzw+)indentsort)rL   r   rm   
writelinesto_jsonro   )rU   rp   rt   ru   r"   r"   r#   to_file   s   

zBaseServerInfo.to_filec                 C      |   S rR   __repr__rU   r"   r"   r#   __str__      zBaseServerInfo.__str__c              	   C   sz   t  }| jj|d< | j|d< t| tr| j|d< nt| trn
tdt	|  d t	t
u r1t| tj|d||dtdd	S )
NrZ   rT   r`   zunable to convert z to JSONFT),: )ensure_ascii	sort_keysrt   check_circulardefault
separators)rS   	__class__rc   rT   rL   r_   r`   r^   r   rN   bytesr   ra   dumpsr   )rU   rt   ru   	json_dictr"   r"   r#   rw      s   


zBaseServerInfo.to_json)NN)rs   T)
rc   
__module____qualname__rW   classmethodrl   rr   rx   r}   rw   r"   r"   r"   r#   rQ   r   s     


rQ   c                   @   s    e Zd ZdZdd Zdd ZdS )r^   z
    This class contains info about the ldap server (DSA) read from DSE
    as defined in RFC4512 and RFC3045. Unknown attributes are stored in the "other" dict
    c                 C   s   t | | |dd | _|dd | _t|dd | _t|dd | _t|dd t|dd  | _|dd | _	|dd | _
|d	d | _|d
d | _|dd | _|| _d S )N	altServernamingContextssupportedControlsupportedExtensionsupportedFeaturessupportedCapabilitiessupportedLDAPVersionsupportedSASLMechanisms
vendorNamevendorVersionsubschemaSubentry)rQ   rW   popalt_serversnaming_contextsr   supported_controlssupported_extensionssupported_featuressupported_ldap_versionssupported_sasl_mechanismsvendor_namevendor_versionr`   other)rU   rj   rV   r"   r"   r#   rW      s   "
zDsaInfo.__init__c              	   C   sV  dt  }| jr/t| jtr"|| jrdddd | jD  nd7 }n	|dt| j 7 }|t 7 }| jr\t| jtrO|| jrKdt  t dd | jD  nd7 }n	|dt| j 7 }|t 7 }| jrt| jtr||| jrxd	t  t d
d | jD  nd7 }n	|d	t| j 7 }|t 7 }| jrt| jtr|| jrdt  t dd | jD  nd7 }n	|dt| j 7 }|t 7 }| j	rt| j	tr|| j	rdt  t dd | j	D  nd7 }n	|dt| j	 7 }|t 7 }| j
r| j
rt| j
tr
|| j
rdt  t dd | j
D  nd7 }n	|dt| j
 7 }|t 7 }| jrIt| jtr<|| jr8dt  d ddd | jD  nd7 }n	|dt| j 7 }|t 7 }| jryt| jtrl|| jrhdt  t dd | jD  nd7 }n	|dt| j 7 }|t 7 }| jrt| jtrt| jdkr|d| jd  7 }n	|dt| j 7 }|t 7 }| jrt| jtrt| jdkr|d| jd  7 }n	|dt| j 7 }|t 7 }|dt  7 }| j D ]P\}}|dt| d t  7 }z|t|trt dd |D nt|7 }W n" ty"   |t|trt dd |D ntt|7 }Y nw |t 7 }q|S )NzDSA info (from DSE):z  Supported LDAP versions: rJ   c                 S      g | ]}t |qS r"   rN   r5   sr"   r"   r#   r7          z$DsaInfo.__repr__.<locals>.<listcomp>rI   z  Naming contexts: c                 S      g | ]}d t | qS     r   r   r"   r"   r#   r7          z  Alternative servers: c                 S   r   r   r   r   r"   r"   r#   r7      r   z  Supported controls: c                 S   r   r   r   r   r"   r"   r#   r7      r   z  Supported extensions: c                 S   r   r   r   r   r"   r"   r#   r7      r   z  Supported features: c                 S   r   r   r   r   r"   r"   r#   r7      r   z  Supported SASL mechanisms: r   c                 S   r   r"   r   r   r"   r"   r#   r7      r   z  Schema entry: c                 S   r   r   r   r   r"   r"   r#   r7     r   r   zVendor name: r   zVendor version: Other:  r   c                 S   r   r   r   r   r"   r"   r#   r7     r   c                 S      g | ]
}d t t| qS r   rN   r   r   r"   r"   r#   r7     r?   )r   r   rL   r   joinrN   r   r   r   r   r   r   r`   r   lenr   r   itemsUnicodeDecodeErrorr   rU   rP   kvr"   r"   r#   r{      s|   *....04004zDsaInfo.__repr__Nrc   r   r   __doc__rW   r{   r"   r"   r"   r#   r^      s    r^   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	r_   z
    This class contains info about the ldap server schema read from an entry (default entry is DSE)
    as defined in RFC4512. Unknown attributes are stored in the "other" dict
    c              
   C   sl  t | | || _|dd | _|dd | _t|dg | _t	|dg | _
t|dg | _t|dg | _t|dg | _t|dg | _t|d	g | _t|d
g | _|| _| j
r| jr| j
D ]@}| j
| jD ]}z| j| j| W q{ ty   Y q{w | j
| jD ]}z| j| j| W q ty   Y qw qsd S d S d S )NcreateTimestampmodifyTimestampattributeTypesobjectClassesmatchingRulesmatchingRuleUsedITContentRulesdITStructureRules	nameFormsldapSyntaxes)rQ   rW   r`   r   create_time_stampmodify_time_stampAttributeTypeInfofrom_definitionattribute_typesObjectClassInfoobject_classesMatchingRuleInfomatching_rulesMatchingRuleUseInfomatching_rule_usesDitContentRuleInfodit_content_rulesDitStructureRuleInfodit_structure_rulesNameFormInfo
name_formsLdapSyntaxInfoldap_syntaxesr   must_containmandatory_inappendKeyErrormay_containoptional_in)rU   r`   rj   rV   object_classrk   r"   r"   r#   rW   %  s<   
zSchemaInfo.__init__c                 C   s8   | j s| js| js| js| js| js| js| jrdS dS )NTF)r   r   r   r   r   r   r   r   r|   r"   r"   r#   is_validB  s   0zSchemaInfo.is_validc              	      s  d j  }|t7 }t jtr*| jr&dt d d fdd jD  nd7 }n	|dt j 7 }|t7 }t jtrX| jrTdt d d fd	d jD  nd7 }n	|dt j 7 }|t7 }t jtr| jrd
t d d fdd jD  nd7 }n	|d
t j 7 }|t7 }t j	tr| j	rdt d d fdd j	D  nd7 }n	|dt j	 7 }|t7 }t j
tr| j
rdt d d fdd j
D  nd7 }n	|dt j
 7 }|t7 }t jtr| jrdt d d fdd jD  nd7 }n	|dt j 7 }|t7 }t jtrB| jr>dt d d fdd jD  nd7 }n	|dt j 7 }|t7 }t jtrr| jrndt d d fdd jD  nd7 }n	|dt j 7 }|t7 }|dt 7 } j D ]P\}}|dt| d t 7 }z|t|trtdd |D nt|7 }W n" ty   |t|trtdd |D ntt|7 }Y nw |t7 }q|S )NzDSA Schema from: z  Attribute types:r   rJ   c                       g | ]	}t  j| qS r"   )rN   r   r   r|   r"   r#   r7   K      z'SchemaInfo.__repr__.<locals>.<listcomp>rI   z  Object classes:c                    r   r"   )rN   r   r   r|   r"   r#   r7   P  r   z  Matching rules:c                    r   r"   )rN   r   r   r|   r"   r#   r7   U  r   z  Matching rule uses:c                    r   r"   )rN   r   r   r|   r"   r#   r7   Z  r   z  DIT content rules:c                    r   r"   )rN   r   r   r|   r"   r#   r7   _  r   z  DIT structure rules:c                    r   r"   )rN   r   r   r|   r"   r#   r7   d  r   z  Name forms:c                    r   r"   )rN   r   r   r|   r"   r#   r7   i  r   z  LDAP syntaxes:c                    r   r"   )rN   r   r   r|   r"   r#   r7   n  r   r   r   r   c                 S   r   r   r   r   r"   r"   r#   r7   w  r   c                 S   r   r   r   r   r"   r"   r#   r7   y  r?   )r`   r   rL   r   r   r   rN   r   r   r   r   r   r   r   r   r   r   r   r   r"   r|   r#   r{   G  sX   
6666688804zSchemaInfo.__repr__N)rc   r   r   r   rW   r   r{   r"   r"   r"   r#   r_     s
    r_   c                   @   sP   e Zd ZdZ							dddZedd Zdd	 Zd
d Ze	dd Z
dS )BaseObjectInfozE
    Base class for objects defined in the schema as per RFC4512
    NFc                 C   s4   || _ || _|| _|| _|| _|| _|| _d | _d S rR   )oidrE   descriptionobsolete
extensionsexperimentalraw_definition	_oid_info)rU   r   rE   r   r   r   r   ri   r"   r"   r#   rW     s   	
zBaseObjectInfo.__init__c                 C   s0   | j d u r| jrt| jd| _ | j r| j S d S )NrI   )r   r   r   getr|   r"   r"   r#   oid_info  s   zBaseObjectInfo.oid_infoc                 C   ry   rR   rz   r|   r"   r"   r#   r}     r~   zBaseObjectInfo.__str__c                 C   s   d| j  }|| jrdnd7 }|| jrtd t| j nd7 }|| jr)td | j nd7 }|d7 }|| jrEtd t tdd	 | jD  nd7 }|| jr]td
 t tdd	 | jD  nd7 }|| j	rmtd t
| j	 nd7 }|t7 }|S )Nr   z [OBSOLETE]rI   z  Short name: z  Description: 
<__desc__>z  Extensions:c                 S   (   g | ]}d |d  d t |d  qS r   r   r   r   rM   r   r"   r"   r#   r7        ( z+BaseObjectInfo.__repr__.<locals>.<listcomp>z  Experimental:c                 S   r   r   r   r   r"   r"   r#   r7     r   z  OidInfo: )r   r   rE   r   rM   r   r   r   r   r   rN   rU   rP   r"   r"   r#   r{     s   
 00 zBaseObjectInfo.__repr__c              	   C   s  t d}t d}|rt nt }|s|S |D ]r}t| dd}|d dkrv|d dkrv| tu r6d	}n5| tu r=d
}n.| tu rDd}n'| tu rKd}n | t	u rRd}n| t
u rYd}n| tu r`d}n| tu rgd}ntdtd| d |dd }|d d d }|dd d }	|	dd tt|	|}
|  }|
D ]8}|d  }|d  }|dkr||_q|dkrt||_q|dkr|d|_q|dkrd|_q|dkrt||_q|dkrt||_q|dkrt|_q|dkrt|_q|dkrt|_q|dkrt||_q|d krt||_ q|d!krt||_!q|d"kr%t||_"q|d#kr0t||_#q|d$kr9d|_$q|d%krBd|_%q|d&krKd|_&q|d'krVt'||_(q|d(krat||_)q|d)krlt||_*q|d*krwt||_+q|d+krt||_,q|d,krt||_-q|d-kr|j.sg |_.|j./t0d-|  q|d.kr|j1sg |_1|j1/t0d.|  q|std/| d0 |rt nt     S ||_2t3|d1r;|jr;t4|jdkr;d |_5|jd 6d2r'z(t7|jd |jd 8d3d d |_5|jd d |jd 8d3 |jd< W n t9y&   Y nw d |_5|jd d|jd< |jd |_t3|d4rp|jrp|rd|||jd < |j:|jd |jdd  |jg dd5 q|jD ]}|||< qgq|||j< q|s}td6|rt   S t   S |S )7NrX   IGNORE_MALFORMED_SCHEMAT)from_serverr   r.   r/   r0   z	| SYNTAX z4| SUP | ABSTRACT| STRUCTURAL| AUXILIARY| MUST | MAY zf| SUP | EQUALITY | ORDERING | SUBSTR | SYNTAX | SINGLE-VALUE| COLLECTIVE| NO-USER-MODIFICATION| USAGE z
| APPLIES rI   z| AUX | MUST | MAY | NOT z| FORM | SUP z| OC | MUST | MAY zunknown schema definition classz ( NAME | DESC | OBSOLETE| X-| E-r   r   OIDNAMEDESCr1   OBSOLETESYNTAXSUPABSTRACT
STRUCTURAL	AUXILIARYMUSTMAYEQUALITYORDERINGSUBSTRzSINGLE-VALUE
COLLECTIVEzNO-USER-MODIFICATIONUSAGEAPPLIESAUXFORMOCNOTzX-zE-z malformed schema definition key:z) - use get_info=NONE in Server definitionsyntax}{rE   )ignore_duplicateszCmalformed schema definition, use get_info=NONE in Server definition);r   r   rS   r   r3   r   r   r   r   r   r   r   r   r   rer9   insertr8   zipr   r=   rE   r   r   rA   r  superiorr   kindr   r   r   r   equalityorderingsubstrsingle_value
collectiveno_user_modificationr-   usageapply_toauxiliary_classes	name_formr   not_containsr   r   rH   r   r   hasattrr   
min_lengthendswithintindex	Exception	set_alias)rd   definitionsrh   conf_ignore_malformed_schemaret_dictobject_definitionpatternsplittedrG   r   defs
object_defdkeyr!   rE   r"   r"   r#   r     s   

















$((*
zBaseObjectInfo.from_definition)NNNFNNN)rc   r   r   r   rW   propertyr   r}   r{   r   r   r"   r"   r"   r#   r   ~  s     

r   c                   @   2   e Zd ZdZ								dddZdd ZdS )	r   z!
    As per RFC 4512 (4.1.3)
    NFc	           	   
   C   $   t j| |||||||d || _d S Nr   rE   r   r   r   r   ri   )r   rW   r  )	rU   r   rE   r   r   r  r   r   ri   r"   r"   r#   rW   3  s   

zMatchingRuleInfo.__init__c                 C   2   | j rtd t| j  nd}dt| d| S )N
  Syntax: rI   zMatching ruler   )r  r   rM   r   r{   replacer   r"   r"   r#   r{   G     zMatchingRuleInfo.__repr__NNNFNNNNr   r"   r"   r"   r#   r   .  s    
r   c                   @   r.  )	r   z!
    As per RFC 4512 (4.1.4)
    NFc	           	   
   C   r/  r0  )r   rW   r  )	rU   r   rE   r   r   r  r   r   ri   r"   r"   r#   rW   Q  s   	
zMatchingRuleUseInfo.__init__c                 C   r2  )Nz  Apply to: rI   zMatching rule user   )r  r   rM   r   r{   r4  r   r"   r"   r#   r{   d  r5  zMatchingRuleUseInfo.__repr__r6  r   r"   r"   r"   r#   r   L  s    
r   c                   @   8   e Zd ZdZ											dddZdd ZdS )	r   z!
    As per RFC 4512 (4.1.1)
    NFc              
   C   s>   t j| |||||	|
|d || _|| _|pg | _|pg | _d S r0  )r   rW   r  r  r   r   )rU   r   rE   r   r   r  r  r   r   r   r   ri   r"   r"   r#   rW   n  s   
zObjectClassInfo.__init__c                 C   s   d}|| j rtd t| j  nd7 }|| jrtd t| j nd7 }|| jr/td t| j nd7 }|| jr?td t| j nd7 }dt| 	d| S )NrI   z  Type:   Superior: z  Must contain attributes: z  May contain attributes: zObject classr   )
r  r   r$   r  rM   r   r   r   r{   r4  r   r"   r"   r#   r{     s       zObjectClassInfo.__repr__NNNFNNNNNNNr   r"   r"   r"   r#   r   i  s    
r   c                   @   sD   e Zd ZdZ																	dddZdd ZdS )	r   z!
    As per RFC 4512 (4.1.2)
    NFc              
   C   sf   t j| |||||||d || _|| _|| _|| _|	| _|
| _|| _|| _	|| _
|| _g | _g | _d S r0  )r   rW   r  r  r  	substringr  r  r  r  r  r  r   r   )rU   r   rE   r   r   r  r  r  r:  r  r  r  r  r  r  r   r   ri   r"   r"   r#   rW     s*   
zAttributeTypeInfo.__init__c                 C   s  d}|t d t| j 7 }|| jrt d nd7 }|| jr%t d t| j nd7 }|| jr0t d nd7 }|| jr@t d t| j nd7 }|| j	rPt d t| j	 nd7 }|| j
r`t d t| j
 nd7 }|| jrpt d	 t| j nd7 }|| jrt d
 | jdtt| j   d nd7 }|t| jtrt d t| j nd7 }|| jrt d t| j nd7 }|| jrt d t| j nd7 }dt| d| S )NrI   z  Single value: z  Collective: Truer8  z  No user modification: Truez	  Usage: z  Equality rule: z  Ordering rule: z  Substring rule: r3  z []z  Minimum length: z  Mandatory in: z  Optional in: zAttribute typer   )r   rN   r  r  r  rM   r  r  r'   r  r  r:  r  r   rL   r  r  r   r   r   r{   r4  r   r"   r"   r#   r{     s        2&  zAttributeTypeInfo.__repr__)NNNFNNNNNNFFFNNNNr   r"   r"   r"   r#   r     s*    
(r   c                   @   s,   e Zd ZdZ					dddZdd ZdS )r   z!
    As per RFC 4512 (4.1.5)
    Nc              
   C   s   t j| |d |d|||d d S )NFr1  )r   rW   )rU   r   r   r   r   ri   r"   r"   r#   rW     s   
zLdapSyntaxInfo.__init__c                 C   s   dt | dd S )NzLDAP syntaxr   rI   )r   r{   r4  r|   r"   r"   r#   r{     s   zLdapSyntaxInfo.__repr__)NNNNNr   r"   r"   r"   r#   r     s    
r   c                   @   r7  )	r   z!
    As per RFC 4512 (4.1.6)
    NFc              
   C   s6   t j| |||||	|
|d || _|| _|| _|| _d S r0  )r   rW   r  r   r   r  )rU   r   rE   r   r   r  r   r   r  r   r   ri   r"   r"   r#   rW     s   	
zDitContentRuleInfo.__init__c                 C   s   | j rtd t| j  nd}|| jrtd t| j nd7 }|| jr+td t| j nd7 }|| jr;td t| j nd7 }dt| d| S )Nz  Auxiliary classes: rI     Must contain:   May contain: z  Not contains: DIT content ruler   )	r  r   rM   r   r   r  r   r{   r4  r   r"   r"   r#   r{     s
      zDitContentRuleInfo.__repr__r9  r   r"   r"   r"   r#   r     s    
r   c                   @   s4   e Zd ZdZ									dddZdd ZdS )	r   z#
    As per RFC 4512 (4.1.7.1)
    NFc
           
   
   C   s*   t j| |||||||	d || _|| _d S r0  )r   rW   r  r  )
rU   r   rE   r   r   r  r  r   r   ri   r"   r"   r#   rW     s   
zDitStructureRuleInfo.__init__c                 C   sR   | j rtd t| j  nd}|| jrtd t| j nd7 }dt| d| S )Nz  Superior rules: rI   z  Name form: r>  r   )r  r   rM   r  r   r{   r4  r   r"   r"   r#   r{   +  s    zDitStructureRuleInfo.__repr__)	NNNFNNNNNr   r"   r"   r"   r#   r     s    
r   c                   @   s6   e Zd ZdZ										dddZdd ZdS )	r   z#
    As per RFC 4512 (4.1.7.2)
    NFc              
   C   s0   t j| ||||||	|
d || _|| _|| _d S r0  )r   rW   r   r   r   )rU   r   rE   r   r   r   r   r   r   r   ri   r"   r"   r#   rW   6  s   
zNameFormInfo.__init__c                 C   sr   | j rtd t| j  nd}|| jrtd t| j nd7 }|| jr+td t| j nd7 }dt| d| S )Nz  Object class: rI   r<  r=  r>  r   )r   r   rM   r   r   r   r{   r4  r   r"   r"   r#   r{   N  s     zNameFormInfo.__repr__)
NNNFNNNNNNr   r"   r"   r"   r#   r   1  s    
r   )6r   osr   r  ra   r   r   r   r   r   r	   r
   r   rI   r   r   r   
utils.convr   r   r   r   r   utils.ciDictr   protocol.formatters.standardr   r   r   r   r   core.exceptionsr   r   r$   r'   r-   r=   rA   rH   rM   objectrQ   r^   r_   r   r   r   r   r   r   r   r   r   r"   r"   r"   r#   <module>   s>    $O^_ 1(>(!