[pypy-dev] Re: [pypy-svn] r12876 - pypy/dist/lib-python/modified-2.3.4/encodings

Armin Rigo arigo at tunes.org
Mon May 30 11:57:08 CEST 2005


Hi Ale,

On Mon, May 30, 2005 at 12:38:23AM +0200, ale at codespeak.net wrote:
> -    encode = codecs.escape_encode
> -    decode = codecs.escape_decode
> +    encode = staticmethod(codecs.escape_encode)
> +    decode = staticmethod(codecs.escape_decode)

Sorry, I missed an older checkin (r11820) where you did something
similar.  There must be another way than modifying the encodings package
(as you hint in the check-in message).  Some time ago, for precisely
this reason, we introduced a way to define functions that aren't bound
in the normal Python way, but behave like CPython's builtin functions:

def escape_encode( obj,errors='strict'):
    """None
    """
    s = repr(obj)
    v = s[1:-1]
    return v,len(v)
escape_encode = types.BuiltinFunctionType(escape_encode)

I'm still unsure if it's a good solution to use it all over the place in
_codecs.py because it's PyPy-specific.  Another solution is to keep
_codecs.py clean of this, but put the whole module in
pypy/module/_codecs/app__codecs.py instead of pypy/lib/.  This way, all
functions exported by the _codecs module become "builtin functions"
automatically.  (It also allows you to hide parts you don't want to
export, like the codec_search_path and codec_search_cache registry.)
The advantage is that app__codecs.py by itself is still usable by
non-PyPy projects.


A bientot,

Armin



More information about the Pypy-dev mailing list