-
-
Notifications
You must be signed in to change notification settings - Fork 31.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bpo-41861: Convert _sqlite3 CursorType and ConnectionType to heap types #22478
bpo-41861: Convert _sqlite3 CursorType and ConnectionType to heap types #22478
Conversation
Merged, thanks. There are two remaining static types? |
Thanks! No more remaining types. |
BTW, should I add traverse/clear/free methods to the module def before closing the issue? |
Currently, it's possible to have more than once instance of the _sqlite3 module. If a second instance is created and then cleared, it would clear the shared heap types of the first instance: not good. It would be better to add a module state and retrieve these types from the module state. The problem is to retrieve the module state. I suggest you to convert all methods which use these 4 types to Argument Clinic, so later you will be able to use "defining_class" parameter which is a reliable way to get the module state from a type. That's why I asked you to use PyType_FromModuleAndSpec(). Example:
Converting _sqlite3 to use a module state will make it safe to be used in Python subinterpreters! See:
|
I already started experimenting with this. Should I put up what I've got as a draft PR? I guess this goes as a separate issue anyways.
I'm painfully aware of this :)
I think I already put up a PR that converts _sqlite3 to Argument Clinic. I'll rebase onto master and ping you.
Thanks! |
That sounds like a good start! I prefer a PR to convert to Argument Clinic, and then a second one to add a module state. |
While my other PR's are on hold, I've started with the post-agrument-clinic-step: heap module state (PEP 573). I'm currently basing this branch on top off my work with bpo-40956. Using
UPDATE: Solved like this (excerpt from Argument Clinic for Also, |
Good idea. |
I wrote #22712 to "explain my idea". It's a minimum change just to pass a "state" to functions which access the UCD_Type. |
Thanks, I'll have a look. |
Part 4 of bpo-41861, @vstinner. #norefleaks
After this, I'd like to merge #22419 to finalise bpo-41861.
https://bugs.python.org/issue41861