| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
|
Merged, thanks. There are two remaining static types? |
Sorry, something went wrong.
Thanks! No more remaining types. |
Sorry, something went wrong.
BTW, should I add traverse/clear/free methods to the module def before closing the issue? |
Sorry, something went wrong.
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: _sqlite3.Connection.backup() Python method is implemented as the pysqlite_connection_backup() C function. If you modify the function to use Argument Clinic, you can then get the defining class: then PyType_GetModuleState(cls) gives you the module state. pysqlite_connection_backup() -> defining_class (cls) -> PyType_GetModuleState(cls) -> module state -> your heap types Converting _sqlite3 to use a module state will make it safe to be used in Python subinterpreters! See:
|
Sorry, something went wrong.
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! |
Sorry, something went wrong.
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. |
Sorry, something went wrong.
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 defining_class makes this very easy, however I need help with resolving two issues:
UPDATE: Solved like this (excerpt from Argument Clinic for _sqlite3.Connection.__init__): Also, defining_class is not documented. I'll open an issue for that. https://docs.python.org/3.10/howto/clinic.html |
Sorry, something went wrong.
Good idea. |
Sorry, something went wrong.
|
I wrote #22712 to "explain my idea". It's a minimum change just to pass a "state" to functions which access the UCD_Type. |
Sorry, something went wrong.
Thanks, I'll have a look. |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
Part 4 of bpo-41861, @vstinner. #norefleaks
After this, I'd like to merge #22419 to finalise bpo-41861.
https://bugs.python.org/issue41861