# AeroSpot AutoReport 项目
AeroSpot AutoReport 是一个用于处理航测数据并生成水质分析报告的工具。项目经过模块化重构,消除了重复定义,提升了可维护性和结构清晰度。各功能模块职责单一,便于扩展和维护。
## 系统要求
- **Python**: >= 3.10 (推荐 3.11)
- **操作系统**: Windows, Linux, macOS
- **内存**: 建议 4GB 以上
- **硬盘**: 建议 1GB 可用空间
### Python版本支持
- ✅ **Python 3.11** (推荐版本)
- ✅ **Python 3.10** (最低版本)
- ✅ **Python 3.12** (最新版本)
## 快速安装
### 用户安装 (推荐)
```bash
# 完整功能安装 (包含水印功能,自动适配平台)
pip install aerospot-autoreport
```
### 开发环境安装
```bash
# 开发环境 (完整功能 + 开发工具)
pip install aerospot-autoreport[dev]
```
### 从源码安装
```bash
git clone https://github.com/1034378361/AutoReportV2.git
cd AutoReportV2
pip install -e .
```
## 安装选项说明
### 两种安装方式
1. **用户安装**: 完整功能 + 智能平台适配
2. **`[dev]`**: 用户功能 + 开发工具(测试、代码质量)
### 智能平台适配
所有安装方式都使用条件依赖,自动根据操作系统安装合适的依赖:
| 平台 | pywin32安装 | Windows目录更新功能 |
|------|-------------|-------------------|
| **Windows** | ✅ 自动安装 | ✅ 完全支持 |
| **Linux** | ❌ 自动跳过 | ❌ 不支持 |
| **macOS** | ❌ 自动跳过 | ❌ 不支持 |
### 功能对比
| 功能 | 用户安装 | [dev] |
|------|----------|-------|
| 报告生成 | ✅ | ✅ |
| 数据处理 | ✅ | ✅ |
| 图表生成 | ✅ | ✅ |
| 水印功能 | ✅ | ✅ |
| Windows目录更新 | 🔄 | 🔄 |
| 开发工具 | ❌ | ✅ |
🔄 = 自动平台适配:Windows支持,Linux/macOS不支持
## 项目结构
项目主要包含以下模块:
```
AeroSpotReportV2/
├── config/ # 配置模块(常量、样式、公司信息等集中管理)
│ ├── __init__.py
│ ├── constants.py # 常量定义
│ ├── styles.py # 样式配置
│ ├── company_info.py # 公司信息配置
│ └── defaults.py # 默认配置
├── utils/ # 工具模块(通用工具函数,去重整合)
│ ├── __init__.py
│ ├── text.py # 文本处理工具(如is_chinese、is_numeric等)
│ ├── font.py # 字体处理工具
│ ├── io.py # 输入输出工具
│ ├── geo.py # 地理计算工具
│ └── path.py # 路径处理工具
├── document/ # 文档生成模块(报告样式、段落、表格、图片、页面等)
│ ├── __init__.py
│ ├── styles.py # 文档样式
│ ├── paragraphs.py # 段落生成
│ ├── tables.py # 表格生成
│ ├── images.py # 图像处理
│ └── pages.py # 页面生成
├── processor/ # 数据处理模块
│ ├── data/ # 数据处理子模块
│ │ ├── __init__.py
│ │ ├── processor.py # 数据处理核心
│ │ ├── standardizer.py # 数据标准化
│ │ ├── analyzer.py # 数据分析
│ │ ├── matcher.py # 数据匹配
│ │ └── utils.py # 数据处理工具
│ ├── config.py # 配置处理
│ ├── downloader.py # 数据下载
│ ├── extractor.py # 数据提取
│ └── maps.py # 卫星图像与可视化地图生成
├── main.py # 主程序入口
├── generator.py # 报告生成器
├── error_handler.py # 错误处理
├── log_config.py # 日志配置
└── resource_manager.py # 资源管理
```
## 主要功能
1. **数据处理**:
- 从压缩文件中提取航测数据
- 标准化数据列名和指标名称
- 计算基本统计信息
- 数据匹配和分析
- 卫星图像与指标数据可视化(见processor/maps.py)
2. **报告生成**:
- 生成专业的Word格式报告
- 包含统计表格、分布图和分析结果
- 自定义报告样式和内容
3. **数据可视化**:
- 生成指标分布图、插值热力图、水质等级分布图
- 支持卫星底图与自定义地理边界
## 安装使用
1. 克隆项目到本地:
```bash
git clone https://github.com/1034378361/AeroSpotReportV2.git
cd AeroSpotReportV2
```
2. 安装依赖:
```bash
pip install -r requirements.txt
```
3. 配置环境变量:
创建`.env`文件并设置必要的环境变量。
4. 运行程序:
```bash
python main.py
```
## 配置说明
项目支持通过配置文件和环境变量进行配置。主要配置项包括:
- 公司信息配置
- 报告样式配置
- 数据处理参数配置
- 输出路径配置
详细配置说明请参考 `config/` 目录下的相关文件。
## 数据处理与可视化模块
- 数据处理模块(`processor/data/`)是项目的核心,负责处理航测数据和实测数据,主要功能包括:
- 数据标准化:统一列名和指标名称
- 数据匹配:将航测数据与实测数据进行匹配
- 数据分析:计算统计信息,分析数据特征
- 误差分析:分析原始航测数据和重新反演数据与实测数据的误差
- 地图与可视化模块(`processor/maps.py`)支持基于卫星图像和指标数据生成分布图、插值热力图和水质等级分布图。
## 模块化重构说明
- 本项目已完成配置、工具函数、文档生成等模块的结构化重构,消除了重复定义,提升了可维护性。
- 主程序(如`main.py`、`generator.py`)的导入路径更新与全局适配正在规划中。
- 详细重构计划见 `refactoring_plan.md`。
## 注意事项
- 项目需要Python 3.10或更高版本
- 部分功能需要授权才能使用
- 请确保输入数据格式符合要求
Raw data
{
"_id": null,
"home_page": null,
"name": "aerospot-autoreport",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "report, generator, docx, automation, remote sensing",
"author": null,
"author_email": "Zhou Yuanqi <zyq1034378361@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/50/00/981b8ae9c96c67c4373d7522e24e4b34eb08a1641dc5b3742fdf89d4ab7e/aerospot_autoreport-0.4.2.tar.gz",
"platform": null,
"description": "# AeroSpot AutoReport \u9879\u76ee\n\nAeroSpot AutoReport \u662f\u4e00\u4e2a\u7528\u4e8e\u5904\u7406\u822a\u6d4b\u6570\u636e\u5e76\u751f\u6210\u6c34\u8d28\u5206\u6790\u62a5\u544a\u7684\u5de5\u5177\u3002\u9879\u76ee\u7ecf\u8fc7\u6a21\u5757\u5316\u91cd\u6784\uff0c\u6d88\u9664\u4e86\u91cd\u590d\u5b9a\u4e49\uff0c\u63d0\u5347\u4e86\u53ef\u7ef4\u62a4\u6027\u548c\u7ed3\u6784\u6e05\u6670\u5ea6\u3002\u5404\u529f\u80fd\u6a21\u5757\u804c\u8d23\u5355\u4e00\uff0c\u4fbf\u4e8e\u6269\u5c55\u548c\u7ef4\u62a4\u3002\n\n## \u7cfb\u7edf\u8981\u6c42\n\n- **Python**: >= 3.10 (\u63a8\u8350 3.11)\n- **\u64cd\u4f5c\u7cfb\u7edf**: Windows, Linux, macOS\n- **\u5185\u5b58**: \u5efa\u8bae 4GB \u4ee5\u4e0a\n- **\u786c\u76d8**: \u5efa\u8bae 1GB \u53ef\u7528\u7a7a\u95f4\n\n### Python\u7248\u672c\u652f\u6301\n- \u2705 **Python 3.11** (\u63a8\u8350\u7248\u672c)\n- \u2705 **Python 3.10** (\u6700\u4f4e\u7248\u672c)\n- \u2705 **Python 3.12** (\u6700\u65b0\u7248\u672c)\n\n## \u5feb\u901f\u5b89\u88c5\n\n### \u7528\u6237\u5b89\u88c5 (\u63a8\u8350)\n```bash\n# \u5b8c\u6574\u529f\u80fd\u5b89\u88c5 (\u5305\u542b\u6c34\u5370\u529f\u80fd\uff0c\u81ea\u52a8\u9002\u914d\u5e73\u53f0)\npip install aerospot-autoreport\n```\n\n### \u5f00\u53d1\u73af\u5883\u5b89\u88c5\n```bash\n# \u5f00\u53d1\u73af\u5883 (\u5b8c\u6574\u529f\u80fd + \u5f00\u53d1\u5de5\u5177)\npip install aerospot-autoreport[dev]\n```\n\n### \u4ece\u6e90\u7801\u5b89\u88c5\n```bash\ngit clone https://github.com/1034378361/AutoReportV2.git\ncd AutoReportV2\npip install -e .\n```\n\n## \u5b89\u88c5\u9009\u9879\u8bf4\u660e\n\n### \u4e24\u79cd\u5b89\u88c5\u65b9\u5f0f\n1. **\u7528\u6237\u5b89\u88c5**: \u5b8c\u6574\u529f\u80fd + \u667a\u80fd\u5e73\u53f0\u9002\u914d\n2. **`[dev]`**: \u7528\u6237\u529f\u80fd + \u5f00\u53d1\u5de5\u5177(\u6d4b\u8bd5\u3001\u4ee3\u7801\u8d28\u91cf)\n\n### \u667a\u80fd\u5e73\u53f0\u9002\u914d\n\u6240\u6709\u5b89\u88c5\u65b9\u5f0f\u90fd\u4f7f\u7528\u6761\u4ef6\u4f9d\u8d56\uff0c\u81ea\u52a8\u6839\u636e\u64cd\u4f5c\u7cfb\u7edf\u5b89\u88c5\u5408\u9002\u7684\u4f9d\u8d56\uff1a\n\n| \u5e73\u53f0 | pywin32\u5b89\u88c5 | Windows\u76ee\u5f55\u66f4\u65b0\u529f\u80fd |\n|------|-------------|-------------------|\n| **Windows** | \u2705 \u81ea\u52a8\u5b89\u88c5 | \u2705 \u5b8c\u5168\u652f\u6301 |\n| **Linux** | \u274c \u81ea\u52a8\u8df3\u8fc7 | \u274c \u4e0d\u652f\u6301 |\n| **macOS** | \u274c \u81ea\u52a8\u8df3\u8fc7 | \u274c \u4e0d\u652f\u6301 |\n\n### \u529f\u80fd\u5bf9\u6bd4\n| \u529f\u80fd | \u7528\u6237\u5b89\u88c5 | [dev] |\n|------|----------|-------|\n| \u62a5\u544a\u751f\u6210 | \u2705 | \u2705 |\n| \u6570\u636e\u5904\u7406 | \u2705 | \u2705 |\n| \u56fe\u8868\u751f\u6210 | \u2705 | \u2705 |\n| \u6c34\u5370\u529f\u80fd | \u2705 | \u2705 |\n| Windows\u76ee\u5f55\u66f4\u65b0 | \ud83d\udd04 | \ud83d\udd04 |\n| \u5f00\u53d1\u5de5\u5177 | \u274c | \u2705 |\n\n\ud83d\udd04 = \u81ea\u52a8\u5e73\u53f0\u9002\u914d\uff1aWindows\u652f\u6301\uff0cLinux/macOS\u4e0d\u652f\u6301\n\n## \u9879\u76ee\u7ed3\u6784\n\n\u9879\u76ee\u4e3b\u8981\u5305\u542b\u4ee5\u4e0b\u6a21\u5757\uff1a\n\n```\nAeroSpotReportV2/\n\u251c\u2500\u2500 config/ # \u914d\u7f6e\u6a21\u5757\uff08\u5e38\u91cf\u3001\u6837\u5f0f\u3001\u516c\u53f8\u4fe1\u606f\u7b49\u96c6\u4e2d\u7ba1\u7406\uff09\n\u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u251c\u2500\u2500 constants.py # \u5e38\u91cf\u5b9a\u4e49\n\u2502 \u251c\u2500\u2500 styles.py # \u6837\u5f0f\u914d\u7f6e\n\u2502 \u251c\u2500\u2500 company_info.py # \u516c\u53f8\u4fe1\u606f\u914d\u7f6e\n\u2502 \u2514\u2500\u2500 defaults.py # \u9ed8\u8ba4\u914d\u7f6e\n\u251c\u2500\u2500 utils/ # \u5de5\u5177\u6a21\u5757\uff08\u901a\u7528\u5de5\u5177\u51fd\u6570\uff0c\u53bb\u91cd\u6574\u5408\uff09\n\u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u251c\u2500\u2500 text.py # \u6587\u672c\u5904\u7406\u5de5\u5177\uff08\u5982is_chinese\u3001is_numeric\u7b49\uff09\n\u2502 \u251c\u2500\u2500 font.py # \u5b57\u4f53\u5904\u7406\u5de5\u5177\n\u2502 \u251c\u2500\u2500 io.py # \u8f93\u5165\u8f93\u51fa\u5de5\u5177\n\u2502 \u251c\u2500\u2500 geo.py # \u5730\u7406\u8ba1\u7b97\u5de5\u5177\n\u2502 \u2514\u2500\u2500 path.py # \u8def\u5f84\u5904\u7406\u5de5\u5177\n\u251c\u2500\u2500 document/ # \u6587\u6863\u751f\u6210\u6a21\u5757\uff08\u62a5\u544a\u6837\u5f0f\u3001\u6bb5\u843d\u3001\u8868\u683c\u3001\u56fe\u7247\u3001\u9875\u9762\u7b49\uff09\n\u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u251c\u2500\u2500 styles.py # \u6587\u6863\u6837\u5f0f\n\u2502 \u251c\u2500\u2500 paragraphs.py # \u6bb5\u843d\u751f\u6210\n\u2502 \u251c\u2500\u2500 tables.py # \u8868\u683c\u751f\u6210\n\u2502 \u251c\u2500\u2500 images.py # \u56fe\u50cf\u5904\u7406\n\u2502 \u2514\u2500\u2500 pages.py # \u9875\u9762\u751f\u6210\n\u251c\u2500\u2500 processor/ # \u6570\u636e\u5904\u7406\u6a21\u5757\n\u2502 \u251c\u2500\u2500 data/ # \u6570\u636e\u5904\u7406\u5b50\u6a21\u5757\n\u2502 \u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u2502 \u251c\u2500\u2500 processor.py # \u6570\u636e\u5904\u7406\u6838\u5fc3\n\u2502 \u2502 \u251c\u2500\u2500 standardizer.py # \u6570\u636e\u6807\u51c6\u5316\n\u2502 \u2502 \u251c\u2500\u2500 analyzer.py # \u6570\u636e\u5206\u6790\n\u2502 \u2502 \u251c\u2500\u2500 matcher.py # \u6570\u636e\u5339\u914d\n\u2502 \u2502 \u2514\u2500\u2500 utils.py # \u6570\u636e\u5904\u7406\u5de5\u5177\n\u2502 \u251c\u2500\u2500 config.py # \u914d\u7f6e\u5904\u7406\n\u2502 \u251c\u2500\u2500 downloader.py # \u6570\u636e\u4e0b\u8f7d\n\u2502 \u251c\u2500\u2500 extractor.py # \u6570\u636e\u63d0\u53d6\n\u2502 \u2514\u2500\u2500 maps.py # \u536b\u661f\u56fe\u50cf\u4e0e\u53ef\u89c6\u5316\u5730\u56fe\u751f\u6210\n\u251c\u2500\u2500 main.py # \u4e3b\u7a0b\u5e8f\u5165\u53e3\n\u251c\u2500\u2500 generator.py # \u62a5\u544a\u751f\u6210\u5668\n\u251c\u2500\u2500 error_handler.py # \u9519\u8bef\u5904\u7406\n\u251c\u2500\u2500 log_config.py # \u65e5\u5fd7\u914d\u7f6e\n\u2514\u2500\u2500 resource_manager.py # \u8d44\u6e90\u7ba1\u7406\n```\n\n## \u4e3b\u8981\u529f\u80fd\n\n1. **\u6570\u636e\u5904\u7406**\uff1a\n - \u4ece\u538b\u7f29\u6587\u4ef6\u4e2d\u63d0\u53d6\u822a\u6d4b\u6570\u636e\n - \u6807\u51c6\u5316\u6570\u636e\u5217\u540d\u548c\u6307\u6807\u540d\u79f0\n - \u8ba1\u7b97\u57fa\u672c\u7edf\u8ba1\u4fe1\u606f\n - \u6570\u636e\u5339\u914d\u548c\u5206\u6790\n - \u536b\u661f\u56fe\u50cf\u4e0e\u6307\u6807\u6570\u636e\u53ef\u89c6\u5316\uff08\u89c1processor/maps.py\uff09\n\n2. **\u62a5\u544a\u751f\u6210**\uff1a\n - \u751f\u6210\u4e13\u4e1a\u7684Word\u683c\u5f0f\u62a5\u544a\n - \u5305\u542b\u7edf\u8ba1\u8868\u683c\u3001\u5206\u5e03\u56fe\u548c\u5206\u6790\u7ed3\u679c\n - \u81ea\u5b9a\u4e49\u62a5\u544a\u6837\u5f0f\u548c\u5185\u5bb9\n\n3. **\u6570\u636e\u53ef\u89c6\u5316**\uff1a\n - \u751f\u6210\u6307\u6807\u5206\u5e03\u56fe\u3001\u63d2\u503c\u70ed\u529b\u56fe\u3001\u6c34\u8d28\u7b49\u7ea7\u5206\u5e03\u56fe\n - \u652f\u6301\u536b\u661f\u5e95\u56fe\u4e0e\u81ea\u5b9a\u4e49\u5730\u7406\u8fb9\u754c\n\n## \u5b89\u88c5\u4f7f\u7528\n\n1. \u514b\u9686\u9879\u76ee\u5230\u672c\u5730\uff1a\n ```bash\n git clone https://github.com/1034378361/AeroSpotReportV2.git\n cd AeroSpotReportV2\n ```\n\n2. \u5b89\u88c5\u4f9d\u8d56\uff1a\n ```bash\n pip install -r requirements.txt\n ```\n\n3. \u914d\u7f6e\u73af\u5883\u53d8\u91cf\uff1a\n \u521b\u5efa`.env`\u6587\u4ef6\u5e76\u8bbe\u7f6e\u5fc5\u8981\u7684\u73af\u5883\u53d8\u91cf\u3002\n\n4. \u8fd0\u884c\u7a0b\u5e8f\uff1a\n ```bash\n python main.py\n ```\n\n## \u914d\u7f6e\u8bf4\u660e\n\n\u9879\u76ee\u652f\u6301\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\u548c\u73af\u5883\u53d8\u91cf\u8fdb\u884c\u914d\u7f6e\u3002\u4e3b\u8981\u914d\u7f6e\u9879\u5305\u62ec\uff1a\n\n- \u516c\u53f8\u4fe1\u606f\u914d\u7f6e\n- \u62a5\u544a\u6837\u5f0f\u914d\u7f6e\n- \u6570\u636e\u5904\u7406\u53c2\u6570\u914d\u7f6e\n- \u8f93\u51fa\u8def\u5f84\u914d\u7f6e\n\n\u8be6\u7ec6\u914d\u7f6e\u8bf4\u660e\u8bf7\u53c2\u8003 `config/` \u76ee\u5f55\u4e0b\u7684\u76f8\u5173\u6587\u4ef6\u3002\n\n## \u6570\u636e\u5904\u7406\u4e0e\u53ef\u89c6\u5316\u6a21\u5757\n\n- \u6570\u636e\u5904\u7406\u6a21\u5757(`processor/data/`)\u662f\u9879\u76ee\u7684\u6838\u5fc3\uff0c\u8d1f\u8d23\u5904\u7406\u822a\u6d4b\u6570\u636e\u548c\u5b9e\u6d4b\u6570\u636e\uff0c\u4e3b\u8981\u529f\u80fd\u5305\u62ec\uff1a\n - \u6570\u636e\u6807\u51c6\u5316\uff1a\u7edf\u4e00\u5217\u540d\u548c\u6307\u6807\u540d\u79f0\n - \u6570\u636e\u5339\u914d\uff1a\u5c06\u822a\u6d4b\u6570\u636e\u4e0e\u5b9e\u6d4b\u6570\u636e\u8fdb\u884c\u5339\u914d\n - \u6570\u636e\u5206\u6790\uff1a\u8ba1\u7b97\u7edf\u8ba1\u4fe1\u606f\uff0c\u5206\u6790\u6570\u636e\u7279\u5f81\n - \u8bef\u5dee\u5206\u6790\uff1a\u5206\u6790\u539f\u59cb\u822a\u6d4b\u6570\u636e\u548c\u91cd\u65b0\u53cd\u6f14\u6570\u636e\u4e0e\u5b9e\u6d4b\u6570\u636e\u7684\u8bef\u5dee\n- \u5730\u56fe\u4e0e\u53ef\u89c6\u5316\u6a21\u5757(`processor/maps.py`)\u652f\u6301\u57fa\u4e8e\u536b\u661f\u56fe\u50cf\u548c\u6307\u6807\u6570\u636e\u751f\u6210\u5206\u5e03\u56fe\u3001\u63d2\u503c\u70ed\u529b\u56fe\u548c\u6c34\u8d28\u7b49\u7ea7\u5206\u5e03\u56fe\u3002\n\n## \u6a21\u5757\u5316\u91cd\u6784\u8bf4\u660e\n\n- \u672c\u9879\u76ee\u5df2\u5b8c\u6210\u914d\u7f6e\u3001\u5de5\u5177\u51fd\u6570\u3001\u6587\u6863\u751f\u6210\u7b49\u6a21\u5757\u7684\u7ed3\u6784\u5316\u91cd\u6784\uff0c\u6d88\u9664\u4e86\u91cd\u590d\u5b9a\u4e49\uff0c\u63d0\u5347\u4e86\u53ef\u7ef4\u62a4\u6027\u3002\n- \u4e3b\u7a0b\u5e8f\uff08\u5982`main.py`\u3001`generator.py`\uff09\u7684\u5bfc\u5165\u8def\u5f84\u66f4\u65b0\u4e0e\u5168\u5c40\u9002\u914d\u6b63\u5728\u89c4\u5212\u4e2d\u3002\n- \u8be6\u7ec6\u91cd\u6784\u8ba1\u5212\u89c1 `refactoring_plan.md`\u3002\n\n## \u6ce8\u610f\u4e8b\u9879\n\n- \u9879\u76ee\u9700\u8981Python 3.10\u6216\u66f4\u9ad8\u7248\u672c\n- \u90e8\u5206\u529f\u80fd\u9700\u8981\u6388\u6743\u624d\u80fd\u4f7f\u7528\n- \u8bf7\u786e\u4fdd\u8f93\u5165\u6570\u636e\u683c\u5f0f\u7b26\u5408\u8981\u6c42 \n",
"bugtrack_url": null,
"license": "MIT",
"summary": "AeroSpot\u81ea\u52a8\u5316\u62a5\u544a\u751f\u6210\u5de5\u5177",
"version": "0.4.2",
"project_urls": {
"Bug Tracker": "https://github.com/1034378361/AutoReportV2/issues",
"Documentation": "https://autoreport-v2.readthedocs.io/",
"Homepage": "https://github.com/1034378361/AutoReportV2",
"Repository": "https://github.com/1034378361/AutoReportV2"
},
"split_keywords": [
"report",
" generator",
" docx",
" automation",
" remote sensing"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "05f02c2d5181c044d8f6e3a96233e8a879a4f487c33f1c03e0f109a110255de4",
"md5": "973fbcb32b8204fd8c95e8f97f3203ff",
"sha256": "c1ed1a07872cc415fff6d069b8bc8f734abf4154eaa30c89356c8aadb37fbb99"
},
"downloads": -1,
"filename": "aerospot_autoreport-0.4.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "973fbcb32b8204fd8c95e8f97f3203ff",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 1282669,
"upload_time": "2025-07-09T10:59:00",
"upload_time_iso_8601": "2025-07-09T10:59:00.579576Z",
"url": "https://files.pythonhosted.org/packages/05/f0/2c2d5181c044d8f6e3a96233e8a879a4f487c33f1c03e0f109a110255de4/aerospot_autoreport-0.4.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5000981b8ae9c96c67c4373d7522e24e4b34eb08a1641dc5b3742fdf89d4ab7e",
"md5": "66fd9d8da3bfc39f7832800b205fe41f",
"sha256": "2c67d00527825fc19257b8187a08dc7b0c54600f5e4d8f09e20c39bbd80d761e"
},
"downloads": -1,
"filename": "aerospot_autoreport-0.4.2.tar.gz",
"has_sig": false,
"md5_digest": "66fd9d8da3bfc39f7832800b205fe41f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 1475736,
"upload_time": "2025-07-09T10:59:01",
"upload_time_iso_8601": "2025-07-09T10:59:01.877105Z",
"url": "https://files.pythonhosted.org/packages/50/00/981b8ae9c96c67c4373d7522e24e4b34eb08a1641dc5b3742fdf89d4ab7e/aerospot_autoreport-0.4.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-09 10:59:01",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "1034378361",
"github_project": "AutoReportV2",
"github_not_found": true,
"lcname": "aerospot-autoreport"
}