vrl-python


Namevrl-python JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryPython bindings for Vector Remap Language (VRL)
upload_time2025-10-06 05:17:30
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
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"
}
        
Elapsed time: 2.81726s