o
    B]                      @   s@   d dl mZ d dlmZ dd Zed fZdd Zdd Zd	S )
    )univ)NoSuchObjectErrorc                 C   s  t |d trpddd}||d  \}}|r| j| n| j  |r.| ||\}}}n| |\}}}|dd  }| |\}}}| j||\}	t|	drl| |d d \}}}| j||\}
||
j	| fS ||fS t |ts|tt
|}| |\}}}||fS )	Nr    c                 S   s   | |fS )N )xyr   r   >/usr/lib/python3/dist-packages/pysnmp/entity/rfc3413/mibvar.py<lambda>   s    zmibNameToOid.<locals>.<lambda>   
createTest)r   r   )
isinstancetuple
mibBuilderZloadModulesZgetNodeNameByDescZgetFirstNodeNamegetNodeLocationimportSymbolshasattrZgetInstIdFromIndicesr   ObjectIdentifiergetNodeNameByOid)mibViewnamefmodNamesymNameoidlabelsuffixZ_smibNoderowNoder   r   r   mibNameToOid   s.   



r   c                 C   s   t |tstt|}| |\}}}| |\}}}| j||\}t|drF| |d d \}	}
}| j|	|
\}||f|	|fS |sN||f|fS |dkrX||ft
fS tdt|t|j||f d)Nr   r   )r   zMNo MIB registered that defines %s object, closest known parent is %s (%s::%s))str)r   r   r   r   r   r   r   r   r   ZgetIndicesFromInstId__scalarSuffixr   r   )r   r   Z_oidr   r   r   r   Z__suffixr   Z	__modNameZ	__symNameZ__sr   r   r   r   oidToMibName2   s(   

r"   c                 C   s*   | j ||\}t|dr|j|S d S )Nsyntax)r   r   r   r#   Zclone)r   r   r   valuer   r   r   r   cloneFromMibValueK   s   
r%   N)	Zpyasn1.typer   Zpysnmp.smi.errorr   r   ZIntegerr!   r"   r%   r   r   r   r   <module>   s   	