Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit231b9e7

Browse files
committed
Move KEYWORDS to C
1 parentc508069 commit231b9e7

File tree

3 files changed

+55
-30
lines changed

3 files changed

+55
-30
lines changed

‎Lib/sqlite3/_completer.py‎

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,13 @@
1+
from_sqlite3importSQLITE_KEYWORDS
12
fromcontextlibimportcontextmanager
23

3-
4-
KEYWORDS= ("ABORT","ACTION","ADD","AFTER","ALL","ALTER","ALWAYS",
5-
"ANALYZE","AND","AS","ASC","ATTACH","AUTOINCREMENT",
6-
"BEFORE","BEGIN","BETWEEN","BY","CASCADE","CASE","CAST",
7-
"CHECK","COLLATE","COLUMN","COMMIT","CONFLICT",
8-
"CONSTRAINT","CREATE","CROSS","CURRENT","CURRENT_DATE",
9-
"CURRENT_TIME","CURRENT_TIMESTAMP","DATABASE","DEFAULT",
10-
"DEFERRABLE","DEFERRED","DELETE","DESC","DETACH",
11-
"DISTINCT","DO","DROP","EACH","ELSE","END","ESCAPE",
12-
"EXCEPT","EXCLUDE","EXCLUSIVE","EXISTS","EXPLAIN","FAIL",
13-
"FILTER","FIRST","FOLLOWING","FOR","FOREIGN","FROM",
14-
"FULL","GENERATED","GLOB","GROUP","GROUPS","HAVING","IF",
15-
"IGNORE","IMMEDIATE","IN","INDEX","INDEXED","INITIALLY",
16-
"INNER","INSERT","INSTEAD","INTERSECT","INTO","IS",
17-
"ISNULL","JOIN","KEY","LAST","LEFT","LIKE","LIMIT",
18-
"MATCH","MATERIALIZED","NATURAL","NO","NOT","NOTHING",
19-
"NOTNULL","NULL","NULLS","OF","OFFSET","ON","OR",
20-
"ORDER","OTHERS","OUTER","OVER","PARTITION","PLAN",
21-
"PRAGMA","PRECEDING","PRIMARY","QUERY","RAISE","RANGE",
22-
"RECURSIVE","REFERENCES","REGEXP","REINDEX","RELEASE",
23-
"RENAME","REPLACE","RESTRICT","RETURNING","RIGHT",
24-
"ROLLBACK","ROW","ROWS","SAVEPOINT","SELECT","SET",
25-
"TABLE","TEMP","TEMPORARY","THEN","TIES","TO",
26-
"TRANSACTION","TRIGGER","UNBOUNDED","UNION","UNIQUE",
27-
"UPDATE","USING","VACUUM","VALUES","VIEW","VIRTUAL",
28-
"WHEN","WHERE","WINDOW","WITH","WITHOUT")
29-
304
_completion_matches= []
315

6+
327
def_complete(text,state):
338
global_completion_matches
349
ifstate==0:
35-
_completion_matches= [c+" "forcinKEYWORDSifc.startswith(text.upper())]
10+
_completion_matches= [c+" "forcinSQLITE_KEYWORDSifc.startswith(text.upper())]
3611
try:
3712
return_completion_matches[state]
3813
exceptIndexError:

‎Lib/test/test_sqlite3/test_cli.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
importtextwrap
44
importunittest
55

6+
from_sqlite3importSQLITE_KEYWORDS
67
fromsqlite3.__main__importmainascli
7-
fromsqlite3._completerimportKEYWORDS
88
fromtest.support.import_helperimportimport_module
99
fromtest.support.os_helperimportTESTFN,unlink
1010
fromtest.support.pty_helperimportrun_pty
@@ -241,7 +241,7 @@ def test_nothing_to_complete(self):
241241
""")
242242
input=b"zzzz\t;\n.quit\n"
243243
output=run_pty(script,input)
244-
forkeywordinKEYWORDS:
244+
forkeywordinSQLITE_KEYWORDS:
245245
self.assertNotRegex(output,rf"\b{keyword}\b".encode("utf-8"))
246246

247247
deftest_completion_order(self):

‎Modules/_sqlite/module.c‎

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,51 @@ pysqlite_error_name(int rc)
404404
returnNULL;
405405
}
406406

407+
staticint
408+
add_sequence_constants(PyObject*module) {
409+
PyObject*kwd;
410+
constchar*_keywords[]= {
411+
"ABORT","ACTION","ADD","AFTER","ALL","ALTER","ALWAYS","ANALYZE",
412+
"AND","AS","ASC","ATTACH","AUTOINCREMENT","BEFORE","BEGIN",
413+
"BETWEEN","BY","CASCADE","CASE","CAST","CHECK","COLLATE","COLUMN",
414+
"COMMIT","CONFLICT","CONSTRAINT","CREATE","CROSS","CURRENT",
415+
"CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","DATABASE","DEFAULT",
416+
"DEFERRABLE","DEFERRED","DELETE","DESC","DETACH","DISTINCT","DO",
417+
"DROP","EACH","ELSE","END","ESCAPE","EXCEPT","EXCLUDE","EXCLUSIVE",
418+
"EXISTS","EXPLAIN","FAIL","FILTER","FIRST","FOLLOWING","FOR",
419+
"FOREIGN","FROM","FULL","GENERATED","GLOB","GROUP","GROUPS",
420+
"HAVING","IF","IGNORE","IMMEDIATE","IN","INDEX","INDEXED",
421+
"INITIALLY","INNER","INSERT","INSTEAD","INTERSECT","INTO","IS",
422+
"ISNULL","JOIN","KEY","LAST","LEFT","LIKE","LIMIT","MATCH",
423+
"MATERIALIZED","NATURAL","NO","NOT","NOTHING","NOTNULL","NULL",
424+
"NULLS","OF","OFFSET","ON","OR","ORDER","OTHERS","OUTER","OVER",
425+
"PARTITION","PLAN","PRAGMA","PRECEDING","PRIMARY","QUERY","RAISE",
426+
"RANGE","RECURSIVE","REFERENCES","REGEXP","REINDEX","RELEASE",
427+
"RENAME","REPLACE","RESTRICT","RETURNING","RIGHT","ROLLBACK","ROW",
428+
"ROWS","SAVEPOINT","SELECT","SET","TABLE","TEMP","TEMPORARY","THEN",
429+
"TIES","TO","TRANSACTION","TRIGGER","UNBOUNDED","UNION","UNIQUE",
430+
"UPDATE","USING","VACUUM","VALUES","VIEW","VIRTUAL","WHEN","WHERE",
431+
"WINDOW","WITH","WITHOUT",NULL
432+
};
433+
PyObject*keywords=PyTuple_New(147);
434+
if (keywords==NULL) {
435+
return-1;
436+
}
437+
for (inti=0;_keywords[i]!=NULL;i++) {
438+
kwd=PyUnicode_FromString(_keywords[i]);
439+
if (PyTuple_SetItem(keywords,i,kwd)!=0) {
440+
Py_DECREF(kwd);
441+
Py_DECREF(keywords);
442+
return-1;
443+
}
444+
}
445+
if (PyModule_Add(module,"SQLITE_KEYWORDS",keywords)<0) {
446+
Py_DECREF(keywords);
447+
return-1;
448+
}
449+
return0;
450+
}
451+
407452
staticint
408453
add_integer_constants(PyObject*module) {
409454
#defineADD_INT(ival) \
@@ -702,6 +747,11 @@ module_exec(PyObject *module)
702747
gotoerror;
703748
}
704749

750+
/* Set sequence constants */
751+
if (add_sequence_constants(module)<0) {
752+
gotoerror;
753+
}
754+
705755
if (PyModule_AddStringConstant(module,"sqlite_version",sqlite3_libversion())) {
706756
gotoerror;
707757
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp