# parq-cli
[](https://www.python.org/downloads/)
[](LICENSE)
一个强大的 Apache Parquet 文件命令行工具 🚀
简体中文 | [English](README.en.md)
## ✨ 特性
- 📊 **元数据查看**: 快速查看 Parquet 文件的元数据信息(行数、列数、文件大小、压缩类型等)
- 📋 **Schema 展示**: 美观地展示文件的列结构和数据类型
- 👀 **数据预览**: 支持查看文件的前 N 行或后 N 行
- 🔢 **行数统计**: 快速获取文件的总行数
- 🗜️ **压缩信息**: 显示文件压缩类型和文件大小
- 🎨 **美观输出**: 使用 Rich 库提供彩色、格式化的终端输出
- 📦 **智能显示**: 自动检测嵌套结构,显示逻辑列数和物理列数
## 📦 安装
### 从源码安装
```bash
git clone https://github.com/yourusername/parq-cli.git
cd parq-cli
pip install -e .
```
### 使用 pip 安装(即将支持)
```bash
pip install parq-cli
```
## 🚀 快速开始
### 基本用法
```bash
# 查看文件元数据
parq meta data.parquet
# 显示 schema 信息
parq schema data.parquet
# 显示前 5 行(默认)
parq head data.parquet
# 显示前 10 行
parq head -n 10 data.parquet
# 显示后 5 行(默认)
parq tail data.parquet
# 显示后 20 行
parq tail -n 20 data.parquet
# 显示总行数
parq count data.parquet
```
## 📖 命令参考
### 查看元数据
```bash
parq meta FILE
```
显示 Parquet 文件的元数据信息(行数、列数、文件大小、压缩类型等)。
### 查看 Schema
```bash
parq schema FILE
```
显示 Parquet 文件的列结构和数据类型。
### 预览数据
```bash
# 显示前 N 行(默认 5 行)
parq head FILE
parq head -n N FILE
# 显示后 N 行(默认 5 行)
parq tail FILE
parq tail -n N FILE
```
### 统计信息
```bash
# 显示总行数
parq count FILE
```
### 全局选项
- `--version, -v`: 显示版本信息
- `--help`: 显示帮助信息
## 🎨 输出示例
### 元数据展示
**普通文件(无嵌套结构):**
```bash
$ parq data.parquet
```
```
╭─────────────────────── 📊 Parquet File Metadata ───────────────────────╮
│ file_path: data.parquet │
│ num_rows: 1000 │
│ num_columns: 5 (logical) │
│ file_size: 123.45 KB │
│ compression: SNAPPY │
│ num_row_groups: 1 │
│ format_version: 2.6 │
│ serialized_size: 126412 │
│ created_by: parquet-cpp-arrow version 18.0.0 │
╰────────────────────────────────────────────────────────────────────────╯
```
**嵌套结构文件(显示物理列数):**
```bash
$ parq nested.parquet
```
```
╭─────────────────────── 📊 Parquet File Metadata ───────────────────────╮
│ file_path: nested.parquet │
│ num_rows: 500 │
│ num_columns: 3 (logical) │
│ num_physical_columns: 8 (storage) │
│ file_size: 2.34 MB │
│ compression: ZSTD │
│ num_row_groups: 2 │
│ format_version: 2.6 │
│ serialized_size: 2451789 │
│ created_by: parquet-cpp-arrow version 21.0.0 │
╰────────────────────────────────────────────────────────────────────────╯
```
### Schema 展示
```bash
$ parq data.parquet --schema
```
```
📋 Schema Information
┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Column Name ┃ Data Type ┃ Nullable ┃
┡━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ id │ int64 │ ✗ │
│ name │ string │ ✓ │
│ age │ int64 │ ✓ │
│ city │ string │ ✓ │
│ salary │ double │ ✓ │
└─────────────┴───────────────┴──────────┘
```
## 🛠️ 技术栈
- **[PyArrow](https://arrow.apache.org/docs/python/)**: 高性能的 Parquet 读取引擎
- **[Typer](https://typer.tiangolo.com/)**: 现代化的 CLI 框架
- **[Rich](https://rich.readthedocs.io/)**: 美观的终端输出
## 🧪 开发
### 安装开发依赖
```bash
pip install -e ".[dev]"
```
### 运行测试
```bash
pytest
```
### 运行测试(带覆盖率)
```bash
pytest --cov=parq --cov-report=html
```
### 代码格式化和检查
```bash
# 使用 Ruff 检查和自动修复
ruff check --fix parq tests
```
## 🗺️ 路线图
- [x] 基础元数据查看
- [x] Schema 展示
- [x] 数据预览(head/tail)
- [x] 行数统计
- [x] 文件大小和压缩信息显示
- [x] 嵌套结构智能识别(逻辑列数 vs 物理列数)
- [ ] SQL 查询支持
- [ ] 数据统计分析
- [ ] 格式转换(CSV, JSON, Excel)
- [ ] 文件对比
- [ ] 云存储支持(S3, GCS, Azure)
## 🤝 贡献
欢迎提交 Issue 和 Pull Request!
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
## 📄 许可证
本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件
## 🙏 致谢
- 灵感来源于 [parquet-cli](https://github.com/chhantyal/parquet-cli)
- 感谢 Apache Arrow 团队提供强大的 Parquet 支持
- 感谢 Rich 库为终端输出增添色彩
## 📮 联系方式
- 作者: Jinfeng Sun
- 项目地址: https://github.com/Tendo33/parq-cli
---
**⭐ 如果这个项目对你有帮助,请给个 Star!**
Raw data
{
"_id": null,
"home_page": null,
"name": "parq-cli",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "analytics, apache-parquet, cli, data, data-tools, parquet",
"author": null,
"author_email": "SimonSun <sjf19981112@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/70/07/650a46a268bbde254abb4c20e38775c9a6409792ab323d5318931d3e18c8/parq_cli-0.0.3.tar.gz",
"platform": null,
"description": "# parq-cli\n\n[](https://www.python.org/downloads/)\n[](LICENSE)\n\n\u4e00\u4e2a\u5f3a\u5927\u7684 Apache Parquet \u6587\u4ef6\u547d\u4ee4\u884c\u5de5\u5177 \ud83d\ude80\n\n\u7b80\u4f53\u4e2d\u6587 | [English](README.en.md)\n\n## \u2728 \u7279\u6027\n\n- \ud83d\udcca **\u5143\u6570\u636e\u67e5\u770b**: \u5feb\u901f\u67e5\u770b Parquet \u6587\u4ef6\u7684\u5143\u6570\u636e\u4fe1\u606f\uff08\u884c\u6570\u3001\u5217\u6570\u3001\u6587\u4ef6\u5927\u5c0f\u3001\u538b\u7f29\u7c7b\u578b\u7b49\uff09\n- \ud83d\udccb **Schema \u5c55\u793a**: \u7f8e\u89c2\u5730\u5c55\u793a\u6587\u4ef6\u7684\u5217\u7ed3\u6784\u548c\u6570\u636e\u7c7b\u578b\n- \ud83d\udc40 **\u6570\u636e\u9884\u89c8**: \u652f\u6301\u67e5\u770b\u6587\u4ef6\u7684\u524d N \u884c\u6216\u540e N \u884c\n- \ud83d\udd22 **\u884c\u6570\u7edf\u8ba1**: \u5feb\u901f\u83b7\u53d6\u6587\u4ef6\u7684\u603b\u884c\u6570\n- \ud83d\udddc\ufe0f **\u538b\u7f29\u4fe1\u606f**: \u663e\u793a\u6587\u4ef6\u538b\u7f29\u7c7b\u578b\u548c\u6587\u4ef6\u5927\u5c0f\n- \ud83c\udfa8 **\u7f8e\u89c2\u8f93\u51fa**: \u4f7f\u7528 Rich \u5e93\u63d0\u4f9b\u5f69\u8272\u3001\u683c\u5f0f\u5316\u7684\u7ec8\u7aef\u8f93\u51fa\n- \ud83d\udce6 **\u667a\u80fd\u663e\u793a**: \u81ea\u52a8\u68c0\u6d4b\u5d4c\u5957\u7ed3\u6784\uff0c\u663e\u793a\u903b\u8f91\u5217\u6570\u548c\u7269\u7406\u5217\u6570\n\n## \ud83d\udce6 \u5b89\u88c5\n\n### \u4ece\u6e90\u7801\u5b89\u88c5\n\n```bash\ngit clone https://github.com/yourusername/parq-cli.git\ncd parq-cli\npip install -e .\n```\n\n### \u4f7f\u7528 pip \u5b89\u88c5\uff08\u5373\u5c06\u652f\u6301\uff09\n\n```bash\npip install parq-cli\n```\n\n## \ud83d\ude80 \u5feb\u901f\u5f00\u59cb\n\n### \u57fa\u672c\u7528\u6cd5\n\n```bash\n# \u67e5\u770b\u6587\u4ef6\u5143\u6570\u636e\nparq meta data.parquet\n\n# \u663e\u793a schema \u4fe1\u606f\nparq schema data.parquet\n\n# \u663e\u793a\u524d 5 \u884c\uff08\u9ed8\u8ba4\uff09\nparq head data.parquet\n\n# \u663e\u793a\u524d 10 \u884c\nparq head -n 10 data.parquet\n\n# \u663e\u793a\u540e 5 \u884c\uff08\u9ed8\u8ba4\uff09\nparq tail data.parquet\n\n# \u663e\u793a\u540e 20 \u884c\nparq tail -n 20 data.parquet\n\n# \u663e\u793a\u603b\u884c\u6570\nparq count data.parquet\n```\n\n## \ud83d\udcd6 \u547d\u4ee4\u53c2\u8003\n\n### \u67e5\u770b\u5143\u6570\u636e\n\n```bash\nparq meta FILE\n```\n\n\u663e\u793a Parquet \u6587\u4ef6\u7684\u5143\u6570\u636e\u4fe1\u606f\uff08\u884c\u6570\u3001\u5217\u6570\u3001\u6587\u4ef6\u5927\u5c0f\u3001\u538b\u7f29\u7c7b\u578b\u7b49\uff09\u3002\n\n### \u67e5\u770b Schema\n\n```bash\nparq schema FILE\n```\n\n\u663e\u793a Parquet \u6587\u4ef6\u7684\u5217\u7ed3\u6784\u548c\u6570\u636e\u7c7b\u578b\u3002\n\n### \u9884\u89c8\u6570\u636e\n\n```bash\n# \u663e\u793a\u524d N \u884c\uff08\u9ed8\u8ba4 5 \u884c\uff09\nparq head FILE\nparq head -n N FILE\n\n# \u663e\u793a\u540e N \u884c\uff08\u9ed8\u8ba4 5 \u884c\uff09\nparq tail FILE\nparq tail -n N FILE\n```\n\n### \u7edf\u8ba1\u4fe1\u606f\n\n```bash\n# \u663e\u793a\u603b\u884c\u6570\nparq count FILE\n```\n\n### \u5168\u5c40\u9009\u9879\n\n- `--version, -v`: \u663e\u793a\u7248\u672c\u4fe1\u606f\n- `--help`: \u663e\u793a\u5e2e\u52a9\u4fe1\u606f\n\n## \ud83c\udfa8 \u8f93\u51fa\u793a\u4f8b\n\n### \u5143\u6570\u636e\u5c55\u793a\n\n**\u666e\u901a\u6587\u4ef6\uff08\u65e0\u5d4c\u5957\u7ed3\u6784\uff09\uff1a**\n\n```bash\n$ parq data.parquet\n```\n\n```\n\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \ud83d\udcca Parquet File Metadata \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 file_path: data.parquet \u2502\n\u2502 num_rows: 1000 \u2502\n\u2502 num_columns: 5 (logical) \u2502\n\u2502 file_size: 123.45 KB \u2502\n\u2502 compression: SNAPPY \u2502\n\u2502 num_row_groups: 1 \u2502\n\u2502 format_version: 2.6 \u2502\n\u2502 serialized_size: 126412 \u2502\n\u2502 created_by: parquet-cpp-arrow version 18.0.0 \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n**\u5d4c\u5957\u7ed3\u6784\u6587\u4ef6\uff08\u663e\u793a\u7269\u7406\u5217\u6570\uff09\uff1a**\n\n```bash\n$ parq nested.parquet\n```\n\n```\n\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \ud83d\udcca Parquet File Metadata \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 file_path: nested.parquet \u2502\n\u2502 num_rows: 500 \u2502\n\u2502 num_columns: 3 (logical) \u2502\n\u2502 num_physical_columns: 8 (storage) \u2502\n\u2502 file_size: 2.34 MB \u2502\n\u2502 compression: ZSTD \u2502\n\u2502 num_row_groups: 2 \u2502\n\u2502 format_version: 2.6 \u2502\n\u2502 serialized_size: 2451789 \u2502\n\u2502 created_by: parquet-cpp-arrow version 21.0.0 \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\n### Schema \u5c55\u793a\n\n```bash\n$ parq data.parquet --schema\n```\n\n```\n \ud83d\udccb Schema Information\n\u250f\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n\u2503 Column Name \u2503 Data Type \u2503 Nullable \u2503\n\u2521\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2529\n\u2502 id \u2502 int64 \u2502 \u2717 \u2502\n\u2502 name \u2502 string \u2502 \u2713 \u2502\n\u2502 age \u2502 int64 \u2502 \u2713 \u2502\n\u2502 city \u2502 string \u2502 \u2713 \u2502\n\u2502 salary \u2502 double \u2502 \u2713 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n## \ud83d\udee0\ufe0f \u6280\u672f\u6808\n\n- **[PyArrow](https://arrow.apache.org/docs/python/)**: \u9ad8\u6027\u80fd\u7684 Parquet \u8bfb\u53d6\u5f15\u64ce\n- **[Typer](https://typer.tiangolo.com/)**: \u73b0\u4ee3\u5316\u7684 CLI \u6846\u67b6\n- **[Rich](https://rich.readthedocs.io/)**: \u7f8e\u89c2\u7684\u7ec8\u7aef\u8f93\u51fa\n\n## \ud83e\uddea \u5f00\u53d1\n\n### \u5b89\u88c5\u5f00\u53d1\u4f9d\u8d56\n\n```bash\npip install -e \".[dev]\"\n```\n\n### \u8fd0\u884c\u6d4b\u8bd5\n\n```bash\npytest\n```\n\n### \u8fd0\u884c\u6d4b\u8bd5\uff08\u5e26\u8986\u76d6\u7387\uff09\n\n```bash\npytest --cov=parq --cov-report=html\n```\n\n### \u4ee3\u7801\u683c\u5f0f\u5316\u548c\u68c0\u67e5\n\n```bash\n# \u4f7f\u7528 Ruff \u68c0\u67e5\u548c\u81ea\u52a8\u4fee\u590d\n\nruff check --fix parq tests\n```\n\n## \ud83d\uddfa\ufe0f \u8def\u7ebf\u56fe\n\n- [x] \u57fa\u7840\u5143\u6570\u636e\u67e5\u770b\n- [x] Schema \u5c55\u793a\n- [x] \u6570\u636e\u9884\u89c8\uff08head/tail\uff09\n- [x] \u884c\u6570\u7edf\u8ba1\n- [x] \u6587\u4ef6\u5927\u5c0f\u548c\u538b\u7f29\u4fe1\u606f\u663e\u793a\n- [x] \u5d4c\u5957\u7ed3\u6784\u667a\u80fd\u8bc6\u522b\uff08\u903b\u8f91\u5217\u6570 vs \u7269\u7406\u5217\u6570\uff09\n- [ ] SQL \u67e5\u8be2\u652f\u6301\n- [ ] \u6570\u636e\u7edf\u8ba1\u5206\u6790\n- [ ] \u683c\u5f0f\u8f6c\u6362\uff08CSV, JSON, Excel\uff09\n- [ ] \u6587\u4ef6\u5bf9\u6bd4\n- [ ] \u4e91\u5b58\u50a8\u652f\u6301\uff08S3, GCS, Azure\uff09\n\n## \ud83e\udd1d \u8d21\u732e\n\n\u6b22\u8fce\u63d0\u4ea4 Issue \u548c Pull Request\uff01\n\n1. Fork \u672c\u4ed3\u5e93\n2. \u521b\u5efa\u7279\u6027\u5206\u652f (`git checkout -b feature/AmazingFeature`)\n3. \u63d0\u4ea4\u66f4\u6539 (`git commit -m 'Add some AmazingFeature'`)\n4. \u63a8\u9001\u5230\u5206\u652f (`git push origin feature/AmazingFeature`)\n5. \u5f00\u542f Pull Request\n\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\n\n\u672c\u9879\u76ee\u91c7\u7528 MIT \u8bb8\u53ef\u8bc1 - \u8be6\u89c1 [LICENSE](LICENSE) \u6587\u4ef6\n\n## \ud83d\ude4f \u81f4\u8c22\n\n- \u7075\u611f\u6765\u6e90\u4e8e [parquet-cli](https://github.com/chhantyal/parquet-cli)\n- \u611f\u8c22 Apache Arrow \u56e2\u961f\u63d0\u4f9b\u5f3a\u5927\u7684 Parquet \u652f\u6301\n- \u611f\u8c22 Rich \u5e93\u4e3a\u7ec8\u7aef\u8f93\u51fa\u589e\u6dfb\u8272\u5f69\n\n## \ud83d\udcee \u8054\u7cfb\u65b9\u5f0f\n\n- \u4f5c\u8005: Jinfeng Sun\n- \u9879\u76ee\u5730\u5740: https://github.com/Tendo33/parq-cli\n\n---\n\n**\u2b50 \u5982\u679c\u8fd9\u4e2a\u9879\u76ee\u5bf9\u4f60\u6709\u5e2e\u52a9\uff0c\u8bf7\u7ed9\u4e2a Star\uff01**\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A powerful command-line tool for inspecting and analyzing Apache Parquet files",
"version": "0.0.3",
"project_urls": {
"Documentation": "https://github.com/Tendo33/parq-cli#readme",
"Homepage": "https://github.com/Tendo33/parq-cli",
"Issues": "https://github.com/Tendo33/parq-cli/issues",
"Repository": "https://github.com/Tendo33/parq-cli"
},
"split_keywords": [
"analytics",
" apache-parquet",
" cli",
" data",
" data-tools",
" parquet"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "d6da2c452942f316a205cb7a228b014c753cba22c709965e34ab66b305dd5cea",
"md5": "4c9e30d5ec04c2e1dc0d306338c03e3c",
"sha256": "5b088f2c5f6d17cfd4b8362a5aaf405dcda7abe21c3010445623de8c0febb556"
},
"downloads": -1,
"filename": "parq_cli-0.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4c9e30d5ec04c2e1dc0d306338c03e3c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 9115,
"upload_time": "2025-10-14T12:51:24",
"upload_time_iso_8601": "2025-10-14T12:51:24.288016Z",
"url": "https://files.pythonhosted.org/packages/d6/da/2c452942f316a205cb7a228b014c753cba22c709965e34ab66b305dd5cea/parq_cli-0.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7007650a46a268bbde254abb4c20e38775c9a6409792ab323d5318931d3e18c8",
"md5": "81102855fdd340e03830acffab8aa20a",
"sha256": "4ab257fc4c3fa22b6cab4486c8e32f921efc4863d46ae19ef43e354227d7d59f"
},
"downloads": -1,
"filename": "parq_cli-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "81102855fdd340e03830acffab8aa20a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 605606,
"upload_time": "2025-10-14T12:51:25",
"upload_time_iso_8601": "2025-10-14T12:51:25.442637Z",
"url": "https://files.pythonhosted.org/packages/70/07/650a46a268bbde254abb4c20e38775c9a6409792ab323d5318931d3e18c8/parq_cli-0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-14 12:51:25",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Tendo33",
"github_project": "parq-cli#readme",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "parq-cli"
}