Thanks Claudiu, worked like a charm.

On Sat, Jun 27, 2015, 10:57 AM Claudiu Popa <pcmantic...@gmail.com> wrote:

> On Sat, Jun 27, 2015 at 8:18 AM, Joe Schafer <joesmo...@gmail.com> wrote:
> > Hi all,
> >
> > I'm trying to extend pylint to recognize Werkzeug's import trickery.
> >
> > Werkzeug uses a variable called `all_by_module` in
> > https://github.com/mitsuhiko/werkzeug/blob/master/werkzeug/__init__.py
> to
> > lazily load modules.  Pylint doesn't recognize this scheme and flags
> > statements like:
> >
> >     from werkzeug import secure_filename
> >
> > My attempt to fix the problem is at
> >
> https://github.com/jschaf/pylint-werkzeug/blob/master/pylint_werkzeug/__init__.py
> >
> > I don't think I'm following an optimal path to success.  Basically, I'm
> > trying to recreate Python's import logic and then generate an AST with
> > astroid.  It's not going well.  The current solution recurses endlessly,
> > since creating the AST seems to trigger the pylint transform plugin.  I'm
> > looking for simpler or more robust alternatives to my current approach
> with
> > imports.
> >
> > My problem seems somewhat related to the issue about changing flask.ext
> > imports at https://bitbucket.org/logilab/astroid/issue/10/
> >
> > Do you have any suggestions?
> >
> > Thanks,
> > Joe Schafer
> >
>
>
> Hi Joe,
>
> You could try something similar to the six.moves transform:
>
> https://bitbucket.org/logilab/astroid/src/0fa5de5411866d2d17ef0c6f43665f6463e83fa5/astroid/brain/pysix_moves.py?at=default#cl-239
>
> Basically something along these lines:
>
>    def werkzeug_transform():
>        code = textwrap.dedent('''
>        from werkzeug.useragents import UserAgent
>        from werkzeug.http import parse_etags
>       ....
>        ''')
>       return AstroidBuilder().string_build(code)
>
>    astroid.register_module_extender(MANAGER, 'werkzeug',
> werkzeug_transform)
>
_______________________________________________
code-quality mailing list
code-quality@python.org
https://mail.python.org/mailman/listinfo/code-quality

Reply via email to