Skip to content

smjc-org/py-submit

Repository files navigation

submit.py

requires-python version GitHub License uv Ruff Renovate enabled pytest codecov pre-commit.ci status

本程序用于从 .sas 文件中裁剪需要递交的代码,并以 .txt 格式存储,支持单文件和多文件处理。

安装

首先安装 PythonGit

然后使用 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 BEGIN symbols */
  • /* symbols SUBMIT END symbols */

negative 模式的注释格式为:

  • /* symbols NOT SUBMIT BEGIN symbols */
  • /* symbols NOT SUBMIT END symbols */

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

如何贡献

前置条件:

  1. 克隆仓库代码

    git clone https://github.com/smjc-org/py-submit.git
  2. 安装依赖

    uv sync --all-groups
  3. 修改代码

  4. 测试代码

    uv run pytest
  5. 发起 pull request

Note

  1. 推荐使用 VSCode 编辑代码
  2. 需要使用 Conventional Commits 1.0.0 规范的提交信息

About

Convert sas code to txt format before submit to regulatory agency

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages