This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2014年01月08日 00:14 by larry, last changed 2022年04月11日 14:57 by admin.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| issue20178-cyptes-01.patch | meador.inge, 2014年01月13日 03:28 | review | ||
| issue20178-sqlite-01.patch | meador.inge, 2014年01月15日 02:19 | review | ||
| issue20178-cyptes-02.patch | serhiy.storchaka, 2015年05月05日 18:50 | |||
| Messages (14) | |||
|---|---|---|---|
| msg207634 - (view) | Author: Larry Hastings (larry) * (Python committer) | Date: 2014年01月08日 00:14 | |
This issue is part of the Great Argument Clinic Conversion Derby, where we're trying to convert as much of Python 3.4 to use Argument Clinic as we can before Release Candidate 1 on January 19. This issue asks you to change the following bundle of files: Modules/_ctypes/_ctypes.c: 8 sites Modules/_ctypes/_ctypes_test.c: 1 sites Modules/_ctypes/callproc.c: 14 sites Modules/_ctypes/stgdict.c: 0 sites Modules/_curses_panel.c: 3 sites Modules/_sqlite/cache.c: 1 sites Modules/_sqlite/connection.c: 12 sites Modules/_sqlite/cursor.c: 5 sites Modules/_sqlite/microprotocols.c: 1 sites Modules/_sqlite/module.c: 6 sites Modules/_sqlite/row.c: 1 sites Talk to me (larry) if you only want to attack part of a bundle. For instructions on how to convert a function to work with Argument Clinic, read the "howto": http://docs.python.org/dev/howto/clinic.html |
|||
| msg207740 - (view) | Author: Meador Inge (meador.inge) * (Python committer) | Date: 2014年01月09日 15:07 | |
I will pick this one up. |
|||
| msg208000 - (view) | Author: Meador Inge (meador.inge) * (Python committer) | Date: 2014年01月13日 03:28 | |
Larry, the attached patch converts what is convertible of Modules/_ctypes/_ctypes. Although, I ran into an odd case with this conversion: the converted functions are each used in *multiple* PyMethodDef tables. So while clinic can generate equivalent code, the builtins are not all pinned to one type. The type I pinned it to is the same type that the methods are documented against: http://docs.python.org/2/library/ctypes.html#ctypes._CData Since clinic makes you explicitly specify the fully qualified method name, I assume sharing like this is not allowed. Thoughts? |
|||
| msg208001 - (view) | Author: Meador Inge (meador.inge) * (Python committer) | Date: 2014年01月13日 03:32 | |
None of the sites in Modules/_curses_panel.c look convertible. |
|||
| msg208130 - (view) | Author: Meador Inge (meador.inge) * (Python committer) | Date: 2014年01月15日 02:19 | |
Attached is a first cut for sqlite3. It is generally OK, but I have the following
nits:
* As is probably expected, __init__ and __call__ procs can't be converted.
* sqlite3.Connection.{execute, executemany, executescript} don't use
PyArg_Parse*.
* The clinic version of 'sqlite3.adapt' has an argument string of "O|OO".
The first optional parameter defaults to 'pysqlite_PrepareProtocolType'
in C and 'sqlite3.ProtocolType' in Python. However, I don't know how to
represent the Python value because Python default values are 'eval'd by
clinic *and* the 'sqlite3' module is not imported for the eval.
* The clinic version of 'sqlite3.Cursor.fetchmany' has an arguments string
of "|i". The first parameter defaults to
'((pysqlite_Cursor *)self)->arraysize' in C and 'self.arraysize' in
Python. I don't know how to express the Python initialization.
* 'sqlite3.complete' uses 'as module_complete' because 'sqlite3_complete'
is a public SQLite API function: http://www.sqlite.org/c3ref/complete.html.
I used 'as' on all the other functions in 'module.c' as well. Mainly
for local consistency.
* '_pysqlite_query_execute' required a little refactoring due to the fact
that it is a utility function used to implement 'sqlite3.Cursor.execute'
and 'sqlite3.Cursor.executemany'. 'PyArg_ParseTuple' was being called in
different way depending on a control parameter.
* I didn't convert 'sqlite3.Cursor.setinputsizes' and
'sqlite3.Cursor.setoutputsize' because they share a docstring and
simple no-op method def.
* I didn't convert 'sqlite.connect' because it would have required packaing
the arguments back up to pass to 'PyObject_Call'.
|
|||
| msg208186 - (view) | Author: Larry Hastings (larry) * (Python committer) | Date: 2014年01月15日 20:08 | |
In the past few days I added "cloning" functions, which lets you reuse the parameters and return converter from an existing function. That might help with Modules/_ctypes/_ctypes. |
|||
| msg208187 - (view) | Author: Larry Hastings (larry) * (Python committer) | Date: 2014年01月15日 20:10 | |
All the functions in curses_panel are convertable. The threeMETH_NOARGS functions simply get no arguments. And here's new_panel: new_panel window: object(subclass_of='&PyCursesWindow_Type') / |
|||
| msg208381 - (view) | Author: Larry Hastings (larry) * (Python committer) | Date: 2014年01月18日 01:58 | |
Meador: I'm going to change Argument Clinic so you can get the "args" and "kwargs" values passed in to the impl. That's issue #20291; I already added you to it "nosy" list. With that change in you'll be able to convert "sqlite3.connect". |
|||
| msg208414 - (view) | Author: Larry Hastings (larry) * (Python committer) | Date: 2014年01月18日 19:38 | |
Larry Hastings added the comment: > * As is probably expected, __init__ and __call__ procs > can't be converted. I should have a fix in for __init__ and __call__ later today. (Issue #20294.) For the record, you could convert them, you just had to wrap the parsing function to deal with the return type difference, and *args / **kwargs might be tricky too. > * sqlite3.Connection.{execute, executemany, executescript} don't use > PyArg_Parse*. In the next few days I'm going to add support for "*args" and "**kwargs", and then you'll be able to convert these functions. (Issue #20291.) Again, even if Argument Clinic doesn't do any parsing, it's still helpful to have it generate signatures. > * The clinic version of 'sqlite3.adapt' has an argument string of "O|OO". > The first optional parameter defaults to 'pysqlite_PrepareProtocolType' > in C and 'sqlite3.ProtocolType' in Python. However, I don't know how to > represent the Python value because Python default values are 'eval'd by > clinic *and* the 'sqlite3' module is not imported for the eval. You'll be able to do this soon: parameter: object(c_default='pysqlite_PrepareProtocolType') = ProtocolType This feature isn't checked in yet, I'm waiting for a review. It's part of #20226, which I guess you already noticed. > * The clinic version of 'sqlite3.Cursor.fetchmany' has an arguments string > of "|i". The first parameter defaults to > '((pysqlite_Cursor *)self)->arraysize' in C and 'self.arraysize' in > Python. I don't know how to express the Python initialization. You can't. How about you use a default of -1 and then: if (maxrows == -1) maxrows = self->arraysize > * I didn't convert 'sqlite3.Cursor.setinputsizes' and > 'sqlite3.Cursor.setoutputsize' because they share a docstring and > simple no-op method def. I'd prefer it if you converted them anyway. Converting them means they'll have signature information which is an unconditional good. > * I didn't convert 'sqlite.connect' because it would have required > packaing the arguments back up to pass to 'PyObject_Call'. Once I add the ability to pass in *args and **kwargs, you'll be able to convert sqlite.connect. I think I responded to all your other comments when I reviewed the patch. Thanks! |
|||
| msg224759 - (view) | Author: Larry Hastings (larry) * (Python committer) | Date: 2014年08月04日 20:13 | |
All the Derby patches should only go into trunk at this point. |
|||
| msg242607 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2015年05月05日 18:50 | |
issue20178-cyptes-01.patch is outdated due to changes in Argument Clinic and ctypes. Here is updated and extended patch. |
|||
| msg242649 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2015年05月06日 07:56 | |
For Modules/_curses_panel.c there is special issue, #20171, with the patch. issue20178-sqlite-01.patch is applied almost clearly, but due to changes to Argument Clinic it should be updated. Perhaps more functions can be converted (functions that don't use PyArg_Parse* are worth to be converted too). |
|||
| msg324851 - (view) | Author: Berker Peksag (berker.peksag) * (Python committer) | Date: 2018年09月08日 17:18 | |
I'm working on converting Modules/_sqlite/* to Argument Clinic. |
|||
| msg396373 - (view) | Author: Erlend E. Aasland (erlendaasland) * (Python triager) | Date: 2021年06月22日 22:57 | |
FYI, sqlite3 was converted to Argument Clinic in bpo-40956. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:57:56 | admin | set | github: 64377 |
| 2021年06月22日 22:57:35 | erlendaasland | set | messages: + msg396373 |
| 2020年06月07日 07:43:50 | erlendaasland | set | nosy:
+ erlendaasland |
| 2018年09月08日 17:18:35 | berker.peksag | set | nosy:
+ berker.peksag messages: + msg324851 versions: + Python 3.8, - Python 3.5 |
| 2015年05月06日 07:56:46 | serhiy.storchaka | set | messages: + msg242649 |
| 2015年05月05日 18:50:50 | serhiy.storchaka | set | files:
+ issue20178-cyptes-02.patch nosy: + serhiy.storchaka messages: + msg242607 stage: needs patch -> patch review |
| 2015年02月25日 15:27:48 | serhiy.storchaka | set | components: + Argument Clinic |
| 2014年08月04日 20:13:04 | larry | set | messages:
+ msg224759 versions: + Python 3.5, - Python 3.4 |
| 2014年01月18日 19:38:21 | larry | set | messages: + msg208414 |
| 2014年01月18日 01:58:28 | larry | set | messages: + msg208381 |
| 2014年01月15日 20:10:56 | larry | set | messages: + msg208187 |
| 2014年01月15日 20:08:51 | larry | set | messages: + msg208186 |
| 2014年01月15日 02:20:06 | meador.inge | set | files:
+ issue20178-sqlite-01.patch messages: + msg208130 |
| 2014年01月13日 03:32:45 | meador.inge | set | messages: + msg208001 |
| 2014年01月13日 03:28:40 | meador.inge | set | files:
+ issue20178-cyptes-01.patch keywords: + patch messages: + msg208000 |
| 2014年01月09日 15:07:58 | meador.inge | set | assignee: meador.inge messages: + msg207740 nosy: + meador.inge |
| 2014年01月08日 01:36:37 | r.david.murray | link | issue20187 dependencies |
| 2014年01月08日 00:14:38 | larry | create | |