| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
There was a problem hiding this comment.
nit comment.
IMHO, we can use C99 features since some of the module already use other c99 features.
(for example, struct init)
Sorry, something went wrong.
| assert(PyType_Check(type)); | ||
| assert(type->tp_mro); | ||
| int i; | ||
| for (i = 0; i < PyTuple_GET_SIZE(type->tp_mro); i++) { |
There was a problem hiding this comment.
| for (i = 0; i < PyTuple_GET_SIZE(type->tp_mro); i++) { | |
| for (int i = 0; i < PyTuple_GET_SIZE(type->tp_mro); i++) { |
Sorry, something went wrong.
| { | ||
| assert(PyType_Check(type)); | ||
| assert(type->tp_mro); | ||
| int i; |
There was a problem hiding this comment.
| int i; |
Sorry, something went wrong.
|
IMO that's a code style issue, and PEP7 has nothing against it. I'd rather keep it as is. |
Sorry, something went wrong.
There was a problem hiding this comment.
Thanks, petr. I have no any other comment in here.
PS: I have reviewed it months ago in fork repo~
Sorry, something went wrong.
|
Thanks! And thanks for the other review – this PR includes the changes you pointed out :) |
Sorry, something went wrong.
|
When a type has no subclass but a long MRO, _PyType_GetModuleByDef() has to iterate on the N parent classes before reaching the last one which will match. Would it be more efficient to iterator on the MRO in the reverse order? It would make the function slower for subclasses, but faster for direct instance of the type. |
Sorry, something went wrong.
|
Usually, when I read "get", I expect a O(1) operation. I'm fine if the first call fills a cache and is slower. But here, every call has a complexity of O(n) where n is the length of the MRO tuple. Would it make sense to rename the function to _PyType_FindModuleByDef() to announce that it can be slow? Anyway, thanks for adding this function! It will unblock porting many extension modules to multi-phase init and heap types in https://bugs.python.org/issue1635741 ! |
Sorry, something went wrong.
|
About _PyType_FindModuleByDef() name, here is a more concrete example: the PR #23124 converts the array extension to multi-phase init. The current PR defines: #define get_array_state_by_type(tp) \
(get_array_state(_PyType_GetModuleByDef(tp, &arraymodule)))
#define get_array_state_by_class(cls) \
(get_array_state(PyType_GetModule(cls)))
I would prefer to use "find" in the first macro, to better highlight that "get_array_state_by_type()" is a fast attribute access: #define find_array_state_by_type(tp) \
(get_array_state(_PyType_FindModuleByDef(tp, &arraymodule)))
#define get_array_state_by_type(cls) \
(get_array_state(PyType_GetModule(cls)))
|
Sorry, something went wrong.
Hm, I don't expect that. "get" can mean many things :) I'll keep it in mind for if/when it becomes public API. I don't think it's worth changing the name now, after all the discussion. |
Sorry, something went wrong.
* master: bpo-42260: Add _PyInterpreterState_SetConfig() (pythonGH-23158) Disable peg generator tests when building with PGO (pythonGH-23141) bpo-1635741: _sqlite3 uses PyModule_AddObjectRef() (pythonGH-23148) bpo-1635741: Fix PyInit_pyexpat() error handling (pythonGH-22489) bpo-42260: Main init modify sys.flags in-place (pythonGH-23150) bpo-1635741: Fix ref leak in _PyWarnings_Init() error path (pythonGH-23151) bpo-1635741: _ast uses PyModule_AddObjectRef() (pythonGH-23146) bpo-1635741: _contextvars uses PyModule_AddType() (pythonGH-23147) bpo-42260: Reorganize PyConfig (pythonGH-23149) bpo-1635741: Add PyModule_AddObjectRef() function (pythonGH-23122) bpo-42236: os.device_encoding() respects UTF-8 Mode (pythonGH-23119) bpo-42251: Add gettrace and getprofile to threading (pythonGH-23125) Enable signing of nuget.org packages and update to supported timestamp server (pythonGH-23132) Fix incorrect links in ast docs (pythonGH-23017) Add _PyType_GetModuleByDef (pythonGH-22835) Post 3.10.0a2 bpo-41796: Call _PyAST_Fini() earlier to fix a leak (pythonGH-23131) bpo-42249: Fix writing binary Plist files larger than 4 GiB. (pythonGH-23121) bpo-40077: Convert mmap.mmap static type to a heap type (pythonGH-23108) Python 3.10.0a2
| Back | FazBrowse Home | New Git URL |
See https://mail.python.org/archives/list/capi-sig@python.org/thread/T3P2QNLNLBRFHWSKYSTPMVEIL2EEKFJU/ for discussion.
https://bugs.python.org/issue42100