跳转到主要内容

stdlib `tokenize` 的包装器,可以来回转换。

项目描述

build status pre-commit.ci status

tokenize-rt

stdlib tokenize 模块不能正确来回转换。此stdlib包装器提供了两个额外的标记 ESCAPED_NLUNIMPORTANT_WS,以及一个 Token 数据类型。使用 src_to_tokenstokens_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_NLUNIMPORTANT_WS
  • src:标记的源文本
  • line:此标记出现的行号。
  • utf8_byte_offset:此标记在行中的utf8字节偏移量。

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 标准化了字符串前缀,即使它们没有被解析——例如,这意味着即使是在 Python 2 中,你也会看到 Token('STRING', "f'foo'", ...)
  • tokenize-rt 标准化了 Python 2 中的长整型字面量(如 4l / 4L)和八进制字面量(如 0755),在 Python 3 中(便于在运行 Python 3 时重写 Python 2 代码)。

示例用法

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

tokenize_rt-6.0.0.tar.gz (5.4 kB 查看哈希值)

上传时间 源代码

构建分发

tokenize_rt-6.0.0-py2.py3-none-any.whl (5.9 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面