A standard C/C++ native extension template for Python stream pusher plugins.
Project description
pusher
pusher 是一个基于 FFmpeg SDK 二次开发的 Python C/C++ 原生转推插件。默认引擎是 libav,直接链接本项目内的 include/ 与 lib/,在当前 Python 进程内启动 C++ worker 线程完成转推,不需要为每路流启动一个 ffmpeg 命令进程。
完整 SDK 方法、参数、默认值、环境变量和 CLI 说明见 SDK_API.md。
它适合 -c copy 这类复制转推场景,例如:
ffmpeg -rtsp_transport tcp -i rtsp://192.168.0.206:8554/av0_0 \
-c copy -f flv rtmp://192.168.0.138:1935/live/detect_1500
在本项目中对应为:
from pusher import Pusher
pusher = Pusher(engine="libav", loop=False, realtime=False)
pusher.start(
"rtsp://192.168.0.206:8554/av0_0",
"rtmp://192.168.0.138:1935/live/detect_1500",
)
引擎说明
libav:默认引擎。使用 FFmpeg SDK 在进程内 remux 转推,适合 RTSP/MP4/HTTP/SRT 输入转 RTMP/RTSP/SRT/RTP 输出。ffmpeg:兼容模式。启动外部ffmpeg命令进程,便于对比排错。stream_push:外部 C++ 程序模式,主要用于 WHIP/WebRTC。
100 路复制转推时建议使用 libav。每路流是一个 C++ worker 线程,不会产生 100 个 ffmpeg 子进程。
目录结构
pusher-py/
├── include/
│ ├── pusher/ # 本项目 C++ 头文件
│ ├── libavformat/ # FFmpeg SDK 头文件
│ ├── libavcodec/
│ └── libavutil/
├── src/pusher/
│ ├── _native.cpp # CPython C API 绑定层
│ ├── pusher.cpp # libav 转推和进程兼容模式
│ ├── url_utils.c # 协议识别
│ ├── cli.py # 命令行工具
│ └── __init__.py
├── examples/basic_usage.py
├── lib/ # FFmpeg 动态库
├── scripts/build_ffmpeg.sh # 从源码自动编译 FFmpeg SDK
├── third_party/FFmpeg/ # 内置 FFmpeg 源码
├── tests/test_basic.py
├── pyproject.toml
└── setup.py
SDK 依赖
开发仓库内可放置 FFmpeg SDK 文件:
include/libavformat
include/libavcodec
include/libavutil
lib/libavformat.so
lib/libavcodec.so
lib/libavutil.so
third_party/FFmpeg
PyPI 发布包不包含 third_party/FFmpeg 全量源码,也不包含本机编译出的 lib/*.so 构建产物。源码安装时需要提前准备本地 FFmpeg SDK,或从 GitHub 仓库获取完整源码后执行构建。
构建顺序:
- 如果
lib/libavformat.so已存在,直接使用本地动态库。 - 如果本地动态库不存在,
setup.py会调用scripts/build_ffmpeg.sh,从third_party/FFmpeg自动编译共享库并安装到本项目include/、lib/。
构建脚本不会读取 /usr/local/ffmpeg,也不要求用户提前安装或编译 FFmpeg。
自动编译采用最小 FFmpeg SDK 配置,主要启用 avformat、avcodec、avutil 以及 RTSP/RTMP/RTP/HTTP/TCP/UDP/文件协议和常见 muxer/demuxer。目标是 copy/remux 转推,不包含 ffmpeg/ffprobe 命令行程序。
CI 发布平台
GitHub Actions 会从仓库内的 third_party/FFmpeg 自动构建 FFmpeg SDK,再构建 Python wheel。PyPI wheel 不包含 third_party/FFmpeg 源码;Linux wheel 会携带运行所需的 FFmpeg .so 动态库。
当前自动发布目标是 Linux x86_64、aarch64、armv7l,以及 Windows x86、x64、ARM64。Linux 使用 scripts/build_ffmpeg.sh,Windows 使用 MSVC + MSYS2 执行 scripts/build_ffmpeg.ps1 并产出 .lib/.dll SDK。RK 系列、树莓派、香橙派等开发板通常使用 aarch64 64 位系统或 armv7l 32 位系统;板载硬编解码能力需要单独的设备镜像/系统库适配,不包含在通用 PyPI wheel 中。
安装与构建
cd /root/workspace/ms-fish-recg-pro/pusher-py
python -m pip install -U pip setuptools wheel
python setup.py build_ext --inplace --force
开发安装:
python -m pip install -e ".[dev]"
验证导入:
PYTHONPATH=src python -c "from pusher import Pusher; print(Pusher)"
Python 使用示例
RTSP 转 RTMP
import time
from pusher import Pusher
pusher = Pusher(
engine="libav",
log_path="pusher.log",
loop=False,
realtime=False,
timeout_ms=5000,
)
pusher.start(
"rtsp://192.168.0.206:8554/av0_0",
"rtmp://192.168.0.138:1935/live/detect_1500",
)
print(pusher.status())
while pusher.is_running:
time.sleep(5)
print(pusher.status())
注意:start() 会启动后台 C++ worker 线程并立即返回,业务进程需要保持运行。脚本如果打印一次状态后直接退出,Pusher 对象析构会停止转推。
RTSP 转 RTMP 带鉴权地址
import time
from pusher import Pusher, build_output_url
output_url = build_output_url(
protocol="rtmp",
host="192.168.0.138",
app="live",
stream="test",
secret="557ea19cf905454bad9dc988d0c6a5g1",
)
pusher = Pusher(engine="libav", loop=False, realtime=False)
pusher.start("rtsp://192.168.0.206:8554/av0_0", output_url)
try:
while pusher.is_running:
print(pusher.status())
time.sleep(5)
finally:
pusher.stop(3000)
生成的地址:
rtmp://192.168.0.138:1935/live/test?secret=557ea19cf905454bad9dc988d0c6a5g1
本地 MP4 循环推 RTMP
from pusher import Pusher
pusher = Pusher(engine="libav", loop=True, realtime=True)
pusher.start("sample.mp4", "rtmp://127.0.0.1:1935/live/test")
本地 MP4 单次推 RTMP
from pusher import Pusher
pusher = Pusher(engine="libav", loop=False, realtime=True)
pusher.start("sample.mp4", "rtmp://127.0.0.1:1935/live/test")
exit_code = pusher.wait(timeout_ms=-1)
print("exit:", exit_code)
RTSP 转 RTSP
from pusher import Pusher, build_output_url
output_url = build_output_url(
protocol="rtsp",
host="192.168.0.138",
app="live",
stream="detect_1500",
port=8554,
)
pusher = Pusher(engine="libav", loop=False, realtime=False)
pusher.start("rtsp://192.168.0.206:8554/av0_0", output_url)
print(pusher.status())
RTSP 转 SRT
from pusher import Pusher, build_output_url
output_url = build_output_url(
protocol="srt",
host="192.168.0.138",
app="live",
stream="detect_1500",
port=10080,
)
pusher = Pusher(engine="libav", loop=False, realtime=False)
pusher.start("rtsp://192.168.0.206:8554/av0_0", output_url)
print(pusher.status())
SRT 需要当前 FFmpeg SDK 编译时启用 srt 协议;默认脚本未启用外部 libsrt 依赖。
RTSP 转 RTP
from pusher import Pusher
pusher = Pusher(engine="libav", loop=False, realtime=False)
pusher.start(
"rtsp://192.168.0.206:8554/av0_0",
"rtp://192.168.0.138:5004",
)
print(pusher.status())
MP4 推 WHIP/WebRTC
WHIP 不走 FFmpeg SDK muxer,必须使用 stream_push 引擎。stream_push_path 需要指向已经编译好的 stream_push 可执行文件,或确保它在 PATH 中。
import time
from pusher import Pusher, build_output_url
output_url = build_output_url(
protocol="whip",
host="192.168.0.138",
app="live",
stream="test",
secret="replace-me",
port=1985,
)
pusher = Pusher(
engine="stream_push",
stream_push_path="/root/workspace/ms-fish-recg-pro/whip-push-demo/build/stream_push",
loop=True,
bitrate=2_000_000,
)
pusher.start("sample.mp4", output_url)
try:
while pusher.is_running:
print(pusher.status())
time.sleep(5)
finally:
pusher.stop(3000)
生成的 WHIP 地址格式:
http://192.168.0.138:1985/rtc/v1/whip/?app=live&stream=test&secret=replace-me
摄像头推 WHIP/WebRTC
from pusher import Pusher, build_output_url
output_url = build_output_url(
protocol="whip",
host="192.168.0.138",
app="live",
stream="camera0",
port=1985,
)
pusher = Pusher(
engine="stream_push",
stream_push_path="/root/workspace/ms-fish-recg-pro/whip-push-demo/build/stream_push",
width=1280,
height=720,
fps=30,
bitrate=2_000_000,
)
pusher.start("/dev/video0", output_url)
print(pusher.status())
使用 ffmpeg 兼容模式
from pusher import Pusher
pusher = Pusher(
engine="ffmpeg",
ffmpeg_path="ffmpeg",
loop=False,
realtime=False,
)
pusher.start(
"rtsp://192.168.0.206:8554/av0_0",
"rtmp://192.168.0.138:1935/live/detect_1500",
)
print(pusher.status())
ffmpeg 模式会启动外部进程,只建议用于对比排错、摄像头采集或需要转码的临时场景。
停止与等待
exit_code = pusher.wait(timeout_ms=10_000)
if exit_code is None:
pusher.stop(timeout_ms=3000)
多路转推示例
from pusher import Pusher
tasks = []
for i in range(100):
p = Pusher(name=f"stream-{i}", engine="libav", loop=False, realtime=False)
p.start(
f"rtsp://192.168.0.{100 + i}:8554/av0_0",
f"rtmp://192.168.0.138:1935/live/detect_{i}",
)
tasks.append(p)
try:
for p in tasks:
print(p.status())
finally:
for p in tasks:
p.stop()
协议识别和 URL 构造
from pusher import build_output_url, detect_protocol, version
print(version())
print(detect_protocol("rtmp://192.168.0.138:1935/live/test"))
for protocol in ["rtmp", "rtsp", "srt", "rtp", "whip"]:
print(protocol, build_output_url(protocol, "192.168.0.138", stream="demo"))
命令行工具
RTSP 转 RTMP
PYTHONPATH=src python -m pusher.cli push \
rtsp://192.168.0.206:8554/av0_0 \
rtmp://192.168.0.138:1935/live/detect_1500 \
--engine libav \
--no-loop \
--no-realtime \
--log-path pusher.log \
--status-interval 5
RTSP 转 RTMP 预览
PYTHONPATH=src python -m pusher.cli preview \
rtsp://192.168.0.206:8554/av0_0 \
rtmp://192.168.0.138:1935/live/detect_1500 \
--engine libav \
--no-loop \
--no-realtime
本地 MP4 推 RTMP
PYTHONPATH=src python -m pusher.cli push \
sample.mp4 \
rtmp://127.0.0.1:1935/live/test \
--engine libav \
--status-interval 5
RTSP 转 RTSP
PYTHONPATH=src python -m pusher.cli push \
rtsp://192.168.0.206:8554/av0_0 \
rtsp://192.168.0.138:8554/live/detect_1500 \
--engine libav \
--no-loop \
--no-realtime
RTSP 转 SRT
PYTHONPATH=src python -m pusher.cli push \
rtsp://192.168.0.206:8554/av0_0 \
'srt://192.168.0.138:10080?streamid=live/detect_1500' \
--engine libav \
--no-loop \
--no-realtime
RTSP 转 RTP
PYTHONPATH=src python -m pusher.cli push \
rtsp://192.168.0.206:8554/av0_0 \
rtp://192.168.0.138:5004 \
--engine libav \
--no-loop \
--no-realtime
MP4 推 WHIP/WebRTC
PYTHONPATH=src python -m pusher.cli push \
sample.mp4 \
'http://192.168.0.138:1985/rtc/v1/whip/?app=live&stream=test&secret=replace-me' \
--engine stream_push \
--stream-push-path /root/workspace/ms-fish-recg-pro/whip-push-demo/build/stream_push \
--status-interval 5
摄像头推 WHIP/WebRTC
PYTHONPATH=src python -m pusher.cli push \
/dev/video0 \
'http://192.168.0.138:1985/rtc/v1/whip/?app=live&stream=camera0' \
--engine stream_push \
--stream-push-path /root/workspace/ms-fish-recg-pro/whip-push-demo/build/stream_push \
--width 1280 \
--height 720 \
--fps 30 \
--bitrate 2000000 \
--status-interval 5
ffmpeg 兼容模式
PYTHONPATH=src python -m pusher.cli push \
rtsp://192.168.0.206:8554/av0_0 \
rtmp://192.168.0.138:1935/live/detect_1500 \
--engine ffmpeg \
--ffmpeg-path ffmpeg \
--no-loop \
--no-realtime
构造和识别 URL
PYTHONPATH=src python -m pusher.cli build-url rtmp 192.168.0.138 \
--app live \
--stream test \
--secret 557ea19cf905454bad9dc988d0c6a5g1
PYTHONPATH=src python -m pusher.cli build-url whip 192.168.0.138 \
--app live \
--stream test \
--secret replace-me \
--port 1985
PYTHONPATH=src python -m pusher.cli detect \
'http://192.168.0.138:1985/rtc/v1/whip/?app=live&stream=test'
安装后也可使用:
pusher push input output_url --engine libav
pusher preview input output_url --json
pusher build-url rtmp 192.168.0.138 --stream demo
支持协议
输出协议映射:
| 输出 URL | 推荐引擎 | 输出封装/程序 |
|---|---|---|
rtmp:// / rtmps:// |
libav |
flv |
rtsp:// / rtsps:// |
libav |
rtsp |
srt:// |
libav |
mpegts,要求当前 FFmpeg SDK 编译时启用 srt 协议 |
rtp:// |
libav |
rtp |
http://.../rtc/v1/whip/ / https://.../rtc/v1/whip/ |
stream_push |
WHIP/WebRTC |
WHIP/WebRTC 不属于 FFmpeg 常规 muxer 输出,本项目使用 stream_push 外部引擎处理。
参数说明
| 参数 | 默认值 | 说明 |
|---|---|---|
engine |
auto |
auto 会对非 WHIP 输出选择 libav |
log_path |
空 | libav 运行日志 |
loop |
True |
本地文件读到 EOF 后是否循环 |
realtime |
True |
本地文件是否按媒体时间戳限速 |
timeout_ms |
5000 |
网络打开/停止等待超时 |
analyzeduration_us |
10000000 |
RTSP/网络流探测时长,单位微秒 |
probesize |
50000000 |
RTSP/网络流探测数据量,摄像头首包缺少尺寸时可增大 |
ffmpeg_path |
ffmpeg |
仅 engine="ffmpeg" 使用 |
stream_push_path |
stream_push |
仅 engine="stream_push" 使用 |
测试
PYTHONPATH=src python -m pusher.cli preview sample.mp4 rtmp://127.0.0.1/live/test
PYTHONPATH=src python examples/basic_usage.py
项目根目录的 test-push.py 可用于真实 RTSP 到 RTMP 验证:
cd /root/workspace/ms-fish-recg-pro
PYTHONPATH=pusher-py/src python test-push.py
PUSH_SECONDS=10 PUSH_STATUS_INTERVAL=1 PYTHONPATH=pusher-py/src python test-push.py
安装开发依赖后:
python -m pytest -q
注意事项
libav当前实现是 remux/copy 转推,不做解码、滤镜和重编码。- 如果输入编码或目标协议不被当前 FFmpeg SDK 支持,任务会退出并在
status()或日志中给出错误。 - 自动编译脚本默认不启用外部
libsrt依赖;如需 SRT,请在系统安装 libsrt 开发包后调整scripts/build_ffmpeg.sh的 configure 参数。 - 摄像头采集和需要重编码的复杂场景需要后续扩展 libav 编码路径;当前默认实现优先解决 RTSP/文件等输入的 copy/remux 转推。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pusher_py-0.1.8-cp314-cp314-win_arm64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp314-cp314-win_arm64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.14, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2193baea451a72c44dd0d856779e77be565b2312b6bbf8cf3f32fac50d9b4b46
|
|
| MD5 |
b695e954e05b61f42e91db84e03ee5ad
|
|
| BLAKE2b-256 |
5cd69aaf638f23ab4b6348009d0be8f38a9af2f6e9cdf59a211a568a6dcb7fa1
|
File details
Details for the file pusher_py-0.1.8-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a03bbcf47e38e57a243da73c3a4d2e5c9c456746bc23fa5f75b300270ff799a
|
|
| MD5 |
eeb859fbe61520fa79cb281562c54d57
|
|
| BLAKE2b-256 |
0fc45b47da413ed5406cac591567f24ffd3ff8b05189187814e15c06338990df
|
File details
Details for the file pusher_py-0.1.8-cp314-cp314-win32.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp314-cp314-win32.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.14, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65ec2a226edb8a94f42d3827b6f98eab771468df860e4b39cb84d94ab3732f5f
|
|
| MD5 |
b050d28e103c00a6db3324aa15e77541
|
|
| BLAKE2b-256 |
93664c35739919aea127ef921e9fc24508ca4bc2f06090376ae1fc24cc9309b5
|
File details
Details for the file pusher_py-0.1.8-cp314-cp314-manylinux_2_31_armv7l.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp314-cp314-manylinux_2_31_armv7l.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.14, manylinux: glibc 2.31+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20b59e2cb68a540f339f2a98e18d3742047466288ab83381805d33ff6c61b7d7
|
|
| MD5 |
a5b72d7996a3566dd9bb2b8cffbf8c12
|
|
| BLAKE2b-256 |
fb85cdd1ed7b9527ced83b3749ddb9de76be760b4d76fd4a05410ed940e32ef1
|
File details
Details for the file pusher_py-0.1.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48bceee808cc9fe43b3163a3532d71907e72c66c86dad3d327e05dc564741f6b
|
|
| MD5 |
140a395744c29f7f43a6d1bd5629f7e1
|
|
| BLAKE2b-256 |
b82f4db7ada84ac52366a6013dfdbf45df39072ecc0fa819125fc0993922f9cc
|
File details
Details for the file pusher_py-0.1.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.14, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
331cb396c630bf794c3c3705b69d6a2a8f0889a6d3b8f74ee60f96d29bfe2efa
|
|
| MD5 |
1abd1c079b14f0bef4548b75d3a4531d
|
|
| BLAKE2b-256 |
f77aaaec4d50aa4b39cbc87b150b616b16f116c9c71b123c0848cbc154f12222
|
File details
Details for the file pusher_py-0.1.8-cp313-cp313-win_arm64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp313-cp313-win_arm64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.13, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2de3417580ec453d72b57ac39be2f9b342a6870c5beca7a06f47dfde4e5506f9
|
|
| MD5 |
2da4c872506ce5183737ee82a8a22750
|
|
| BLAKE2b-256 |
3eaa4870c20a2e4c758a40ab66b9405a53d312647c4203e0bc06a3cdd4f9870f
|
File details
Details for the file pusher_py-0.1.8-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17bc714124a05ef893538142f6257552abe0aa13d2476842560ccb5e7e21b388
|
|
| MD5 |
e00678138d9a0607fe56c978500ce24e
|
|
| BLAKE2b-256 |
4473cbb05c54dafc9682ec4efc746aee01dd69b601a3f3121450170c4fd3f34d
|
File details
Details for the file pusher_py-0.1.8-cp313-cp313-win32.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp313-cp313-win32.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.13, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6aab63b94d6a2f17f07e434a6775af2e9aae51af520f55cb86042346770b9a12
|
|
| MD5 |
e14f974e22cb32491e6dac50db16035c
|
|
| BLAKE2b-256 |
5a45ea3905fed44b5a19c06dec7a01e89a3288a5b57b27ac76eacfafa8e90899
|
File details
Details for the file pusher_py-0.1.8-cp313-cp313-manylinux_2_31_armv7l.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp313-cp313-manylinux_2_31_armv7l.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.13, manylinux: glibc 2.31+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7bed82ec50b72ed212d5839865467dc8c7f6bc3af3d88622a2507ddd25175a3
|
|
| MD5 |
66015940735e15f09b92ef6180ec5efd
|
|
| BLAKE2b-256 |
7f4e70ffb062399b20a34996a03e47d26c4b2a2d4ffed0ea7ad5605bf748ae39
|
File details
Details for the file pusher_py-0.1.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fde221f0151e8acec4ead45365c76d6c155b3cf63a22f8edc311fa27d126221
|
|
| MD5 |
0a67f7e54907933e41893a17bdf2b126
|
|
| BLAKE2b-256 |
fdde1224ed8e252c4c51b85b08c97c830a0206ca9003b007521bad1d176c4af1
|
File details
Details for the file pusher_py-0.1.8-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ae775af412a044fd0e4fe6ddb62a4348f2236441b648207826c02e6be01845a
|
|
| MD5 |
d809cf82db4f5b9cf0d72c21e7d78b08
|
|
| BLAKE2b-256 |
b10e59342bf67dc3b8f44b2c9c75847a1d3513b13403f7cc3f6e7f505631ff3f
|
File details
Details for the file pusher_py-0.1.8-cp312-cp312-win_arm64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp312-cp312-win_arm64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.12, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed80573f91815512723915159e31850821269bfd41cdad09c70cff8c475b7885
|
|
| MD5 |
6036666c927da4bd3e83b4d75a485759
|
|
| BLAKE2b-256 |
6790c6d104b06da3fd17865a406fba11067b13b9d751ec48b8df9c65be6c1573
|
File details
Details for the file pusher_py-0.1.8-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3dcd7a127b9a44fd518bf16f1474cae782ea34dd6d0e1ab9a1c35a908d56ae76
|
|
| MD5 |
5743b3ff60d05eed9c05190e6feb2957
|
|
| BLAKE2b-256 |
a9232288fcb1c51a70b76c0236e8ef0251e516379169ae62f66e8b42a0a3cccc
|
File details
Details for the file pusher_py-0.1.8-cp312-cp312-win32.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp312-cp312-win32.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.12, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af242d7eede05a01687cdf1b615f0cbc298a8d6adb682c08126fb944f3b89a79
|
|
| MD5 |
d6465242aeea71a2825e84afb01c14ad
|
|
| BLAKE2b-256 |
d71db2e260fd6cc5b9d1751d37f37feab475eca8e9005efbd22a810bd71342ed
|
File details
Details for the file pusher_py-0.1.8-cp312-cp312-manylinux_2_31_armv7l.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp312-cp312-manylinux_2_31_armv7l.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.12, manylinux: glibc 2.31+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5df72353f7fdaff6db012265ef6fc03fa84cb6ddcc2522ae23beccb6336551a
|
|
| MD5 |
ac78cb80d59581f87dd3dc1828b5a135
|
|
| BLAKE2b-256 |
70d07dfd06f234419d83ec0e5de41356e1408e3454078ab29c92e43b8d56a231
|
File details
Details for the file pusher_py-0.1.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d9a868762eacdaba2e8993c2eb90d2ca77d20fd0efa4ad04821cc5a6d97b2e2
|
|
| MD5 |
793b55b290f062d5cd571fe639073a5e
|
|
| BLAKE2b-256 |
e83063ebcbfa9d1b4b40df317619744ba8ac4bafc23671613e1e4f16875ff257
|
File details
Details for the file pusher_py-0.1.8-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0cbcc37ad0e155050a1ba33e0a2745d90ec4f82dd5422e4e77c22c56419366bf
|
|
| MD5 |
0160aa8a1c5162ccb0ecb0ca5f19d63d
|
|
| BLAKE2b-256 |
e16aef7104faa4594f10620a907e7d263936b26aaa260535a937b02b491f3010
|
File details
Details for the file pusher_py-0.1.8-cp311-cp311-win_arm64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp311-cp311-win_arm64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.11, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30392d8f2fd9fe93d8ffbf4ec8f56d1d3ec314c5f1e5da4af6de5cb3304ec434
|
|
| MD5 |
c7cd736274564e3842a9c9bf13fd11cd
|
|
| BLAKE2b-256 |
49d1dcbce6c423409a46e711dbca2846ce45f0c0fe065ae1941535520261cad2
|
File details
Details for the file pusher_py-0.1.8-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1187c934cd15da7d3e46b3e3bcedf6b610728b40d29ee014a9a12a42da97da1b
|
|
| MD5 |
2b3f7ce92a5ef174f4ef08ad462d884c
|
|
| BLAKE2b-256 |
9e266c919b8522ad6d76c2054ab885b36a2eec37d09942322b11f63e31d967b5
|
File details
Details for the file pusher_py-0.1.8-cp311-cp311-win32.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp311-cp311-win32.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.11, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea30f0ddf564c8456fab3d5176b3834b21a33473aa4bcca3db7e1519d064f87e
|
|
| MD5 |
ef8eebb624e3d57ecf98c2bdb8da93e7
|
|
| BLAKE2b-256 |
c35d011f6af55b5286f396229a67130ee1cbdabb70d8eeb1cfe9d03013e8aeaa
|
File details
Details for the file pusher_py-0.1.8-cp311-cp311-manylinux_2_31_armv7l.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp311-cp311-manylinux_2_31_armv7l.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.11, manylinux: glibc 2.31+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba6c30414afdaaff98f80a22a46abd8ba164331aa6773f224cbbf60bffa56f7e
|
|
| MD5 |
369fe5ed1d78b5e9024764aa7ef60d15
|
|
| BLAKE2b-256 |
ac5fd85706f4cdeb9adab2ceaf02f5d9542c20303457094a968d8e1ae7aa3db2
|
File details
Details for the file pusher_py-0.1.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8550055cb8005c68969241a7a88102710352cfb58372a48ea6c12040391252d4
|
|
| MD5 |
43d5ec02370e4845be2c85ff3051c6cf
|
|
| BLAKE2b-256 |
ae3f5ccc077f23edb22a553177c8afe2bfb43bcac428797bbfbed6c4d8ac9611
|
File details
Details for the file pusher_py-0.1.8-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b16f946e2d87f78063cb86d9ee160d7342fb7ecfb898e1f82d47870636197065
|
|
| MD5 |
94ef76f85a277955c1969ee60caec5d5
|
|
| BLAKE2b-256 |
9382e0b5eee1af9ee34311f2311f80e123f0cec67bed27e9bf9603a36bcc6a72
|
File details
Details for the file pusher_py-0.1.8-cp310-cp310-win_arm64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp310-cp310-win_arm64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.10, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
755ee55c86c14c38a3e50a9ae45eaa060d3953eeb36cf9e36bd328b58cb0231d
|
|
| MD5 |
d5384c24dc72eca3d08a3c817cbb5376
|
|
| BLAKE2b-256 |
de3f7719ff82608f5c0bd7302e3eea3cda0a3cc9351b1a110655d8e0900a6e87
|
File details
Details for the file pusher_py-0.1.8-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1c14787de110628a47c13ae49f6913d0f345de8a900558f2173ffc3761ed039
|
|
| MD5 |
e23867ca5d7c0712c08597a26042f5de
|
|
| BLAKE2b-256 |
3f0061deef384f0ac922df9d26b39e608629883a3b3b40d7e7dbb10df0b68bd0
|
File details
Details for the file pusher_py-0.1.8-cp310-cp310-win32.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp310-cp310-win32.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.10, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6329a5caeea4fd2dbd97d2b9ecacbdfa9fc37f6d820f909eaa997cc91aff5bc8
|
|
| MD5 |
b8862886a6aca0bbff73ea161edad016
|
|
| BLAKE2b-256 |
6e8b89c525deb565d8b4e58114eb967750239b53425fc4e0981fa08aaa373d4f
|
File details
Details for the file pusher_py-0.1.8-cp310-cp310-manylinux_2_31_armv7l.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp310-cp310-manylinux_2_31_armv7l.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.10, manylinux: glibc 2.31+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9fda15d3caa92d26a518e7ae1b4d6d8451267f706fcdebfbb07306ed3a47b22b
|
|
| MD5 |
bbb51a43a902d1585fe4d23377ad2af1
|
|
| BLAKE2b-256 |
47ccfb09a19a3e01c05da8bb0999a24eb4ca3bf305feda3ebef69bb85e482f80
|
File details
Details for the file pusher_py-0.1.8-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c33f9adbf5685bf8b348ca94d419331e70ad43a07ea5ec3ba62b2dddae91ee8
|
|
| MD5 |
caaaa9009c6b8c63fedafe3f19d4d8dd
|
|
| BLAKE2b-256 |
4b84f59c36e4de2e3c7855bf55c13e4bbd521610d0344c519c085fc768f5d074
|
File details
Details for the file pusher_py-0.1.8-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c21f50c12e183fddf5207112eaecc181fb82e495a7b647449818e157216bf1ba
|
|
| MD5 |
eaaf9dc2ef24c4b12cb5c8d2d549714c
|
|
| BLAKE2b-256 |
03d8219599b7aecffc9f756c0244f860f595f3ecf58a2fff860db1b81172b710
|
File details
Details for the file pusher_py-0.1.8-cp39-cp39-win_arm64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp39-cp39-win_arm64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.9, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4128a4e972303ce827e5842a64bc3b16cd13942808ff0b51db20ddbfb9c89008
|
|
| MD5 |
871f27ce2a57e7e85ea45a21639206db
|
|
| BLAKE2b-256 |
16fc86e791a2bb85f3ac976b48dd2eda2832f68543add2af063937ef81a6b9e8
|
File details
Details for the file pusher_py-0.1.8-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f54671bc19b974ee8b5d22b3fc59dfc22b48c5caa8197835740828a2a02b3ab0
|
|
| MD5 |
595ba0d1d6327bed92609e1d21f8fcb7
|
|
| BLAKE2b-256 |
6c453ccb50813372a9b7ea3e4be0d56f52fec364b4c3cd64575cf69c70e404c2
|
File details
Details for the file pusher_py-0.1.8-cp39-cp39-win32.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp39-cp39-win32.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.9, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c4591b27be117a389981984c8843d31725874974e8f170e3c5676c4d421ff8bf
|
|
| MD5 |
79946231f82e3ebf1720c44b76c6863f
|
|
| BLAKE2b-256 |
db6b915f01217ea9322bdf5613e96f74abb0dd93084ba6946fee2dbdf5b24d03
|
File details
Details for the file pusher_py-0.1.8-cp39-cp39-manylinux_2_31_armv7l.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp39-cp39-manylinux_2_31_armv7l.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.9, manylinux: glibc 2.31+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f5951d6ce9f7761f695bbdd3e915e760b3bad30eea15c8652d6349bca422ead0
|
|
| MD5 |
f331f6304534a196f17a71d059e3214a
|
|
| BLAKE2b-256 |
eab6d7becde6af2dc41dbf844b9459dbdadd836c1fc1ba44ba4665f74504d88b
|
File details
Details for the file pusher_py-0.1.8-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d71838ecbaa11c8b7afabc14b13edda7650fe86cdd19fae62b906381090af603
|
|
| MD5 |
15459d3c7a7052d913fefd0b01042732
|
|
| BLAKE2b-256 |
49a6be4451345edb0810f2b288859852bafb577d0b4a0865510f780994306849
|
File details
Details for the file pusher_py-0.1.8-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.
File metadata
- Download URL: pusher_py-0.1.8-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6520420e26778c960a6541b928b221ef037c68c3a9114770f9a9388e2df6fe65
|
|
| MD5 |
790a5bcbb91e5283ded1e529ad011060
|
|
| BLAKE2b-256 |
8e72979b5bc1003caad1fd02fb42726bd2bf996507a4245220061127535d0182
|