<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On 11 May 2018 at 08:26, Ilya Etingof <span dir="ltr"><<a href="mailto:ietingof@redhat.com" target="_blank">ietingof@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 05/10/2018 05:01 PM, Stefano Canepa wrote:<br>
> <br>
> On 10 May 2018 at 10:55, Ilya Etingof <<a href="mailto:ietingof@redhat.com">ietingof@redhat.com</a><br>
</span><span class="">> <mailto:<a href="mailto:ietingof@redhat.com">ietingof@redhat.com</a>>> wrote:<br>
> <br>
> <br>
>     Hi Stefano,<br>
> <br>
>     The best solution would be of course to fix pysmi code generator [1] to<br>
>     behave. ;-)<br>
> <br>
> <br>
> ​This is something that pysmi author already gives for granted in the<br>
> Release notes.<br>
> I bet you know this better then me ;-)​<br>
>  <br>
>  <br>
> <br>
>     On the other hand, if you won't include the autogenerated code into your<br>
>     package, the code generation would happen just once at run time - the<br>
>     autogenerated module would get cached on the file system and loaded from<br>
>     there ever after.<br>
> <br>
>     Theoretically, not pinning Python MIB in your package has an advantage<br>
>     of letting pysmi pulling newer ASN.1 MIB and turning it into Python<br>
>     whenever newer MIB revision becomes available.<br>
> <br>
> <br>
> ​Ilya you're confusing me. Do you mean that, even if I load my MIB and<br>
> all other it depends on from ASN.1, they are compiled into python byte<br>
> code and cached and blah blah? ​<br>
<br>
</span>The workflow is this:<br>
<br>
* pysnmp wants to load a MY-MIB by name (e.g. evaluate the contents of<br>
MY-MIB.py, turn it into Python objects and link them up to its in-memory<br>
MIB tree)<br>
* pysnmp searches for MY-MIB.py[co] in its search path<br>
* if pysnmp is successful, we are done<br>
* if pysnmp does not find MY-MIB.py[co] and pysmi package is present,<br>
pysnmp calls pysmi with MY-MIB name on input<br>
* pysmi tries to find MY-MIB (e.g. in ASN.1 form) in its search path<br>
(possibly including remote locations), compile it into MY-MIB.py[co] and<br>
cache it somewhere within pysnmp search path<br>
* if pysmi is successful, pysnmp starts over loading MY-MIB.py[co]<br>
<br>
Hope this is helpful. ;)<br>
</blockquote></div><br><div style="font-family:monospace,monospace" class="gmail_default">Super helpful.<br><br></div><div style="font-family:monospace,monospace" class="gmail_default">Copy&pasted this into my notebook for future reference.<br></div><div style="font-family:monospace,monospace" class="gmail_default"><br></div><div style="font-family:monospace,monospace" class="gmail_default">All the best<br></div><div style="font-family:monospace,monospace" class="gmail_default">Stefano<br><br></div><div style="font-family:monospace,monospace" class="gmail_default">​</div><br></div></div>