[pypy-dev] [pypy-svn] r48350 - pypy/dist/pypy/objspace/flow

Carl Friedrich Bolz cfbolz at gmx.de
Wed Nov 7 10:02:44 CET 2007


tismer at codespeak.net wrote:
> Author: tismer
> Date: Wed Nov  7 05:18:57 2007
> New Revision: 48350
> 
> Modified:
>    pypy/dist/pypy/objspace/flow/specialcase.py
> Log:
> some over-due relaxing to __import__ annotation
> 
> Modified: pypy/dist/pypy/objspace/flow/specialcase.py
> ==============================================================================
> --- pypy/dist/pypy/objspace/flow/specialcase.py	(original)
> +++ pypy/dist/pypy/objspace/flow/specialcase.py	Wed Nov  7 05:18:57 2007
> @@ -6,7 +6,18 @@
>  from pypy.tool.cache import Cache
>  
>  def sc_import(space, fn, args):
> -    w_name, w_glob, w_loc, w_frm = args.fixedunpack(4)
> +    args_w, kwds_w = args.unpack()
> +    assert kwds_w == {}, "should not call %r with keyword arguments" % (fn,)
> +    assert len(args_w) > 0 and len(args_w) <= 4, 'import needs 1 to 4 arguments'
> +    w_name = args_w[0]
> +    w_None = space.wrap(None)
> +    w_glob, w_loc, w_frm = w_None, w_None, w_None
> +    if len(args_w) > 1:
> +        w_glob = args_w[1]
> +    if len(args_w) > 2:
> +        w_loc = args_w[2]
> +    if len(args_w) > 3:
> +        w_frm = args_w[3]   
>      if not isinstance(w_loc, Constant):
>          # import * in a function gives us the locals as Variable
>          # we always forbid it as a SyntaxError

Hi Christian,

could you please write a couple of tests for this? It's very hard to see 
what this code is doing and whether it is broken without tests for its 
functionality.

Cheers,

Carl Friedrich



More information about the Pypy-dev mailing list