name: Python fileTypes:
-
py
-
rpy
-
cpy
-
SConstruct
-
Sconstruct
-
sconstruct
-
SConscript
firstLineMatch: ^#!/.*bpythonb scopeName: source.python repository:
keyword_arguments: endCaptures: "1": name: punctuation.separator.parameters.python begin: \b([a-zA-Z_][a-zA-Z_0-9]*)\s*(=)(?!=) beginCaptures: "1": name: variable.parameter.function.python "2": name: keyword.operator.assignment.python end: \s*(?:(,)|(?=$\n?|[\)])) patterns: - include: $self generic_names: match: "[A-Za-z_][A-Za-z0-9_]*" escaped_char: captures: "6": name: constant.character.escape.single-quote.python "11": name: constant.character.escape.return.python "7": name: constant.character.escape.bell.python "12": name: constant.character.escape.tab.python "8": name: constant.character.escape.backspace.python "13": name: constant.character.escape.vertical-tab.python "9": name: constant.character.escape.formfeed.python "1": name: constant.character.escape.hex.python "2": name: constant.character.escape.octal.python "3": name: constant.character.escape.newline.python "4": name: constant.character.escape.backlash.python "10": name: constant.character.escape.linefeed.python "5": name: constant.character.escape.double-quote.python match: (\\x[0-9A-F]{2})|(\\[0-7]{3})|(\\\n)|(\\\\)|(\\\")|(\\')|(\\a)|(\\b)|(\\f)|(\\n)|(\\r)|(\\t)|(\\v) entity_name_class: patterns: - include: "#illegal_names" - include: "#generic_names" dotted_name: begin: (?=[A-Za-z_][A-Za-z0-9_]*(?:\.[A-Za-z_][A-Za-z0-9_]*)*) end: (?![A-Za-z0-9_\.]) patterns: - begin: (\.)(?=[A-Za-z_][A-Za-z0-9_]*) end: (?![A-Za-z0-9_]) patterns: - include: "#magic_function_names" - include: "#magic_variable_names" - include: "#illegal_names" - include: "#generic_names" - begin: (?<!\.)(?=[A-Za-z_][A-Za-z0-9_]*) end: (?![A-Za-z0-9_]) patterns: - include: "#builtin_functions" - include: "#builtin_types" - include: "#builtin_exceptions" - include: "#illegal_names" - include: "#magic_function_names" - include: "#magic_variable_names" - include: "#language_variables" - include: "#generic_names" builtin_types: name: support.type.python match: |- (?x)\b( basestring|bool|buffer|classmethod|complex|dict|enumerate|file| float|frozenset|int|list|long|object|open|property|reversed|set| slice|staticmethod|str|super|tuple|type|unicode|xrange )\b builtin_exceptions: name: support.type.exception.python match: (?x)\b((Arithmetic|Assertion|Attribute|EOF|Environment|FloatingPoint|IO|Import|Indentation|Index|Key|Lookup|Memory|Name|OS|Overflow|NotImplemented|Reference|Runtime|Standard|Syntax|System|Tab|Type|UnboundLocal|Unicode(Translate|Encode|Decode)?|Value|ZeroDivision)Error|(Deprecation|Future|Overflow|PendingDeprecation|Runtime|Syntax|User)?Warning|KeyboardInterrupt|NotImplemented|StopIteration|SystemExit|(Base)?Exception)\b magic_variable_names: name: support.variable.magic.python match: \b__(all|bases|class|debug|dict|doc|file|members|metaclass|methods|name|slots|weakref)__\b comment: magic variables which a class/module may have. magic_function_names: name: support.function.magic.python match: |- (?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 comment: these methods have magic interpretation by python and are generally called indirectly through syntactic constructs illegal_names: name: invalid.illegal.name.python match: \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 builtin_functions: name: support.function.builtin.python match: |- (?x)\b( __import__|all|abs|any|apply|callable|chr|cmp|coerce|compile|delattr|dir| divmod|eval|execfile|filter|getattr|globals|hasattr|hash|hex|id| input|intern|isinstance|issubclass|iter|len|locals|map|max|min|oct| ord|pow|range|raw_input|reduce|reload|repr|round|setattr|sorted| sum|unichr|vars|zip )\b docstrings: patterns: - name: comment.block.python begin: ^\s*(?=[uU]?[rR]?""") end: (?<=""") patterns: - include: "#string_quoted_double" - name: comment.block.python begin: ^\s*(?=[uU]?[rR]?''') end: (?<=''') patterns: - include: "#string_quoted_single" entity_name_function: patterns: - include: "#magic_function_names" - include: "#illegal_names" - include: "#generic_names" strings: patterns: - include: "#string_quoted_double" - include: "#string_quoted_single" string_quoted_single: patterns: - name: string.quoted.single.single-line.python captures: "1": name: punctuation.definition.string.begin.python "2": name: punctuation.definition.string.end.python "3": name: meta.empty-string.single.python match: (?<!')(')(('))(?!') - name: string.quoted.single.block.unicode-raw.python endCaptures: "1": name: punctuation.definition.string.end.python "2": name: meta.empty-string.single.python begin: ((?i:ur))(''') beginCaptures: "1": name: storage.type.string.python "2": name: punctuation.definition.string.begin.python end: ((?<=''')(')''|''') patterns: - include: "#constant_placeholder" - include: "#escaped_unicode_char" - include: "#escaped_char" - include: source.regexp.python comment: single quoted unicode-raw string - name: string.quoted.single.block.raw.python endCaptures: "1": name: punctuation.definition.string.end.python "2": name: meta.empty-string.single.python begin: ([rR])(''') beginCaptures: "1": name: storage.type.string.python "2": name: punctuation.definition.string.begin.python end: ((?<=''')(')''|''') patterns: - include: "#constant_placeholder" - include: "#escaped_char" - include: source.regexp.python comment: single quoted raw string - name: string.quoted.single.block.unicode.python endCaptures: "1": name: punctuation.definition.string.end.python "2": name: meta.empty-string.single.python begin: ([uU])(''') beginCaptures: "1": name: storage.type.string.python "2": name: punctuation.definition.string.begin.python end: ((?<=''')(')''|''') patterns: - include: "#constant_placeholder" - include: "#escaped_unicode_char" - include: "#escaped_char" comment: single quoted unicode string - name: string.quoted.single.single-line.unicode-raw.python endCaptures: "1": name: punctuation.definition.string.end.python "2": name: invalid.illegal.unclosed-string.python begin: ((?i:ur))(') beginCaptures: "1": name: storage.type.string.python "2": name: punctuation.definition.string.begin.python end: (')|(\n) patterns: - include: "#constant_placeholder" - include: "#escaped_unicode_char" - include: "#escaped_char" - include: source.regexp.python comment: single quoted raw string - name: string.quoted.single.single-line.raw.python endCaptures: "1": name: punctuation.definition.string.end.python "2": name: invalid.illegal.unclosed-string.python begin: ([rR])(') beginCaptures: "1": name: storage.type.string.python "2": name: punctuation.definition.string.begin.python end: (')|(\n) patterns: - include: "#constant_placeholder" - include: "#escaped_char" - include: source.regexp.python comment: single quoted raw string - name: string.quoted.single.single-line.unicode.python endCaptures: "1": name: punctuation.definition.string.end.python "2": name: invalid.illegal.unclosed-string.python begin: ([uU])(') beginCaptures: "1": name: storage.type.string.python "2": name: punctuation.definition.string.begin.python end: (')|(\n) patterns: - include: "#constant_placeholder" - include: "#escaped_unicode_char" - include: "#escaped_char" comment: single quoted unicode string - name: string.quoted.single.block.python endCaptures: "1": name: punctuation.definition.string.end.python "2": name: meta.empty-string.single.python begin: (''') beginCaptures: "1": name: punctuation.definition.string.begin.python end: ((?<=''')(')''|''') patterns: - include: "#constant_placeholder" - include: "#escaped_char" comment: single quoted string - name: string.quoted.single.single-line.python endCaptures: "1": name: punctuation.definition.string.end.python "2": name: invalid.illegal.unclosed-string.python begin: (') beginCaptures: "1": name: punctuation.definition.string.begin.python end: (')|(\n) patterns: - include: "#constant_placeholder" - include: "#escaped_char" comment: single quoted string line_continuation: captures: "1": name: punctuation.separator.continuation.line.python "2": name: invalid.illegal.unexpected-text.python match: (\\)(.*)$\n? constant_placeholder: name: constant.other.placeholder.python match: (?i:%(\([a-z_]+\))?#?0?\-?[ ]?\+?([0-9]*|\*)(\.([0-9]*|\*))?[hL]?[a-z%]) function_name: patterns: - include: "#magic_function_names" - include: "#magic_variable_names" - include: "#builtin_exceptions" - include: "#builtin_functions" - include: "#builtin_types" - include: "#generic_names" string_quoted_double: patterns: - name: string.quoted.double.block.unicode-raw.python endCaptures: "1": name: punctuation.definition.string.end.python "2": name: meta.empty-string.double.python begin: ((?i:ur))(""") beginCaptures: "1": name: storage.type.string.python "2": name: punctuation.definition.string.begin.python end: ((?<=""")(")""|""") patterns: - include: "#constant_placeholder" - include: "#escaped_unicode_char" - include: "#escaped_char" - include: source.regexp.python comment: single quoted unicode-raw string - name: string.quoted.double.block.raw.python endCaptures: "1": name: punctuation.definition.string.end.python "2": name: meta.empty-string.double.python begin: ([rR])(""") beginCaptures: "1": name: storage.type.string.python "2": name: punctuation.definition.string.begin.python end: ((?<=""")(")""|""") patterns: - include: "#constant_placeholder" - include: "#escaped_char" - include: source.regexp.python comment: double quoted raw string - name: string.quoted.double.block.unicode.python endCaptures: "1": name: punctuation.definition.string.end.python "2": name: meta.empty-string.double.python begin: ([uU])(""") beginCaptures: "1": name: storage.type.string.python "2": name: punctuation.definition.string.begin.python end: ((?<=""")(")""|""") patterns: - include: "#constant_placeholder" - include: "#escaped_unicode_char" - include: "#escaped_char" comment: double quoted unicode string - name: string.quoted.double.single-line.unicode-raw.python endCaptures: "1": name: punctuation.definition.string.end.python "2": name: meta.empty-string.double.python "3": name: invalid.illegal.unclosed-string.python begin: ((?i:ur))(") beginCaptures: "1": name: storage.type.string.python "2": name: punctuation.definition.string.begin.python end: ((?<=")(")|")|(\n) patterns: - include: "#constant_placeholder" - include: "#escaped_unicode_char" - include: "#escaped_char" - include: source.regexp.python comment: double-quoted raw string - name: string.quoted.double.single-line.raw.python endCaptures: "1": name: punctuation.definition.string.end.python "2": name: meta.empty-string.double.python "3": name: invalid.illegal.unclosed-string.python begin: ([rR])(") beginCaptures: "1": name: storage.type.string.python "2": name: punctuation.definition.string.begin.python end: ((?<=")(")|")|(\n) patterns: - include: "#constant_placeholder" - include: "#escaped_char" - include: source.regexp.python comment: double-quoted raw string - name: string.quoted.double.single-line.raw.python endCaptures: "1": name: punctuation.definition.string.end.python "2": name: meta.empty-string.double.python "3": name: invalid.illegal.unclosed-string.python begin: ([rR])(") beginCaptures: "1": name: storage.type.string.python "2": name: punctuation.definition.string.begin.python end: ((?<=")(")|")|(\n) patterns: - include: "#constant_placeholder" - include: "#escaped_char" - include: source.regexp.python comment: double-quoted raw string - name: string.quoted.double.single-line.unicode.python endCaptures: "1": name: punctuation.definition.string.end.python "2": name: meta.empty-string.double.python "3": name: invalid.illegal.unclosed-string.python begin: ([uU])(") beginCaptures: "1": name: storage.type.string.python "2": name: punctuation.definition.string.begin.python end: ((?<=")(")|")|(\n) patterns: - include: "#constant_placeholder" - include: "#escaped_unicode_char" - include: "#escaped_char" comment: double quoted unicode string - name: string.quoted.double.block.python endCaptures: "1": name: punctuation.definition.string.end.python "2": name: meta.empty-string.double.python begin: (""") beginCaptures: "1": name: punctuation.definition.string.begin.python end: ((?<=""")(")""|""") patterns: - include: "#constant_placeholder" - include: "#escaped_char" comment: double quoted string - name: string.quoted.double.single-line.python endCaptures: "1": name: punctuation.definition.string.end.python "2": name: meta.empty-string.double.python "3": name: invalid.illegal.unclosed-string.python begin: (") beginCaptures: "1": name: punctuation.definition.string.begin.python end: ((?<=")(")|")|(\n) patterns: - include: "#constant_placeholder" - include: "#escaped_char" comment: double quoted string language_variables: name: variable.language.python match: \b(self|cls)\b escaped_unicode_char: captures: "1": name: constant.character.escape.unicode.16-bit-hex.python "2": name: constant.character.escape.unicode.32-bit-hex.python "3": name: constant.character.escape.unicode.name.python match: (\\U[0-9A-Fa-f]{8})|(\\u[0-9A-Fa-f]{4})|(\\N\{[a-zA-Z ]+\})
uuid: F23DB5B2-7D08-11D9-A709-000D93B6E43C foldingStartMarker: ^s*(def|class)s+([.a-zA-Z0-9_ <]+)s*(((.*)))?s*:|{s*$|(s*$|[s*$|^s*“”“(?=.)(?!.*”“”) patterns:
-
name: comment.line.number-sign.python captures:
"1": name: punctuation.definition.comment.python
match: (#).*$n?
-
name: constant.numeric.integer.long.hexadecimal.python match: b(?i:(0xh*)L)
-
name: constant.numeric.integer.hexadecimal.python match: b(?i:(0xh*))
-
name: constant.numeric.integer.long.octal.python match: b(?i:(0[0-7]+)L)
-
name: constant.numeric.integer.octal.python match: b(0[0-7]+)
-
name: constant.numeric.complex.python match: b(?i:(((d+(.(?=[^a-zA-Z_])d*)?|(?<=[^0-9a-zA-Z_])\.\d+)(e?d+)?))J)
-
name: constant.numeric.float.python match: b(?i:(d+.d*(e[-+]?d+)?))(?=)
-
name: constant.numeric.float.python match: (?<=[^0-9a-zA-Z_])(?i:(.d+(e?d+)?))
-
name: constant.numeric.float.python match: b(?i:(d+e[-+]?d+))
-
name: constant.numeric.integer.long.decimal.python match: b(?i:([1-9]+[0-9]*|0)L)
-
name: constant.numeric.integer.decimal.python match: b([1-9]+[0-9]*|0)
-
captures:
"1": name: storage.modifier.global.python
match: b(global)b
-
captures:
"1": name: keyword.control.import.python "2": name: keyword.control.import.from.python
match: b(?:(import)|(from))b
-
name: keyword.control.flow.python match: b(elif|else|except|finally|for|if|try|while|with)b comment: keywords that delimit flow blocks
-
name: keyword.control.flow.python match: b(break|continue|pass|raise|return|yield)b comment: keywords that alter flow from within a block
-
name: keyword.operator.logical.python match: b(and|in|is|not|or)b comment: keyword operators that evaluate to True or False
-
captures:
"1": name: keyword.other.python
match: b(as|assert|del|exec|print)b comment: keywords that haven't fit into other groups (yet).
-
name: keyword.operator.assignment.augmented.python match: +=|-=|*=|/=|//=|%=|&=||=|^=|>>=|<<=|**=
-
name: keyword.operator.arithmetic.python match: +|-|*|**|/|//|%|<<|>>|&|||^|~
-
name: keyword.operator.comparison.python match: <|>|<=|>=|==|!=|<>
-
name: keyword.operator.assignment.python match: =
-
name: meta.class.old-style.python endCaptures:
"1": name: punctuation.section.class.begin.python
begin: ^s*(class)s+(?=[a-zA-Z_0-9]s:) contentName: entity.name.type.class.python beginCaptures:
"1": name: storage.type.class.python
end: s*(:) patterns:
-
include: “#entity_name_class”
-
-
name: meta.class.python endCaptures:
"1": name: punctuation.definition.inheritance.end.python "2": name: punctuation.section.class.begin.python "3": name: invalid.illegal.missing-section-begin.python
begin: ^s*(class)s+(?=[a-zA-Z_0-9]s() beginCaptures:
"1": name: storage.type.class.python
end: ())s*(?:(:)|(.*$n?)) patterns:
-
begin: (?=[A-Za-z_]*) contentName: entity.name.type.class.python end: (?![A-Za-z0-9_]) patterns:
-
include: “#entity_name_class”
-
-
begin: (() contentName: meta.class.inheritance.python beginCaptures:
"1": name: punctuation.definition.inheritance.begin.python
end: (?=)|:) patterns:
-
endCaptures:
"1": name: punctuation.separator.inheritance.python
begin: (?<=(|,)s* contentName: entity.other.inherited-class.python end: s*(?:(,)|(?=))) patterns:
-
include: $self
-
-
-
-
name: meta.class.python endCaptures:
"1": name: punctuation.definition.inheritance.begin.python "2": name: invalid.illegal.missing-inheritance.python
begin: ^s*(class)s+(?=[a-zA-Z_0-9]) beginCaptures:
"1": name: storage.type.class.python
end: (()|s*($n?|#.*$n?) patterns:
-
begin: (?=[A-Za-z_]*) contentName: entity.name.type.class.python end: (?![A-Za-z0-9_]) patterns:
-
include: “#entity_name_function”
-
-
-
name: meta.function.python endCaptures:
"1": name: punctuation.definition.parameters.end.python "2": name: punctuation.section.function.begin.python "3": name: invalid.illegal.missing-section-begin.python
begin: ^s*(def)s+(?=[A-Za-z0-9_]s() beginCaptures:
"1": name: storage.type.function.python
end: ())s*(?:(:)|(.*$n?)) patterns:
-
begin: (?=[A-Za-z_]*) contentName: entity.name.function.python end: (?![A-Za-z0-9_]) patterns:
-
include: “#entity_name_function”
-
-
begin: (() contentName: meta.function.parameters.python beginCaptures:
"1": name: punctuation.definition.parameters.begin.python
end: (?=)s*:) patterns:
-
include: “#keyword_arguments”
-
captures:
"1": name: variable.parameter.function.python "2": name: punctuation.separator.parameters.python
match: b([a-zA-Z_][a-zA-Z_0-9]*)s*(?:(,)|(?=))
-
-
-
name: meta.function.python endCaptures:
"1": name: punctuation.definition.parameters.begin.python "2": name: invalid.illegal.missing-parameters.python
begin: ^s*(def)s+(?=[A-Za-z0-9_]*) beginCaptures:
"1": name: storage.type.function.python
end: (()|s*($n?|#.*$n?) patterns:
-
begin: (?=[A-Za-z_]*) contentName: entity.name.function.python end: (?![A-Za-z0-9_]) patterns:
-
include: “#entity_name_function”
-
-
-
name: meta.function.decorator.python endCaptures:
"1": name: punctuation.definition.arguments.end.python
begin: ^s*(?=@s*[A-Za-z0-9_]*(?:.[a-zA-Z_0-9]*)s() end: ()) patterns:
-
begin: (?=(@)s*[A-Za-z_][A-Za-z0-9_]*(?:.[A-Za-z0-9_]*)s() contentName: entity.name.function.decorator.python beginCaptures:
"1": name: punctuation.definition.decorator.python
end: (?=s*() patterns:
-
include: “#dotted_name”
-
-
begin: (() contentName: meta.function.decorator.arguments.python beginCaptures:
"1": name: punctuation.definition.arguments.begin.python
end: (?=)) patterns:
-
include: “#keyword_arguments”
-
include: $self
-
comment: a decorator may be a function call which returns a decorator.
-
-
name: meta.function.decorator.python begin: ^s*(?=@s*[A-Za-z0-9_]*(?:.[a-zA-Z_0-9]*)*) contentName: entity.name.function.decorator.python end: (?=s|$n?|#) patterns:
-
begin: (?=(@)s*[A-Za-z_][A-Za-z0-9_]*(.[A-Za-z0-9_]*)*) beginCaptures:
"1": name: punctuation.definition.decorator.python
end: (?=s|$n?|#) patterns:
-
include: “#dotted_name”
-
-
-
name: meta.function-call.python endCaptures:
"1": name: punctuation.definition.arguments.end.python
begin: (?<=)|])s*(() contentName: meta.function-call.arguments.python beginCaptures:
"1": name: punctuation.definition.arguments.begin.python
end: ()) patterns:
-
include: “#keyword_arguments”
-
include: $self
-
-
name: meta.function-call.python endCaptures:
"1": name: punctuation.definition.arguments.end.python
-
name: meta.item-access.python begin: (?=[A-Za-z_]*(?:.[a-zA-Z_]*)s[) end: (]) patterns:
-
begin: (?=[A-Za-z_]*(?:.[A-Za-z_]*)s[) end: (?=s*[) patterns:
-
include: “#dotted_name”
-
-
endCaptures:
"1": name: punctuation.definition.arguments.end.python
begin: ([) contentName: meta.item-access.arguments.python beginCaptures:
"1": name: punctuation.definition.arguments.begin.python
end: (?=]) patterns:
-
include: $self
-
-
-
name: meta.item-access.python endCaptures:
"1": name: punctuation.definition.arguments.end.python
begin: (?<=)|])s*([) contentName: meta.item-access.arguments.python beginCaptures:
"1": name: punctuation.definition.arguments.begin.python
end: (]) patterns:
-
include: $self
-
-
captures:
"1": name: storage.type.function.python
match: b(def|lambda)b
-
captures:
"1": name: storage.type.class.python
match: b(class)b
-
include: “#line_continuation”
-
include: “#language_variables”
-
name: constant.language.python match: b(None|True|False|Ellipsis|NotImplemented)b
-
include: “#string_quoted_single”
-
include: “#string_quoted_double”
-
include: “#dotted_name”
-
begin: (() end: ()) patterns:
-
include: $self
-
-
captures:
"1": name: punctuation.definition.list.begin.python "2": name: meta.empty-list.python "3": name: punctuation.definition.list.end.python
match: ([)(s*(]))b
-
name: meta.structure.list.python endCaptures:
"1": name: punctuation.definition.list.end.python
begin: ([) beginCaptures:
"1": name: punctuation.definition.list.begin.python
end: (]) patterns:
-
endCaptures:
"1": name: punctuation.separator.list.python
begin: (?<=[|,)s*(?![],]) contentName: meta.structure.list.item.python end: s*(?:(,)|(?=])) patterns:
-
include: $self
-
-
-
name: meta.structure.tuple.python captures:
"1": name: punctuation.definition.tuple.begin.python "2": name: meta.empty-tuple.python "3": name: punctuation.definition.tuple.end.python
match: (()(s*()))
-
name: meta.structure.dictionary.python captures:
"1": name: punctuation.definition.dictionary.begin.python "2": name: meta.empty-dictionary.python "3": name: punctuation.definition.dictionary.end.python
match: ({)(s*(}))
-
name: meta.structure.dictionary.python endCaptures:
"1": name: punctuation.definition.dictionary.end.python
begin: ({) beginCaptures:
"1": name: punctuation.definition.dictionary.begin.python
end: (}) patterns:
-
endCaptures:
"1": name: punctuation.separator.valuepair.dictionary.python
begin: (?<={|,|^)s*(?![},]) contentName: meta.structure.dictionary.key.python end: s*(?:(?=})|(:)) patterns:
-
include: $self
-
-
endCaptures:
"1": name: punctuation.separator.dictionary.python
begin: (?<=:|^)s* contentName: meta.structure.dictionary.value.python end: s*(?:(?=})|(,)) patterns:
-
include: $self
-
-
foldingStopMarker: ^s*$|^s*}|^s*]|^s*)|^s*“”“s*$ keyEquivalent: ^~P comment: ”n\
\ttodo:\n\ \t\tlist comprehension / generator comprehension scope.\n\ \t\t\n\ \t"