On Sep 24, 10:26 pm, Vircom <[EMAIL PROTECTED]> wrote:
> On Sep 24, 1:16 am, "Gabriel Genellina" <[EMAIL PROTECTED]>
> wrote:
>
>
>
> > En Sat, 22 Sep 2007 22:07:27 -0300, [EMAIL PROTECTED]
> > <[EMAIL PROTECTED]> escribi?:
>
> > > I have the side library which provides wide set of different
> > > functions, but I'm going to replace some of them with mine and
> > > provided such 'modified' library thought my project.
>
> > > The following way works well for my purpose:
>
> > > ------- mylib.py -------
> > > import sidelib
>
> > > import os, sys, ....
>
> > > def func():
> > >     .....
> > > sidelib.func = func
> > > ......
> > > ?!?!?!?!
> > > --------------------------
>
> > > But this cause to write mylib.sidelib.func() to function call, is it
> > > any way to 'map' definitions from sidelib to mylib (possible at point
> > > marked ?!?!?!?!) such that constructions like mylib.func() will be
> > > provided and client code don't see difference between changed and
> > > original library in syntax way?
>
> > Your code already works as you like:
> > import sidelib
> > sidelib.func()
> > and you get the modified function.
>
> > You don't have to say mylib.sidelib.func - in fact, mylib.sidelib is the
> > same module object as sidelib
> > But you have to ensure that the replacing code (mylib.py) runs *before*
> > anyone tries to import something from sidelib.
>
> > > One my idea was to do from sidelib import * and then modify globals()
> > > dictionary, but this isn't good too because mylib imports many other
> > > modules and they all mapped into it's namespace (like mylib.os,
> > > mylib.sys).
>
> > As you said, a bad idea.
>
> > --
> > Gabriel Genellina
>
> Thank you for reply!
> I make a mistake in my problem description, because I'm going not only
> use my own functions (it'll be simple import library question), but
> also using side library many functions (with only a few one replaced
> by me). For now I'm stay at the following solution:
> ----- mylib.py -----
> import sidelib
> from sidelib import *
>
> _sidelib_set = set(dir(sidelib))
> _mylib_set = set(['replacedfunc1', 'replacedfunc2', ....]) # all
> exports
> __all__ = list(_sidelib_set.union(_mylib_set))
>
> ....implementations of _mylib_set functions....
> --------------------
>
> Seems it's pretty good for my task, mylib seems fully the same as the
> sidelib one.
>
> Thanks for you attention, anyway!

Sorry, I'm misunderstand your propose by first reading. Importing
sidelib after my changes are really the best idea. I'm changingmy
project this way.

Thank you!!!

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to