本程序用于从 .sas 文件中裁剪需要递交的代码,并以 .txt 格式存储,支持单文件和多文件处理。
然后使用 pip 命令安装指定版本,例如:
pip install git+https://github.com/smjc-org/py-submit.git@0.6.0或者从特定 commit 安装:
pip install git+https://github.com/smjc-org/py-submit.git@f0c72d7a9534b003b2b28cb46c18a2dc7da8b19e上述命令会将本程序安装到环境变量中指定的目录下,并向系统注册 submit 命令以供后续调用。
submit 包含两个子命令:
copyfile: 处理单个 sas 文件,保存处理后的代码到 txt 文件中copydir: 处理指定目录下的所有 sas 文件,保存处理后的代码到指定目录中
程序会识别 .sas 文件中的特殊注释,根据这些注释裁剪代码片段,以满足递交需求。
可识别的注释分为两类:positive 模式和 negative 模式。
positive 模式的注释格式为:
- /* symbols
SUBMIT BEGINsymbols */ - /* symbols
SUBMIT ENDsymbols */
negative 模式的注释格式为:
- /* symbols
NOT SUBMIT BEGINsymbols */ - /* symbols
NOT SUBMIT ENDsymbols */
Note
symbols可以是符号*,-,=,(空格) 的任意组合- 注释不区分大小写
举例,假设文件 code.sas 的内容如下:
proc datasets library = work memtype = data kill noprint;
quit;
dm ' log; clear; output; clear; odsresult; clear; ';
/*SUBMIT BEGIN*/
proc sql noprint;
create table work.adsl as select * from rawdata.adsl;
quit;
/*NOT SUBMIT BEGIN*/
proc sql noprint;
create table work.t_6_1_1 as select * from adsl;
quit;
/*NOT SUBMIT END*/
proc means data = adsl;
run;
/*SUBMIT END*/
%log;
%error;使用以下命令处理 code.sas 文件:
submit copyfile -s code.sas -t code.txt处理后的代码保存在 code.txt 中:
proc sql noprint;
create table work.adsl as select * from rawdata.adsl;
quit;
proc means data = adsl;
run;更多选项及其用法请参考 CLI。
前置条件:
-
克隆仓库代码
git clone https://github.com/smjc-org/py-submit.git
-
安装依赖
uv sync --all-groups
-
修改代码
-
测试代码
uv run pytest
-
发起 pull request
Note
- 推荐使用 VSCode 编辑代码
- 需要使用 Conventional Commits 1.0.0 规范的提交信息