saqds 1.9.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
saqds-1.9.5/.gitignore ADDED
@@ -0,0 +1,41 @@
1
+ # 本地环境配置(含密钥,勿提交)
2
+ .env
3
+ .env.*
4
+ !.env.example
5
+
6
+ # Python 缓存与编译产物
7
+ __pycache__/
8
+ *.py[cod]
9
+ *.egg-info/
10
+ .eggs/
11
+
12
+ # uv 虚拟环境
13
+ .venv/
14
+ venv/
15
+
16
+ # 构建 / 打包产物
17
+ build/
18
+ dist/
19
+ *.build-cache/
20
+
21
+ # 测试与覆盖率
22
+ .pytest_cache/
23
+ .coverage
24
+ .coverage.*
25
+ htmlcov/
26
+
27
+ # 类型检查缓存
28
+ .ty/
29
+
30
+ # mkdocs 构建产物
31
+ docs/site/
32
+
33
+ # 运行期数据 / 日志
34
+ *.log
35
+ ray_workspace/
36
+
37
+ # 系统与编辑器
38
+ .DS_Store
39
+ Thumbs.db
40
+ .idea/
41
+ .vscode/
@@ -0,0 +1,3 @@
1
+ 序衍量化 版权所有
2
+ 本项目全部源代码、脚本、算法、绘图组件著作权归属远和资产。
3
+ 仅公司内部授权人员可在企业设备、服务器内使用,未经书面许可禁止复制、分发、商用、对外交付。
saqds-1.9.5/PKG-INFO ADDED
@@ -0,0 +1,166 @@
1
+ Metadata-Version: 2.5
2
+ Name: saqds
3
+ Version: 1.9.5
4
+ Summary: Quant core toolkit: A股行情(SAOIDC密钥鉴权直连ClickHouse)+VNPY数据接口、数学/统计指标、公式可视化绘图、CLI工具、Ray分布式批量任务
5
+ Project-URL: Homepage, https://gitlab.dc3.everonquant.net/foundation/python/core
6
+ Author-email: SequArc 序衍 <dev@sequarc.tech>
7
+ License: 序衍量化 版权所有,未经书面许可禁止外部分发/商用
8
+ License-File: LICENSE.txt
9
+ Requires-Python: >=3.10
10
+ Requires-Dist: akshare
11
+ Requires-Dist: click>=8.3.2
12
+ Requires-Dist: clickhouse-connect>=0.8
13
+ Requires-Dist: matplotlib>=3.8
14
+ Requires-Dist: numpy>=1.26
15
+ Requires-Dist: pandas>=2.0
16
+ Requires-Dist: ray[default]>=2.55.1
17
+ Requires-Dist: vnpy[no-gui]>=4.4.0
18
+ Description-Content-Type: text/markdown
19
+
20
+ # Saqds Quant Toolkit
21
+ 序衍量化内部量化核心工具库
22
+ > Version: v1.7.5 | Python >=3.10 | Package Manager: uv
23
+
24
+ ## 项目简介
25
+ 一套面向投研的轻量化量化底层工具集:
26
+ - 📈 行情接口:Akshare A股日线封装,兼容VNPY数据接口
27
+ - 🧮 数值工具:基础数学函数、量化统计指标
28
+ - 📊 可视化:服务端无GUI环境一元数学公式绘图
29
+ - 💻 命令行:内置CLI工具,快速计算
30
+ - ⚡ 分布式:基于Ray实现多标的批量并发任务
31
+
32
+ > 【版权说明】序衍量化专有代码,未经书面许可禁止外部分发、商用。
33
+
34
+ ## 目录结构
35
+ ```
36
+ ./
37
+ ├── docs/ # mkdocs 文档站
38
+ ├── scripts/ # 独立运行脚本(调试/演示/分布式任务)
39
+ ├── specs/ # 技术设计文档(Spec)
40
+ ├── src/saqds/ # 核心源码包(可import导入)
41
+ ├── tests/ # 单元测试用例
42
+ ├── CHANGELOG.md # 版本变更记录
43
+ ├── Dockerfile # 容器部署文件
44
+ ├── LICENSE.txt # 版权声明
45
+ ├── Makefile # 工程运维(对齐 saqds 平台模版)
46
+ ├── pyproject.toml # uv项目配置、依赖、工具链
47
+ ├── README.md
48
+ ├── .env.example # 环境配置模板(复制为 .env 填写)
49
+ └── uv.lock # 依赖锁文件,保障环境一致性
50
+ ```
51
+
52
+ ## uv 包管理器安装(国内服务器)
53
+ > ⚠️ 请勿执行 `apt install uv`,Ubuntu官方软件源不包含uv
54
+
55
+ ### 方式1|二进制部署(生产服务器推荐)
56
+ ```bash
57
+ # 版本与架构按需调整:x86_64-unknown-linux-gnu / aarch64-unknown-linux-gnu / armv7-unknown-linux-gnueabihf
58
+ VER=0.11.31
59
+ ARCH=armv7-unknown-linux-gnueabihf
60
+
61
+ # ghproxy国内加速下载
62
+ wget https://ghproxy.com/https://github.com/astral-sh/uv/releases/download/$VER/uv-$ARCH.tar.gz
63
+
64
+ # 解压并全局安装
65
+ tar -xf uv-$ARCH.tar.gz
66
+ sudo mv uv uvx /usr/local/bin/
67
+ rm -rf uv-$ARCH.tar.gz
68
+
69
+ # 写入全局配置:清华PyPI源
70
+ mkdir -p ~/.config/uv
71
+ cat > ~/.config/uv/uv.toml <<'EOF'
72
+ [[index]]
73
+ url = "https://pypi.tuna.tsinghua.edu.cn/simple"
74
+ default = true
75
+ EOF
76
+
77
+ # 校验安装
78
+ uv --version
79
+ ```
80
+
81
+ ### 方式2|官方脚本快速安装(外网畅通环境)
82
+ ```bash
83
+ curl -LsSf https://astral.org.cn/uv/install.sh | sh
84
+ source $HOME/.cargo/env
85
+ # 配置国内源
86
+ uv config set index-url https://pypi.tuna.tsinghua.edu.cn/simple
87
+ ```
88
+
89
+ ## 环境准备
90
+ ### 1. 初始化虚拟环境
91
+ ```bash
92
+ # 拉取全部依赖(包含开发工具)
93
+ uv sync --group dev
94
+ # 激活虚拟环境(Linux/macOS)
95
+ source .venv/bin/activate
96
+ ```
97
+
98
+ ### 2. 代码质量与静态检查
99
+ ```bash
100
+ # 自动修复代码规范
101
+ uv run ruff check src tests --fix
102
+ # 统一格式化
103
+ uv run ruff format src tests
104
+ # 静态类型校验
105
+ uv run ty check src
106
+ ```
107
+
108
+ ### 3. 执行单元测试
109
+ ```bash
110
+ # 运行测试并开启覆盖率门禁(阈值80%)
111
+ uv run pytest
112
+ # 生成HTML覆盖率可视化报告
113
+ uv run pytest --cov-report=html:htmlcov
114
+ ```
115
+
116
+ ## 使用示例
117
+ ### 1. 作为Python包导入
118
+ ```python
119
+ import saqds
120
+
121
+ # 获取A股日线数据(纯数字代码,不带.SH/.SZ,SAOIDC 密钥鉴权后直连 ClickHouse)
122
+ df = saqds.get_stock_hist("600519", "20260101", "20260716")
123
+ # 数学计算
124
+ sq_sum = saqds.sum_of_squares([1, 2, 3])
125
+ avg = saqds.mean([2, 4, 6])
126
+ # 公式绘图
127
+ img_path = saqds.plot_custom_formula("x**2 - 4*x")
128
+ ```
129
+
130
+ ### 2. 命令行工具(平方和计算)
131
+ ```bash
132
+ # 普通正数
133
+ uv run saqds 1 2 3 4
134
+ # 传入负数,必须使用 -- 分隔符
135
+ uv run saqds -- -1 2.5
136
+ ```
137
+
138
+ ### 3. 执行scripts下独立脚本
139
+ ```bash
140
+ # 交互式自定义公式绘图
141
+ uv run python scripts/draw_formula.py
142
+ ```
143
+
144
+ ## Ray分布式说明
145
+ - 支持单机本地集群,同时兼容远程Ray集群;
146
+ - 通过环境变量 `RAY_ADDRESS` 指定集群地址接入多机集群;
147
+ - 任务内部自动配置 `PYTHONPATH`,保证容器/服务器环境导入正常。
148
+
149
+ ## 容器构建与运行
150
+ ```bash
151
+ # 构建镜像
152
+ docker build -t saqds-quant:v1.7.5 .
153
+ # 默认执行 saqds CLI(--help)
154
+ docker run --rm saqds-quant:v1.7.5
155
+ # 自定义执行:平方和计算
156
+ docker run --rm saqds-quant:v1.7.5 uv run saqds 1 2 3 4
157
+ ```
158
+
159
+ ## 开发规范
160
+ 1. 新增核心函数在 `src/saqds/` 对应模块实现,并在 `__init__.py` 按需导出;
161
+ 2. 新增API必须配套 `tests/` 单元测试,IO/网络相关使用mock隔离外部依赖;
162
+ 3. scripts仅作为可执行入口,不承载业务核心逻辑;
163
+ 4. 版本迭代变更写入 `CHANGELOG.md`,遵循 Keep a Changelog 格式。
164
+
165
+ ## 联系方式
166
+ 作者: SequArc(序衍量化)
saqds-1.9.5/README.md ADDED
@@ -0,0 +1,147 @@
1
+ # Saqds Quant Toolkit
2
+ 序衍量化内部量化核心工具库
3
+ > Version: v1.7.5 | Python >=3.10 | Package Manager: uv
4
+
5
+ ## 项目简介
6
+ 一套面向投研的轻量化量化底层工具集:
7
+ - 📈 行情接口:Akshare A股日线封装,兼容VNPY数据接口
8
+ - 🧮 数值工具:基础数学函数、量化统计指标
9
+ - 📊 可视化:服务端无GUI环境一元数学公式绘图
10
+ - 💻 命令行:内置CLI工具,快速计算
11
+ - ⚡ 分布式:基于Ray实现多标的批量并发任务
12
+
13
+ > 【版权说明】序衍量化专有代码,未经书面许可禁止外部分发、商用。
14
+
15
+ ## 目录结构
16
+ ```
17
+ ./
18
+ ├── docs/ # mkdocs 文档站
19
+ ├── scripts/ # 独立运行脚本(调试/演示/分布式任务)
20
+ ├── specs/ # 技术设计文档(Spec)
21
+ ├── src/saqds/ # 核心源码包(可import导入)
22
+ ├── tests/ # 单元测试用例
23
+ ├── CHANGELOG.md # 版本变更记录
24
+ ├── Dockerfile # 容器部署文件
25
+ ├── LICENSE.txt # 版权声明
26
+ ├── Makefile # 工程运维(对齐 saqds 平台模版)
27
+ ├── pyproject.toml # uv项目配置、依赖、工具链
28
+ ├── README.md
29
+ ├── .env.example # 环境配置模板(复制为 .env 填写)
30
+ └── uv.lock # 依赖锁文件,保障环境一致性
31
+ ```
32
+
33
+ ## uv 包管理器安装(国内服务器)
34
+ > ⚠️ 请勿执行 `apt install uv`,Ubuntu官方软件源不包含uv
35
+
36
+ ### 方式1|二进制部署(生产服务器推荐)
37
+ ```bash
38
+ # 版本与架构按需调整:x86_64-unknown-linux-gnu / aarch64-unknown-linux-gnu / armv7-unknown-linux-gnueabihf
39
+ VER=0.11.31
40
+ ARCH=armv7-unknown-linux-gnueabihf
41
+
42
+ # ghproxy国内加速下载
43
+ wget https://ghproxy.com/https://github.com/astral-sh/uv/releases/download/$VER/uv-$ARCH.tar.gz
44
+
45
+ # 解压并全局安装
46
+ tar -xf uv-$ARCH.tar.gz
47
+ sudo mv uv uvx /usr/local/bin/
48
+ rm -rf uv-$ARCH.tar.gz
49
+
50
+ # 写入全局配置:清华PyPI源
51
+ mkdir -p ~/.config/uv
52
+ cat > ~/.config/uv/uv.toml <<'EOF'
53
+ [[index]]
54
+ url = "https://pypi.tuna.tsinghua.edu.cn/simple"
55
+ default = true
56
+ EOF
57
+
58
+ # 校验安装
59
+ uv --version
60
+ ```
61
+
62
+ ### 方式2|官方脚本快速安装(外网畅通环境)
63
+ ```bash
64
+ curl -LsSf https://astral.org.cn/uv/install.sh | sh
65
+ source $HOME/.cargo/env
66
+ # 配置国内源
67
+ uv config set index-url https://pypi.tuna.tsinghua.edu.cn/simple
68
+ ```
69
+
70
+ ## 环境准备
71
+ ### 1. 初始化虚拟环境
72
+ ```bash
73
+ # 拉取全部依赖(包含开发工具)
74
+ uv sync --group dev
75
+ # 激活虚拟环境(Linux/macOS)
76
+ source .venv/bin/activate
77
+ ```
78
+
79
+ ### 2. 代码质量与静态检查
80
+ ```bash
81
+ # 自动修复代码规范
82
+ uv run ruff check src tests --fix
83
+ # 统一格式化
84
+ uv run ruff format src tests
85
+ # 静态类型校验
86
+ uv run ty check src
87
+ ```
88
+
89
+ ### 3. 执行单元测试
90
+ ```bash
91
+ # 运行测试并开启覆盖率门禁(阈值80%)
92
+ uv run pytest
93
+ # 生成HTML覆盖率可视化报告
94
+ uv run pytest --cov-report=html:htmlcov
95
+ ```
96
+
97
+ ## 使用示例
98
+ ### 1. 作为Python包导入
99
+ ```python
100
+ import saqds
101
+
102
+ # 获取A股日线数据(纯数字代码,不带.SH/.SZ,SAOIDC 密钥鉴权后直连 ClickHouse)
103
+ df = saqds.get_stock_hist("600519", "20260101", "20260716")
104
+ # 数学计算
105
+ sq_sum = saqds.sum_of_squares([1, 2, 3])
106
+ avg = saqds.mean([2, 4, 6])
107
+ # 公式绘图
108
+ img_path = saqds.plot_custom_formula("x**2 - 4*x")
109
+ ```
110
+
111
+ ### 2. 命令行工具(平方和计算)
112
+ ```bash
113
+ # 普通正数
114
+ uv run saqds 1 2 3 4
115
+ # 传入负数,必须使用 -- 分隔符
116
+ uv run saqds -- -1 2.5
117
+ ```
118
+
119
+ ### 3. 执行scripts下独立脚本
120
+ ```bash
121
+ # 交互式自定义公式绘图
122
+ uv run python scripts/draw_formula.py
123
+ ```
124
+
125
+ ## Ray分布式说明
126
+ - 支持单机本地集群,同时兼容远程Ray集群;
127
+ - 通过环境变量 `RAY_ADDRESS` 指定集群地址接入多机集群;
128
+ - 任务内部自动配置 `PYTHONPATH`,保证容器/服务器环境导入正常。
129
+
130
+ ## 容器构建与运行
131
+ ```bash
132
+ # 构建镜像
133
+ docker build -t saqds-quant:v1.7.5 .
134
+ # 默认执行 saqds CLI(--help)
135
+ docker run --rm saqds-quant:v1.7.5
136
+ # 自定义执行:平方和计算
137
+ docker run --rm saqds-quant:v1.7.5 uv run saqds 1 2 3 4
138
+ ```
139
+
140
+ ## 开发规范
141
+ 1. 新增核心函数在 `src/saqds/` 对应模块实现,并在 `__init__.py` 按需导出;
142
+ 2. 新增API必须配套 `tests/` 单元测试,IO/网络相关使用mock隔离外部依赖;
143
+ 3. scripts仅作为可执行入口,不承载业务核心逻辑;
144
+ 4. 版本迭代变更写入 `CHANGELOG.md`,遵循 Keep a Changelog 格式。
145
+
146
+ ## 联系方式
147
+ 作者: SequArc(序衍量化)
@@ -0,0 +1,101 @@
1
+ [project]
2
+ name = "saqds"
3
+ version = "1.9.5"
4
+ description = "Quant core toolkit: A股行情(SAOIDC密钥鉴权直连ClickHouse)+VNPY数据接口、数学/统计指标、公式可视化绘图、CLI工具、Ray分布式批量任务"
5
+ readme = "README.md"
6
+ # 企业闭源专有软件,非开源协议
7
+ license = { text = "序衍量化 版权所有,未经书面许可禁止外部分发/商用" }
8
+ authors = [
9
+ { name = "SequArc 序衍", email = "dev@sequarc.tech" },
10
+ ]
11
+ requires-python = ">=3.10"
12
+ dependencies = [
13
+ "click>=8.3.2",
14
+ "vnpy[no-gui]>=4.4.0",
15
+ "akshare",
16
+ "ray[default]>=2.55.1",
17
+ "numpy>=1.26",
18
+ "matplotlib>=3.8",
19
+ "clickhouse-connect>=0.8", # 直连 ClickHouse(SAOIDC 密钥鉴权后取数)
20
+ "pandas>=2.0", # DataFrame 处理
21
+ ]
22
+
23
+ [project.urls]
24
+ Homepage = "https://gitlab.dc3.everonquant.net/foundation/python/core"
25
+
26
+ [project.scripts]
27
+ # 全局CLI命令:uv run saqds
28
+ saqds = "saqds.cli:main"
29
+
30
+ [build-system]
31
+ # uv_build 仅支持单个顶级模块;本包含 saqds,用 hatchling 显式声明
32
+ requires = ["hatchling>=1.27"]
33
+ build-backend = "hatchling.build"
34
+
35
+ [tool.hatch.build.targets.wheel]
36
+ packages = ["src/saqds"]
37
+
38
+ [tool.hatch.build.targets.sdist]
39
+ include = ["/src", "/tests", "/scripts"]
40
+
41
+ [dependency-groups]
42
+ # 本地开发、测试、代码规范、二进制打包依赖
43
+ dev = [
44
+ "nuitka>=4.0.8", # Python编译独立二进制程序
45
+ "ruff>=0.15.10", # 代码格式化、静态lint
46
+ "ty>=0.0.29", # 静态类型检查
47
+ "pytest>=7.0", # 单元测试
48
+ "pytest-cov>=4.0", # 代码覆盖率统计
49
+ "flask>=3.1.3",
50
+ "requests>=2.34.2",
51
+ "python-dotenv>=1.2.3",
52
+ "flask-cors>=6.0.5",
53
+ ]
54
+
55
+ [tool.ruff]
56
+ line-length = 120
57
+ target-version = "py311"
58
+ exclude = [
59
+ ".git",
60
+ ".venv",
61
+ "build",
62
+ "dist",
63
+ "output",
64
+ "*.png"
65
+ ]
66
+
67
+ [tool.ruff.lint]
68
+ select = ["E", "F", "I", "B", "C4", "UP", "N", "SIM", "RUF"]
69
+ # E501:允许单行超过120字符(量化长公式/行情参数)
70
+ # RUF001/RUF002/RUF003:允许中文字符串、docstring、中文标点不强制转义
71
+ ignore = ["E501", "RUF001", "RUF002", "RUF003"]
72
+ fixable = ["ALL"]
73
+
74
+ [tool.ruff.format]
75
+ quote-style = "double"
76
+ indent-style = "space"
77
+ line-ending = "auto"
78
+
79
+ [tool.ty.src]
80
+ include = ["src"]
81
+ exclude = ["tests/data", "build", "dist"]
82
+
83
+ [tool.ty.rules]
84
+ unresolved-import = "error"
85
+ index-out-of-bounds = "warn"
86
+ call-non-callable = "error"
87
+
88
+ [tool.ty.environment]
89
+ root = ["src"]
90
+
91
+ [tool.pytest.ini_options]
92
+ testpaths = ["tests"]
93
+ pythonpath = ["src"]
94
+ # 仅统计核心库src/saqds,覆盖率门槛80%
95
+ addopts = "-v --cov=src/saqds --cov-report=term-missing --cov-fail-under=80"
96
+
97
+ [tool.uv]
98
+
99
+ [[tool.uv.index]]
100
+ url = "https://pypi.tuna.tsinghua.edu.cn/simple"
101
+ default = true
@@ -0,0 +1,82 @@
1
+ @echo off
2
+ rem ==============================================================================
3
+ rem saqds Windows one-click build & release | double-click to run
4
+ rem
5
+ rem Flow: enumerate Python 3.10+ -> Nuitka onefile exe per version
6
+ rem -> uv build (wheel + sdist) -> optional twine publish to pypi.org
7
+ rem
8
+ rem Edit the CONFIG section below before use if needed. Works as-is:
9
+ rem * auto-detects installed Python 3.10+ (falls back to 3.12, uv downloads it)
10
+ rem * reuses pyproject.toml version
11
+ rem * build only (no publish) unless SAQDS_PYPI_TOKEN is set
12
+ rem ==============================================================================
13
+ setlocal EnableExtensions
14
+
15
+ cd /d "%~dp0.."
16
+
17
+ rem ------------------------------------------------------------------------------
18
+ rem CONFIG (edit me)
19
+ rem SAQDS_PY_VERSIONS comma list, e.g. 3.10,3.11,3.12 ; empty = auto-detect
20
+ rem SAQDS_VERSION release version, e.g. 1.10.0 ; empty = keep pyproject.toml
21
+ rem SAQDS_PYPI_TOKEN pypi.org API token (pypi-xxxx) ; empty = skip publish
22
+ rem SAQDS_PUBLISH_IF_TOKEN 1 = publish when token above present, 0 = never publish
23
+ rem ------------------------------------------------------------------------------
24
+ set "SAQDS_PY_VERSIONS="
25
+ set "SAQDS_VERSION="
26
+ set "SAQDS_PYPI_TOKEN="
27
+ set "SAQDS_PUBLISH_IF_TOKEN=1"
28
+ rem ------------------------------------------------------------------------------
29
+ rem END OF CONFIG - no need to change anything below
30
+ rem ------------------------------------------------------------------------------
31
+
32
+ echo.
33
+ echo === [1/3] Check prerequisites (uv)
34
+ where uv >nul 2>nul
35
+ if errorlevel 1 (
36
+ echo [..] uv not found, installing via official script...
37
+ powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://astral.sh/uv/install.ps1 | iex"
38
+ set "PATH=%USERPROFILE%\.local\bin;%PATH%"
39
+ where uv >nul 2>nul
40
+ if errorlevel 1 (
41
+ echo [X] uv install failed. Open a NEW terminal and re-run this file.
42
+ pause
43
+ exit /b 1
44
+ )
45
+ )
46
+ for /f "delims=" %%v in ('uv --version') do echo [OK] %%v
47
+
48
+ rem ---- assemble powershell arguments from config ----
49
+ set "PS1=%~dp0build-release-windows.ps1"
50
+ set "ARGS="
51
+ if defined SAQDS_PY_VERSIONS set "ARGS=%ARGS% -PyVersions %SAQDS_PY_VERSIONS%"
52
+ if defined SAQDS_VERSION set "ARGS=%ARGS% -Version %SAQDS_VERSION%"
53
+
54
+ if "%SAQDS_PUBLISH_IF_TOKEN%"=="0" goto nopublish
55
+ if defined SAQDS_PYPI_TOKEN goto dopublish
56
+ echo [i] No SAQDS_PYPI_TOKEN configured - BUILD ONLY (publish skipped)
57
+ goto nopublish
58
+
59
+ :dopublish
60
+ set "PYPI_TOKEN=%SAQDS_PYPI_TOKEN%"
61
+ set "ARGS=%ARGS% -Publish"
62
+ echo [i] PyPI token found - publish to pypi.org ENABLED (confirm inside script)
63
+
64
+ :nopublish
65
+ echo.
66
+ echo === [2/3] Build: multi-version exe + wheel/sdist
67
+ echo Running: powershell -ExecutionPolicy Bypass -File %PS1%%ARGS%
68
+ powershell -NoProfile -ExecutionPolicy Bypass -File "%PS1%"%ARGS%
69
+ set "RC=%ERRORLEVEL%"
70
+
71
+ echo.
72
+ echo === [3/3] Result
73
+ if not "%RC%"=="0" (
74
+ echo [X] Build finished with exit code %RC%. Review messages above.
75
+ pause
76
+ exit /b %RC%
77
+ )
78
+ echo [OK] Done. Artifacts in dist\: saqds-py3xx.exe / saqds.exe / saqds-<version> whl + tar.gz
79
+ echo.
80
+ echo Verify: .\dist\saqds.exe --help
81
+ pause
82
+ exit /b 0