提交 de4c7a2e 编写于 作者: M Martin Aeschlimann

Update pyhon grammar, fixes #1467

上级 3b1bb041
......@@ -2,17 +2,10 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>bundleUUID</key>
<string>E3BADC20-6B0E-11D9-9DC9-000D93589AF6</string>
<key>comment</key>
<string>
todo:
list comprehension / generator comprehension scope.
</string>
<key>fileTypes</key>
<array>
<string>py</string>
<string>py3</string>
<string>rpy</string>
<string>pyw</string>
<string>cpy</string>
......@@ -32,77 +25,74 @@
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(^[ \t]+)?(?=#)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>match</key>
<string>(?&lt;!^from\s|^import\s)(\.{3})</string>
<key>name</key>
<string>punctuation.whitespace.comment.leading.python</string>
</dict>
<string>support.type.ellipsis.python</string>
</dict>
<key>end</key>
<string>(?!\G)</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>#</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>comment</key>
<string>Match identifiers in ALL_CAPS as constants, except when followed by `.`, `(`, `'`, or `"`.</string>
<key>match</key>
<string>\b([[:upper:]_][[:upper:][:digit:]_]*)\b(?![\.\(\'\"])</string>
<key>name</key>
<string>punctuation.definition.comment.python</string>
<string>constant.other.allcaps.python</string>
</dict>
</dict>
<key>end</key>
<string>\n</string>
<dict>
<key>match</key>
<string>\b(?i:(0x\h+)L)</string>
<key>name</key>
<string>comment.line.number-sign.python</string>
<string>constant.numeric.integer.hexadecimal.long.python</string>
</dict>
</array>
<dict>
<key>match</key>
<string>\b(?i:(0x\h+))</string>
<key>name</key>
<string>constant.numeric.integer.hexadecimal.python</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(0x\h*)L)</string>
<string>\b(?i:(0b[01]+)L)</string>
<key>name</key>
<string>constant.numeric.integer.long.hexadecimal.python</string>
<string>constant.numeric.integer.binary.long.python</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(0x\h*))</string>
<string>\b(?i:(0b[01]+))</string>
<key>name</key>
<string>constant.numeric.integer.hexadecimal.python</string>
<string>constant.numeric.integer.binary.python</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(0[0-7]+)L)</string>
<string>\b(?i:(0[o]?[0-7]+)L)</string>
<key>name</key>
<string>constant.numeric.integer.long.octal.python</string>
<string>constant.numeric.integer.octal.long.python</string>
</dict>
<dict>
<key>match</key>
<string>\b(0[0-7]+)</string>
<string>\b(?i:(0[o]?[0-7]+))</string>
<key>name</key>
<string>constant.numeric.integer.octal.python</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(((\d+(\.(?=[^a-zA-Z_])\d*)?|(?&lt;=[^0-9a-zA-Z_])\.\d+)(e[\-\+]?\d+)?))J)</string>
<string>\b(?i:(((\d+(\.(?=[^[:alpha:]_])\d*)?|(?&lt;=[^[:alnum:]_])\.\d+)(e[\-\+]?\d+)?))J)</string>
<key>name</key>
<string>constant.numeric.complex.python</string>
</dict>
<dict>
<key>match</key>
<string>\b(?i:(\d+\.\d*(e[\-\+]?\d+)?))(?=[^a-zA-Z_])</string>
<string>\b(?i:(\d+\.\d*(e[\-\+]?\d+)?))(?=[^[:alpha:]_])</string>
<key>name</key>
<string>constant.numeric.float.python</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;=[^0-9a-zA-Z_])(?i:(\.\d+(e[\-\+]?\d+)?))</string>
<string>(?&lt;=[^[:alnum:]_])(?i:(\.\d+(e[\-\+]?\d+)?))</string>
<key>name</key>
<string>constant.numeric.float.python</string>
</dict>
......@@ -116,7 +106,7 @@
<key>match</key>
<string>\b(?i:([1-9]+[0-9]*|0)L)</string>
<key>name</key>
<string>constant.numeric.integer.long.decimal.python</string>
<string>constant.numeric.integer.decimal.long.python</string>
</dict>
<dict>
<key>match</key>
......@@ -125,41 +115,22 @@
<string>constant.numeric.integer.decimal.python</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.global.python</string>
</dict>
</dict>
<key>match</key>
<string>\b(global)\b</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<string>\b(None|True|False|Ellipsis|NotImplemented)\b</string>
<key>name</key>
<string>keyword.control.import.python</string>
<string>constant.language.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.control.import.from.python</string>
</dict>
</dict>
<key>match</key>
<string>\b(?:(import)|(from))\b</string>
<string>\b(global|nonlocal)\b</string>
<key>name</key>
<string>storage.modifier.$1.python</string>
</dict>
<dict>
<key>comment</key>
<string>keywords that delimit flow blocks or alter flow from within a block</string>
<key>match</key>
<string>\b(elif|else|except|finally|for|if|try|while|with|break|continue|pass|raise|return|yield)\b</string>
<string>\b(?:(import|from|as))\b</string>
<key>name</key>
<string>keyword.control.flow.python</string>
<string>keyword.control.import.$1.python</string>
</dict>
<dict>
<key>comment</key>
......@@ -170,18 +141,12 @@
<string>keyword.operator.logical.python</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.python</string>
</dict>
</dict>
<key>comment</key>
<string>keywords that haven't fit into other groups (yet).</string>
<string>keywords that do not fit into other groups.</string>
<key>match</key>
<string>\b(as|assert|del|exec|print)\b</string>
<string>\b(assert|del)\b</string>
<key>name</key>
<string>keyword.other.python</string>
</dict>
<dict>
<key>match</key>
......@@ -189,6 +154,12 @@
<key>name</key>
<string>invalid.deprecated.operator.python</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;!\.)(apply|buffer|coerce|intern)\s*(?=\()</string>
<key>name</key>
<string>invalid.deprecated.function.python</string>
</dict>
<dict>
<key>match</key>
<string>&lt;\=|&gt;\=|\=\=|&lt;|&gt;|\!\=</string>
......@@ -197,13 +168,13 @@
</dict>
<dict>
<key>match</key>
<string>\+\=|-\=|\*\=|/\=|//\=|%\=|&amp;\=|\|\=|\^\=|&gt;&gt;\=|&lt;&lt;\=|\*\*\=</string>
<string>\+\=|-\=|\*\=|/\=|//\=|%\=|&amp;\=|\|\=|\^\=|&gt;&gt;\=|&lt;&lt;\=|\*\*\=|@\=</string>
<key>name</key>
<string>keyword.operator.assignment.augmented.python</string>
</dict>
<dict>
<key>match</key>
<string>\+|\-|\*|\*\*|/|//|%|&lt;&lt;|&gt;&gt;|&amp;|\||\^|~</string>
<string>\+|\-|\*|\*\*|/|//|%|&lt;&lt;|&gt;&gt;|&amp;|\||\^|~|(?!^)@</string>
<key>name</key>
<string>keyword.operator.arithmetic.python</string>
</dict>
......@@ -215,7 +186,7 @@
</dict>
<dict>
<key>begin</key>
<string>^\s*(class)\s+(?=[a-zA-Z_][a-zA-Z_0-9]*\s*\:)</string>
<string>^\s*(class)\s+(?=[[:alpha:]_][[:alnum:]_]*\s*\:)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -248,7 +219,7 @@
</dict>
<dict>
<key>begin</key>
<string>^\s*(class)\s+(?=[a-zA-Z_][a-zA-Z_0-9]*\s*\()</string>
<string>^\s*(class)\s+(?=[[:alpha:]_][[:alnum:]_]*\s*\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -283,11 +254,11 @@
<array>
<dict>
<key>begin</key>
<string>(?=[A-Za-z_][A-Za-z0-9_]*)</string>
<string>(?=[[:alpha:]_][[:alnum:]_]*)</string>
<key>contentName</key>
<string>entity.name.type.class.python</string>
<key>end</key>
<string>(?![A-Za-z0-9_])</string>
<string>(?![[:alnum:]_])</string>
<key>patterns</key>
<array>
<dict>
......@@ -342,7 +313,7 @@
</dict>
<dict>
<key>begin</key>
<string>^\s*(class)\s+(?=[a-zA-Z_][a-zA-Z_0-9])</string>
<string>^\s*(class)\s+(?=[[:alpha:]_][[:alnum:]_]*)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -372,11 +343,11 @@
<array>
<dict>
<key>begin</key>
<string>(?=[A-Za-z_][A-Za-z0-9_]*)</string>
<string>(?=[[:alpha:]_][[:alnum:]_]*)</string>
<key>contentName</key>
<string>entity.name.type.class.python</string>
<key>end</key>
<string>(?![A-Za-z0-9_])</string>
<string>(?![[:alnum:]_])</string>
<key>patterns</key>
<array>
<dict>
......@@ -389,34 +360,29 @@
</dict>
<dict>
<key>begin</key>
<string>^\s*(def)\s+(?=[A-Za-z_][A-Za-z0-9_]*\s*\()</string>
<string>\s*(?:(async)\s+)?(def)\s+(?=[[:alpha:]_][[:alnum:]_]*\s*\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.async.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.function.python</string>
</dict>
</dict>
<key>end</key>
<string>(\))\s*(?:(\:)|(.*$\n?))</string>
<string>(\:)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.parameters.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.section.function.begin.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>invalid.illegal.missing-section-begin.python</string>
</dict>
</dict>
<key>name</key>
<string>meta.function.python</string>
......@@ -424,11 +390,11 @@
<array>
<dict>
<key>begin</key>
<string>(?=[A-Za-z_][A-Za-z0-9_]*)</string>
<string>(?=[[:alpha:]_][[:alnum:]_]*)</string>
<key>contentName</key>
<string>entity.name.function.python</string>
<key>end</key>
<string>(?![A-Za-z0-9_])</string>
<string>(?![[:alnum:]_])</string>
<key>patterns</key>
<array>
<dict>
......@@ -451,29 +417,68 @@
<key>contentName</key>
<string>meta.function.parameters.python</string>
<key>end</key>
<string>(?=\)\s*\:)</string>
<string>(?=\)\s*(?:\:|-\&gt;))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#annotated_arguments</string>
</dict>
<dict>
<key>include</key>
<string>#keyword_arguments</string>
</dict>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.parameter.function.python</string>
<string>variable.parameter.function.language.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.parameter.function.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.separator.parameters.python</string>
</dict>
</dict>
<key>match</key>
<string>\b([a-zA-Z_][a-zA-Z_0-9]*)\s*(?:(,)|(?=[\n\)]))</string>
<string>\b(?:(self|cls)|([[:alpha:]_][[:alnum:]_]*))\s*(?:(,)|(?=[\n\)]))</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(\))\s*(\-&gt;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.parameters.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.separator.annotation.result.python</string>
</dict>
</dict>
<key>end</key>
<string>(?=\:)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
......@@ -481,10 +486,15 @@
</dict>
<dict>
<key>begin</key>
<string>^\s*(def)\s+(?=[A-Za-z_][A-Za-z0-9_]*)</string>
<string>\s*(?:(async)\s+)?(def)\s+(?=[[:alpha:]_][[:alnum:]_]*)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.async.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.function.python</string>
......@@ -511,11 +521,11 @@
<array>
<dict>
<key>begin</key>
<string>(?=[A-Za-z_][A-Za-z0-9_]*)</string>
<string>(?=[[:alpha:]_][[:alnum:]_]*)</string>
<key>contentName</key>
<string>entity.name.function.python</string>
<key>end</key>
<string>(?![A-Za-z0-9_])</string>
<string>(?![[:alnum:]_])</string>
<key>patterns</key>
<array>
<dict>
......@@ -526,9 +536,49 @@
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.async.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.function.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>storage.type.function.python</string>
</dict>
</dict>
<key>match</key>
<string>\b(?:(?:(async)\s+)?(def)|(lambda))\b</string>
</dict>
<dict>
<key>comment</key>
<string>Keywords that delimit flow blocks or alter flow from within a
block.
This block should be matched *after* meta.function.python to
let 'async def' be matched *first*.
</string>
<key>match</key>
<string>(?x) \b(
async | await | break | continue | elif | else | except | finally | for |
if | pass | raise | return | try | while | with |
(yield(?:\s+from)?)
)\b
</string>
<key>name</key>
<string>keyword.control.flow.python</string>
</dict>
<dict>
<key>begin</key>
<string>(lambda)(?=\s+)</string>
<string>(lambda)(?=\s+|:)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -589,7 +639,7 @@
</dict>
</dict>
<key>match</key>
<string>\b([a-zA-Z_][a-zA-Z_0-9]*)\s*(?:(,)|(?=[\n\)\:]))</string>
<string>\b([[:alpha:]_][[:alnum:]_]*)\s*(?:(,)|(?=[\n\)\:]))</string>
</dict>
</array>
</dict>
......@@ -597,7 +647,7 @@
</dict>
<dict>
<key>begin</key>
<string>^\s*(?=@\s*[A-Za-z_][A-Za-z0-9_]*(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*\s*\()</string>
<string>^\s*(?=@\s*[[:alpha:]_][[:alnum:]_]*(?:\s*\.\s*[[:alpha:]_][[:alnum:]_]*)*\s*\()</string>
<key>comment</key>
<string>a decorator may be a function call which returns a decorator.</string>
<key>end</key>
......@@ -616,7 +666,7 @@
<array>
<dict>
<key>begin</key>
<string>(?=(@)\s*[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*\s*\()</string>
<string>(?=(@)\s*[[:alpha:]_][[:alnum:]_]*(?:\s*\.\s*[[:alpha:]_][[:alnum:]_]*)*\s*\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -668,7 +718,7 @@
</dict>
<dict>
<key>begin</key>
<string>^\s*(?=@\s*[A-Za-z_][A-Za-z0-9_]*(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*)</string>
<string>^\s*(?=@\s*[[:alpha:]_][[:alnum:]_]*(?:\s*\.\s*[[:alpha:]_][[:alnum:]_]*)*)</string>
<key>contentName</key>
<string>entity.name.function.decorator.python</string>
<key>end</key>
......@@ -679,7 +729,7 @@
<array>
<dict>
<key>begin</key>
<string>(?=(@)\s*[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)*)</string>
<string>(?=(@)\s*[[:alpha:]_][[:alnum:]_]*(\s*\.\s*[[:alpha:]_][[:alnum:]_]*)*)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -737,9 +787,54 @@
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#builtin_types</string>
</dict>
<dict>
<key>include</key>
<string>#builtin_functions_name</string>
</dict>
<dict>
<key>include</key>
<string>#builtin_functions_call</string>
</dict>
<dict>
<key>include</key>
<string>#errors_warnings_exceptions</string>
</dict>
<dict>
<key>include</key>
<string>#magic_function_names</string>
</dict>
<dict>
<key>include</key>
<string>#magic_function_calls</string>
</dict>
<dict>
<key>include</key>
<string>#docstrings</string>
</dict>
<dict>
<key>include</key>
<string>#magic_variable_names</string>
</dict>
<dict>
<key>begin</key>
<string>(?=[A-Za-z_][A-Za-z0-9_]*(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*\s*\()</string>
<string>\b(self|cls)\b\s*(?=(\())</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.language.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.arguments.begin.python</string>
</dict>
</dict>
<key>end</key>
<string>(\))</string>
<key>endCaptures</key>
......@@ -754,19 +849,6 @@
<string>meta.function-call.python</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?=[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*\s*\()</string>
<key>end</key>
<string>(?=\s*\()</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#dotted_name</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(\()</string>
......@@ -781,7 +863,15 @@
<key>contentName</key>
<string>meta.function-call.arguments.python</string>
<key>end</key>
<string>(?=\))</string>
<string>(?=(\)))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.arguments.end.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
......@@ -796,11 +886,27 @@
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#language_variables</string>
</dict>
<dict>
<key>include</key>
<string>#generic_object_names</string>
</dict>
<dict>
<key>begin</key>
<string>(?=[A-Za-z_][A-Za-z0-9_]*(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*\s*\[)</string>
<string>(?:\.)?([[:alpha:]_][[:alnum:]_]*)\s*(?=(\())</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>meta.function-call.generic.python</string>
</dict>
</dict>
<key>end</key>
<string>(\])</string>
<string>(\))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
......@@ -810,25 +916,12 @@
</dict>
</dict>
<key>name</key>
<string>meta.item-access.python</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?=[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*\s*\[)</string>
<key>end</key>
<string>(?=\s*\[)</string>
<string>meta.function-call.python</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#dotted_name</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(\[)</string>
<string>(\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -838,11 +931,15 @@
</dict>
</dict>
<key>contentName</key>
<string>meta.item-access.arguments.python</string>
<string>meta.function-call.arguments.python</string>
<key>end</key>
<string>(?=\])</string>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#keyword_arguments</string>
</dict>
<dict>
<key>include</key>
<string>$self</string>
......@@ -852,18 +949,16 @@
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\)|\])\s*(\[)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>comment</key>
<string>Py2 print statement that should only be matched after function calls</string>
<key>match</key>
<string>(?&lt;!\.)\b(print)(?=\s|$)</string>
<key>name</key>
<string>punctuation.definition.arguments.begin.python</string>
<string>keyword.other.print.python</string>
</dict>
</dict>
<key>contentName</key>
<string>meta.item-access.arguments.python</string>
<dict>
<key>begin</key>
<string>(?=[[:alpha:]_][[:alnum:]_]*(?:\s*\.\s*[[:alpha:]_][[:alnum:]_]*)*\s*\[)</string>
<key>end</key>
<string>(\])</string>
<key>endCaptures</key>
......@@ -877,24 +972,57 @@
<key>name</key>
<string>meta.item-access.python</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?=[[:alpha:]_][[:alnum:]_]*(?:\s*\.\s*[[:alpha:]_][[:alnum:]_]*)*\s*\[)</string>
<key>end</key>
<string>(?=\s*\[)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
<string>#dotted_name</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<key>begin</key>
<string>(\[)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.function.python</string>
<string>punctuation.definition.arguments.begin.python</string>
</dict>
</dict>
<key>match</key>
<string>\b(def|lambda)\b</string>
<key>contentName</key>
<string>meta.item-access.arguments.python</string>
<key>end</key>
<string>(?=\])</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\G</string>
<key>end</key>
<string>(?=\[)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#dotted_name</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
......@@ -912,16 +1040,6 @@
<key>include</key>
<string>#line_continuation</string>
</dict>
<dict>
<key>include</key>
<string>#language_variables</string>
</dict>
<dict>
<key>match</key>
<string>\b(None|True|False|Ellipsis|NotImplemented)\b</string>
<key>name</key>
<string>constant.language.python</string>
</dict>
<dict>
<key>include</key>
<string>#string_quoted_single</string>
......@@ -1143,219 +1261,516 @@
</array>
<key>repository</key>
<dict>
<key>builtin_exceptions</key>
<key>annotated_arguments</key>
<dict>
<key>match</key>
<string>(?x)\b(
(
Arithmetic|Assertion|Attribute|BlockingIO|BrokenPipe|Buffer|ChildProcess|
Connection(Aborted|Refused|Reset)?|EOF|Environment|FileExists|
FileNotFound|FloatingPoint|Interrupted|IO|IsADirectoryError|
Import|Indentation|Index|Key|Lookup|Memory|Name|NotADirectory|
NotImplemented|OS|Overflow|Permission|ProcessLookup|Reference|
Runtime|Standard|Syntax|System|Tab|Timeout|Type|UnboundLocal|
Unicode(Encode|Decode|Translate)?|Value|VMS|Windows|ZeroDivision
)Error|
((Pending)?Deprecation|Runtime|Syntax|User|Future|Import|Unicode|Bytes)?Warning|
(Base)?Exception|
SystemExit|StopIteration|NotImplemented|KeyboardInterrupt|GeneratorExit
)\b</string>
<key>name</key>
<string>support.type.exception.python</string>
</dict>
<key>builtin_functions</key>
<key>begin</key>
<string>\b([[:alpha:]_][[:alnum:]_]*)\s*(:)|(?=\()</string>
<key>beginCaptures</key>
<dict>
<key>match</key>
<string>(?x)\b(
__import__|all|abs|any|apply|ascii|bin|callable|chr|classmethod|cmp|coerce|
compile|delattr|dir|divmod|enumerate|eval|execfile|filter|format|getattr|
globals|hasattr|hash|help|hex|id|input|intern|isinstance|issubclass|iter|
len|locals|map|max|min|next|oct|open|ord|pow|print|property|range|
raw_input|reduce|reload|repr|reversed|round|setattr|sorted|staticmethod|
sum|super|type|unichr|vars|zip
)\b</string>
<key>name</key>
<string>support.function.builtin.python</string>
</dict>
<key>builtin_types</key>
<key>1</key>
<dict>
<key>match</key>
<string>(?x)\b(
basestring|bool|buffer|bytearray|bytes|complex|dict|float|frozenset|int|
list|long|memoryview|object|range|set|slice|str|tuple|unicode|xrange
)\b</string>
<key>name</key>
<string>support.type.python</string>
<string>variable.parameter.function.python</string>
</dict>
<key>constant_placeholder</key>
<key>2</key>
<dict>
<key>match</key>
<string>(?i:(%(\([a-z_]+\))?#?0?\-?[ ]?\+?([0-9]*|\*)(\.([0-9]*|\*))?[hL]?[a-z%])|(\{([!\[\].:\w ]+)?\}))</string>
<key>name</key>
<string>constant.other.placeholder.python</string>
<string>punctuation.separator.annotation.python</string>
</dict>
<key>docstrings</key>
</dict>
<key>end</key>
<string>\s*(?:(,)|(?=$\n?|[\)\:]))</string>
<key>endCaptures</key>
<dict>
<key>patterns</key>
<array>
<key>1</key>
<dict>
<key>begin</key>
<string>^\s*(?=[uU]?[rR]?""")</string>
<key>end</key>
<string>(?&lt;=""")</string>
<key>name</key>
<string>comment.block.python</string>
<string>punctuation.separator.parameters.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string_quoted_double</string>
</dict>
</array>
<string>#annotated_group</string>
</dict>
<dict>
<key>begin</key>
<string>^\s*(?=[uU]?[rR]?''')</string>
<key>end</key>
<string>(?&lt;=''')</string>
<key>match</key>
<string>=</string>
<key>name</key>
<string>comment.block.python</string>
<key>patterns</key>
<array>
<string>keyword.operator.assignment.python</string>
</dict>
<dict>
<key>include</key>
<string>#string_quoted_single</string>
</dict>
</array>
<string>$self</string>
</dict>
</array>
</dict>
<key>dotted_name</key>
<key>annotated_group</key>
<dict>
<key>begin</key>
<string>(?=[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*)</string>
<string>(\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.parameters-group.begin.python</string>
</dict>
</dict>
<key>end</key>
<string>(?![A-Za-z0-9_\.])</string>
<string>(\))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.parameters-group.end.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(\.)(?=[A-Za-z_][A-Za-z0-9_]*)</string>
<key>end</key>
<string>(?![A-Za-z0-9_])</string>
<key>patterns</key>
<array>
<string>\b([[:alpha:]_][[:alnum:]_]*)\s*(:)</string>
<key>beginCaptures</key>
<dict>
<key>include</key>
<string>#magic_function_names</string>
<key>1</key>
<dict>
<key>name</key>
<string>variable.parameter.function.python</string>
</dict>
<key>2</key>
<dict>
<key>include</key>
<string>#magic_variable_names</string>
<key>name</key>
<string>punctuation.separator.annotation.python</string>
</dict>
</dict>
<key>end</key>
<string>\s*(?:(,)|(?=$\n?|\)))</string>
<key>endCaptures</key>
<dict>
<key>include</key>
<string>#illegal_names</string>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.parameters.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#generic_names</string>
<string>$self</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;!\.)(?=[A-Za-z_][A-Za-z0-9_]*)</string>
<key>end</key>
<string>(?![A-Za-z0-9_])</string>
<key>patterns</key>
<array>
<string>\b([[:alpha:]_][[:alnum:]_]*)</string>
<key>beginCaptures</key>
<dict>
<key>include</key>
<string>#builtin_functions</string>
</dict>
<key>1</key>
<dict>
<key>include</key>
<string>#builtin_types</string>
<key>name</key>
<string>variable.parameter.function.python</string>
</dict>
<dict>
<key>include</key>
<string>#builtin_exceptions</string>
</dict>
<key>end</key>
<string>\s*(?:(,)|(?=$\n?|\)))</string>
<key>endCaptures</key>
<dict>
<key>include</key>
<string>#illegal_names</string>
</dict>
<key>1</key>
<dict>
<key>include</key>
<string>#magic_function_names</string>
<key>name</key>
<string>punctuation.separator.parameters.python</string>
</dict>
<dict>
<key>include</key>
<string>#magic_variable_names</string>
</dict>
<dict>
<key>include</key>
<string>#language_variables</string>
</dict>
<dict>
<key>include</key>
<string>#generic_names</string>
</dict>
</array>
<string>#comments</string>
</dict>
</array>
</dict>
<key>entity_name_class</key>
<key>builtin_functions_call</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#illegal_names</string>
</dict>
<key>begin</key>
<string>(?x)
(?&lt;!\.)\b(
__import__ | abs | all | any | ascii | basestring | bin | bool |
bytearray | bytes | callable | chr | classmethod | cmp | compile |
complex | delattr | dict | dir | divmod | enumerate | eval | exec |
execfile | file | filter | float | format | frozenset | getattr |
globals | hasattr | hash | help | hex | id | input | int |
isinstance | issubclass | iter | len | list | locals | long | map |
max | memoryview | min | next | object | oct | open | ord | pow |
print | property | range | raw_input | reduce | reload | repr |
reversed | round | set | setattr | slice | sorted | staticmethod |
str | sum | super | tuple | type | unichr | unicode | vars |
xrange | zip)
\b\s*(?=\()
</string>
<key>beginCaptures</key>
<dict>
<key>include</key>
<string>#generic_names</string>
<key>1</key>
<dict>
<key>name</key>
<string>support.function.builtin.call.python</string>
</dict>
</array>
</dict>
<key>entity_name_function</key>
<key>end</key>
<string>(\))</string>
<key>endCaptures</key>
<dict>
<key>patterns</key>
<array>
<key>1</key>
<dict>
<key>include</key>
<string>#magic_function_names</string>
<key>name</key>
<string>punctuation.definition.arguments.end.python</string>
</dict>
<dict>
<key>include</key>
<string>#illegal_names</string>
</dict>
<key>name</key>
<string>meta.function-call.python</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?=[[:alpha:]_][[:alnum:]_]*(?:\s*\.\s*[[:alpha:]_][[:alnum:]_]*)*\s*\()</string>
<key>end</key>
<string>(?=\s*\()</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#generic_names</string>
<string>#dotted_name</string>
</dict>
</array>
</dict>
<key>escaped_char</key>
<dict>
<key>captures</key>
<key>begin</key>
<string>(\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.hex.python</string>
<string>punctuation.definition.arguments.begin.python</string>
</dict>
<key>10</key>
<dict>
<key>name</key>
<string>constant.character.escape.linefeed.python</string>
</dict>
<key>11</key>
<key>contentName</key>
<string>meta.function-call.arguments.python</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>constant.character.escape.return.python</string>
<key>include</key>
<string>#keyword_arguments</string>
</dict>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
</array>
</dict>
</array>
</dict>
<key>builtin_functions_name</key>
<dict>
<key>match</key>
<string>(?x)
(?&lt;!\.|@)
\b(
__import__ | abs | all | any | ascii | basestring | bin | bool |
bytearray | bytes | callable | chr | classmethod | cmp | compile |
complex | delattr | dict | dir | divmod | enumerate | eval | exec |
execfile | file | filter | float | format | frozenset | getattr |
globals | hasattr | hash | help | hex | id | input | int |
isinstance | issubclass | iter | len | list | locals | long | map |
max | memoryview | min | next | object | oct | open | ord | pow |
property | range | raw_input | reduce | reload | repr |
reversed | round | set | setattr | slice | sorted | staticmethod |
str | sum | super | tuple | type | unichr | unicode | vars |
xrange | zip)
\b\s*(?!(\())</string>
<key>name</key>
<string>support.function.builtin.name.python</string>
</dict>
<key>builtin_types</key>
<dict>
<key>comment</key>
<string>These are from https://docs.python.org/X/library/stdtypes.html
where X is 2.7 or 3.5.</string>
<key>match</key>
<string>(?x)
(?&lt;!\.)
\b(
bool | buffer | bytearray | bytes | complex | dict | float |
frozenset | int | list | long | memoryview | object | property |
range | set | slice | str | tuple | type | unicode | xrange)
\b(?!(\s*\())</string>
<key>name</key>
<string>support.type.python</string>
</dict>
<key>comment</key>
<dict>
<key>begin</key>
<string>(^[ \t]+)?(?=#)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.whitespace.comment.leading.python</string>
</dict>
</dict>
<key>end</key>
<string>(?!\G)</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>#</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.python</string>
</dict>
</dict>
<key>end</key>
<string>\n</string>
<key>name</key>
<string>comment.line.number-sign.python</string>
</dict>
</array>
</dict>
<key>constant_placeholder</key>
<dict>
<key>match</key>
<string>(?i:(%(\([[:lower:]_]+\))?#?0?\-?[ ]?\+?([0-9]*|\*)(\.([0-9]*|\*))?[hL]?[[:lower:]%])|(\{([!\[\].:\w ]+)?\}))</string>
<key>name</key>
<string>constant.other.placeholder.python</string>
</dict>
<key>docstrings</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>^\s*(?=[uU]?[rR]?""")</string>
<key>end</key>
<string>(?&lt;=""")</string>
<key>name</key>
<string>comment.block.python</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string_quoted_double</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>^\s*(?=[uU]?[rR]?''')</string>
<key>end</key>
<string>(?&lt;=''')</string>
<key>name</key>
<string>comment.block.python</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string_quoted_single</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>dotted_name</key>
<dict>
<key>begin</key>
<string>(?=(?:\.(?!\s+import)\s*)?[[:alpha:]_][[:alnum:]_]*(?:\s*\.\s*[[:alpha:]_][[:alnum:]_]*)*)</string>
<key>end</key>
<string>(?![[:alnum:]_\.\s])|(?=(?&lt;!\.)\s+[^.])|$</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(\.)(?=[[:alpha:]_][[:alnum:]_]*)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>meta.dot.python</string>
</dict>
</dict>
<key>end</key>
<string>(?![[:alnum:]_])</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#builtin_functions_name</string>
</dict>
<dict>
<key>include</key>
<string>#magic_function_names</string>
</dict>
<dict>
<key>include</key>
<string>#magic_variable_names</string>
</dict>
<dict>
<key>include</key>
<string>#generic_names</string>
</dict>
<dict>
<key>include</key>
<string>#illegal_names</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;!\.)(?=[[:alpha:]_][[:alnum:]_]*)</string>
<key>end</key>
<string>(?![[:alnum:]_])</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#builtin_types</string>
</dict>
<dict>
<key>include</key>
<string>#builtin_functions_name</string>
</dict>
<dict>
<key>include</key>
<string>#builtin_functions_call</string>
</dict>
<dict>
<key>include</key>
<string>#errors_warnings_exceptions</string>
</dict>
<dict>
<key>include</key>
<string>#magic_function_names</string>
</dict>
<dict>
<key>include</key>
<string>#magic_function_calls</string>
</dict>
<dict>
<key>include</key>
<string>#magic_variable_names</string>
</dict>
<dict>
<key>include</key>
<string>#language_variables</string>
</dict>
<dict>
<key>include</key>
<string>#generic_names</string>
</dict>
<dict>
<key>include</key>
<string>#illegal_names</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>entity_name_class</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#generic_names</string>
</dict>
<dict>
<key>include</key>
<string>#illegal_names</string>
</dict>
</array>
</dict>
<key>entity_name_function</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#builtin_functions_name</string>
</dict>
<dict>
<key>include</key>
<string>#magic_function_names</string>
</dict>
<dict>
<key>include</key>
<string>#illegal_names</string>
</dict>
</array>
</dict>
<key>errors_warnings_exceptions</key>
<dict>
<key>match</key>
<string>(?x)
\b(
(
Arithmetic | Assertion | Attribute | Buffer | BlockingIO |
BrokenPipe | ChildProcess | (Connection(Aborted | Refused | Reset)?) |
EOF | Environment | FileExists | FileNotFound | FloatingPoint | IO |
Import | Indentation | Index | Interrupted | IsADirectory |
NotADirectory | Permission | ProcessLookup | Timeout | Key | Lookup |
Memory | Name | NotImplemented | OS | Overflow | Reference | Runtime |
Recursion | Standard | Syntax | System | Tab | Type | UnboundLocal |
Unicode(Encode | Decode | Translate)? | Value | VMS | Windows |
ZeroDivision | ([[:alpha:]_][[:alnum:]_]*))
?Error
|
(
(Pending)?Deprecation | Bytes | Future | Import | Resource |
Runtime | Syntax | Unicode | User | [[:alpha:]_][[:alnum:]_]*)
?Warning
|
SystemExit | Stop(Async)?Iteration | NotImplemented |
KeyboardInterrupt | GeneratorExit
|
([[:alpha:]_][[:alnum:]_]*)
?Exception
)
\b</string>
<key>name</key>
<string>support.type.exception.python</string>
</dict>
<key>escaped_char</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.hex.python</string>
</dict>
<key>10</key>
<dict>
<key>name</key>
<string>constant.character.escape.linefeed.python</string>
</dict>
<key>11</key>
<dict>
<key>name</key>
<string>constant.character.escape.return.python</string>
</dict>
<key>12</key>
<dict>
......@@ -1364,227 +1779,629 @@
</dict>
<key>13</key>
<dict>
<key>name</key>
<string>constant.character.escape.vertical-tab.python</string>
<key>name</key>
<string>constant.character.escape.vertical-tab.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.character.escape.octal.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>constant.character.escape.newline.python</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>constant.character.escape.backslash.python</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>constant.character.escape.double-quote.python</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>constant.character.escape.single-quote.python</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>constant.character.escape.bell.python</string>
</dict>
<key>8</key>
<dict>
<key>name</key>
<string>constant.character.escape.backspace.python</string>
</dict>
<key>9</key>
<dict>
<key>name</key>
<string>constant.character.escape.formfeed.python</string>
</dict>
</dict>
<key>match</key>
<string>(\\x[\h]{2})|(\\[0-7]{3})|(\\\n)|(\\\\)|(\\\")|(\\')|(\\a)|(\\b)|(\\f)|(\\n)|(\\r)|(\\t)|(\\v)</string>
</dict>
<key>escaped_char_raw_double</key>
<dict>
<key>match</key>
<string>\\"</string>
<key>name</key>
<string>constant.character.escape.quote.python</string>
</dict>
<key>escaped_char_raw_single</key>
<dict>
<key>match</key>
<string>\\'</string>
<key>name</key>
<string>constant.character.escape.quote.python</string>
</dict>
<key>escaped_unicode_char</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.unicode.32-bit-hex.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.character.escape.unicode.16-bit-hex.python</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>constant.character.escape.unicode.name.python</string>
</dict>
</dict>
<key>match</key>
<string>(\\U[\h]{8})|(\\u[\h]{4})|(\\N\{[a-zA-Z0-9\, ]+\})</string>
</dict>
<key>generic_names</key>
<dict>
<key>match</key>
<string>[[:alpha:]_][[:alnum:]_]*</string>
<key>name</key>
<string>meta.identifier.python</string>
</dict>
<key>generic_object_names</key>
<dict>
<key>match</key>
<string>(\.\b([[:alpha:]_][[:alnum:]_]*)\b(?!\(|\[)|\b([[:alpha:]_][[:alnum:]_]*)\b\.)</string>
</dict>
<key>illegal_names</key>
<dict>
<key>comment</key>
<string>from Lib/keyword.py, in kwlist. `async` and `await` not keywords until Python 3.7 (according to PEP-0492)</string>
<key>match</key>
<string>(?x)
\b (
False | None | True | and | as | assert | break | class | continue | def |
del | elif | else | except | exec | finally | for | from | global | if |
import | in | is | lambda | nonlocal | not | or | pass | print | raise |
return | try | while | with | yield)
\b</string>
<key>name</key>
<string>invalid.illegal.name.python</string>
</dict>
<key>keyword_arguments</key>
<dict>
<key>begin</key>
<string>\b([[:alpha:]_][[:alnum:]_]*)\s*(=)(?!=)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.parameter.function.keyword.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.assignment.python</string>
</dict>
</dict>
<key>end</key>
<string>\s*(?:(,)|(?=[\)\:]))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.parameters.python</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<key>language_variables</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.language.python</string>
</dict>
</dict>
<key>match</key>
<string>(?&lt;!\.)\b(self|cls)\b(?:\.|\()?</string>
</dict>
<key>line_continuation</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.continuation.line.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.unexpected-text.python</string>
</dict>
</dict>
<key>match</key>
<string>(\\)(.*)$\n?</string>
</dict>
<key>magic_function_calls</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?x)
(\.)?
\b(
__(?:
abs | add | aenter | aexit | aiter | and | anext | await | bool |
bytes | call | ceil | cmp | coerce | complex | contains | copy |
deepcopy | del | delattr | delete | delitem | delslice | dir | div |
divmod | enter | eq | exit | float | floor | floordiv | format | ge |
get | getattr | getattribute | getinitargs | getitem | getnewargs |
getnewargs_ex | getslice | getstate | gt | hash | hex | iadd | iand |
idiv | idivmod | ifloordiv | ilshift | imatmul | imod | imul | index |
init | instancecheck | int | invert | iop | ior | ipow | irshift |
isub | iter | itruediv | ixor | le | len | length_hint | long |
lshift | lt | matmul | missing | mod | mul | ne | neg | new | next |
nonzero | oct | op | or | pos | pow | prepare | radd | rand | rcmp |
rdiv | rdivmod | reduce | reduce_ex | repr | reversed | rfloordiv |
rlshift | rmatmul | rmod | rmul | rop | ror | round | rpow | rrshift |
rshift | rsub | rtruediv | rxor | set | setattr | setitem | setslice |
setstate | sizeof | str | sub | subclasscheck | truediv | trunc |
unicode | xor)
__)
\s*(?=(\())</string>
<key>beginCaptures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>support.function.magic.call.python</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.arguments.begin.python</string>
</dict>
</dict>
<key>end</key>
<string>(\))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.arguments.end.python</string>
</dict>
</dict>
<key>name</key>
<string>meta.function-call.python</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?=[[:alpha:]_][[:alnum:]_]*(?:\s*\.\s*[[:alpha:]_][[:alnum:]_]*)*\s*\()</string>
<key>end</key>
<string>(?=\s*\()</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#dotted_name</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.arguments.begin.python</string>
</dict>
</dict>
<key>contentName</key>
<string>meta.function-call.arguments.python</string>
<key>end</key>
<string>(?=\))</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#keyword_arguments</string>
</dict>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
</array>
</dict>
</array>
</dict>
<key>magic_function_names</key>
<dict>
<key>captures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>support.function.magic.name.python</string>
</dict>
</dict>
<key>comment</key>
<string>These methods have magic interpretation by python and are generally
called indirectly through syntactic constructs. Names are from
https://docs.python.org/X/reference/datamodel.html where X is 2.7 and 3.5
See also http://www.rafekettler.com/magicmethods.html</string>
<key>match</key>
<string>(?x)
(def|\.)?
\s*\b(
__(?:
abs | add | aenter | aexit | aiter | and | anext | await | bool |
bytes | call | ceil | cmp | coerce | complex | contains | copy |
deepcopy | del | delattr | delete | delitem | delslice | dir | div |
divmod | enter | eq | exit | float | floor | floordiv | format | ge |
get | getattr | getattribute | getinitargs | getitem | getnewargs |
getnewargs_ex | getslice | getstate | gt | hash | hex | iadd | iand |
idiv | idivmod | ifloordiv | ilshift | imatmul | imod | imul | index |
init | instancecheck | int | invert | iop | ior | ipow | irshift |
isub | iter | itruediv | ixor | le | len | length_hint | long |
lshift | lt | matmul | missing | mod | mul | ne | neg | new | next |
nonzero | oct | op | or | pos | pow | prepare | radd | rand | rcmp |
rdiv | rdivmod | reduce | reduce_ex | repr | reversed | rfloordiv |
rlshift | rmatmul | rmod | rmul | rop | ror | round | rpow | rrshift |
rshift | rsub | rtruediv | rxor | set | setattr | setitem | setslice |
setstate | sizeof | str | sub | subclasscheck | truediv | trunc |
unicode | xor)
__)
\b</string>
</dict>
<key>magic_variable_names</key>
<dict>
<key>captures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>support.variable.magic.python</string>
</dict>
</dict>
<key>comment</key>
<string>magic attributes which a class/module may have.</string>
<key>match</key>
<string>(?x)
(\.)?
\b(
__(?:
all | annotations | bases | class | closure | code | debug |
defaults | dict | doc | file | func | globals | kwdefaults |
members | metaclass | methods | module | mro | name | qualname |
self | slots | subclasses | version | weakref)
__) \b</string>
</dict>
<key>regular_expressions</key>
<dict>
<key>comment</key>
<string>Changed disabled to 1 to turn off syntax highlighting in “r” strings.</string>
<key>disabled</key>
<integer>0</integer>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>source.regexp.python</string>
</dict>
</array>
</dict>
<key>string_quoted_double</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>([uU]r)(""")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>comment</key>
<string>single quoted unicode-raw string</string>
<key>end</key>
<string>"""</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.block.unicode-raw-regex.python</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#constant_placeholder</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.character.escape.octal.python</string>
<key>include</key>
<string>#escaped_char_raw_double</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>constant.character.escape.newline.python</string>
<key>include</key>
<string>#regular_expressions</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>constant.character.escape.backlash.python</string>
</array>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>constant.character.escape.double-quote.python</string>
</dict>
<key>6</key>
<key>begin</key>
<string>([uU]R)(""")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.single-quote.python</string>
<string>storage.type.string.python</string>
</dict>
<key>7</key>
<key>2</key>
<dict>
<key>name</key>
<string>constant.character.escape.bell.python</string>
<string>punctuation.definition.string.begin.python</string>
</dict>
<key>8</key>
</dict>
<key>comment</key>
<string>single quoted unicode-raw string without regular expression highlighting</string>
<key>end</key>
<string>"""</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>constant.character.escape.backspace.python</string>
<string>punctuation.definition.string.end.python</string>
</dict>
</dict>
<key>9</key>
<dict>
<key>name</key>
<string>constant.character.escape.formfeed.python</string>
<string>string.quoted.double.block.unicode-raw.python</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#constant_placeholder</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char_raw_double</string>
</dict>
<key>match</key>
<string>(\\x[0-9A-F]{2})|(\\[0-7]{3})|(\\\n)|(\\\\)|(\\\")|(\\')|(\\a)|(\\b)|(\\f)|(\\n)|(\\r)|(\\t)|(\\v)</string>
</array>
</dict>
<key>escaped_unicode_char</key>
<dict>
<key>captures</key>
<key>begin</key>
<string>([bB]r)(""")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.escape.unicode.16-bit-hex.python</string>
<string>storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.character.escape.unicode.32-bit-hex.python</string>
<string>punctuation.definition.string.begin.python</string>
</dict>
<key>3</key>
</dict>
<key>comment</key>
<string>single quoted bytes-raw string</string>
<key>end</key>
<string>"""</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>constant.character.escape.unicode.name.python</string>
</dict>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>match</key>
<string>(\\U[0-9A-Fa-f]{8})|(\\u[0-9A-Fa-f]{4})|(\\N\{[a-zA-Z ]+\})</string>
</dict>
<key>function_name</key>
<dict>
<key>name</key>
<string>string.quoted.double.block.bytes-raw-regex.python</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#magic_function_names</string>
<string>#constant_placeholder</string>
</dict>
<dict>
<key>include</key>
<string>#magic_variable_names</string>
<string>#escaped_char_raw_double</string>
</dict>
<dict>
<key>include</key>
<string>#builtin_exceptions</string>
<string>#regular_expressions</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#builtin_functions</string>
<key>begin</key>
<string>([bB]R)(""")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>include</key>
<string>#builtin_types</string>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>comment</key>
<string>single quoted bytes-raw string without regular expression highlighting</string>
<key>end</key>
<string>"""</string>
<key>endCaptures</key>
<dict>
<key>include</key>
<string>#generic_names</string>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
</array>
</dict>
<key>generic_names</key>
<key>name</key>
<string>string.quoted.double.block.bytes-raw.python</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>[A-Za-z_][A-Za-z0-9_]*</string>
<key>include</key>
<string>#constant_placeholder</string>
</dict>
<key>illegal_names</key>
<dict>
<key>match</key>
<string>\b(and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield)\b</string>
<key>name</key>
<string>invalid.illegal.name.python</string>
<key>include</key>
<string>#escaped_char_raw_double</string>
</dict>
</array>
</dict>
<key>keyword_arguments</key>
<dict>
<key>begin</key>
<string>\b([a-zA-Z_][a-zA-Z_0-9]*)\s*(=)(?!=)</string>
<string>(r)(""")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.parameter.function.python</string>
<string>storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.assignment.python</string>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>comment</key>
<string>double quoted raw string</string>
<key>end</key>
<string>\s*(?:(,)|(?=$\n?|[\)\:]))</string>
<string>"""</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.separator.parameters.python</string>
<string>punctuation.definition.string.end.python</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.block.raw-regex.python</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
<string>#constant_placeholder</string>
</dict>
</array>
<dict>
<key>include</key>
<string>#escaped_char_raw_double</string>
</dict>
<key>language_variables</key>
<dict>
<key>match</key>
<string>\b(self|cls)\b</string>
<key>name</key>
<string>variable.language.python</string>
<key>include</key>
<string>#regular_expressions</string>
</dict>
</array>
</dict>
<key>line_continuation</key>
<dict>
<key>captures</key>
<key>begin</key>
<string>(R)(""")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.continuation.line.python</string>
<string>storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.unexpected-text.python</string>
</dict>
<string>punctuation.definition.string.begin.python</string>
</dict>
<key>match</key>
<string>(\\)(.*)$\n?</string>
</dict>
<key>magic_function_names</key>
<dict>
<key>comment</key>
<string>these methods have magic interpretation by python and are generally called indirectly through syntactic constructs</string>
<key>match</key>
<string>(?x)\b(__(?:
abs|add|and|call|cmp|coerce|complex|contains|del|delattr|
delete|delitem|delslice|div|divmod|enter|eq|exit|float|
floordiv|ge|get|getattr|getattribute|getitem|getslice|gt|
hash|hex|iadd|iand|idiv|ifloordiv|ilshift|imod|imul|init|
int|invert|ior|ipow|irshift|isub|iter|itruediv|ixor|le|len|
long|lshift|lt|mod|mul|ne|neg|new|nonzero|oct|or|pos|pow|
radd|rand|rdiv|rdivmod|repr|rfloordiv|rlshift|rmod|rmul|ror|
rpow|rrshift|rshift|rsub|rtruediv|rxor|set|setattr|setitem|
setslice|str|sub|truediv|unicode|xor
)__)\b</string>
<key>name</key>
<string>support.function.magic.python</string>
</dict>
<key>magic_variable_names</key>
<string>double quoted raw string</string>
<key>end</key>
<string>"""</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>comment</key>
<string>magic variables which a class/module may have.</string>
<key>match</key>
<string>\b__(all|bases|class|debug|dict|doc|file|members|metaclass|methods|name|slots|weakref)__\b</string>
<key>name</key>
<string>support.variable.magic.python</string>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>regular_expressions</key>
<dict>
<key>comment</key>
<string>Changed disabled to 1 to turn off syntax highlighting in “r” strings.</string>
<key>disabled</key>
<integer>0</integer>
</dict>
<key>name</key>
<string>string.quoted.double.block.raw.python</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>source.regexp.python</string>
<string>#constant_placeholder</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char_raw_double</string>
</dict>
</array>
</dict>
<key>string_quoted_double</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>([uU]r)(""")</string>
<string>([uU])(""")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -1599,7 +2416,7 @@
</dict>
</dict>
<key>comment</key>
<string>single quoted unicode-raw string</string>
<string>double quoted unicode string</string>
<key>end</key>
<string>"""</string>
<key>endCaptures</key>
......@@ -1611,7 +2428,7 @@
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.block.unicode-raw-regex.python</string>
<string>string.quoted.double.block.unicode.python</string>
<key>patterns</key>
<array>
<dict>
......@@ -1626,15 +2443,11 @@
<key>include</key>
<string>#escaped_char</string>
</dict>
<dict>
<key>include</key>
<string>#regular_expressions</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>([uU]R)(""")</string>
<string>([bB])(""")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -1649,7 +2462,7 @@
</dict>
</dict>
<key>comment</key>
<string>single quoted unicode-raw string without regular expression highlighting</string>
<string>double quoted bytes string</string>
<key>end</key>
<string>"""</string>
<key>endCaptures</key>
......@@ -1661,7 +2474,7 @@
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.block.unicode-raw.python</string>
<string>string.quoted.double.block.bytes.python</string>
<key>patterns</key>
<array>
<dict>
......@@ -1678,9 +2491,53 @@
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
<key>3</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#constant_placeholder</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char_raw_double</string>
</dict>
<dict>
<key>include</key>
<string>#regular_expressions</string>
</dict>
</array>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
</dict>
<key>comment</key>
<string>double-quoted raw string</string>
<key>match</key>
<string>([uU]r)(")((?:[^"\\]|\\.)*)(")</string>
<key>name</key>
<string>string.quoted.double.single-line.unicode-raw-regex.python</string>
</dict>
<dict>
<key>begin</key>
<string>(r)(""")</string>
<string>([uU]R)(")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -1695,19 +2552,24 @@
</dict>
</dict>
<key>comment</key>
<string>double quoted raw string</string>
<string>double-quoted raw string</string>
<key>end</key>
<string>"""</string>
<string>(")|(\n)</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.unclosed-string.python</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.block.raw-regex.python</string>
<string>string.quoted.double.single-line.unicode-raw.python</string>
<key>patterns</key>
<array>
<dict>
......@@ -1716,17 +2578,13 @@
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
</dict>
<dict>
<key>include</key>
<string>#regular_expressions</string>
<string>#escaped_char_raw_double</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(R)(""")</string>
<string>([bB]r)(")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -1741,19 +2599,24 @@
</dict>
</dict>
<key>comment</key>
<string>double quoted raw string</string>
<string>double-quoted raw string</string>
<key>end</key>
<string>"""</string>
<string>(")|(\n)</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.unclosed-string.python</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.block.raw.python</string>
<string>string.quoted.double.single-line.bytes-raw-regex.python</string>
<key>patterns</key>
<array>
<dict>
......@@ -1762,13 +2625,17 @@
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
<string>#escaped_char_raw_double</string>
</dict>
<dict>
<key>include</key>
<string>#regular_expressions</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>([uU])(""")</string>
<string>([bB]R)(")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -1783,19 +2650,24 @@
</dict>
</dict>
<key>comment</key>
<string>double quoted unicode string</string>
<string>double-quoted raw string</string>
<key>end</key>
<string>"""</string>
<string>(")|(\n)</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.unclosed-string.python</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.block.unicode.python</string>
<string>string.quoted.double.single-line.bytes-raw.python</string>
<key>patterns</key>
<array>
<dict>
......@@ -1804,11 +2676,7 @@
</dict>
<dict>
<key>include</key>
<string>#escaped_unicode_char</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
<string>#escaped_char_raw_double</string>
</dict>
</array>
</dict>
......@@ -1835,11 +2703,7 @@
</dict>
<dict>
<key>include</key>
<string>#escaped_unicode_char</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
<string>#escaped_char_raw_double</string>
</dict>
<dict>
<key>include</key>
......@@ -1856,13 +2720,13 @@
<key>comment</key>
<string>double-quoted raw string</string>
<key>match</key>
<string>([uU]r)(")((?:[^"\\]|\\.)*)(")</string>
<string>(r)(")((?:[^"\\]|\\.)*)(")</string>
<key>name</key>
<string>string.quoted.double.single-line.unicode-raw-regex.python</string>
<string>string.quoted.double.single-line.raw-regex.python</string>
</dict>
<dict>
<key>begin</key>
<string>([uU]R)(")</string>
<string>(R)(")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -1894,7 +2758,7 @@
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.single-line.unicode-raw.python</string>
<string>string.quoted.double.single-line.raw.python</string>
<key>patterns</key>
<array>
<dict>
......@@ -1903,16 +2767,14 @@
</dict>
<dict>
<key>include</key>
<string>#escaped_unicode_char</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
<string>#escaped_char_raw_double</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<key>begin</key>
<string>([uU])(")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
......@@ -1924,8 +2786,26 @@
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
<key>3</key>
</dict>
<key>comment</key>
<string>double quoted unicode string</string>
<key>end</key>
<string>(")|(\n)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.unclosed-string.python</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.single-line.unicode.python</string>
<key>patterns</key>
<array>
<dict>
......@@ -1934,30 +2814,17 @@
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
<string>#escaped_unicode_char</string>
</dict>
<dict>
<key>include</key>
<string>#regular_expressions</string>
<string>#escaped_char</string>
</dict>
</array>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
</dict>
<key>comment</key>
<string>double-quoted raw string</string>
<key>match</key>
<string>(r)(")((?:[^"\\]|\\.)*)(")</string>
<key>name</key>
<string>string.quoted.double.single-line.raw-regex.python</string>
</dict>
<dict>
<key>begin</key>
<string>(R)(")</string>
<string>([bB])(")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -1972,7 +2839,7 @@
</dict>
</dict>
<key>comment</key>
<string>double-quoted raw string</string>
<string>double quoted bytes string</string>
<key>end</key>
<string>(")|(\n)</string>
<key>endCaptures</key>
......@@ -1989,13 +2856,17 @@
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.single-line.raw.python</string>
<string>string.quoted.double.single-line.bytes.python</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#constant_placeholder</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_unicode_char</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
......@@ -2004,22 +2875,62 @@
</dict>
<dict>
<key>begin</key>
<string>([uU])(")</string>
<string>(""")(?=\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
<string>punctuation.definition.string.begin.python</string>
</dict>
<key>2</key>
</dict>
<key>comment</key>
<string>double quoted string</string>
<key>end</key>
<string>"""</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.block.sql.python</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#constant_placeholder</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_unicode_char</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
</dict>
<dict>
<key>include</key>
<string>source.sql</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(")(?=\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>comment</key>
<string>double quoted unicode string</string>
<string>double quoted string</string>
<key>end</key>
<string>(")|(\n)</string>
<key>endCaptures</key>
......@@ -2036,7 +2947,14 @@
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.single-line.unicode.python</string>
<string>string.quoted.double.single-line.sql.python</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>patterns</key>
<array>
<dict>
......@@ -2051,11 +2969,21 @@
<key>include</key>
<string>#escaped_char</string>
</dict>
<dict>
<key>include</key>
<string>source.sql</string>
</dict>
</array>
</dict>
</dict>
<key>match</key>
<string>(\G|^)([^"\\]|\\.)*(?="|$)</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(""")(?=\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))</string>
<string>(""")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -2077,7 +3005,7 @@
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.block.sql.python</string>
<string>string.quoted.double.block.python</string>
<key>patterns</key>
<array>
<dict>
......@@ -2086,17 +3014,17 @@
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
<string>#escaped_unicode_char</string>
</dict>
<dict>
<key>include</key>
<string>source.sql</string>
<string>#escaped_char</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(")(?=\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))</string>
<string>(")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -2123,38 +3051,95 @@
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.single-line.sql.python</string>
<string>string.quoted.double.single-line.python</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#constant_placeholder</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_unicode_char</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>string_quoted_single</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>([uU]r)(''')</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>comment</key>
<string>single quoted unicode-raw string</string>
<key>end</key>
<string>'''</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.block.unicode-raw-regex.python</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#constant_placeholder</string>
</dict>
<dict>
<key>include</key>
<string>source.sql</string>
<string>#escaped_char_raw_single</string>
</dict>
<dict>
<key>include</key>
<string>#regular_expressions</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(""")</string>
<string>([uU]R)(''')</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>comment</key>
<string>double quoted string</string>
<string>single quoted unicode-raw string</string>
<key>end</key>
<string>"""</string>
<string>'''</string>
<key>endCaptures</key>
<dict>
<key>0</key>
......@@ -2164,7 +3149,7 @@
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.block.python</string>
<string>string.quoted.single.block.unicode-raw.python</string>
<key>patterns</key>
<array>
<dict>
......@@ -2173,40 +3158,40 @@
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
<string>#escaped_char_raw_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(")</string>
<string>([bB]r)(''')</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>comment</key>
<string>double quoted string</string>
<string>single quoted bytes-raw string</string>
<key>end</key>
<string>(")|(\n)</string>
<string>'''</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.unclosed-string.python</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.single-line.python</string>
<string>string.quoted.single.block.bytes-raw-regex.python</string>
<key>patterns</key>
<array>
<dict>
......@@ -2215,19 +3200,17 @@
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
<string>#escaped_char_raw_single</string>
</dict>
</array>
<dict>
<key>include</key>
<string>#regular_expressions</string>
</dict>
</array>
</dict>
<key>string_quoted_single</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>([uU]r)(''')</string>
<string>([bB]R)(''')</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -2242,7 +3225,7 @@
</dict>
</dict>
<key>comment</key>
<string>single quoted unicode-raw string</string>
<string>single quoted bytes-raw string</string>
<key>end</key>
<string>'''</string>
<key>endCaptures</key>
......@@ -2254,7 +3237,7 @@
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.block.unicode-raw-regex.python</string>
<string>string.quoted.single.block.bytes-raw.python</string>
<key>patterns</key>
<array>
<dict>
......@@ -2263,21 +3246,13 @@
</dict>
<dict>
<key>include</key>
<string>#escaped_unicode_char</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
</dict>
<dict>
<key>include</key>
<string>#regular_expressions</string>
<string>#escaped_char_raw_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>([uU]R)(''')</string>
<string>(r)(''')</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -2292,7 +3267,7 @@
</dict>
</dict>
<key>comment</key>
<string>single quoted unicode-raw string</string>
<string>single quoted raw string</string>
<key>end</key>
<string>'''</string>
<key>endCaptures</key>
......@@ -2304,7 +3279,7 @@
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.block.unicode-raw.python</string>
<string>string.quoted.single.block.raw-regex.python</string>
<key>patterns</key>
<array>
<dict>
......@@ -2313,17 +3288,17 @@
</dict>
<dict>
<key>include</key>
<string>#escaped_unicode_char</string>
<string>#escaped_char_raw_single</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
<string>#regular_expressions</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(r)(''')</string>
<string>(R)(''')</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -2350,7 +3325,7 @@
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.block.raw-regex.python</string>
<string>string.quoted.single.block.raw.python</string>
<key>patterns</key>
<array>
<dict>
......@@ -2359,17 +3334,13 @@
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
</dict>
<dict>
<key>include</key>
<string>#regular_expressions</string>
<string>#escaped_char_raw_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(R)(''')</string>
<string>([uU])(''')</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -2384,7 +3355,7 @@
</dict>
</dict>
<key>comment</key>
<string>single quoted raw string</string>
<string>single quoted unicode string</string>
<key>end</key>
<string>'''</string>
<key>endCaptures</key>
......@@ -2396,13 +3367,17 @@
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.block.raw.python</string>
<string>string.quoted.single.block.unicode.python</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#constant_placeholder</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_unicode_char</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
......@@ -2411,7 +3386,7 @@
</dict>
<dict>
<key>begin</key>
<string>([uU])(''')</string>
<string>([bB])(''')</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
......@@ -2426,7 +3401,7 @@
</dict>
</dict>
<key>comment</key>
<string>single quoted unicode string</string>
<string>single quoted bytes string</string>
<key>end</key>
<string>'''</string>
<key>endCaptures</key>
......@@ -2438,7 +3413,7 @@
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.block.unicode.python</string>
<string>string.quoted.single.block.bytes.python</string>
<key>patterns</key>
<array>
<dict>
......@@ -2478,11 +3453,7 @@
</dict>
<dict>
<key>include</key>
<string>#escaped_unicode_char</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
<string>#escaped_char_raw_single</string>
</dict>
<dict>
<key>include</key>
......@@ -2520,7 +3491,7 @@
</dict>
</dict>
<key>comment</key>
<string>single quoted raw string</string>
<string>single quoted unicode-raw string</string>
<key>end</key>
<string>(')|(\n)</string>
<key>endCaptures</key>
......@@ -2546,11 +3517,105 @@
</dict>
<dict>
<key>include</key>
<string>#escaped_unicode_char</string>
<string>#escaped_char_raw_single</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>([bB]r)(')</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>comment</key>
<string>single quoted bytes-raw string</string>
<key>end</key>
<string>(')|(\n)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.unclosed-string.python</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.single-line.bytes-raw-regex.python</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#escaped_char</string>
<string>#constant_placeholder</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char_raw_single</string>
</dict>
<dict>
<key>include</key>
<string>#regular_expressions</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>([bB]R)(')</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>comment</key>
<string>single quoted bytes-raw string</string>
<key>end</key>
<string>(')|(\n)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.unclosed-string.python</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.single-line.bytes-raw.python</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#constant_placeholder</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char_raw_single</string>
</dict>
</array>
</dict>
......@@ -2577,7 +3642,7 @@
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
<string>#escaped_char_raw_single</string>
</dict>
<dict>
<key>include</key>
......@@ -2591,8 +3656,6 @@
<string>punctuation.definition.string.end.python</string>
</dict>
</dict>
<key>comment</key>
<string>single quoted raw string</string>
<key>match</key>
<string>(r)(')((?:[^'\\]|\\.)*)(')</string>
<key>name</key>
......@@ -2641,7 +3704,7 @@
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
<string>#escaped_char_raw_single</string>
</dict>
</array>
</dict>
......@@ -2696,6 +3759,57 @@
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>([bB])(')</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.string.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.python</string>
</dict>
</dict>
<key>comment</key>
<string>single quoted bytes string</string>
<key>end</key>
<string>(')|(\n)</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.python</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>invalid.illegal.unclosed-string.python</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.single-line.bytes.python</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#constant_placeholder</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_unicode_char</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(''')(?=\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER))</string>
......@@ -2727,6 +3841,10 @@
<key>include</key>
<string>#constant_placeholder</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_unicode_char</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
......@@ -2767,12 +3885,23 @@
</dict>
<key>name</key>
<string>string.quoted.single.single-line.python</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#constant_placeholder</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_unicode_char</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
......@@ -2783,6 +3912,12 @@
</dict>
</array>
</dict>
</dict>
<key>match</key>
<string>(\G|^)([^'\\]|\\.)*(?='|$)</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(''')</string>
......@@ -2814,6 +3949,10 @@
<key>include</key>
<string>#constant_placeholder</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_unicode_char</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
......@@ -2856,6 +3995,10 @@
<key>include</key>
<string>#constant_placeholder</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_unicode_char</string>
</dict>
<dict>
<key>include</key>
<string>#escaped_char</string>
......@@ -2885,3 +4028,4 @@
<string>F23DB5B2-7D08-11D9-A709-000D93B6E43C</string>
</dict>
</plist>
from banana import *
class Monkey:
# Bananas the monkey can eat.
capacity = 10
......@@ -11,3 +10,57 @@ class Monkey:
def feeding_frenzy(self):
eat(9.25)
return "Yum yum"
if 1900 < year < 2100 and 1 <= month <= 12 \
and 1 <= day <= 31 and 0 <= hour < 24 \
and 0 <= minute < 60 and 0 <= second < 60: # Looks like a valid date
return 1
def firstn(g, n):
for i in range(n):
yield g.next()
reduce(lambda x,y: x+y, [47,11,42,13])
woerter = {"house" : "Haus", "cat":"Katze", "black":"schwarz"}
mydictionary = {
'foo': 23, #comment
'bar': "hello" #sqadsad
}
def steuern(einkommen):
"""Berechnung der zu zahlenden Steuern fuer ein zu versteuerndes Einkommen von x"""
if einkommen <= 8004:
steuer = 0
elif einkommen <= 13469:
y = (einkommen -8004.0)/10000.0
steuer = (912.17 * y + 1400)*y
else:
steuer = einkommen * 0.44 - 15694
return steuer
def beliebig(x, y, *mehr):
print "x=", x, ", x=", y
print "mehr: ", mehr
class Memoize:
def __init__(self, fn):
self.fn = fn
self.memo = {}
def __call__(self, *args):
if args not in self.memo:
self.memo[args] = self.fn(*args)
return self.memo[args]
res = re.search(r"([0-9-]*)\s*([A-Za-z]+),\s+(.*)", i)
while True:
try:
n = raw_input("Number: ")
n = int(n)
break
except ValueError:
print("Not a number")
async with EXPR as VAR:
BLOCK
\ No newline at end of file
因为 它太大了无法显示 source diff 。你可以改为 查看blob
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册