| Name | vrl-python JSON |
| Version |
0.1.0
JSON |
| download |
| home_page | None |
| Summary | Python bindings for Vector Remap Language (VRL) |
| upload_time | 2025-10-06 05:17:30 |
| maintainer | None |
| docs_url | None |
| author | None |
| requires_python | >=3.8 |
| license | MIT |
| keywords |
vrl
vector
data-processing
etl
|
| VCS |
 |
| bugtrack_url |
|
| requirements |
No requirements were recorded.
|
| Travis-CI |
No Travis.
|
| coveralls test coverage |
No coveralls.
|
# vrl-python
VRL Python SDK Project
基于PyO3封装的Vector Remap Language (VRL) Python SDK
## Python 开发者快速使用指南 / Quick Start for Python Developers
> 包名(PyPI):`vrl-python` ;导入模块:`vrl_python`
### 安装 / Install
```bash
# 使用 pip(推荐) / Use pip (recommended)
pip install vrl-python
# 使用 uv / Use uv
uv add vrl-python
# 使用 Poetry / Use Poetry
poetry add vrl-python
```
> 运行环境 / Requirements:Python >= 3.8
### 快速开始 / Quick Start
```python
# 中文:从 vrl_python 导入 VRLRuntime,并运行一个最小示例
# English: Import VRLRuntime from vrl_python and run a minimal example
from vrl_python import VRLRuntime
runtime = VRLRuntime() # 中文:使用默认UTC;English: uses UTC by default
program = ".field = \"value\"" # 中文:设置字段;English: set a field
event = {} # 中文:输入事件;English: input event
result = runtime.execute(program, event)
print(result.processed_event) # {'field': 'value'}
```
### 一次性执行(便捷方法) / One-shot execution (convenience)
```python
# 中文:无需先创建实例,直接编译+执行
# English: compile+execute in one call without creating an instance
from vrl_python import VRLRuntime
result = VRLRuntime.run('.greeting = "hello"', {})
print(result.processed_event) # {'greeting': 'hello'}
```
### 语法检查 / Syntax Check
```python
# 中文:仅检查语法,不执行
# English: check syntax only, no execution
from vrl_python import VRLRuntime
diagnostic = VRLRuntime.check_syntax('.parsed = parse_json(.message)')
if diagnostic is None:
print('✅ 语法正确 / Syntax OK')
else:
print('❌ 发现错误 / Errors found:', diagnostic.messages)
print(diagnostic.formatted_message)
```
---
项目概述
本项目旨在为Vector的VRL语言提供一个Python SDK封装,使Python开发者能够直接在Python环境中使用VRL的强大数据处理能力。封装基于PyO3实现,提供高性能的Rust底层实现和友好的Python API。
功能特性
• ✅ 编译和执行VRL程序
• ✅ 支持事件数据处理和转换
• ✅ 完整的错误处理和诊断信息
• ✅ **VRL语法检查和诊断** (新增)
• ✅ **完整的类型提示支持** (新增)
• ✅ 时区支持
• ✅ 性能监控(执行时间统计)
• ✅ 预编译和缓存支持
快速开始
安装
```
pip install vrl-python
```
基本用法
from vrl_python import VRLRuntime
# 初始化运行时
runtime = VRLRuntime()
# 定义VRL程序
program = """
.message = parse_json!(.message)
.new_field = "new value"
"""
# 准备输入事件
event = {
"message": '{"key": "value"}',
"timestamp": "2023-01-01T00:00:00Z"
}
# 执行VRL程序
result = runtime.execute(program, event)
print(result.processed_event)
# 输出: {'message': {'key': 'value'}, 'timestamp': '2023-01-01T00:00:00Z', 'new_field': 'new value'}
VRL语法检查
from vrl_python import VRLRuntime
# 检查VRL程序语法
program = """
.parsed = parse_json(.message)
"""
diagnostic = VRLRuntime.check_syntax(program)
if diagnostic is None:
print("✅ 语法正确")
else:
print(f"❌ 发现错误: {diagnostic.messages}")
print(diagnostic.formatted_message) # 详细的错误信息,包含位置和建议
版本管理
本项目使用 `bump-my-version` 管理版本号,确保 Rust 和 Python 版本同步。
## 常用命令
make version # 查看当前版本
make check-version # 检查版本一致性
make bump-patch # 升级补丁版本 (0.1.0 -> 0.1.1)
make bump-minor # 升级次版本 (0.1.0 -> 0.2.0)
make bump-major # 升级主版本 (0.1.0 -> 1.0.0)
详细文档:`VERSION_MANAGEMENT.md`
开发计划
阶段1: 核心功能实现 ✅ (已完成)
• ✅ 项目初始化与PyO3配置
• ✅ 基本VRL编译执行功能
• ✅ 错误处理与诊断信息
• ✅ 单元测试框架搭建(11个测试全部通过)
• ✅ 示例代码和文档
阶段2: 高级功能扩展
自定义函数支持
时区配置支持
性能优化与缓存
文档生成
阶段3: 生产准备
CI/CD流水线
性能基准测试
PyPI发布准备
开发环境
• Rust 1.70+
• Python 3.8+
• RustRover IDE (推荐)
• maturin (构建工具)
CI/CD
• ✅ GitHub Actions 自动化测试
• ✅ 多平台支持 (Linux, macOS, Windows)
• ✅ 自动发布到 PyPI/TestPyPI
• ✅ Trusted Publishing (安全发布)
构建与测试
## 使用 Makefile(推荐)
# 查看所有可用命令
make help
# 安装开发环境
make install
# 开发模式构建
make dev
# 运行测试
make test
# 运行示例
make examples
# 完整检查(格式化 + 检查 + 测试)
make check
## 手动命令
# 创建虚拟环境
uv venv
source .venv/bin/activate
# 安装依赖
uv pip install maturin pytest pytest-cov
# 开发模式构建
maturin develop
# 发布模式构建
maturin develop --release
# 运行测试
pytest tests/ -v
# 运行示例
python examples/basic_usage.py
贡献指南
欢迎贡献!请遵循以下步骤:
1. Fork仓库并创建分支
2. 提交代码变更
3. 添加/更新测试用例
4. 运行测试确保通过
5. 提交Pull Request
技术参考
• https://vector.dev/docs/reference/vrl/
• https://pyo3.rs/
• https://github.com/vectordotdev/vrl
许可证
MIT
Raw data
{
"_id": null,
"home_page": null,
"name": "vrl-python",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "vrl, vector, data-processing, etl",
"author": null,
"author_email": "JQQ <jqq1716@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/03/0d/2067b301055a7f9216ac8403d990e31c5e1f18b1e7149b6d292c604c4a76/vrl_python-0.1.0.tar.gz",
"platform": null,
"description": "# vrl-python\nVRL Python SDK Project\n\n\u57fa\u4e8ePyO3\u5c01\u88c5\u7684Vector Remap Language (VRL) Python SDK\n\n## Python \u5f00\u53d1\u8005\u5feb\u901f\u4f7f\u7528\u6307\u5357 / Quick Start for Python Developers\n\n> \u5305\u540d\uff08PyPI\uff09\uff1a`vrl-python` \uff1b\u5bfc\u5165\u6a21\u5757\uff1a`vrl_python`\n\n### \u5b89\u88c5 / Install\n\n```bash\n# \u4f7f\u7528 pip\uff08\u63a8\u8350\uff09 / Use pip (recommended)\npip install vrl-python\n\n# \u4f7f\u7528 uv / Use uv\nuv add vrl-python\n\n# \u4f7f\u7528 Poetry / Use Poetry\npoetry add vrl-python\n```\n\n> \u8fd0\u884c\u73af\u5883 / Requirements\uff1aPython >= 3.8\n\n### \u5feb\u901f\u5f00\u59cb / Quick Start\n\n```python\n# \u4e2d\u6587\uff1a\u4ece vrl_python \u5bfc\u5165 VRLRuntime\uff0c\u5e76\u8fd0\u884c\u4e00\u4e2a\u6700\u5c0f\u793a\u4f8b\n# English: Import VRLRuntime from vrl_python and run a minimal example\nfrom vrl_python import VRLRuntime\n\nruntime = VRLRuntime() # \u4e2d\u6587\uff1a\u4f7f\u7528\u9ed8\u8ba4UTC\uff1bEnglish: uses UTC by default\n\nprogram = \".field = \\\"value\\\"\" # \u4e2d\u6587\uff1a\u8bbe\u7f6e\u5b57\u6bb5\uff1bEnglish: set a field\nevent = {} # \u4e2d\u6587\uff1a\u8f93\u5165\u4e8b\u4ef6\uff1bEnglish: input event\n\nresult = runtime.execute(program, event)\nprint(result.processed_event) # {'field': 'value'}\n```\n\n### \u4e00\u6b21\u6027\u6267\u884c\uff08\u4fbf\u6377\u65b9\u6cd5\uff09 / One-shot execution (convenience)\n\n```python\n# \u4e2d\u6587\uff1a\u65e0\u9700\u5148\u521b\u5efa\u5b9e\u4f8b\uff0c\u76f4\u63a5\u7f16\u8bd1+\u6267\u884c\n# English: compile+execute in one call without creating an instance\nfrom vrl_python import VRLRuntime\n\nresult = VRLRuntime.run('.greeting = \"hello\"', {})\nprint(result.processed_event) # {'greeting': 'hello'}\n```\n\n### \u8bed\u6cd5\u68c0\u67e5 / Syntax Check\n\n```python\n# \u4e2d\u6587\uff1a\u4ec5\u68c0\u67e5\u8bed\u6cd5\uff0c\u4e0d\u6267\u884c\n# English: check syntax only, no execution\nfrom vrl_python import VRLRuntime\n\ndiagnostic = VRLRuntime.check_syntax('.parsed = parse_json(.message)')\nif diagnostic is None:\n print('\u2705 \u8bed\u6cd5\u6b63\u786e / Syntax OK')\nelse:\n print('\u274c \u53d1\u73b0\u9519\u8bef / Errors found:', diagnostic.messages)\n print(diagnostic.formatted_message)\n```\n\n---\n\n\u9879\u76ee\u6982\u8ff0\n\n\u672c\u9879\u76ee\u65e8\u5728\u4e3aVector\u7684VRL\u8bed\u8a00\u63d0\u4f9b\u4e00\u4e2aPython SDK\u5c01\u88c5\uff0c\u4f7fPython\u5f00\u53d1\u8005\u80fd\u591f\u76f4\u63a5\u5728Python\u73af\u5883\u4e2d\u4f7f\u7528VRL\u7684\u5f3a\u5927\u6570\u636e\u5904\u7406\u80fd\u529b\u3002\u5c01\u88c5\u57fa\u4e8ePyO3\u5b9e\u73b0\uff0c\u63d0\u4f9b\u9ad8\u6027\u80fd\u7684Rust\u5e95\u5c42\u5b9e\u73b0\u548c\u53cb\u597d\u7684Python API\u3002\n\n\u529f\u80fd\u7279\u6027\n\n\u2022 \u2705 \u7f16\u8bd1\u548c\u6267\u884cVRL\u7a0b\u5e8f\n\n\u2022 \u2705 \u652f\u6301\u4e8b\u4ef6\u6570\u636e\u5904\u7406\u548c\u8f6c\u6362\n\n\u2022 \u2705 \u5b8c\u6574\u7684\u9519\u8bef\u5904\u7406\u548c\u8bca\u65ad\u4fe1\u606f\n\n\u2022 \u2705 **VRL\u8bed\u6cd5\u68c0\u67e5\u548c\u8bca\u65ad** (\u65b0\u589e)\n\n\u2022 \u2705 **\u5b8c\u6574\u7684\u7c7b\u578b\u63d0\u793a\u652f\u6301** (\u65b0\u589e)\n\n\u2022 \u2705 \u65f6\u533a\u652f\u6301\n\n\u2022 \u2705 \u6027\u80fd\u76d1\u63a7\uff08\u6267\u884c\u65f6\u95f4\u7edf\u8ba1\uff09\n\n\u2022 \u2705 \u9884\u7f16\u8bd1\u548c\u7f13\u5b58\u652f\u6301\n\n\u5feb\u901f\u5f00\u59cb\n\n\u5b89\u88c5\n\n```\npip install vrl-python\n```\n\n\n\u57fa\u672c\u7528\u6cd5\n\nfrom vrl_python import VRLRuntime\n\n# \u521d\u59cb\u5316\u8fd0\u884c\u65f6\nruntime = VRLRuntime()\n\n# \u5b9a\u4e49VRL\u7a0b\u5e8f\nprogram = \"\"\"\n.message = parse_json!(.message)\n.new_field = \"new value\"\n\"\"\"\n\n# \u51c6\u5907\u8f93\u5165\u4e8b\u4ef6\nevent = {\n\"message\": '{\"key\": \"value\"}',\n\"timestamp\": \"2023-01-01T00:00:00Z\"\n}\n\n# \u6267\u884cVRL\u7a0b\u5e8f\nresult = runtime.execute(program, event)\n\nprint(result.processed_event)\n# \u8f93\u51fa: {'message': {'key': 'value'}, 'timestamp': '2023-01-01T00:00:00Z', 'new_field': 'new value'}\n\n\nVRL\u8bed\u6cd5\u68c0\u67e5\n\nfrom vrl_python import VRLRuntime\n\n# \u68c0\u67e5VRL\u7a0b\u5e8f\u8bed\u6cd5\nprogram = \"\"\"\n.parsed = parse_json(.message)\n\"\"\"\n\ndiagnostic = VRLRuntime.check_syntax(program)\nif diagnostic is None:\n print(\"\u2705 \u8bed\u6cd5\u6b63\u786e\")\nelse:\n print(f\"\u274c \u53d1\u73b0\u9519\u8bef: {diagnostic.messages}\")\n print(diagnostic.formatted_message) # \u8be6\u7ec6\u7684\u9519\u8bef\u4fe1\u606f\uff0c\u5305\u542b\u4f4d\u7f6e\u548c\u5efa\u8bae\n\n\n\u7248\u672c\u7ba1\u7406\n\n\u672c\u9879\u76ee\u4f7f\u7528 `bump-my-version` \u7ba1\u7406\u7248\u672c\u53f7\uff0c\u786e\u4fdd Rust \u548c Python \u7248\u672c\u540c\u6b65\u3002\n\n## \u5e38\u7528\u547d\u4ee4\n\nmake version # \u67e5\u770b\u5f53\u524d\u7248\u672c\nmake check-version # \u68c0\u67e5\u7248\u672c\u4e00\u81f4\u6027\nmake bump-patch # \u5347\u7ea7\u8865\u4e01\u7248\u672c (0.1.0 -> 0.1.1)\nmake bump-minor # \u5347\u7ea7\u6b21\u7248\u672c (0.1.0 -> 0.2.0)\nmake bump-major # \u5347\u7ea7\u4e3b\u7248\u672c (0.1.0 -> 1.0.0)\n\n\u8be6\u7ec6\u6587\u6863\uff1a`VERSION_MANAGEMENT.md`\n\n\u5f00\u53d1\u8ba1\u5212\n\n\u9636\u6bb51: \u6838\u5fc3\u529f\u80fd\u5b9e\u73b0 \u2705 (\u5df2\u5b8c\u6210)\n\u2022 \u2705 \u9879\u76ee\u521d\u59cb\u5316\u4e0ePyO3\u914d\u7f6e\n\n\u2022 \u2705 \u57fa\u672cVRL\u7f16\u8bd1\u6267\u884c\u529f\u80fd\n\n\u2022 \u2705 \u9519\u8bef\u5904\u7406\u4e0e\u8bca\u65ad\u4fe1\u606f\n\n\u2022 \u2705 \u5355\u5143\u6d4b\u8bd5\u6846\u67b6\u642d\u5efa\uff0811\u4e2a\u6d4b\u8bd5\u5168\u90e8\u901a\u8fc7\uff09\n\n\u2022 \u2705 \u793a\u4f8b\u4ee3\u7801\u548c\u6587\u6863\n\n\u9636\u6bb52: \u9ad8\u7ea7\u529f\u80fd\u6269\u5c55\n\u81ea\u5b9a\u4e49\u51fd\u6570\u652f\u6301\n\n\u65f6\u533a\u914d\u7f6e\u652f\u6301\n\n\u6027\u80fd\u4f18\u5316\u4e0e\u7f13\u5b58\n\n\u6587\u6863\u751f\u6210\n\n\u9636\u6bb53: \u751f\u4ea7\u51c6\u5907\nCI/CD\u6d41\u6c34\u7ebf\n\n\u6027\u80fd\u57fa\u51c6\u6d4b\u8bd5\n\nPyPI\u53d1\u5e03\u51c6\u5907\n\n\u5f00\u53d1\u73af\u5883\n\n\u2022 Rust 1.70+\n\n\u2022 Python 3.8+\n\n\u2022 RustRover IDE (\u63a8\u8350)\n\n\u2022 maturin (\u6784\u5efa\u5de5\u5177)\n\nCI/CD\n\n\u2022 \u2705 GitHub Actions \u81ea\u52a8\u5316\u6d4b\u8bd5\n\n\u2022 \u2705 \u591a\u5e73\u53f0\u652f\u6301 (Linux, macOS, Windows)\n\n\u2022 \u2705 \u81ea\u52a8\u53d1\u5e03\u5230 PyPI/TestPyPI\n\n\u2022 \u2705 Trusted Publishing (\u5b89\u5168\u53d1\u5e03)\n\n\u6784\u5efa\u4e0e\u6d4b\u8bd5\n\n## \u4f7f\u7528 Makefile\uff08\u63a8\u8350\uff09\n\n# \u67e5\u770b\u6240\u6709\u53ef\u7528\u547d\u4ee4\nmake help\n\n# \u5b89\u88c5\u5f00\u53d1\u73af\u5883\nmake install\n\n# \u5f00\u53d1\u6a21\u5f0f\u6784\u5efa\nmake dev\n\n# \u8fd0\u884c\u6d4b\u8bd5\nmake test\n\n# \u8fd0\u884c\u793a\u4f8b\nmake examples\n\n# \u5b8c\u6574\u68c0\u67e5\uff08\u683c\u5f0f\u5316 + \u68c0\u67e5 + \u6d4b\u8bd5\uff09\nmake check\n\n\n## \u624b\u52a8\u547d\u4ee4\n\n# \u521b\u5efa\u865a\u62df\u73af\u5883\nuv venv\nsource .venv/bin/activate\n\n# \u5b89\u88c5\u4f9d\u8d56\nuv pip install maturin pytest pytest-cov\n\n# \u5f00\u53d1\u6a21\u5f0f\u6784\u5efa\nmaturin develop\n\n# \u53d1\u5e03\u6a21\u5f0f\u6784\u5efa\nmaturin develop --release\n\n# \u8fd0\u884c\u6d4b\u8bd5\npytest tests/ -v\n\n# \u8fd0\u884c\u793a\u4f8b\npython examples/basic_usage.py\n\n\n\u8d21\u732e\u6307\u5357\n\n\u6b22\u8fce\u8d21\u732e\uff01\u8bf7\u9075\u5faa\u4ee5\u4e0b\u6b65\u9aa4\uff1a\n\n1. Fork\u4ed3\u5e93\u5e76\u521b\u5efa\u5206\u652f\n2. \u63d0\u4ea4\u4ee3\u7801\u53d8\u66f4\n3. \u6dfb\u52a0/\u66f4\u65b0\u6d4b\u8bd5\u7528\u4f8b\n4. \u8fd0\u884c\u6d4b\u8bd5\u786e\u4fdd\u901a\u8fc7\n5. \u63d0\u4ea4Pull Request\n\n\u6280\u672f\u53c2\u8003\n\n\u2022 https://vector.dev/docs/reference/vrl/\n\n\u2022 https://pyo3.rs/\n\n\u2022 https://github.com/vectordotdev/vrl\n\n\u8bb8\u53ef\u8bc1\n\nMIT\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python bindings for Vector Remap Language (VRL)",
"version": "0.1.0",
"project_urls": {
"Documentation": "https://github.com/yourusername/vrl-python#readme",
"Homepage": "https://github.com/yourusername/vrl-python",
"Repository": "https://github.com/yourusername/vrl-python"
},
"split_keywords": [
"vrl",
" vector",
" data-processing",
" etl"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "11861395a99e94aeae3a1a929c10e56bf2410640bb3343dd376a2936cb048fde",
"md5": "62f7fbb7c1487e2112d2af6041fc0c0f",
"sha256": "50239a076f78fa4a9286c181697f1cbd21b54c1b48514931662b7227e922ec7a"
},
"downloads": -1,
"filename": "vrl_python-0.1.0-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
"has_sig": false,
"md5_digest": "62f7fbb7c1487e2112d2af6041fc0c0f",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 13736384,
"upload_time": "2025-10-06T05:17:23",
"upload_time_iso_8601": "2025-10-06T05:17:23.157526Z",
"url": "https://files.pythonhosted.org/packages/11/86/1395a99e94aeae3a1a929c10e56bf2410640bb3343dd376a2936cb048fde/vrl_python-0.1.0-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "303ffd0d068a19a3f7608d05368daf76d0a0aaef6b7a3963be1f7f04e86ccfca",
"md5": "4f738ee0f3e595955b6929b73a813cec",
"sha256": "82ac56f7e9c19a5fb53b8ef87432baac88b685b6ccf2ed3ec9fccd89d7d2f24a"
},
"downloads": -1,
"filename": "vrl_python-0.1.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "4f738ee0f3e595955b6929b73a813cec",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 7082378,
"upload_time": "2025-10-06T05:17:25",
"upload_time_iso_8601": "2025-10-06T05:17:25.281179Z",
"url": "https://files.pythonhosted.org/packages/30/3f/fd0d068a19a3f7608d05368daf76d0a0aaef6b7a3963be1f7f04e86ccfca/vrl_python-0.1.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3b3db886f5012d94ab9efe715bf59ac11376f6d1d110edd8ef58dd72baf60889",
"md5": "784bb3f020f6740243f44c5075255c61",
"sha256": "b84144c5337e60ab89751cef56025000b861d4983e3d94f517f8de046ec65787"
},
"downloads": -1,
"filename": "vrl_python-0.1.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "784bb3f020f6740243f44c5075255c61",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 7377323,
"upload_time": "2025-10-06T05:17:27",
"upload_time_iso_8601": "2025-10-06T05:17:27.281581Z",
"url": "https://files.pythonhosted.org/packages/3b/3d/b886f5012d94ab9efe715bf59ac11376f6d1d110edd8ef58dd72baf60889/vrl_python-0.1.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e83c94a9056bee5ce58e4e6ce5a52c4c0b8028d5af28b367d0ab1a8cf5865cff",
"md5": "f0351455f09e0b1ddcae028982089c98",
"sha256": "bf7dd64cef9796b8ed3c292b62d8fd9da87425a61bf183e5980b3ea54a577591"
},
"downloads": -1,
"filename": "vrl_python-0.1.0-cp38-abi3-win_amd64.whl",
"has_sig": false,
"md5_digest": "f0351455f09e0b1ddcae028982089c98",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 6808864,
"upload_time": "2025-10-06T05:17:28",
"upload_time_iso_8601": "2025-10-06T05:17:28.811510Z",
"url": "https://files.pythonhosted.org/packages/e8/3c/94a9056bee5ce58e4e6ce5a52c4c0b8028d5af28b367d0ab1a8cf5865cff/vrl_python-0.1.0-cp38-abi3-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "030d2067b301055a7f9216ac8403d990e31c5e1f18b1e7149b6d292c604c4a76",
"md5": "7543fc9cc5d025f22c1de21f1e7b8610",
"sha256": "2c0cc0fc4e576117fcf056c177f0cb29db24b8f576b79d88feff518fd5d38deb"
},
"downloads": -1,
"filename": "vrl_python-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "7543fc9cc5d025f22c1de21f1e7b8610",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 128498,
"upload_time": "2025-10-06T05:17:30",
"upload_time_iso_8601": "2025-10-06T05:17:30.478948Z",
"url": "https://files.pythonhosted.org/packages/03/0d/2067b301055a7f9216ac8403d990e31c5e1f18b1e7149b6d292c604c4a76/vrl_python-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-06 05:17:30",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "yourusername",
"github_project": "vrl-python#readme",
"github_not_found": true,
"lcname": "vrl-python"
}