o
    Z                     @   s   d dl Z d dlZd dlmZmZ zd dlZW n ey#   d dlZY nw zd dlm	Z	 W n ey;   d dl
m	Z	 Y nw d dlmZ d dlmZ d dlmZ d dlmZ e jd  dkr_eZeZG d	d
 d
eZdS )    N)strptimestrftime)OrderedDict)MibInfo)AbstractCodeGen)error)debug   c                   @   s  e Zd ZdZddddZdej Zg dZdd	d
ddZ	g dZ
dZdZdd Zedd Zdd Zdd Zdd ZdddZddd Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Z d9d: Z!d;d< Z"d=d> Z#d?d@ Z$dAdB Z%dCdD Z&dEdF Z'ddGdHZ(dIdJ Z)dKdL Z*dMdN Z+dOdP Z,dQdR Z-dSdT Z.dUdV Z/dWdX Z0dYdZ Z1d[d\ Z2d]d^ Z3d_d` Z4dadb Z5dcdd Z6dedf Z7dgdh Z8didj Z9dkdl Z:dmdn Z;dodp Z<i dqedredsedteduedvedwedxedyedze d{e!d|e,d}e:d~e"de#de$de%i de&de'de(de)de*de+de-de.de/de0de3de1de2de3de5de6de7e8e9e:e;e<e3dZ=dd Z>dd Z?dS )JsonCodeGenzBuilds JSON document representing MIB module supplied
       in form of an Abstract Syntax Tree on input.

       Instance of this class is supposed to be passed to *MibCompiler*,
       the rest is internal to *MibCompiler*.
    )isozNOTIFICATION-TYPEzMODULE-IDENTITYzOBJECT-TYPEzOBJECT-IDENTITY)ZDisplayStringzTEXTUAL-CONVENTION)zMODULE-COMPLIANCEzNOTIFICATION-GROUP)z
SNMPv2-SMIz	SNMPv2-TCzSNMPv2-CONF)ZASN1zASN1-ENUMERATIONzASN1-REFINEMENT)Integer	Integer32BitsObjectIdentifierOctetStringZ	IpAddressZzeroDotZeroZipRouteTableZsnmpEnableAuthenTraps)ZNetworkAddressZnullSpecificZipRoutingTableZsnmpEnableAuthTraps)ZINTEGERzOCTET STRINGZ	IPADDRESSZNETWORKADDRESSz    i  c                 C   s^   t  | _i | _t  | _i | _i | _d | _d | _d | _t  | _	g | _
dg| _ddi| _i | _d S )NZDUMMYtextT)set_rows_cols	_seenSyms
_importMap_out_moduleIdentityOid_moduleRevision_enterpriseOid_oids_complianceOids
moduleNamegenRulessymbolTableself r"   7/usr/lib/python3/dist-packages/pysmi/codegen/jsondoc.py__init__D   s   

zJsonCodeGen.__init__c                 C   s   |  ddS )N-_)replace)symbolr"   r"   r#   
transOpersS   s   zJsonCodeGen.transOpersc              
   C   sl   g }|D ]/}t |ts|| qt|dkr||d  q|| j|d  | | |dd   q|S )N   r   )
isinstancetupleappendlenhandlersTableprepData)r!   Zpdatadataelr"   r"   r#   r0   W   s   
 zJsonCodeGen.prepDatac           
         s  g }t |D ];  jv rA|  D ]/}|j  v r@| |f j  | D ]}|\}}||v r:|| | q(|g||< q(qq|D ]}||d  |d  qDjD ]  |v rg|   j  7  < qUj  | < qUt }d|d< t|D ]> g }	t|  D ]}|	| q|	rj	fdd|	D  j
	 fdd|	D   |vrg | < |  |	 qzt|dtt|fS )	Nr   r*   importsclassc                       g | ]}  |qS r"   r)   .0sr    r"   r#   
<listcomp>       z*JsonCodeGen.genImports.<locals>.<listcomp>c                    s   g | ]	} | fqS r"   r6   r7   moduler!   r"   r#   r:          )r3   )listZconvertImportv2r-   removeconstImportsr   sortedr   r   updater   extendr,   )
r!   r3   ZtoDelr(   Z	newImportZ	newModuleZ	newSymboldoutDictsymbolsr"   r<   r#   
genImportsd   sH   

zJsonCodeGen.genImportsc                 C   s   d|v r|pdS )Nr%    r"   )r!   r(   r"   r"   r#   genLabel      zJsonCodeGen.genLabelr   c                 C   s   | j | d S N)r   add)r!   r(   moduleIdentityr"   r"   r#   addToExports   rK   zJsonCodeGen.addToExportsNFc                 C   s   || j v r|| jvrtd| | || || j|< d|v r\| j|d  | jsA|d 	drAd
|d dd d | _|rP| jrKtd|d | _|r^| j|d  d S d S d S )NzDuplicate symbol found: %soidz1.3.6.1.4.1..   zDuplicate module identity)r   r   r   PySmiSemanticErrorrO   r   r   rM   r   
startswithjoinsplitr   r   r-   )r!   r(   rF   	parentOidrN   moduleCompliancer"   r"   r#   regSym   s    


zJsonCodeGen.regSymc                 C   s   d}|D ]D}t |trC|\}}|dkr|d7 }q|| jvr$td| || j| vr4td||f || | j| | d 7 }q||f7 }q|S )Nr"   r   r*   no module "%s" in symbolTableno symbol "%s" in module "%s"rP   )r+   r,   r   r   rS   genNumericOid)r!   rP   Z
numericOidpartparentr=   r"   r"   r#   r]      s   

zJsonCodeGen.genNumericOidc                 C   s   || j vrtd| || j | vrtd||f | j | | dd\}}|d s4td| |d | jv r?||fS | j| \}}t|trZt|trX||7 }||fS |}||fS )Nr[   r\   syntax)rI   rI   rI   r   zunknown type for symbol "%s")r   r   rS   get	baseTypesgetBaseTyper+   r?   )r!   ZsymNamer=   ZsymTypeZ
symSubtypeZbaseSymTypeZbaseSymSubtyper"   r"   r#   rd      s    


zJsonCodeGen.getBaseTypec                 C   s   |\}}}}}}|  |}| |}|\}	}
t }||d< |	|d< d|d< |r+||d< |r1||d< | jd r<|r<||d< | jd rG|rG||d	< | |||
 |S )
NnamerP   Zagentcapabilitiesr4   Zproductreleasestatusr   description	referencerJ   r)   r   r   rY   )r!   r1   re   ZproductReleaserf   rg   rh   rP   labeloidStrrW   rF   r"   r"   r#   genAgentCapabilities   s$   

z JsonCodeGen.genAgentCapabilitiesc                 C   s   |\}}}}}}}|  |}	| |}|\}
}t }||d< |
|d< d|d< |r3||d< |d d | _| jd rP|r>||d	< |rD||d
< |rJ||d< |rP||d< | j|||dd |S )Nre   rP   Zmoduleidentityr4   	revisionsr   revisionr   ZlastupdatedorganizationZcontactinforg   T)rN   )rJ   r)   r   r   r   rY   )r!   r1   re   ZlastUpdatedro   ZcontactInforg   rm   rP   rj   rk   rW   rF   r"   r"   r#   genModuleIdentity  s,   


zJsonCodeGen.genModuleIdentityc                 C   s   |\}}}}}}|  |}| |}|\}	}
t }||d< |	|d< d|d< |r+||d< |r1||d< | jd r<|r<||d< | jd rG|rG||d< | j|||
d	d
 |S )Nre   rP   Zmodulecompliancer4   rf   r   rg   rh   T)rX   ri   )r!   r1   re   rf   rg   rh   compliancesrP   rj   rk   rW   rF   r"   r"   r#   genModuleCompliance&  s$   

zJsonCodeGen.genModuleCompliancec                       |\}}}}}}  |} |}|\}	}
t }||d< |	|d< d|d< |r2 fdd|D |d< |r8||d<  jd	 rC|rC||d
<  jd	 rN|rN||d<  |||
 |S )Nre   rP   Znotificationgroupr4   c                    ,   g | ]} j | jd   |dqS r   )r=   objectr   rb   r   r)   r8   objr    r"   r#   r:   Q     , z4JsonCodeGen.genNotificationGroup.<locals>.<listcomp>objectsrf   r   rg   rh   ri   r!   r1   re   r{   rf   rg   rh   rP   rj   rk   rW   rF   r"   r    r#   genNotificationGroupD  $   

z JsonCodeGen.genNotificationGroupc                    rs   )Nre   rP   notificationtyper4   c                    rt   ru   rw   rx   r    r"   r#   r:   n  rz   z3JsonCodeGen.genNotificationType.<locals>.<listcomp>r{   rf   r   rg   rh   ri   r|   r"   r    r#   genNotificationTypea  r~   zJsonCodeGen.genNotificationTypec                    s   |\}}}}}}  |} |}|\}	}
t||	dd}|r+ fdd|D |d< |r1||d<  jd r<|r<||d<  jd rG|rG||d	<  |||
 |S )
NZobjectgroup)re   rP   r4   c                    rt   ru   rw   rx   r    r"   r#   r:     rz   z.JsonCodeGen.genObjectGroup.<locals>.<listcomp>r{   rf   r   rg   rh   ri   r|   r"   r    r#   genObjectGroup~  s$   

zJsonCodeGen.genObjectGroupc                 C   s   |\}}}}}|  |}| |}|\}}	t }
||
d< ||
d< d|
d< |r*||
d< | jd r5|r5||
d< | jd r@|r@||
d< | ||
|	 |
S )	Nre   rP   objectidentityr4   rf   r   rg   rh   ri   )r!   r1   re   rf   rg   rh   rP   rj   rk   rW   rF   r"   r"   r#   genObjectIdentity  s    

zJsonCodeGen.genObjectIdentityc                 C   s  |\}}}}}}}}	}
}}|  |}| |}|\}}|
p!ddg f\}}}| j||d}t }||d< ||d< |d r[|d dkrCdpF|d }|| j| jd  d v rUd	pV|}||d
< d|d< |d ri|d |d< |ro||d< |ru||d< |r{||d< |r||d< | jd r|r||d< |	r| |	}	t |d< ||d d< | jd |d d< |	|d d< |r||d< | jd r|r||d< | ||| |S )NrI   )objnamere   rP   r   r   scalarZ_symtable_colscolumnnodetypeZ
objecttyper4   r*   r`   defaultunits	maxaccessindicesr   rh   
augmentionr=   rv   rf   rg   )rJ   r)   	genDefValr   r   r   r   rY   )r!   r1   re   r`   r   r   rf   rg   rh   r   indexdefvalrP   rj   rk   rW   ZindexStrfakeStrlistfakeSymsrF   r   r"   r"   r#   genObjectType  sL   

 

zJsonCodeGen.genObjectTypec                    s   |\}}}}}}  |} |}|\}	}
t }||d< |	d t| |d< d|d< |r8 fdd|D |d<  jd	 rC|rC||d
<  jd	 rN|rN||d<  |||
 |S )Nre   z0.rP   r   r4   c                    rt   ru   rw   rx   r    r"   r#   r:     rz   z+JsonCodeGen.genTrapType.<locals>.<listcomp>r{   r   rg   rh   )rJ   r)   r   strr   rY   )r!   r1   re   
enterpriseZ	variablesrg   rh   valuerj   ZenterpriseStrrW   rF   r"   r    r#   genTrapType  s    

zJsonCodeGen.genTrapTypec                 C   sR   |\}}t  }||d< d|d< |r'|\}}|r'| |}|| | || |S )Nre   typer4   )r   r)   rC   rY   )r!   r1   re   ZdeclarationrF   
parentTypeattrsr"   r"   r#   genTypeDeclaration  s   

zJsonCodeGen.genTypeDeclarationc                 C   sT   |\}}|  |}| |}|\}}t }||d< ||d< d|d< | ||| |S )Nre   rP   r   r4   )rJ   r)   r   rY   )r!   r1   re   rP   rj   rk   rW   rF   r"   r"   r#   genValueDeclaration  s   

zJsonCodeGen.genValueDeclarationc                 C   s   |d }|S Nr   r"   )r!   r1   namesr"   r"   r#   genBitNames,  s   zJsonCodeGen.genBitNamesc                 C   sV   |d }t  }d|d< d|d< t  |d< t|dd dD ]
\}}||d |< qd	|fS )
Nr   r   r   r4   bitsc                 S   s   | d S )Nr*   r"   xr"   r"   r#   <lambda>8  s    z%JsonCodeGen.genBits.<locals>.<lambda>keyr   )r   rB   )r!   r1   r   rF   re   bitr"   r"   r#   genBits0  s   
zJsonCodeGen.genBitsc                    sD   g }|d D ]}|d pj d  | fdd|d D 7 }q|S )Nr   c                    s   g | ]
} | d qS ))rv   r=   r6   )r8   Zcomplre   r!   r"   r#   r:   C  s    z.JsonCodeGen.genCompliances.<locals>.<listcomp>r*   )r   )r!   r1   rq   ZcomplianceModuler"   r   r#   genCompliances>  s
   zJsonCodeGen.genCompliancesc                 C   sD   |d }|d r |d dd  dkr |d d d }| j | dS )Nr   r*   z())tablerI   )r   rM   r!   r1   rowr"   r"   r#   genConceptualTableH  s
   zJsonCodeGen.genConceptualTablec                 C      |d }|  d|S )Nr   zcontact-info
textFilterr!   r1   r   r"   r"   r#   genContactInfoR     zJsonCodeGen.genContactInfoc                 C      |d S r   r"   r!   r1   r"   r"   r#   genDisplayHintW     zJsonCodeGen.genDisplayHintc                    sJ  |si S |s|S t  }|d }| || jd  t|ttfr*|j|dd d|iS | |rb d d dv rS|jttt	|dkrG|dd pHdd	d
d d|iS |j|dd d
d d|iS | 
|r|dd } d d dv r|jtt|p|dddd d|iS |rtt|ddd  pd}|j|d
d d|iS |d |d kr|d dkr|dd dkr dkri S |j|dd dd d|iS  d d dkr|| j| jd  v s|| jv r| j|| jd }zt| | j| | d }|j|dd W d|iS    td||f  d d dv rZt d trZt|trF fdd|D }|rB|j|d dd d|iS |t d v rV|j|dd d|iS  d d dkrg }	t d }
|D ]}|
|d }|d ur|	||f qmtd||f |j| |	gd dd |S td ||f )Nr   Zdecimal)r   format)r   r      r*   r   0   hexr	   binrI   "r   stringr   rP   r\   c                    s    g | ]}|t  d  v r|qS rZ   dict)r8   ZdvZ
defvalTyper"   r#   r:     s     z)JsonCodeGen.genDefVal.<locals>.<listcomp>enumr   z#no such bit as "%s" for symbol "%s"r   z0unknown type "%s" for defval "%s" of symbol "%s"r   )r   rd   r   r+   intlongrC   ZisHexr   r.   ZisBinaryr   r   r   rb   r]   r   rS   r?   r   r-   r   )r!   r1   r   rF   r   ZbinvalZhexvalr=   valZ
defvalBitsr   r   ZbitValuer"   r   r#   r   [  s~   @
0<:
52,""
zJsonCodeGen.genDefValc                 C      |  d|d S )Nrg   r   r   r   r"   r"   r#   genDescription  rK   zJsonCodeGen.genDescriptionc                 C   r   )Nrh   r   r   r   r"   r"   r#   genReference  rK   zJsonCodeGen.genReferencec                 C   r   r   r"   r   r"   r"   r#   	genStatus  r   zJsonCodeGen.genStatusc                 C   r   r   r"   r   r"   r"   r#   genProductRelease  r   zJsonCodeGen.genProductReleasec                 C   s   |d }dt |iS )Nr   enumerationr   )r!   r1   itemsr"   r"   r#   genEnumSpec  r   zJsonCodeGen.genEnumSpecc                    s    fdd}|d }g g g }}}|D ]>}|d }| j v r:|}	| j|	\}
}||
 ||   jd7  _t } j| jd |d< ||d< || q|||fS )Nc                    s*    j ||} |}d jd t|iS )Nr=   r   )typeClassesrb   r)   r   rv   )fakeidxidxTypeobjTyper    r"   r#   genFakeSyms  s
   

z.JsonCodeGen.genTableIndex.<locals>.genFakeSymsr   r*   r=   rv   )smiv1IdxTypesr   r-   r   r   rb   r   )r!   r1   r   ZindexesZ
idxStrlistr   r   idxZidxNamer   Z
fakeSymStrr   r"   r    r#   genTableIndex  s    



zJsonCodeGen.genTableIndexc                 C   t   g }|d D ]/}t |dkr|d |d fp|\}}| || |}}t }||d< ||d< || qd|iS )Nr   r*   minmaxranger.   Zstr2intr   r-   )r!   r1   ZrangesrngvminvmaxZranr"   r"   r#   genIntegerSubType  s   $zJsonCodeGen.genIntegerSubTypec                 C   r   r   r"   r   r"   r"   r#   genMaxAccess  r   zJsonCodeGen.genMaxAccessc                 C   r   )Nr   r*   r   r   sizer   )r!   r1   Zsizesr   r   r   r   r"   r"   r#   genOctetStringSubType  s   $z!JsonCodeGen.genOctetStringSubTypec                 C   s   d}d}|d D ]>}t |ttfr&| |}||| j|| jd ff7 }qt |ttfr3||f7 }qt |t	r@||d f7 }qt
d| ddd | |D |fS )	Nr"   rI   r   r*   zunknown datatype for OID: %srQ   c                 S      g | ]}t |qS r"   )r   r8   r   r"   r"   r#   r:         z&JsonCodeGen.genOid.<locals>.<listcomp>)r+   r   unicoder)   r   rb   r   r   r   r,   r   rS   rU   r]   )r!   r1   outr_   r2   r"   r"   r#   genOid  s   
 
zJsonCodeGen.genOidc                    s"   |d r fdd|d D S g S )Nr   c                    r5   r"   r6   rx   r    r"   r#   r:     r;   z*JsonCodeGen.genObjects.<locals>.<listcomp>r"   r   r"   r    r#   
genObjects
  s   zJsonCodeGen.genObjectsc                 C   sl   g }|D ]/}t |dkrd| }z|tdt|d W q ty3   d}|tdt|d Y qw |S )N   Z19z%Y-%m-%d %H:%Mz%Y%m%d%H%MZZ197001010000Z)r.   r-   r   r   
ValueError)r!   r1   timesZtimeStrr"   r"   r#   genTime  s   zJsonCodeGen.genTimec                 C   r   r   r"   r   r"   r"   r#   genLastUpdated&  r   zJsonCodeGen.genLastUpdatedc                 C   r   )Nro   r   r   r   r"   r"   r#   genOrganization*  rK   zJsonCodeGen.genOrganizationc                 C   sV   g }|d D ]"}t  }| |d gd |d< | d|d d |d< || q|S )Nr   rn   rg   r*   )r   r   r   r-   )r!   r1   rm   r   rn   r"   r"   r#   genRevisions.  s   zJsonCodeGen.genRevisionsc                 C   s8   |d }|  |}|| j| jd  d v rdp| |S )Nr   Z_symtable_rows)r   rI   )r)   r   r   genSimpleSyntaxr   r"   r"   r#   genRow7  s
   
zJsonCodeGen.genRowc                 C   s   |d }| j | dS )Nr   ra   )r   rC   )r!   r1   Zcolsr"   r"   r#   genSequence?  s   zJsonCodeGen.genSequencec                 C   sb   |d }| j ||}| |}t|dkr|d pi }t }||d< d|d< |r-||d< d|fS )Nr   r	   r*   r   r4   Zconstraintsr   )r   rb   r)   r.   r   )r!   r1   r   ZsubtyperF   r"   r"   r#   r   D  s   
zJsonCodeGen.genSimpleSyntaxc           
      C   s   t |dkr|d \}}t }|s|S ||d< ||fS |\}}}}}	|	\}}t }||d< d|d< |r7||d< |r=||d< | jd rH|rH||d	< | jd rS|rS||d
< ||fS )Nr*   r   r   Ztextualconventionr4   Zdisplayhintrf   r   rg   rh   )r.   r   r   )
r!   r1   r   r   rF   Zdisplayrf   rg   rh   r`   r"   r"   r#   genTypeDeclarationRHSU  s*   z!JsonCodeGen.genTypeDeclarationRHSc                 C   r   )Nr   r   r   r   r"   r"   r#   genUnitss  r   zJsonCodeGen.genUnitsZagentCapabilitiesClauseZmoduleIdentityClauseZmoduleComplianceClauseZnotificationGroupClauseZnotificationTypeClauseZobjectGroupClauseZobjectIdentityClauseZobjectTypeClauseZtrapTypeClauseZtypeDeclarationZvalueDeclarationzPRODUCT-RELEASEZApplicationSyntaxZBitNamesZBITSZComplianceModulesZconceptualTablezCONTACT-INFOzDISPLAY-HINTZDEFVALZDESCRIPTIONZ	REFERENCEZStatusZenumSpecZINDEXZintegerSubTypeZMaxAccessPartZNotificationsZoctetStringSubTypeZobjectIdentifierZObjectszLAST-UPDATEDZORGANIZATIONZ	Revisions)r   ZSEQUENCEZSimpleSyntaxZtypeDeclarationRHSZUNITSZVarTypesc                    s  | dd jd< | dpdd  _| _ j   j   j   j   j	  d  _
d  _t  _g  _|\ jd< }}} |rK|pLi \}}|pSg D ]}	|	ri j|	d    |	dd   qT j jd  d	 D ]}
|
 j	vrtd
|
  j	|
 ||
< qtd|v rt |d< |d |d d<  jd |d d< tjtj@ otd jd |d|pdt|f  t| j
 jd  j j j jt fdd|D dtj|ddfS  t| j
 jd  j j j jt fdd|D dtj|ddfS )NZgenTextsFr   r   c                 S   s   t dd|S )Nz\s+ )resub)r(   r   r"   r"   r#   r     s    z%JsonCodeGen.genCode.<locals>.<lambda>r   r*   Z_symtable_orderzNo generated code for symbol %scommentsmetar=   zIcanonical MIB name %s (%s), imported MIB(s) %s, Python code size %s bytes,z<none>c                    s   g | ]	}| j vr|qS r"   )fakeMibsr   r    r"   r#   r:     r>   z'JsonCodeGen.genCode.<locals>.<listcomp>)rP   identityre   rn   oidsr   
complianceZimportedr	   indent) rb   r   r   r   r   clearr   r   r   r   r   r   r   r   r   r   rH   r/   r0   r   PySmiCodegenErrorr   r   loggerflagCodegenrU   r.   r   r   r,   jsondumps)r!   astr   kwargsZ	moduleOidr3   ZdeclarationsrF   ZimportedModulesZdeclrZsymr"   r    r#   genCode  sl   




"

zJsonCodeGen.genCodec                    s  i i i i i d}| dr,z|t|d  W n ty+   tdt d  w  fdd |	 D ]\}}|d }t
|dd }|rU||vrNg ||< || | |d }t
|dd }|rp||vrig ||< || | |d	 }t
|d	d
}	|	D ]}
|
|vrg ||
< ||
 | q||d }t
|dd
}|D ]}||vrg ||< || | q|ri }t|dd dD ]!}|	 D ]\}}||rt||| r nq|| ||< q||d< q6d|v r|d |d d< tjtj@ otdt|  tj |ddS  tj |ddS )N)r   r   r   r   r   Zold_index_datazIndex load error: %sr*   c                    s   t | tr8t }zt| dd dD ]
} | | ||< qW |S  ty7   t| D ]
} | | ||< q)Y |S w t | trQg }tt| D ]	}| | qE|S | S )Nc                 S   s   dd |  dD S )Nc                 S   r   r"   )r   )r8   yr"   r"   r#   r:     r   zIJsonCodeGen.genIndex.<locals>.order.<locals>.<lambda>.<locals>.<listcomp>rQ   )rV   r   r"   r"   r#   r     r   z5JsonCodeGen.genIndex.<locals>.order.<locals>.<lambda>r   )r+   r   r   rB   r   r?   r   r-   )topZnew_topkeorderr"   r#   r    s&   

z#JsonCodeGen.genIndex.<locals>.orderr   r   r   r"   r   c                 S   s
   |  dS )NrQ   )countr   r"   r"   r#   r     s   
 z&JsonCodeGen.genIndex.<locals>.<lambda>r   r   r   z OID->MIB index built, %s entriesr	   r  )rb   rC   r  loads	Exceptionr   r  sysexc_infor   getattrr-   rB   rT   r   
issupersetr   r  r  r.   r  )r!   Z	processedr
  rF   r=   rf   ZmodDataZidentity_oidZenterprise_oidZcompliance_oidsZcompliance_oidZobjects_oidsZ
object_oidZunique_prefixesrP   Z
oid_prefixmodulesr"   r  r#   genIndex  sv   

zJsonCodeGen.genIndex)r   )NFFrL   )@__name__
__module____qualname____doc__rA   r   ZbaseMibsr   rc   r   r   r  r   r$   staticmethodr)   r0   rH   rJ   rO   rY   r]   rd   rl   rp   rr   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r/   r  r  r"   r"   r"   r#   r
      s    
5

!8


O		
 !"#,-r
   )r  r   timer   r   r  ImportErrorZ
simplejsoncollectionsr   ZordereddictZpysmi.mibinfor   Zpysmi.codegen.baser   Zpysmir   r   version_infor   r   r   r   r
   r"   r"   r"   r#   <module>   s*   