[issue32332] Implement slots support for magic methods added in PEP 560

2017-12-15 Thread Yury Selivanov

Yury Selivanov  added the comment:

Serhiy, I've tested METH_STATIC approach and it works just fine.  Thanks for 
pointing that out!

I agree that adding slots for something that's already possible is an overkill, 
so let's close this issue.

--
resolution:  -> rejected
stage: patch review -> resolved
status: open -> closed
type:  -> enhancement

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32332] Implement slots support for magic methods added in PEP 560

2017-12-15 Thread Serhiy Storchaka

Serhiy Storchaka  added the comment:

PR 4883 shows how magic methods for PEP 560 can be implemented without 
introducing new slots.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32332] Implement slots support for magic methods added in PEP 560

2017-12-14 Thread Serhiy Storchaka

Serhiy Storchaka  added the comment:

This isn't so easy. You can't just access new slot, because this is binary 
incompatible. You should add new type flag, say Py_TPFLAGS_HAVE_CLASS, set it 
for all classes with tp_as_class, and guard access to tp_as_class with

if (!PyType_HasFeature(tp, Py_TPFLAGS_HAVE_CLASS))

--
nosy: +serhiy.storchaka

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32332] Implement slots support for magic methods added in PEP 560

2017-12-14 Thread Yury Selivanov

Change by Yury Selivanov :


--
keywords: +patch
pull_requests: +4772
stage:  -> patch review

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue32332] Implement slots support for magic methods added in PEP 560

2017-12-14 Thread Yury Selivanov

New submission from Yury Selivanov :

I propose to add type slots for magic methods introduced by PEP 560.  In the 
brief discussion on the mailing list Guido OK'd the idea: 
https://mail.python.org/pipermail/python-dev/2017-December/151262.html

I'll submit a PR that implements this proposal by adding new 'tp_as_class' 
slot, that points to a PyClassMethods struct, that has two fields: `cm_getitem` 
and `cm_mro_entries`.

Interestingly, when __class_getitem__ is implemented through the type/slots 
machinery it becomes a bit faster.  Given the following microbenchmark:

class Foo:
def __class_getitem__(cls, o):
return o

for _ in range(3):
t = time.monotonic()
for i in range(10 ** 8):
assert i == Foo[i]
print(f'{time.monotonic() - t:.3f}s')

I see these numbers for the master branch:

17.161s
17.024s
16.530s

and these for the C-slots branch:

15.010s
15.693s
15.035s

--
components: Interpreter Core
messages: 308365
nosy: gvanrossum, levkivskyi, pitrou, yselivanov
priority: normal
severity: normal
status: open
title: Implement slots support for magic methods added in PEP 560
versions: Python 3.7

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com