cfbolz changed the topic of #pypy to: PyPy, the flexible snake (IRC logs: https://quodlibet.duckdns.org/irc/pypy/latest.log.html#irc-end ) | use cffi for calling C | if a pep adds a mere 25-30 [C-API] functions or so, it's a drop in the ocean (cough) - Armin
<kenaan>
cfbolz py3.7 b7258d53fa17 /pypy/interpreter/astcompiler/: some more features. implement a visitor to replace annotations with constant strings
<kenaan>
cfbolz py3.7 fa9634deaf0d /pypy/interpreter/: unparse annotations when __future__.annotations is imported
<mattip>
yay
<kenaan>
cfbolz py3.7 ebbe4d608409 /: xfail test that I don't know how to implement yet
<krono>
happy new year everybody
lesshaste has joined #pypy
<lesshaste>
hi all
<arigato>
hi, happy new year to everyone too
<lesshaste>
and to you too!
<mattip>
as opposed to pyperformance, our approach to benchmarks depending on libraries has been to vendor them
<mattip>
so we have a vendored sphinx, docutils, ... in the benchmark repo, where pyperformance manages a virtualenv
<cfbolz>
mattip: yes, I still think that's the right approach. otherwise you lose all history constantly
<mattip>
well, except that docutils does not ship a python2/python3 version
<mattip>
so we cannot vendor a single version, we need to vendor two
<cfbolz>
right :-(
<mattip>
and internally docutils uses absolute imports, so I cannot just to "import docutils2 as docutils"
<mattip>
maybe I can "rm -rf docutils; cp -r docutils3 docutils;" before the benchmark run
<cfbolz>
or have docutils3/docutils and docutils2/docutils and mess with paths?
<mattip>
also worth trying
<mattip>
+1, that seems to work
<cfbolz>
cool
jvesely has joined #pypy
jvesely has quit [Client Quit]
jvesely has joined #pypy
jvesely has quit [Quit: jvesely]
jvesely has joined #pypy
dddddd has joined #pypy
jvesely has quit [Quit: jvesely]
jvesely has joined #pypy
<cfbolz>
Will look at the Syntax changes to async and await next
adamholmberg has joined #pypy
<Dejan>
awesome
<Dejan>
My company wants to switch to 3.7 but I told them to wait until there is support in PyPy for it
jacob22 has quit [Read error: Connection reset by peer]
<Dejan>
luckily they listed to me sometimes
jacob22 has joined #pypy
<nedbat>
Dejan: what feature do they want from 3.7?
<Dejan>
Idk mate, we have ~40 devs working on different stuff
<Dejan>
I am mostly working on distributed data processing (Celery/Airflow/Huey) so I am not in a big rush to move to 3.7
<Dejan>
I think that Celery does not even work with 3.7 yet
jvesely has quit [Quit: jvesely]
<Dejan>
I like the data classes for an example
jvesely has joined #pypy
<nedbat>
Dejan: attrs works on your current Python if you want that kind of thing.
<Dejan>
I know that some guys here use nanosecond resolution time functions that came with 3.7
jvesely has quit [Client Quit]
jvesely has joined #pypy
jvesely has quit [Quit: jvesely]
lritter has joined #pypy
<cfbolz>
nedbat: I think even dataclasses do?
<lesshaste>
what are the main topics for the upcoming sprint?
<arigato>
unknown so far. there will be HPy certainly
<cfbolz>
We don't even have a date yet
<arigato>
cfbolz: do you agree pypy3 could uniformize a bit the following compiler behaviour:
<arigato>
if you say "@foo; def f(x): pass", you only see the line number of the @foo, but not of the "def", so if setting the name 'f' into globals fails the reported line number will be wrong
<arigato>
if you say "@foo; def f(x=expr): pass" then you see the line number because of the evaluation of 'expr'
<arigato>
or else we try to be consistent with cpython, which has a similar behavior but differs in "@foo; def f(x=5):" because the 5 is a constant that is not really evaluated in pypy3 but is in cpython3
Rhy0lite has joined #pypy
jvesely has joined #pypy
<tos9>
arigato: how unwise is it to try to use `clang -E` (as part of wheel building maybe?) to be a preprocessor for ffi.cdef
<tos9>
it's not strictly necessary since I got what you / glyph suggested working already I think (or the even lazier way), but I'm curious
<arigato>
tos9: it's a hack, it may work in some cases but you need to be ready to filter it out further
<arigato>
and it generates something that only imports on the exact OS configuration where 'clang -E' was run
<tos9>
arigato: yeah I was trying to figure out if I could tell `clang -E` to only give me the post-processed version of the exact header I want
<tos9>
(and then when I didn't find that, I was going to parse that myself since it seems to be ordered, but then when I realized how many assumptions I have no idea about are inherent in those last two sentences I came to ask :)
Smigwell has joined #pypy
micisuta has quit [Ping timeout: 268 seconds]
siddhesh has joined #pypy
xcm has quit [Ping timeout: 265 seconds]
jvesely has quit [Quit: jvesely]
xcm has joined #pypy
xcm is now known as Guest12708
Guest12708 has quit [Killed (weber.freenode.net (Nickname regained by services))]
xcm has joined #pypy
jcea has joined #pypy
<cfbolz>
arigato: I am all for trying to be more consistent
<cfbolz>
I would say the def should always generate a line event
<arigato>
OK, so not consistent with cpython3 but consistent with the idea
<cfbolz>
Yes
<cfbolz>
nedbat: do you have an opinion?
<cfbolz>
arigato: aside, can you make the write to globals fail?
<cfbolz>
Using exec with a strange object?
<arigato>
cfbolz: yes, globals can be a user dict
<cfbolz>
Right
<arigato>
also, nedbat noticed the issue because of line tracing differences, and there are similar pdb differences
<cfbolz>
So yes, always trace the def, emo
<cfbolz>
Imo
<arigato>
same in pypy vs. python2.7 actually
<cfbolz>
Right
<nedbat>
cfbolz: hi, this is about the issue I wrote?
<cfbolz>
I think so
<nedbat>
oh, but arigato is talking about a different implication of the line number assignments.
<arigato>
yes, mostly trying to understand why we (and cpython) get this strange behaviour and how to fix it
<cfbolz>
right
<nedbat>
if it's any consolation, i write a few issues like this against CPython with each alpha they release
<cfbolz>
but we all agree that always getting def would be great?
<arigato>
ah, another example where it can really show up: with decorated classes
<arigato>
when the metaclass is called
<arigato>
the current line number on cpython is the one of the last decorator
<cfbolz>
yes, also not so good
<nedbat>
my interest is mainly to understand the logic so that coverage.py can do the right thing.
<nedbat>
the resolution of the issue is sometimes, "yup, that's the new way", and sometimes, "oh, let me fix that"
jvesely has joined #pypy
<arigato>
of course, code like that gets reported with a bogus firstlineno:
<arigato>
@ \
<arigato>
foo
<arigato>
def f():
<arigato>
pass
<arigato>
...no, wrong
<arigato>
pfff, seems there is no place to store the lineno of the 'def' or 'class' keyword in the current AST model
<cfbolz>
arigato: why not?
<arigato>
there is a lineno on the ast.FunctionDef, but it is overwritten with the line of the first '@'
<cfbolz>
arigato: right
<cfbolz>
yes, position info is really bad in the current asts
<cfbolz>
eg there is also no way to get the position of the + in:
<cfbolz>
+ b
<cfbolz>
a \
<arigato>
right
<cfbolz>
arigato: 3.8 adds a "lastlineno", fwiw
<cfbolz>
but you'd also need a "here's where the language feature itself is"
<arigato>
I don't know "lastlineno" but it smells a lot like a hack to add some of the missing info in some cases
<cfbolz>
yeah
<cfbolz>
I am not even sure it's exposed outside of the ast
<arigato>
it needs to be visible from the ast module, no?
<cfbolz>
yes, but not the code object or anything
<arigato>
OK
<cfbolz>
arigato: I still would kind of like tracebacks to underline the part of the expression that caused the error. but it's work
<arigato>
we could easily add on a case-by-case basis missing lineno's, but that means exposing more attributes on the ast module and being ready if they are not present when someone makes an ast by hand
<arigato>
tracebacks: that would be awesome, but it's surely a lot of work
<cfbolz>
arigato: I might play with it more
<cfbolz>
The main problem really is missing pos info
<cfbolz>
Too many ideas, too little time, as usual
<arigato>
same here, instead of refactoring the world I'm just following CPython 3.6.9 now
<cfbolz>
arigato: fair enough
<kenaan>
arigo py3.6 d36692105171 /pypy/interpreter/astcompiler/: Test and fix: follow CPython (at least 3.6.9) in updating the line number if it decides to constantify the whole tupl...
xcm has quit [Remote host closed the connection]
xcm has joined #pypy
<kenaan>
arigo py3.6 a0e3294e5d1d /pypy/interpreter/astcompiler/test/test_astbuilder.py: Fix typo in test
jvesely has quit [Quit: jvesely]
<kenaan>
cfbolz py3.7 1758bd2014d8 /pypy/interpreter/astcompiler/: fstring support
<kenaan>
cfbolz py3.7 fcec4f8b9fb2 /pypy/interpreter/astcompiler/: remove the f, if possible
<kenaan>
cfbolz py3.7 51dba005edf3 /pypy/interpreter/pyparser/data/Grammar3.7: import 3.7 grammar from cpython
<kenaan>
cfbolz py3.7 c345fa010218 /pypy/interpreter/: switch to the 3.7 grammar, which makes it possible to stop using the hacks in the tokenizer
<kenaan>
cfbolz py3.7 d024dd626c73 /pypy/interpreter/astcompiler/: await support in unparsing
micisuta1 has joined #pypy
xcm has quit [Remote host closed the connection]
<kenaan>
cfbolz py3.7 ac723fe5ecad /pypy/interpreter/pycode.py: hack differently to make PyCode.dump (and thus test_pycode) work
xcm has joined #pypy
jvesely has joined #pypy
<nedbat>
arigato: i'm falling behind here: are you saying you're changing pypy to match cpython in the linenumbers?
<cfbolz>
arigato: yes, I think thato what he did, for this case
<nedbat>
cfbolz: oh, i missed that he had resolved the ticket. thanks.
<cfbolz>
:-)
<cfbolz>
nedbat: thanks for fighting these super hairy problems all the time!
<nedbat>
:)
<kenaan>
cfbolz py3.7 f69a090e703c /pypy/module/token/: maybe fix the token errors
<kenaan>
cfbolz py3.7 4887e271842a /pypy/objspace/std/: better error message for object.__new__
<cfbolz>
Some nice demessifications in 3.7
jvesely has quit [Quit: jvesely]
<mattip>
<spam>
<mattip>
I got benchmarks to run on python2/3, but could not update reitveld
<mattip>
unfortunately it is a massive update to the vendored libraries
<mattip>
next up: improved buildbot so it can run pypy3 benchmarks
<kenaan>
mattip benchmarks[chameleon] 88b0250f4c41 /: use 42 as a sentinel exit code when running a python2-only benchmark on python3 If the python runni...
<kenaan>
mattip benchmarks[chameleon] ab6c3e5c29b6 /lib/cpython-doc/: update sphinx to 1.8.5
<mattip>
heh, out of the 15 commits, kenaan shows only 2?