stdlib“tokenize”的包装器。
tokenize-rt的Python项目详细描述
标记化rt
stdlibtokenize
模块不能正确往返。这个包装纸
stdlib周围提供了两个额外的令牌ESCAPED_NL
和
UNIMPORTANT_WS
,和Token
数据类型。使用src_to_tokens
和
tokens_to_src
往返。
如果要基于 python标记化。
安装
pip install tokenize-rt
用法
数据结构
tokenize_rt.Offset(line=None, utf8_byte_offset=None)
标记偏移量,在交叉引用ast
和
标记化源。
tokenize_rt.Token(name, src, line=None, utf8_byte_offset=None)
构造标记
name
:列出在token.tok_name
或ESCAPED_NL
或UNIMPORTANT_WS
src
:令牌的源代码为文本line
:此标记出现的行号。这将是None
的ESCAPED_NL
和UNIMPORTANT_WS
标记。utf8_byte_offset
:此标记出现在 行。对于ESCAPED_NL
和UNIMPORTANT_WS
令牌,这将是None
。
tokenize_rt.Token.offset
检索此令牌的Offset
。
转换到和从Token
表示
tokenize_rt.src_to_tokens(text: str) -> List[Token]
tokenize_rt.tokens_to_src(Iterable[Token]) -> str
由tokenize-rt
添加的附加令牌
tokenize_rt.ESCAPED_NL
tokenize_rt.UNIMPORTANT_WS
助手
tokenize_rt.NON_CODING_TOKENS
包含标记的frozenset
,这些标记可能出现在其他标记之间,而不是
影响控制流或代码:
COMMENT
ESCAPED_NL
NL
UNIMPORTANT_WS
tokenize_rt.parse_string_literal(text: str) -> Tuple[str, str]
将字符串文本解析为其前缀和字符串内容
>>> parse_string_literal('f"foo"')('f', '"foo"')
tokenize_rt.reversed_enumerate(Sequence[Token]) -> Iterator[Tuple[int, Token]]
产生(index, token)
对。用于重写源代码。
tokenize_rt.rfind_string_parts(Sequence[Token], i) -> Tuple[int, ...]
查找(连接的)字符串文本的字符串部分的索引
i
应该从字符串文本的结尾开始- 对于不是字符串文本的内容,返回
()
(空元组)
>>> tokens=src_to_tokens('"foo" "bar".capitalize()')>>> rfind_string_parts(tokens,2)(0, 2)>>> tokens=src_to_tokens('("foo" "bar").capitalize()')>>> rfind_string_parts(tokens,4)(1, 3)
与tokenize
的区别
tokenize-rt
为反斜杠转义的换行符“token”添加ESCAPED_NL
tokenize-rt
为空白添加UNIMPORTANT_WS
(在tokenize
中丢弃)tokenize-rt
规范化字符串前缀,即使未对其进行分析-- 例如,这意味着即使在 Python2。tokenize-rt
规范化python 2长文本(4l
/4L
)和八进制 python 3中的文本(0755
)(以便在 运行python 3)。
示例用法
- https://github.com/asottile/add-trailing-comma
- https://github.com/asottile/future-fstrings
- https://github.com/asottile/pyupgrade
- https://github.com/asottile/yesqa