5. 配置选项

布尔类型的值为 0, 1

配置选项存放在文件 .pyarmor/config

5.1. 工程域

查看工程域的所有选项和节,以及选项的当前值:

$ pyarmor env -p info

查看单个选项的值,例如:

$ pyarmor env -p get src

设置选项的值,例如:

$ pyarmor env -p set src "workspace/project/src"
表-3. 工程选项表

选项

类型

说明

src

路径

绝对路径,工程搜索模块和包的路径

scripts

文件列表

工程的脚本,可以为空,也可以是一个或者多个文件

脚本一般是不会被工程中其他脚本和模块导入,是直接被执行的文件

文件是相对于 src 的路径或者绝对路径,可以包含通配符,例如:

foo.py
fib*.py

modules

文件列表

工程的模块,可以为空,也可以是一个或者多个文件

文件是相对于 src 的路径或者绝对路径,可以包含通配符,例如:

joker.py
card*.py

packages

路径列表

工程的包,相对于 src 的路径或者绝对路径,可以有通配符

包的名称默认为最后一级的目录名称

如果不一致的话,使用后缀 @pkgname 指定包的名称

例如:

lib/mypkg1
../tools/mypkg2
src@mypkg

excludes

模式列表

搜索模块和包的时候排除列表中指定的文件或者路径

模式是 fnmatch 格式的字符串

默认情况下是匹配搜索目录下面的名称,不会匹配多级目录

如果仅在某一个包中排除,使用包名称前缀模式 pkgname:pattern

使用 : 开始的模式仅用于排除工程路径下面的文件和目录

例如,常见的排除模式:

venv
__pycache__
test*.py
joker:data
:find.py

recursive

布尔

递归搜索工程路径下的模块和包

pypaths

列表

指定动态导入模块时候的额外路径,支持的格式:

path
path,path
modname::path,path

主要用于重构的时候需要导入基类,以及获取 wildcard 导入的名称:

import a
from b import *

class C(a.T):
    pass

5.1.1. rft

显示节 rft 中所有选项和选项的设置:

$ pyarmor env -p info rft

查看单个选项的值,例如:

$ pyarmor env -p get rft:argument_mode

设置选项的值,例如:

$ pyarmor env -p set rft:argument_mode 1
表-4. 节 rft 选项表

选项

类型

默认值

说明

remove_assert

布尔

0

是否删除脚本中 assert 语句

remove_docstr

布尔

0

是否删除脚本中所有 docstring

builtin_mode

布尔

0

是否重命名内置名称,例如 print 等

argument_mode

枚举

3

重命名参数的方式,可用值

  • 0: 不重名所有函数的参数

  • 1: 仅重命名 posonly 参数

  • 2: 仅保留 kwonly 的参数名称,其他都重命名

  • 3: 重命名所有函数的参数(默认值)

export_mode

布尔

0

是否输出模块属性 __all__ 中列出的名称

输出的名称在重构过程中不会被重命名

如果输出的名称是类,那么类的方法和属性也不会重命名

如果输出的名称是函数,那么函数的参数也不会重命名

模块 __all__ 的名称可能是模块内部定义的,也可能是导入的名称

如果是导入的名称,在被导入的模块中也不会重命名该名称

exclude_names

模式列表

列出不能重命名的类,函数,方法和属性的名称

支持的格式是 fnmatch 的模式,例如:

"inc"
"dir*"

参数和局部变量总是会被重命名,这里列出的名称对参数和局部变量不起作用

exclude_funcs

模式列表

这里面列出的函数名称,对应的参数都不进行重命名:

"func"
"modname::func"
"modname::cls.method"

attr_rules

模式列表

处理未知类型的属性的时候,自定义重命名规则

一个规则占一行,支持如下格式:

modname::scope:a.b.c
!modname::scope:a.b.c
modname::scope:a.b.c *.?.?

第一种格式所有的属性都重命名,第二种格式正好相反,所有的属性都不重命名

第三种格式是指定需要重命名的属性, ? 对应的属性重命名

call_rules

模式列表

处理函数调用的时候,重命名匹配函数的关键字参数

支持的格式为函数名称,或者指定模块内的函数,支持通配符,例如:

foo
visit*
modname::foo
pkg.mod::foo*

extra_builtins

名称列表

除了 builtins 模块之外,需要作为内置名称进行处理的额外名称

支持的格式为空格分开的名称,可以多行

external_types

外部类列表

处理未知类型的属性的时候,自动排除外部类的属性,支持的格式:

modname
modname::*
modname::Cls
modname::Cls*

只有模块名称则模块中所有的类的属性都会被排除,第一行和第二行是等价的

external_attrs

外部属性表

处理未知类型的属性的时候,自动排除这里列出的属性

支持的格式为空格分开的名称,可以多行,不支持通配符