[pypy-dev] Problems with modified socket.py

Antonio Cuni anto.cuni at gmail.com
Sun Mar 23 11:01:54 CET 2008


Leandro Lameiro wrote:
> Hi Antonio.
> 
> My name is Leandro Lameiro and I've been a long time observer of PyPy. 
> This weekend I tried to see where I could contribute to PyPy, so I 
> decided to try and run some apps and see what is missing.

Hi Leandro.

Thank you for your interest in PyPy; every contribution is welcome, 
either patches or bug report!

I'm CCing pypy-dev, so that other developers can read it as well.

> The first thing I tried to run was ez_setup.py ( 
> http://peak.telecommunity.com/dist/ez_setup.py ), a simple script that 
> downloads and installs setuptools. It is a really short script but it 
> uses various modules such as md5, socket, urllib, os etc.
> 
> After translating PyPy (with allworkingmodules and socket switches) I 
> found that ez_setup.py will raise and exception in PyPy but not in 
> CPython (tried with 2.4 and 2.5).
> 
> Here is the traceback:
> 
> (virtualenv)lameiro at liria:~/projetos/ez_setup$ python ez_setup.py
> Downloading 
> http://pypi.python.org/packages/2.4/s/setuptools/setuptools-0.6c8-py2.4.egg
> Traceback (most recent call last):
>  File "?", line 34, in run_toplevel
>  File "ez_setup.py", line 267, in <module>
>    main(sys.argv[1:])
>  File "ez_setup.py", line 204, in main
>    os.unlink(egg)
>  File "ez_setup.py", line 198, in main
>    egg = download_setuptools(version, delay=0)
>  File "ez_setup.py", line 152, in download_setuptools
>    if src: src.close()
>  File "/home/lameiro/projetos/pypy-dist/lib-python/2.4.1/urllib.py", 
> line 804, in close
>    if self.fp: self.fp.close()
>  File 
> "/home/lameiro/projetos/pypy-dist/lib-python/modified-2.4.1/socket.py", 
> line 242, in close
>    s._drop()
> AttributeError: 'HTTPResponse' object has no attribute '_drop'
> (virtualenv)lameiro at liria:~/projetos/ez_setup$
> 
> After investigating a little, I found that you modified socket.py and 
> introduced this _drop call and also defined it in socket._closedsocket 
> class (an empty method), but that doesn't seem to be enough since other 
> types are going there (in this case HTTPResponse, but maybe others too).

indeed, you are right; the relevant _drop method is defined in 
pypy-dist/pypy/module/_socket/interp_socket.py (it's called _drop_w), 
but I guess we should take care of cases like this in which the object 
doesn't provide a _drop method.

> The revision in which this modification was introduced is 
> https://codespeak.net/viewvc/pypy/dist/lib-python/modified-2.4.1/socket.py?r1=16842&r2=34429 
> <https://codespeak.net/viewvc/pypy/dist/lib-python/modified-2.4.1/socket.py?r1=16842&r2=34429> 
> , and I suppose it was you because the commiter login is "ac". :)

sorry, your guess is wrong :-).
My login name is "antocuni", "ac" stands for Anders Chrigström.
That's also why I don't know much about this and I'm CCing pypy-dev :-)

> Anyway, thanks for the great work and I hope the next time I can 
> contribute a patch instead of a bug report.

thank to you again for the help!
Feel free to come to #pypy on freenode if you want to talk with us by IRC.

ciao,
Anto



More information about the Pypy-dev mailing list