Linux tsuru-no-tsurugi 5.15.0-186-generic #196-Ubuntu SMP Sat Jun 20 16:09:34 UTC 2026 x86_64
Apache/2.4.52 (Ubuntu)
Server IP : 192.168.0.18 & Your IP : 216.73.216.68
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
lib /
python3 /
dist-packages /
pygments /
lexers /
Delete
Unzip
Name
Size
Permission
Date
Action
__pycache__
[ DIR ]
drwxr-xr-x
2024-11-28 06:27
__init__.py
11
KB
-rw-r--r--
2022-01-06 20:12
_asy_builtins.py
26.65
KB
-rw-r--r--
2022-01-06 20:12
_cl_builtins.py
13.67
KB
-rw-r--r--
2022-01-06 20:12
_cocoa_builtins.py
102.72
KB
-rw-r--r--
2022-01-06 20:12
_csound_builtins.py
17.84
KB
-rw-r--r--
2022-01-06 20:12
_julia_builtins.py
11.6
KB
-rw-r--r--
2022-01-06 20:12
_lasso_builtins.py
131.36
KB
-rw-r--r--
2022-01-06 20:12
_lilypond_builtins.py
101.67
KB
-rw-r--r--
2022-01-06 20:12
_lua_builtins.py
8.08
KB
-rw-r--r--
2022-01-06 20:12
_mapping.py
62.33
KB
-rw-r--r--
2022-01-06 20:12
_mql_builtins.py
24.13
KB
-rw-r--r--
2022-01-06 20:12
_mysql_builtins.py
23.92
KB
-rw-r--r--
2022-01-06 20:12
_openedge_builtins.py
48.24
KB
-rw-r--r--
2022-01-06 20:12
_php_builtins.py
150.72
KB
-rw-r--r--
2022-01-06 20:12
_postgres_builtins.py
11.9
KB
-rw-r--r--
2022-01-06 20:12
_scilab_builtins.py
51.15
KB
-rw-r--r--
2022-01-06 20:12
_sourcemod_builtins.py
26.42
KB
-rw-r--r--
2022-01-06 20:12
_stan_builtins.py
10.21
KB
-rw-r--r--
2022-01-06 20:12
_stata_builtins.py
26.59
KB
-rw-r--r--
2022-01-06 20:12
_tsql_builtins.py
15.1
KB
-rw-r--r--
2022-01-06 20:12
_usd_builtins.py
1.62
KB
-rw-r--r--
2022-01-06 20:12
_vbscript_builtins.py
4.13
KB
-rw-r--r--
2022-01-06 20:12
_vim_builtins.py
55.73
KB
-rw-r--r--
2022-01-06 20:12
actionscript.py
11.31
KB
-rw-r--r--
2022-01-06 20:12
agile.py
876
B
-rw-r--r--
2022-01-06 20:12
algebra.py
7.59
KB
-rw-r--r--
2022-01-06 20:12
ambient.py
2.54
KB
-rw-r--r--
2022-01-06 20:12
amdgpu.py
1.57
KB
-rw-r--r--
2022-01-06 20:12
ampl.py
4.05
KB
-rw-r--r--
2022-01-06 20:12
apdlexer.py
26.04
KB
-rw-r--r--
2022-01-06 20:12
apl.py
3.32
KB
-rw-r--r--
2022-01-06 20:12
archetype.py
11.17
KB
-rw-r--r--
2022-01-06 20:12
arrow.py
3.47
KB
-rw-r--r--
2022-01-06 20:12
asc.py
1.54
KB
-rw-r--r--
2022-01-06 20:12
asm.py
40.19
KB
-rw-r--r--
2022-01-06 20:12
automation.py
19.34
KB
-rw-r--r--
2022-01-06 20:12
bare.py
2.97
KB
-rw-r--r--
2022-01-06 20:12
basic.py
27.22
KB
-rw-r--r--
2022-01-06 20:12
bdd.py
1.59
KB
-rw-r--r--
2022-01-06 20:12
bibtex.py
4.62
KB
-rw-r--r--
2022-01-06 20:12
boa.py
3.87
KB
-rw-r--r--
2022-01-06 20:12
business.py
27.4
KB
-rw-r--r--
2022-01-06 20:12
c_cpp.py
15.67
KB
-rw-r--r--
2022-01-06 20:12
c_like.py
28.45
KB
-rw-r--r--
2022-01-06 20:12
capnproto.py
2.17
KB
-rw-r--r--
2022-01-06 20:12
cddl.py
5.2
KB
-rw-r--r--
2022-01-06 20:12
chapel.py
4.89
KB
-rw-r--r--
2022-01-06 20:12
clean.py
6.24
KB
-rw-r--r--
2022-01-06 20:12
compiled.py
1.33
KB
-rw-r--r--
2022-01-06 20:12
configs.py
39.49
KB
-rw-r--r--
2022-01-06 20:12
console.py
4.05
KB
-rw-r--r--
2022-01-06 20:12
crystal.py
15.41
KB
-rw-r--r--
2022-01-06 20:12
csound.py
16.56
KB
-rw-r--r--
2022-01-06 20:12
css.py
31.15
KB
-rw-r--r--
2022-01-06 20:12
d.py
9.61
KB
-rw-r--r--
2022-01-06 20:12
dalvik.py
4.47
KB
-rw-r--r--
2022-01-06 20:12
data.py
23.96
KB
-rw-r--r--
2022-01-06 20:12
devicetree.py
3.92
KB
-rw-r--r--
2022-01-06 20:12
diff.py
5.04
KB
-rw-r--r--
2022-01-06 20:12
dotnet.py
28.47
KB
-rw-r--r--
2022-01-06 20:12
dsls.py
35.45
KB
-rw-r--r--
2022-01-06 20:12
dylan.py
10.16
KB
-rw-r--r--
2022-01-06 20:12
ecl.py
6.09
KB
-rw-r--r--
2022-01-06 20:12
eiffel.py
2.6
KB
-rw-r--r--
2022-01-06 20:12
elm.py
3.08
KB
-rw-r--r--
2022-01-06 20:12
elpi.py
5.83
KB
-rw-r--r--
2022-01-06 20:12
email.py
4.97
KB
-rw-r--r--
2022-01-06 20:12
erlang.py
18.76
KB
-rw-r--r--
2022-01-06 20:12
esoteric.py
10.17
KB
-rw-r--r--
2022-01-06 20:12
ezhil.py
3.27
KB
-rw-r--r--
2022-01-06 20:12
factor.py
19.12
KB
-rw-r--r--
2022-01-06 20:12
fantom.py
9.96
KB
-rw-r--r--
2022-01-06 20:12
felix.py
9.41
KB
-rw-r--r--
2022-01-06 20:12
floscript.py
2.6
KB
-rw-r--r--
2022-01-06 20:12
forth.py
6.99
KB
-rw-r--r--
2022-01-06 20:12
fortran.py
10.07
KB
-rw-r--r--
2022-01-06 20:12
foxpro.py
25.6
KB
-rw-r--r--
2022-01-06 20:12
freefem.py
26.43
KB
-rw-r--r--
2022-01-06 20:12
functional.py
674
B
-rw-r--r--
2022-01-06 20:12
futhark.py
3.64
KB
-rw-r--r--
2022-01-06 20:12
gcodelexer.py
826
B
-rw-r--r--
2022-01-06 20:12
gdscript.py
10.94
KB
-rw-r--r--
2022-01-06 20:12
go.py
3.65
KB
-rw-r--r--
2022-01-06 20:12
grammar_notation.py
7.83
KB
-rw-r--r--
2022-01-06 20:12
graph.py
3.77
KB
-rw-r--r--
2022-01-06 20:12
graphics.py
38.15
KB
-rw-r--r--
2022-01-06 20:12
graphviz.py
1.83
KB
-rw-r--r--
2022-01-06 20:12
gsql.py
3.68
KB
-rw-r--r--
2022-01-06 20:12
haskell.py
31.98
KB
-rw-r--r--
2022-01-06 20:12
haxe.py
30.21
KB
-rw-r--r--
2022-01-06 20:12
hdl.py
21.99
KB
-rw-r--r--
2022-01-06 20:12
hexdump.py
3.52
KB
-rw-r--r--
2022-01-06 20:12
html.py
19.34
KB
-rw-r--r--
2022-01-06 20:12
idl.py
14.87
KB
-rw-r--r--
2022-01-06 20:12
igor.py
29.87
KB
-rw-r--r--
2022-01-06 20:12
inferno.py
3.02
KB
-rw-r--r--
2022-01-06 20:12
installers.py
12.8
KB
-rw-r--r--
2022-01-06 20:12
int_fiction.py
55.32
KB
-rw-r--r--
2022-01-06 20:12
iolang.py
1.84
KB
-rw-r--r--
2022-01-06 20:12
j.py
4.4
KB
-rw-r--r--
2022-01-06 20:12
javascript.py
58.67
KB
-rw-r--r--
2022-01-06 20:12
jslt.py
3.61
KB
-rw-r--r--
2022-01-06 20:12
julia.py
11
KB
-rw-r--r--
2022-01-06 20:12
jvm.py
70.05
KB
-rw-r--r--
2022-01-06 20:12
kuin.py
10.5
KB
-rw-r--r--
2022-01-06 20:12
lilypond.py
8.26
KB
-rw-r--r--
2022-01-06 20:12
lisp.py
139.4
KB
-rw-r--r--
2022-01-06 20:12
make.py
7.26
KB
-rw-r--r--
2022-01-06 20:12
markup.py
26.11
KB
-rw-r--r--
2022-01-06 20:12
math.py
676
B
-rw-r--r--
2022-01-06 20:12
matlab.py
129.3
KB
-rw-r--r--
2022-01-06 20:12
maxima.py
2.65
KB
-rw-r--r--
2022-01-06 20:12
meson.py
4.33
KB
-rw-r--r--
2022-01-06 20:12
mime.py
7.36
KB
-rw-r--r--
2022-01-06 20:12
ml.py
34.47
KB
-rw-r--r--
2022-01-06 20:12
modeling.py
13.07
KB
-rw-r--r--
2022-01-06 20:12
modula2.py
51.82
KB
-rw-r--r--
2022-01-06 20:12
monte.py
6.14
KB
-rw-r--r--
2022-01-06 20:12
mosel.py
8.97
KB
-rw-r--r--
2022-01-06 20:12
ncl.py
62.46
KB
-rw-r--r--
2022-01-06 20:12
nimrod.py
5
KB
-rw-r--r--
2022-01-06 20:12
nit.py
2.66
KB
-rw-r--r--
2022-01-06 20:12
nix.py
3.91
KB
-rw-r--r--
2022-01-06 20:12
oberon.py
4.11
KB
-rw-r--r--
2022-01-06 20:12
objective.py
22.26
KB
-rw-r--r--
2022-01-06 20:12
ooc.py
2.91
KB
-rw-r--r--
2022-01-06 20:12
other.py
1.7
KB
-rw-r--r--
2022-01-06 20:12
parasail.py
2.65
KB
-rw-r--r--
2022-01-06 20:12
parsers.py
25.27
KB
-rw-r--r--
2022-01-06 20:12
pascal.py
31.84
KB
-rw-r--r--
2022-01-06 20:12
pawn.py
7.96
KB
-rw-r--r--
2022-01-06 20:12
perl.py
38.16
KB
-rw-r--r--
2022-01-06 20:12
php.py
12.25
KB
-rw-r--r--
2022-01-06 20:12
pointless.py
1.92
KB
-rw-r--r--
2022-01-06 20:12
pony.py
3.17
KB
-rw-r--r--
2022-01-06 20:12
praat.py
11.99
KB
-rw-r--r--
2022-01-06 20:12
procfile.py
1.19
KB
-rw-r--r--
2022-01-06 20:12
prolog.py
12.09
KB
-rw-r--r--
2022-01-06 20:12
promql.py
4.63
KB
-rw-r--r--
2022-01-06 20:12
python.py
51.49
KB
-rw-r--r--
2022-01-06 20:12
qvt.py
5.93
KB
-rw-r--r--
2022-01-06 20:12
r.py
6.02
KB
-rw-r--r--
2022-01-06 20:12
rdf.py
15.42
KB
-rw-r--r--
2022-01-06 20:12
rebol.py
18.16
KB
-rw-r--r--
2022-01-06 20:12
resource.py
2.83
KB
-rw-r--r--
2022-01-06 20:12
ride.py
4.93
KB
-rw-r--r--
2022-01-06 20:12
rita.py
1.16
KB
-rw-r--r--
2022-01-06 20:12
rnc.py
1.92
KB
-rw-r--r--
2022-01-06 20:12
roboconf.py
2
KB
-rw-r--r--
2022-01-06 20:12
robotframework.py
17.99
KB
-rw-r--r--
2022-01-06 20:12
ruby.py
22.14
KB
-rw-r--r--
2022-01-06 20:12
rust.py
7.99
KB
-rw-r--r--
2022-01-06 20:12
sas.py
9.2
KB
-rw-r--r--
2022-01-06 20:12
savi.py
4.24
KB
-rw-r--r--
2022-01-06 20:12
scdoc.py
2.19
KB
-rw-r--r--
2022-01-06 20:12
scripting.py
68.41
KB
-rw-r--r--
2022-01-06 20:12
sgf.py
2
KB
-rw-r--r--
2022-01-06 20:12
shell.py
35.06
KB
-rw-r--r--
2022-01-06 20:12
sieve.py
2.24
KB
-rw-r--r--
2022-01-06 20:12
slash.py
8.28
KB
-rw-r--r--
2022-01-06 20:12
smalltalk.py
7.02
KB
-rw-r--r--
2022-01-06 20:12
smithy.py
2.6
KB
-rw-r--r--
2024-11-22 22:44
smv.py
2.71
KB
-rw-r--r--
2022-01-06 20:12
snobol.py
2.67
KB
-rw-r--r--
2022-01-06 20:12
solidity.py
3.1
KB
-rw-r--r--
2022-01-06 20:12
sophia.py
3.29
KB
-rw-r--r--
2022-01-06 20:12
special.py
3.37
KB
-rw-r--r--
2022-01-06 20:12
spice.py
2.06
KB
-rw-r--r--
2022-01-06 20:12
sql.py
33.42
KB
-rw-r--r--
2022-01-06 20:12
srcinfo.py
1.63
KB
-rw-r--r--
2022-01-06 20:12
stata.py
6.26
KB
-rw-r--r--
2022-01-06 20:12
supercollider.py
3.61
KB
-rw-r--r--
2022-01-06 20:12
tcl.py
5.27
KB
-rw-r--r--
2022-01-06 20:12
teal.py
3.41
KB
-rw-r--r--
2022-01-06 20:12
templates.py
69.96
KB
-rw-r--r--
2022-01-06 20:12
teraterm.py
9.65
KB
-rw-r--r--
2022-01-06 20:12
testing.py
10.52
KB
-rw-r--r--
2022-01-06 20:12
text.py
1006
B
-rw-r--r--
2022-01-06 20:12
textedit.py
7.44
KB
-rw-r--r--
2022-01-06 20:12
textfmts.py
14.8
KB
-rw-r--r--
2022-01-06 20:12
theorem.py
19.15
KB
-rw-r--r--
2022-01-06 20:12
thingsdb.py
4.13
KB
-rw-r--r--
2022-01-06 20:12
tnt.py
10.27
KB
-rw-r--r--
2022-01-06 20:12
trafficscript.py
1.48
KB
-rw-r--r--
2022-01-06 20:12
typoscript.py
8.01
KB
-rw-r--r--
2022-01-06 20:12
unicon.py
18.08
KB
-rw-r--r--
2022-01-06 20:12
urbi.py
5.9
KB
-rw-r--r--
2022-01-06 20:12
usd.py
3.37
KB
-rw-r--r--
2022-01-06 20:12
varnish.py
7.07
KB
-rw-r--r--
2022-01-06 20:12
verification.py
3.82
KB
-rw-r--r--
2022-01-06 20:12
web.py
894
B
-rw-r--r--
2022-01-06 20:12
webassembly.py
5.56
KB
-rw-r--r--
2022-01-06 20:12
webidl.py
10.23
KB
-rw-r--r--
2022-01-06 20:12
webmisc.py
39.07
KB
-rw-r--r--
2022-01-06 20:12
whiley.py
3.89
KB
-rw-r--r--
2022-01-06 20:12
x10.py
1.84
KB
-rw-r--r--
2022-01-06 20:12
xorg.py
865
B
-rw-r--r--
2022-01-06 20:12
yang.py
4.42
KB
-rw-r--r--
2022-01-06 20:12
zig.py
3.85
KB
-rw-r--r--
2022-01-06 20:12
Save
Rename
""" pygments.lexers._postgres_builtins ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Self-updating data files for PostgreSQL lexer. :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """ # Autogenerated: please edit them if you like wasting your time. KEYWORDS = ( 'ABORT', 'ABSOLUTE', 'ACCESS', 'ACTION', 'ADD', 'ADMIN', 'AFTER', 'AGGREGATE', 'ALL', 'ALSO', 'ALTER', 'ALWAYS', 'ANALYSE', 'ANALYZE', 'AND', 'ANY', 'ARRAY', 'AS', 'ASC', 'ASSERTION', 'ASSIGNMENT', 'ASYMMETRIC', 'AT', 'ATTACH', 'ATTRIBUTE', 'AUTHORIZATION', 'BACKWARD', 'BEFORE', 'BEGIN', 'BETWEEN', 'BIGINT', 'BINARY', 'BIT', 'BOOLEAN', 'BOTH', 'BY', 'CACHE', 'CALL', 'CALLED', 'CASCADE', 'CASCADED', 'CASE', 'CAST', 'CATALOG', 'CHAIN', 'CHAR', 'CHARACTER', 'CHARACTERISTICS', 'CHECK', 'CHECKPOINT', 'CLASS', 'CLOSE', 'CLUSTER', 'COALESCE', 'COLLATE', 'COLLATION', 'COLUMN', 'COLUMNS', 'COMMENT', 'COMMENTS', 'COMMIT', 'COMMITTED', 'CONCURRENTLY', 'CONFIGURATION', 'CONFLICT', 'CONNECTION', 'CONSTRAINT', 'CONSTRAINTS', 'CONTENT', 'CONTINUE', 'CONVERSION', 'COPY', 'COST', 'CREATE', 'CROSS', 'CSV', 'CUBE', 'CURRENT', 'CURRENT_CATALOG', 'CURRENT_DATE', 'CURRENT_ROLE', 'CURRENT_SCHEMA', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'CURRENT_USER', 'CURSOR', 'CYCLE', 'DATA', 'DATABASE', 'DAY', 'DEALLOCATE', 'DEC', 'DECIMAL', 'DECLARE', 'DEFAULT', 'DEFAULTS', 'DEFERRABLE', 'DEFERRED', 'DEFINER', 'DELETE', 'DELIMITER', 'DELIMITERS', 'DEPENDS', 'DESC', 'DETACH', 'DICTIONARY', 'DISABLE', 'DISCARD', 'DISTINCT', 'DO', 'DOCUMENT', 'DOMAIN', 'DOUBLE', 'DROP', 'EACH', 'ELSE', 'ENABLE', 'ENCODING', 'ENCRYPTED', 'END', 'ENUM', 'ESCAPE', 'EVENT', 'EXCEPT', 'EXCLUDE', 'EXCLUDING', 'EXCLUSIVE', 'EXECUTE', 'EXISTS', 'EXPLAIN', 'EXPRESSION', 'EXTENSION', 'EXTERNAL', 'EXTRACT', 'FALSE', 'FAMILY', 'FETCH', 'FILTER', 'FIRST', 'FLOAT', 'FOLLOWING', 'FOR', 'FORCE', 'FOREIGN', 'FORWARD', 'FREEZE', 'FROM', 'FULL', 'FUNCTION', 'FUNCTIONS', 'GENERATED', 'GLOBAL', 'GRANT', 'GRANTED', 'GREATEST', 'GROUP', 'GROUPING', 'GROUPS', 'HANDLER', 'HAVING', 'HEADER', 'HOLD', 'HOUR', 'IDENTITY', 'IF', 'ILIKE', 'IMMEDIATE', 'IMMUTABLE', 'IMPLICIT', 'IMPORT', 'IN', 'INCLUDE', 'INCLUDING', 'INCREMENT', 'INDEX', 'INDEXES', 'INHERIT', 'INHERITS', 'INITIALLY', 'INLINE', 'INNER', 'INOUT', 'INPUT', 'INSENSITIVE', 'INSERT', 'INSTEAD', 'INT', 'INTEGER', 'INTERSECT', 'INTERVAL', 'INTO', 'INVOKER', 'IS', 'ISNULL', 'ISOLATION', 'JOIN', 'KEY', 'LABEL', 'LANGUAGE', 'LARGE', 'LAST', 'LATERAL', 'LEADING', 'LEAKPROOF', 'LEAST', 'LEFT', 'LEVEL', 'LIKE', 'LIMIT', 'LISTEN', 'LOAD', 'LOCAL', 'LOCALTIME', 'LOCALTIMESTAMP', 'LOCATION', 'LOCK', 'LOCKED', 'LOGGED', 'MAPPING', 'MATCH', 'MATERIALIZED', 'MAXVALUE', 'METHOD', 'MINUTE', 'MINVALUE', 'MODE', 'MONTH', 'MOVE', 'NAME', 'NAMES', 'NATIONAL', 'NATURAL', 'NCHAR', 'NEW', 'NEXT', 'NFC', 'NFD', 'NFKC', 'NFKD', 'NO', 'NONE', 'NORMALIZE', 'NORMALIZED', 'NOT', 'NOTHING', 'NOTIFY', 'NOTNULL', 'NOWAIT', 'NULL', 'NULLIF', 'NULLS', 'NUMERIC', 'OBJECT', 'OF', 'OFF', 'OFFSET', 'OIDS', 'OLD', 'ON', 'ONLY', 'OPERATOR', 'OPTION', 'OPTIONS', 'OR', 'ORDER', 'ORDINALITY', 'OTHERS', 'OUT', 'OUTER', 'OVER', 'OVERLAPS', 'OVERLAY', 'OVERRIDING', 'OWNED', 'OWNER', 'PARALLEL', 'PARSER', 'PARTIAL', 'PARTITION', 'PASSING', 'PASSWORD', 'PLACING', 'PLANS', 'POLICY', 'POSITION', 'PRECEDING', 'PRECISION', 'PREPARE', 'PREPARED', 'PRESERVE', 'PRIMARY', 'PRIOR', 'PRIVILEGES', 'PROCEDURAL', 'PROCEDURE', 'PROCEDURES', 'PROGRAM', 'PUBLICATION', 'QUOTE', 'RANGE', 'READ', 'REAL', 'REASSIGN', 'RECHECK', 'RECURSIVE', 'REF', 'REFERENCES', 'REFERENCING', 'REFRESH', 'REINDEX', 'RELATIVE', 'RELEASE', 'RENAME', 'REPEATABLE', 'REPLACE', 'REPLICA', 'RESET', 'RESTART', 'RESTRICT', 'RETURNING', 'RETURNS', 'REVOKE', 'RIGHT', 'ROLE', 'ROLLBACK', 'ROLLUP', 'ROUTINE', 'ROUTINES', 'ROW', 'ROWS', 'RULE', 'SAVEPOINT', 'SCHEMA', 'SCHEMAS', 'SCROLL', 'SEARCH', 'SECOND', 'SECURITY', 'SELECT', 'SEQUENCE', 'SEQUENCES', 'SERIALIZABLE', 'SERVER', 'SESSION', 'SESSION_USER', 'SET', 'SETOF', 'SETS', 'SHARE', 'SHOW', 'SIMILAR', 'SIMPLE', 'SKIP', 'SMALLINT', 'SNAPSHOT', 'SOME', 'SQL', 'STABLE', 'STANDALONE', 'START', 'STATEMENT', 'STATISTICS', 'STDIN', 'STDOUT', 'STORAGE', 'STORED', 'STRICT', 'STRIP', 'SUBSCRIPTION', 'SUBSTRING', 'SUPPORT', 'SYMMETRIC', 'SYSID', 'SYSTEM', 'TABLE', 'TABLES', 'TABLESAMPLE', 'TABLESPACE', 'TEMP', 'TEMPLATE', 'TEMPORARY', 'TEXT', 'THEN', 'TIES', 'TIME', 'TIMESTAMP', 'TO', 'TRAILING', 'TRANSACTION', 'TRANSFORM', 'TREAT', 'TRIGGER', 'TRIM', 'TRUE', 'TRUNCATE', 'TRUSTED', 'TYPE', 'TYPES', 'UESCAPE', 'UNBOUNDED', 'UNCOMMITTED', 'UNENCRYPTED', 'UNION', 'UNIQUE', 'UNKNOWN', 'UNLISTEN', 'UNLOGGED', 'UNTIL', 'UPDATE', 'USER', 'USING', 'VACUUM', 'VALID', 'VALIDATE', 'VALIDATOR', 'VALUE', 'VALUES', 'VARCHAR', 'VARIADIC', 'VARYING', 'VERBOSE', 'VERSION', 'VIEW', 'VIEWS', 'VOLATILE', 'WHEN', 'WHERE', 'WHITESPACE', 'WINDOW', 'WITH', 'WITHIN', 'WITHOUT', 'WORK', 'WRAPPER', 'WRITE', 'XML', 'XMLATTRIBUTES', 'XMLCONCAT', 'XMLELEMENT', 'XMLEXISTS', 'XMLFOREST', 'XMLNAMESPACES', 'XMLPARSE', 'XMLPI', 'XMLROOT', 'XMLSERIALIZE', 'XMLTABLE', 'YEAR', 'YES', 'ZONE', ) DATATYPES = ( 'bigint', 'bigserial', 'bit', 'bit varying', 'bool', 'boolean', 'box', 'bytea', 'char', 'character', 'character varying', 'cidr', 'circle', 'date', 'decimal', 'double precision', 'float4', 'float8', 'inet', 'int', 'int2', 'int4', 'int8', 'integer', 'interval', 'json', 'jsonb', 'line', 'lseg', 'macaddr', 'macaddr8', 'money', 'numeric', 'path', 'pg_lsn', 'pg_snapshot', 'point', 'polygon', 'real', 'serial', 'serial2', 'serial4', 'serial8', 'smallint', 'smallserial', 'text', 'time', 'timestamp', 'timestamptz', 'timetz', 'tsquery', 'tsvector', 'txid_snapshot', 'uuid', 'varbit', 'varchar', 'with time zone', 'without time zone', 'xml', ) PSEUDO_TYPES = ( 'any', 'anyarray', 'anycompatible', 'anycompatiblearray', 'anycompatiblenonarray', 'anycompatiblerange', 'anyelement', 'anyenum', 'anynonarray', 'anyrange', 'cstring', 'event_trigger', 'fdw_handler', 'index_am_handler', 'internal', 'language_handler', 'pg_ddl_command', 'record', 'table_am_handler', 'trigger', 'tsm_handler', 'unknown', 'void', ) # Remove 'trigger' from types PSEUDO_TYPES = tuple(sorted(set(PSEUDO_TYPES) - set(map(str.lower, KEYWORDS)))) PLPGSQL_KEYWORDS = ( 'ALIAS', 'CONSTANT', 'DIAGNOSTICS', 'ELSIF', 'EXCEPTION', 'EXIT', 'FOREACH', 'GET', 'LOOP', 'NOTICE', 'OPEN', 'PERFORM', 'QUERY', 'RAISE', 'RETURN', 'REVERSE', 'SQLSTATE', 'WHILE', ) if __name__ == '__main__': # pragma: no cover import re try: from urllib import urlopen except ImportError: from urllib.request import urlopen from pygments.util import format_lines # One man's constant is another man's variable. SOURCE_URL = 'https://github.com/postgres/postgres/raw/master' KEYWORDS_URL = SOURCE_URL + '/src/include/parser/kwlist.h' DATATYPES_URL = SOURCE_URL + '/doc/src/sgml/datatype.sgml' def update_myself(): content = urlopen(DATATYPES_URL).read().decode('utf-8', errors='ignore') data_file = list(content.splitlines()) datatypes = parse_datatypes(data_file) pseudos = parse_pseudos(data_file) content = urlopen(KEYWORDS_URL).read().decode('utf-8', errors='ignore') keywords = parse_keywords(content) update_consts(__file__, 'DATATYPES', datatypes) update_consts(__file__, 'PSEUDO_TYPES', pseudos) update_consts(__file__, 'KEYWORDS', keywords) def parse_keywords(f): kw = [] for m in re.finditer(r'PG_KEYWORD\("(.+?)"', f): kw.append(m.group(1).upper()) if not kw: raise ValueError('no keyword found') kw.sort() return kw def parse_datatypes(f): dt = set() for line in f: if '<sect1' in line: break if '<entry><type>' not in line: continue # Parse a string such as # time [ (<replaceable>p</replaceable>) ] [ without time zone ] # into types "time" and "without time zone" # remove all the tags line = re.sub("<replaceable>[^<]+</replaceable>", "", line) line = re.sub("<[^>]+>", "", line) # Drop the parts containing braces for tmp in [t for tmp in line.split('[') for t in tmp.split(']') if "(" not in t]: for t in tmp.split(','): t = t.strip() if not t: continue dt.add(" ".join(t.split())) dt = list(dt) dt.sort() return dt def parse_pseudos(f): dt = [] re_start = re.compile(r'\s*<table id="datatype-pseudotypes-table">') re_entry = re.compile(r'\s*<entry><type>(.+?)</type></entry>') re_end = re.compile(r'\s*</table>') f = iter(f) for line in f: if re_start.match(line) is not None: break else: raise ValueError('pseudo datatypes table not found') for line in f: m = re_entry.match(line) if m is not None: dt.append(m.group(1)) if re_end.match(line) is not None: break else: raise ValueError('end of pseudo datatypes table not found') if not dt: raise ValueError('pseudo datatypes not found') dt.sort() return dt def update_consts(filename, constname, content): with open(filename) as f: data = f.read() # Line to start/end inserting re_match = re.compile(r'^%s\s*=\s*\($.*?^\s*\)$' % constname, re.M | re.S) m = re_match.search(data) if not m: raise ValueError('Could not find existing definition for %s' % (constname,)) new_block = format_lines(constname, content) data = data[:m.start()] + new_block + data[m.end():] with open(filename, 'w', newline='\n') as f: f.write(data) update_myself()