betaquant 0.5.3__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.
- betaquant-0.5.3/.gitea/builder/Dockerfile +121 -0
- betaquant-0.5.3/.gitea/builder/README.md +84 -0
- betaquant-0.5.3/.gitea/workflows/publish.yml +104 -0
- betaquant-0.5.3/.gitignore +82 -0
- betaquant-0.5.3/CHANGELOG.md +8 -0
- betaquant-0.5.3/Cargo.lock +376 -0
- betaquant-0.5.3/Cargo.toml +25 -0
- betaquant-0.5.3/LICENSE +22 -0
- betaquant-0.5.3/PKG-INFO +199 -0
- betaquant-0.5.3/README.md +182 -0
- betaquant-0.5.3/build.rs +585 -0
- betaquant-0.5.3/examples/gtja191/al/__init__.py +131 -0
- betaquant-0.5.3/examples/gtja191/al/alpha191.py +1371 -0
- betaquant-0.5.3/examples/gtja191/al/alpha191_context.py +1 -0
- betaquant-0.5.3/examples/gtja191/alpha191.txt +191 -0
- betaquant-0.5.3/examples/gtja191/main.py +31 -0
- betaquant-0.5.3/examples/quickstart/full_demo.py +298 -0
- betaquant-0.5.3/examples/quickstart/rank.py +18 -0
- betaquant-0.5.3/examples/quickstart/usage.py +100 -0
- betaquant-0.5.3/examples/quickstart/verify_sumif.py +39 -0
- betaquant-0.5.3/examples/wq101/al/__init__.py +114 -0
- betaquant-0.5.3/examples/wq101/al/alpha101.py +703 -0
- betaquant-0.5.3/examples/wq101/al/alpha101_context.py +9 -0
- betaquant-0.5.3/examples/wq101/alpha101.txt +101 -0
- betaquant-0.5.3/examples/wq101/main.py +31 -0
- betaquant-0.5.3/pyproject.toml +40 -0
- betaquant-0.5.3/python/betalib/__init__.py +13 -0
- betaquant-0.5.3/python/betalib/algo/__init__.py +6 -0
- betaquant-0.5.3/python/betalib/algo/algo_gen.py +722 -0
- betaquant-0.5.3/python/betalib/algo/manual.py +25 -0
- betaquant-0.5.3/python/betalib/algo.md +67 -0
- betaquant-0.5.3/python/betalib/context.py +446 -0
- betaquant-0.5.3/python/betalib/lang/__init__.py +4 -0
- betaquant-0.5.3/python/betalib/lang/__main__.py +20 -0
- betaquant-0.5.3/python/betalib/lang/alpha.lark +54 -0
- betaquant-0.5.3/python/betalib/lang/parser.py +3572 -0
- betaquant-0.5.3/python/betalib/lang/to_python.py +319 -0
- betaquant-0.5.3/python/betalib/perf.py +310 -0
- betaquant-0.5.3/python/betalib/transforms.py +76 -0
- betaquant-0.5.3/python/tests/test_grammar.py +26 -0
- betaquant-0.5.3/python/tests/test_rank.py +55 -0
- betaquant-0.5.3/python/tests/test_to_python.py +87 -0
- betaquant-0.5.3/rustfmt.toml +1 -0
- betaquant-0.5.3/src/algo/alpha.rs +143 -0
- betaquant-0.5.3/src/algo/backfill.rs +196 -0
- betaquant-0.5.3/src/algo/context.rs +85 -0
- betaquant-0.5.3/src/algo/cross.rs +431 -0
- betaquant-0.5.3/src/algo/drawdown.rs +236 -0
- betaquant-0.5.3/src/algo/ema.rs +418 -0
- betaquant-0.5.3/src/algo/entropy.rs +197 -0
- betaquant-0.5.3/src/algo/error.rs +21 -0
- betaquant-0.5.3/src/algo/extremum.rs +293 -0
- betaquant-0.5.3/src/algo/group.rs +299 -0
- betaquant-0.5.3/src/algo/internal.rs +78 -0
- betaquant-0.5.3/src/algo/ma.rs +299 -0
- betaquant-0.5.3/src/algo/misc.rs +373 -0
- betaquant-0.5.3/src/algo/mod.rs +87 -0
- betaquant-0.5.3/src/algo/moments.rs +208 -0
- betaquant-0.5.3/src/algo/neutralize.rs +179 -0
- betaquant-0.5.3/src/algo/quantile.rs +250 -0
- betaquant-0.5.3/src/algo/rank.rs +558 -0
- betaquant-0.5.3/src/algo/returns.rs +170 -0
- betaquant-0.5.3/src/algo/rolling.rs +575 -0
- betaquant-0.5.3/src/algo/scan.rs +109 -0
- betaquant-0.5.3/src/algo/series.rs +291 -0
- betaquant-0.5.3/src/algo/sharpe.rs +156 -0
- betaquant-0.5.3/src/algo/slope.rs +338 -0
- betaquant-0.5.3/src/algo/spec.rs +773 -0
- betaquant-0.5.3/src/algo/stats.rs +443 -0
- betaquant-0.5.3/src/algo/stddev.rs +106 -0
- betaquant-0.5.3/src/algo/sum.rs +386 -0
- betaquant-0.5.3/src/algo/zscore.rs +201 -0
- betaquant-0.5.3/src/lib.rs +130 -0
- betaquant-0.5.3/src//345/277/205/350/257/273.md +248 -0
- betaquant-0.5.3/tag_release.py +22 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# syntax=docker/dockerfile:1.7
|
|
2
|
+
#
|
|
3
|
+
# py-alpha-lib 构建环境
|
|
4
|
+
# ----------------------------------------------------------------------------
|
|
5
|
+
# 一切都烤进镜像:工具链 + cargo 依赖 + MSVC CRT/SDK。
|
|
6
|
+
# CI 不挂任何 volume,跑起来就是镜像内自带的状态,没有 docker-in-docker
|
|
7
|
+
# 的挂卷路径解析坑。
|
|
8
|
+
#
|
|
9
|
+
# 镜像内置:
|
|
10
|
+
# - Python 3.11
|
|
11
|
+
# - Rust stable + 三个 target (linux-gnu / linux-musl / windows-msvc)
|
|
12
|
+
# - sccache(编译缓存)
|
|
13
|
+
# - cargo-xwin + 预下载好的 MSVC CRT/SDK(写入 /opt/xwin/xwin/DONE)
|
|
14
|
+
# - maturin[zig] + twine
|
|
15
|
+
# - llvm / clang / lld(提供 llvm-dlltool / llvm-lib / lld-link / clang-cl)
|
|
16
|
+
# - Node.js 20(Gitea Actions / act 跑 actions/checkout 必需)
|
|
17
|
+
#
|
|
18
|
+
# 合规提示:
|
|
19
|
+
# 镜像里包含 Microsoft VC++ Build Tools 和 Windows SDK 文件,许可证见
|
|
20
|
+
# https://go.microsoft.com/fwlink/?LinkId=2086102
|
|
21
|
+
# 按 EULA 这些文件不得再分发到第三方。**只能推到对内可信的 registry**
|
|
22
|
+
# (内网 Gitea / Harbor),不要推到 Docker Hub 等公网仓库。
|
|
23
|
+
# ----------------------------------------------------------------------------
|
|
24
|
+
|
|
25
|
+
FROM python:3.11-slim-bookworm
|
|
26
|
+
|
|
27
|
+
LABEL org.opencontainers.image.title="py-alpha-lib builder" \
|
|
28
|
+
org.opencontainers.image.description="Pre-baked toolchain for building py-alpha-lib wheels (manylinux/musllinux/win_amd64) + sdist"
|
|
29
|
+
|
|
30
|
+
ENV DEBIAN_FRONTEND=noninteractive \
|
|
31
|
+
LANG=C.UTF-8 \
|
|
32
|
+
LC_ALL=C.UTF-8 \
|
|
33
|
+
PYTHONDONTWRITEBYTECODE=1 \
|
|
34
|
+
PYTHONUNBUFFERED=1
|
|
35
|
+
|
|
36
|
+
ENV RUSTUP_HOME=/usr/local/rustup \
|
|
37
|
+
CARGO_HOME=/usr/local/cargo \
|
|
38
|
+
PATH=/usr/local/cargo/bin:$PATH \
|
|
39
|
+
CARGO_INCREMENTAL=0 \
|
|
40
|
+
RUSTC_WRAPPER=sccache \
|
|
41
|
+
SCCACHE_DIR=/opt/sccache \
|
|
42
|
+
SCCACHE_CACHE_SIZE=2G \
|
|
43
|
+
XWIN_CACHE_DIR=/opt/xwin \
|
|
44
|
+
XWIN_ACCEPT_LICENSE=1 \
|
|
45
|
+
RUSTFLAGS="-C target-feature=+sse4.2 -C target-feature=+avx2 -C target-feature=+pclmulqdq"
|
|
46
|
+
|
|
47
|
+
# ---- 系统依赖 + LLVM 工具链(cargo-xwin 需要 llvm-dlltool / lld-link 等) ----
|
|
48
|
+
RUN apt-get update \
|
|
49
|
+
&& apt-get install -y --no-install-recommends \
|
|
50
|
+
build-essential \
|
|
51
|
+
ca-certificates \
|
|
52
|
+
curl \
|
|
53
|
+
git \
|
|
54
|
+
gnupg \
|
|
55
|
+
pkg-config \
|
|
56
|
+
xz-utils \
|
|
57
|
+
llvm \
|
|
58
|
+
clang \
|
|
59
|
+
lld \
|
|
60
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
61
|
+
|
|
62
|
+
# ---- Node.js(actions/checkout@v4 等 JS action 必需) ----
|
|
63
|
+
ARG NODE_MAJOR=20
|
|
64
|
+
RUN set -eux; \
|
|
65
|
+
curl -fsSL "https://deb.nodesource.com/setup_${NODE_MAJOR}.x" | bash -; \
|
|
66
|
+
apt-get install -y --no-install-recommends nodejs; \
|
|
67
|
+
rm -rf /var/lib/apt/lists/*; \
|
|
68
|
+
node --version; \
|
|
69
|
+
npm --version
|
|
70
|
+
|
|
71
|
+
# ---- Rust stable + 三个 target ----
|
|
72
|
+
ARG RUST_TOOLCHAIN=stable
|
|
73
|
+
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \
|
|
74
|
+
| sh -s -- -y --default-toolchain "${RUST_TOOLCHAIN}" --profile minimal --no-modify-path \
|
|
75
|
+
&& rustup target add x86_64-unknown-linux-gnu \
|
|
76
|
+
&& rustup target add x86_64-unknown-linux-musl \
|
|
77
|
+
&& rustup target add x86_64-pc-windows-msvc \
|
|
78
|
+
&& rustc --version
|
|
79
|
+
|
|
80
|
+
# ---- sccache(mozilla 官方静态二进制) ----
|
|
81
|
+
ARG SCCACHE_VERSION=v0.10.0
|
|
82
|
+
RUN set -eux; \
|
|
83
|
+
curl -fL -o /tmp/sccache.tgz \
|
|
84
|
+
"https://github.com/mozilla/sccache/releases/download/${SCCACHE_VERSION}/sccache-${SCCACHE_VERSION}-x86_64-unknown-linux-musl.tar.gz"; \
|
|
85
|
+
tar -xzf /tmp/sccache.tgz -C /tmp; \
|
|
86
|
+
install -m 0755 \
|
|
87
|
+
"/tmp/sccache-${SCCACHE_VERSION}-x86_64-unknown-linux-musl/sccache" \
|
|
88
|
+
/usr/local/cargo/bin/sccache; \
|
|
89
|
+
rm -rf /tmp/sccache*; \
|
|
90
|
+
sccache --version
|
|
91
|
+
|
|
92
|
+
# ---- maturin (含 zig) + twine ----
|
|
93
|
+
RUN python -m pip install --no-cache-dir --upgrade pip \
|
|
94
|
+
&& python -m pip install --no-cache-dir \
|
|
95
|
+
"maturin[zig]>=1.10,<2.0" \
|
|
96
|
+
twine \
|
|
97
|
+
&& maturin --version \
|
|
98
|
+
&& twine --version
|
|
99
|
+
|
|
100
|
+
# ---- cargo-xwin(windows-msvc 交叉编译驱动) ----
|
|
101
|
+
RUN cargo install --locked cargo-xwin --root /usr/local/cargo \
|
|
102
|
+
&& ls -l /usr/local/cargo/bin/cargo-xwin
|
|
103
|
+
|
|
104
|
+
# ---- 预下载并解包 MSVC CRT + Windows SDK 到 /opt/xwin/xwin/ ----
|
|
105
|
+
# cargo-xwin 命中缓存的关键文件是 $XWIN_CACHE_DIR/xwin/DONE。
|
|
106
|
+
# 直接把它写到镜像里 /opt/xwin,CI 不挂卷直接命中。
|
|
107
|
+
#
|
|
108
|
+
# 重要:cargo-xwin 命中缓存要求“请求架构 ⊆ DONE 中已下载架构”。
|
|
109
|
+
# 这里只 splat x86_64,所以 CI 调用 cargo-xwin 时也必须强制
|
|
110
|
+
# XWIN_ARCH=x86_64(默认是 [x86_64, aarch64]),否则会重新下载。
|
|
111
|
+
# 这条 ENV 不在镜像里,而是在 publish.yml 的 job env 中设置,
|
|
112
|
+
# 这样以后想换架构组合时只改一处即可,不需要重 build 镜像。
|
|
113
|
+
RUN set -eux; \
|
|
114
|
+
mkdir -p /opt/xwin; \
|
|
115
|
+
cargo xwin cache xwin --xwin-arch x86_64; \
|
|
116
|
+
test -f /opt/xwin/xwin/DONE; \
|
|
117
|
+
du -sh /opt/xwin; \
|
|
118
|
+
ls /opt/xwin/xwin
|
|
119
|
+
|
|
120
|
+
WORKDIR /work
|
|
121
|
+
CMD ["bash"]
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# py-alpha-lib builder image
|
|
2
|
+
|
|
3
|
+
把原来 `publish.yml` 里每次 CI 都重装一遍的 Rust 工具链、sccache、cargo-xwin、
|
|
4
|
+
maturin、twine、llvm 等全部烤进一个镜像,CI 只负责跑 `maturin build` 和
|
|
5
|
+
`twine upload`,构建更快、流程更短、跨 workflow 也能复用。
|
|
6
|
+
|
|
7
|
+
镜像内容见同目录 `Dockerfile`。
|
|
8
|
+
|
|
9
|
+
## 一、构建并推送镜像
|
|
10
|
+
|
|
11
|
+
在能访问 docker.io 的机器上一次性构建好,再推到你自建的 Gitea 容器仓库
|
|
12
|
+
(或任意私有 registry)。下面以 `my-gitea` 上的命名空间 `infra` 为例:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
cd .gitea/builder
|
|
16
|
+
|
|
17
|
+
# 1) 构建(如需指定 rust 版本可加 --build-arg RUST_TOOLCHAIN=1.82.0)
|
|
18
|
+
docker build -t my-gitea/infra/py-alpha-builder:latest .
|
|
19
|
+
|
|
20
|
+
# 2) 登录并推送
|
|
21
|
+
docker login my-gitea
|
|
22
|
+
docker push my-gitea/infra/py-alpha-builder:latest
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
> 如果暂时没有私有 registry,也可以直接在 act_runner 主机上 `docker build`
|
|
26
|
+
> 出本地镜像,然后让 workflow 里 `container.image` 指向同名 tag,
|
|
27
|
+
> 配合 `act_runner` 的 `pull: false`(或 `force_pull: false`)即可使用本地镜像。
|
|
28
|
+
|
|
29
|
+
## 二、CI 中如何使用
|
|
30
|
+
|
|
31
|
+
`publish.yml` 里把 `container.image` 换成这个镜像就行:
|
|
32
|
+
|
|
33
|
+
```yaml
|
|
34
|
+
container:
|
|
35
|
+
image: my-gitea/infra/py-alpha-builder:latest
|
|
36
|
+
options: --add-host=my-gitea:host-gateway
|
|
37
|
+
volumes:
|
|
38
|
+
# 真正“可变”的缓存仍然挂在宿主机,跨 workflow 复用
|
|
39
|
+
- /opt/act_cache/cargo-registry:/usr/local/cargo/registry
|
|
40
|
+
- /opt/act_cache/cargo-git:/usr/local/cargo/git
|
|
41
|
+
- /opt/act_cache/sccache:/opt/sccache
|
|
42
|
+
- /opt/act_cache/xwin:/opt/xwin
|
|
43
|
+
- /opt/act_cache/target:/work/target
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
宿主机一次性准备:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
sudo mkdir -p \
|
|
50
|
+
/opt/act_cache/cargo-registry \
|
|
51
|
+
/opt/act_cache/cargo-git \
|
|
52
|
+
/opt/act_cache/sccache \
|
|
53
|
+
/opt/act_cache/xwin \
|
|
54
|
+
/opt/act_cache/target
|
|
55
|
+
sudo chmod -R 0777 /opt/act_cache
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
并在 `act_runner` 的 `config.yaml` 里允许这些挂载:
|
|
59
|
+
|
|
60
|
+
```yaml
|
|
61
|
+
container:
|
|
62
|
+
valid_volumes:
|
|
63
|
+
- /opt/act_cache
|
|
64
|
+
- /opt/act_cache/*
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## 三、本地手动验证镜像
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
docker run --rm -it \
|
|
71
|
+
-v "$PWD":/work \
|
|
72
|
+
-v /opt/act_cache/sccache:/opt/sccache \
|
|
73
|
+
-v /opt/act_cache/xwin:/opt/xwin \
|
|
74
|
+
my-gitea/infra/py-alpha-builder:latest bash -lc '
|
|
75
|
+
maturin build --release --out dist \
|
|
76
|
+
--target x86_64-unknown-linux-gnu --zig --compatibility manylinux_2_17 &&
|
|
77
|
+
maturin build --release --out dist \
|
|
78
|
+
--target x86_64-unknown-linux-musl --zig --compatibility musllinux_1_2 &&
|
|
79
|
+
maturin build --release --out dist \
|
|
80
|
+
--target x86_64-pc-windows-msvc &&
|
|
81
|
+
maturin sdist --out dist &&
|
|
82
|
+
ls -la dist
|
|
83
|
+
'
|
|
84
|
+
```
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
name: Publish
|
|
2
|
+
|
|
3
|
+
# 在 Gitea Actions 上构建 Linux + Windows wheel + sdist,发布到公网 PyPI。
|
|
4
|
+
# 包名:betalib。
|
|
5
|
+
#
|
|
6
|
+
# 工具链 + 所有缓存都烤进了 .gitea/builder/Dockerfile 对应的镜像里:
|
|
7
|
+
# - rustup / 三个 target / sccache / maturin[zig] / twine / llvm
|
|
8
|
+
# - cargo-xwin + 预下载的 MSVC CRT/SDK(DONE 标记已就位)
|
|
9
|
+
# - cargo install 时拉取的依赖
|
|
10
|
+
#
|
|
11
|
+
# 所以这里不挂任何 volume,CI 起来就是镜像里自带的状态,没有
|
|
12
|
+
# docker-in-docker 挂卷路径解析问题;代价是 cargo target 增量编译
|
|
13
|
+
# 不跨 workflow 复用,每次 release 全量编译一次(~1 分钟可接受)。
|
|
14
|
+
#
|
|
15
|
+
# 触发:
|
|
16
|
+
# - push v* tag
|
|
17
|
+
# - workflow_dispatch(只构建不发布)
|
|
18
|
+
#
|
|
19
|
+
# Secrets:
|
|
20
|
+
# PYPI_API_TOKEN PyPI 项目级 API Token,前缀 "pypi-..."
|
|
21
|
+
|
|
22
|
+
on:
|
|
23
|
+
push:
|
|
24
|
+
tags:
|
|
25
|
+
- 'v*'
|
|
26
|
+
workflow_dispatch:
|
|
27
|
+
|
|
28
|
+
permissions:
|
|
29
|
+
contents: read
|
|
30
|
+
|
|
31
|
+
jobs:
|
|
32
|
+
build-and-publish:
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
defaults:
|
|
35
|
+
run:
|
|
36
|
+
# act/Gitea Actions 默认用 sh(dash) 跑 `run:`,dash 不认识
|
|
37
|
+
# `set -o pipefail`;强制 bash。镜像里有 bash。
|
|
38
|
+
shell: bash
|
|
39
|
+
env:
|
|
40
|
+
# 让 CI 容器里的 cargo-xwin 只请求 x86_64,匹配镜像里 DONE 标记
|
|
41
|
+
# 写入的架构(Dockerfile 里 cargo xwin cache xwin --xwin-arch x86_64)。
|
|
42
|
+
# 否则 cargo-xwin 默认 [x86_64,aarch64],与 DONE 不一致 →
|
|
43
|
+
# 重新下载整套 MSVC CRT/SDK(约 40 分钟)。
|
|
44
|
+
XWIN_ARCH: x86_64
|
|
45
|
+
container:
|
|
46
|
+
# 由 .gitea/builder/Dockerfile 构建并推送,里面已经预装好工具链 + SDK。
|
|
47
|
+
image: my-gitea/infra/py-alpha-builder:latest
|
|
48
|
+
options: --add-host=my-gitea:host-gateway
|
|
49
|
+
|
|
50
|
+
steps:
|
|
51
|
+
- uses: https://gitea.com/actions/checkout@v4
|
|
52
|
+
|
|
53
|
+
- name: Toolchain sanity check
|
|
54
|
+
run: |
|
|
55
|
+
set -euxo pipefail
|
|
56
|
+
python --version
|
|
57
|
+
rustc --version
|
|
58
|
+
cargo --version
|
|
59
|
+
sccache --version
|
|
60
|
+
cargo xwin --version || cargo-xwin --version
|
|
61
|
+
maturin --version
|
|
62
|
+
twine --version
|
|
63
|
+
which llvm-dlltool lld-link clang-cl || true
|
|
64
|
+
# 确认镜像内已有 MSVC CRT/SDK,跳过下载
|
|
65
|
+
test -f /opt/xwin/xwin/DONE && echo "✅ MSVC CRT/SDK ready" \
|
|
66
|
+
|| echo "⚠️ cold xwin cache, will download"
|
|
67
|
+
|
|
68
|
+
- name: Build manylinux wheel
|
|
69
|
+
run: |
|
|
70
|
+
maturin build --release --out dist \
|
|
71
|
+
--target x86_64-unknown-linux-gnu \
|
|
72
|
+
--zig \
|
|
73
|
+
--compatibility manylinux_2_17 \
|
|
74
|
+
--interpreter "$(which python)"
|
|
75
|
+
|
|
76
|
+
- name: Build musllinux wheel
|
|
77
|
+
run: |
|
|
78
|
+
maturin build --release --out dist \
|
|
79
|
+
--target x86_64-unknown-linux-musl \
|
|
80
|
+
--zig \
|
|
81
|
+
--compatibility musllinux_1_2 \
|
|
82
|
+
--interpreter "$(which python)"
|
|
83
|
+
|
|
84
|
+
- name: Build Windows wheel (cargo-xwin, win_amd64 MSVC)
|
|
85
|
+
run: |
|
|
86
|
+
maturin build --release --out dist \
|
|
87
|
+
--target x86_64-pc-windows-msvc \
|
|
88
|
+
--interpreter "$(which python)"
|
|
89
|
+
|
|
90
|
+
- name: Build sdist
|
|
91
|
+
run: maturin sdist --out dist
|
|
92
|
+
|
|
93
|
+
- name: sccache stats
|
|
94
|
+
run: sccache --show-stats || true
|
|
95
|
+
|
|
96
|
+
- name: List built artifacts
|
|
97
|
+
run: ls -la dist
|
|
98
|
+
|
|
99
|
+
- name: Upload to PyPI
|
|
100
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
101
|
+
env:
|
|
102
|
+
TWINE_USERNAME: __token__
|
|
103
|
+
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
|
104
|
+
run: python -m twine upload --verbose --non-interactive --skip-existing dist/*
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/target
|
|
2
|
+
|
|
3
|
+
# Byte-compiled / optimized / DLL files
|
|
4
|
+
__pycache__/
|
|
5
|
+
.pytest_cache/
|
|
6
|
+
*.py[cod]
|
|
7
|
+
|
|
8
|
+
# C extensions
|
|
9
|
+
*.so
|
|
10
|
+
|
|
11
|
+
# Distribution / packaging
|
|
12
|
+
.Python
|
|
13
|
+
.venv/
|
|
14
|
+
env/
|
|
15
|
+
bin/
|
|
16
|
+
build/
|
|
17
|
+
develop-eggs/
|
|
18
|
+
dist/
|
|
19
|
+
eggs/
|
|
20
|
+
lib/
|
|
21
|
+
lib64/
|
|
22
|
+
parts/
|
|
23
|
+
sdist/
|
|
24
|
+
var/
|
|
25
|
+
include/
|
|
26
|
+
man/
|
|
27
|
+
venv/
|
|
28
|
+
*.egg-info/
|
|
29
|
+
.installed.cfg
|
|
30
|
+
*.egg
|
|
31
|
+
|
|
32
|
+
# Installer logs
|
|
33
|
+
pip-log.txt
|
|
34
|
+
pip-delete-this-directory.txt
|
|
35
|
+
pip-selfcheck.json
|
|
36
|
+
|
|
37
|
+
# Unit test / coverage reports
|
|
38
|
+
htmlcov/
|
|
39
|
+
.tox/
|
|
40
|
+
.coverage
|
|
41
|
+
.cache
|
|
42
|
+
nosetests.xml
|
|
43
|
+
coverage.xml
|
|
44
|
+
|
|
45
|
+
# Translations
|
|
46
|
+
*.mo
|
|
47
|
+
|
|
48
|
+
# Mr Developer
|
|
49
|
+
.mr.developer.cfg
|
|
50
|
+
.project
|
|
51
|
+
.pydevproject
|
|
52
|
+
|
|
53
|
+
# Rope
|
|
54
|
+
.ropeproject
|
|
55
|
+
|
|
56
|
+
# Django stuff:
|
|
57
|
+
*.log
|
|
58
|
+
*.pot
|
|
59
|
+
|
|
60
|
+
.DS_Store
|
|
61
|
+
|
|
62
|
+
# Sphinx documentation
|
|
63
|
+
docs/_build/
|
|
64
|
+
|
|
65
|
+
# PyCharm
|
|
66
|
+
.idea/
|
|
67
|
+
|
|
68
|
+
# VSCode
|
|
69
|
+
.vscode/
|
|
70
|
+
|
|
71
|
+
# Pyenv
|
|
72
|
+
.python-version
|
|
73
|
+
|
|
74
|
+
uv.lock
|
|
75
|
+
dataPerformance.*
|
|
76
|
+
|
|
77
|
+
.cargo/
|
|
78
|
+
|
|
79
|
+
# mid-build files
|
|
80
|
+
al_alpha101.csv
|
|
81
|
+
al_timing.csv
|
|
82
|
+
comparison_results.csv
|