<mattip>
py3.8 lib-python status: 274 failing and 48 erroring tests
<LarstiQ>
mattip: hah, I love the "5 years later"
gef_ has joined #pypy
<mattip>
test_os, test_ssl seem like the next ones to try to tackle
<mattip>
(hopefully someone else will tackle test_dis and test_ast)
mathieu1 has joined #pypy
Atque has quit [Quit: ...]
<nimaje>
mattip: not really as I have no idea why they use < 2 there, but changing to < 1 makes the test pass
<mattip>
which test is this?
<nimaje>
much of idlelib.idle_test.test_calltip.Get_argspecTest seems to be broken, because to much passes isinstance(ob_call, types.MethodType) so the .__call__ object is used instead of the function itself (and inspect.signature() returns <Signature (*args, **keywords)> for those .__call__ objects instead of the signature of the underlying
<mattip>
so how do these pass on CPython and fail on PyPy?
<mattip>
what are we doing differently?
<mattip>
if you stop with a "breakpoint()" at that point in the test on both, what is the difference?
<nimaje>
to the argspec test isinstance(C.m.__call__, types.MethodType) returns false on cpython, but true on pypy for fom method m in a class C, so on cpython C.m will be used for further inspection, but C.m.__call__ on pypy (and inspect.signature() returns <Signature (*args, **keywords)> for those .__call__ objects on both pypy and cpython)
<nimaje>
even for a normal function f isinstance(f.__call__, types.MethodType) returns true, which breaks idlelib.calltip.get_argspec() and so every test using it
manjaro-user has joined #pypy
manjaro-user is now known as someone
someone is now known as someone2
someone2 is now known as rozarioagro
gef_ has quit [Ping timeout: 240 seconds]
gef has quit [Ping timeout: 245 seconds]
<mattip>
for "def f(): pass", on CPython f.__call__ is a
<mattip>
<method-wrapper '__call__' of function object at 0x7fa00a65fee0>
<mattip>
on PyPy it is a
<mattip>
<bound method builtin_function.__call__ of <function f at 0x00007fb70aaedc40>>
gef has joined #pypy
<mattip>
I think this is a variant of the documented differences
<nimaje>
so idlelib.idle_test.test_calltip.Get_argspecTest.* just doesn't work on pypy? and they should get marked @xfail or something similar?
otisolsen70 has joined #pypy
<LarstiQ>
is it the test that doesn't work or the actual idle code?
<nimaje>
the actual idle code (idlelib.calltip.get_argspec() returns '(*args, **keywords)' on pypy because of fob = ob_call if isinstance(ob_call, types.MethodType) else ob it should use ob in more situations on pypy)
lritter has joined #pypy
<mattip>
it seems "more situations" is not "all situation". If I blindly change that line to "fob = ob", some tests pass but others start to fail
<nimaje>
maybe use ob if it is already a function or methode and else that isinstance check, that should be correct I think, but not sure if it catches all situations where ob should be used instead of ob_call
<cfbolz>
mattip: batuhan and I just started working on the "too many bridges" problem, we're going to try and meet weekly and progress on it
<nimaje>
using ob if (isinstance(ob, type) or isinstance(ob, types.FunctionType)) seems to be a fix for get_argspec() and fixing about 20 testfailures (without checking for type first the isinstance(ob, types.FunctionType) could raise with strange metaclasses)
<mattip>
so maybe more is needed for our compatibility
<cfbolz>
mattip: it hasn't worked on Linux for us though
<cfbolz>
mattip: the test that is failing is older than that pull request
Julian has joined #pypy
<nimaje>
mattip: down to 2 failures for idlelib.idle_test.test_calltip (probably that can now be a else: fob = ob_call , but I wanted to match cpython a little bit here and only use ob_call if it is a types.MethodType)
<mattip>
I see overall for lib-python3/test/test_idle.py 4 failures and 6 errors
<nimaje>
(3 failures, 19 errors and 1 skipped for me)
<mattip>
I'm on linux 20.04 and pypy3.8 80ce2f4a65b3,
<mattip>
before the changes there were 34 failed, 6 errors
<mattip>
so the branch is a win. I will merge it
<mattip>
thanks nimaje
lritter has quit [Ping timeout: 258 seconds]
Julian has quit [Quit: leaving]
yuiza has joined #pypy
yuiza has quit [Remote host closed the connection]
yuiza has joined #pypy
gef_ has quit [Ping timeout: 245 seconds]
gef has quit [Ping timeout: 268 seconds]
mattil has joined #pypy
rozarioagro has quit [Read error: No route to host]
stkrdknmibalz has quit [Quit: WeeChat 3.0.1]
dmalcolm_ has quit [Remote host closed the connection]
dmalcolm has joined #pypy
gef has joined #pypy
gef_ has joined #pypy
ronan has quit [Ping timeout: 245 seconds]
gef has quit [Ping timeout: 258 seconds]
gef_ has quit [Ping timeout: 268 seconds]
ronan has joined #pypy
mathieu1 has quit [Ping timeout: 245 seconds]
gef has joined #pypy
gef_ has joined #pypy
lritter has joined #pypy
Jin^eLD has quit [Ping timeout: 268 seconds]
gef has quit [Ping timeout: 240 seconds]
gef_ has quit [Ping timeout: 258 seconds]
<yuiza>
vim
<yuiza>
:q
<yuiza>
oh, sorry
yuiza has quit [Remote host closed the connection]
gef has joined #pypy
gef_ has joined #pypy
gef_ has quit [Ping timeout: 240 seconds]
gef has quit [Ping timeout: 268 seconds]
gef has joined #pypy
ronan__ has joined #pypy
ronan has quit [Ping timeout: 245 seconds]
gef has quit [Ping timeout: 248 seconds]
ronan__ has quit [Read error: Connection reset by peer]
gef has joined #pypy
gef_ has joined #pypy
ronan has joined #pypy
gef has quit [Ping timeout: 240 seconds]
gef_ has quit [Ping timeout: 258 seconds]
gef has joined #pypy
gef has quit [Ping timeout: 268 seconds]
gef has joined #pypy
gef has quit [Ping timeout: 245 seconds]
gef has joined #pypy
gef_ has joined #pypy
stkrdknmibalz has joined #pypy
gef_ has quit [Ping timeout: 268 seconds]
gef has quit [Ping timeout: 268 seconds]
gef has joined #pypy
gef_ has joined #pypy
gef has quit [Ping timeout: 240 seconds]
gef_ has quit [Ping timeout: 258 seconds]
gef has joined #pypy
lritter has quit [Remote host closed the connection]