Name | hvac-did-flash JSON |
Version |
1.1.2
JSON |
| download |
home_page | None |
Summary | STM32 Firmware Programming System for HVAC devices with DID flash support |
upload_time | 2025-09-05 07:23:09 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | None |
keywords |
stm32
firmware
programming
hvac
did
flash
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# HVAC DID Flash
STM32 펌웨어 프로그래밍 시스템 - HVAC 장치를 위한 DID 플래시 지원
자동화된 STM32 펌웨어 프로그래밍 시스템으로, HVAC 애플리케이션에 특화된 DID(Data Identifier) 플래시 지원을 제공합니다.
## 주요 기능
- **자동화된 STM32 펌웨어 프로그래밍**: ST-Link를 통한 완전 자동화된 프로그래밍
- **지능형 플래시 검증**: 프로그래밍 전후 플래시 메모리 검증
- **시리얼 통신 검증**: UART를 통한 펌웨어 동작 확인
- **음성 안내**: 프로그래밍 진행 상황을 음성으로 안내
- **배치 처리**: 여러 펌웨어 파일의 일괄 처리
- **성능 모니터링**: 상세한 성능 분석 및 리포팅
- **오류 복구**: 강력한 오류 처리 및 자동 재시도
## 시리얼 번호 관리
- did_serial.csv 파일에 기록된 serial number는 "이전 출력된 번호"입니다.
- 예를 들어, csv에 0000이 기록되어 있으면, 다음 수행 시 0001이 자동으로 생성되어 사용됩니다.
## 설치
### PyPI에서 설치 (권장)
```bash
pip install hvac-did-flash
```
### 소스에서 설치
```bash
git clone https://github.com/your-org/hvac-did-flash.git
cd hvac-did-flash
pip install -e .
```
### 개발자 설치
```bash
git clone https://github.com/your-org/hvac-did-flash.git
cd hvac-did-flash
pip install -e ".[dev]"
```
### 2. Slack 설정 (선택사항)
Slack으로 펌웨어를 자동 업로드하려면 다음 단계를 따르세요:
#### 2.1 Slack App 생성
1. https://api.slack.com/apps 로 이동
2. "Create New App" → "From scratch" 클릭
3. App 이름 입력 (예: "HVAC Firmware Upload Bot")
4. 워크스페이스 선택
#### 2.2 권한 설정
1. 좌측 메뉴에서 "OAuth & Permissions" 클릭
2. "Scopes" 섹션으로 스크롤
3. "Bot Token Scopes"에서 "Add an OAuth Scope" 클릭
4. 다음 권한을 추가:
- `files:write` - 파일 업로드 (필수)
- `chat:write` - 메시지 전송 (선택사항)
5. 권한 추가 후 페이지 상단의 노란색 배너에서 "reinstall your app" 클릭
6. 워크스페이스에 재설치 승인
#### 2.3 App 설치
1. "OAuth & Permissions" 페이지 상단의 "Install to Workspace" 클릭
2. 권한 승인
3. "Bot User OAuth Token" 복사 (xoxb-로 시작)
#### 2.4 채널에 Bot 추가
1. Slack에서 파일을 업로드할 채널로 이동
2. 채널에서 `/invite @[Bot 이름]` 입력
#### 2.5 환경 변수 설정
1. `.env.example` 파일을 `.env`로 복사
2. 다음 값을 설정:
```env
SLACK_BOT_TOKEN=xoxb-your-bot-token-here
SLACK_CHANNEL_ID=C1234567890
```
**채널 ID 찾는 방법:**
- Slack 웹/데스크톱에서 채널 우클릭 → "View channel details"
- 하단의 Channel ID 복사
## 사용법
### 명령줄 인터페이스
```bash
# 기본 사용법 - 배치 모드로 모든 펌웨어 파일 처리
hvac-flash --batch
# 단일 파일 처리
hvac-flash --single-file firmware.bin
# 설정 파일 지정
hvac-flash --config config.ini --batch
# 드라이런 모드 (실제 프로그래밍 없이 테스트)
hvac-flash --dry-run
# ST-Link 시리얼 번호 지정
hvac-flash --batch --stlink-sn 123456789
```
### Python API 사용
```python
from hvac_did_flash import STM32ProgrammingSystem, Config
# 설정 로드
config = Config()
# 프로그래밍 시스템 초기화
system = STM32ProgrammingSystem(config)
# 배치 처리
firmware_files = system.scan_firmware_directory()
stats = system.process_batch_files(firmware_files)
print(f"처리 완료: {stats['successful']}/{stats['total']} 성공")
```
### 고급 사용법
```bash
# 검증 활성화
hvac-flash --batch --verify
# 검증 비활성화
hvac-flash --batch --no-verify
# 특정 ST-Link 시리얼 번호 사용
hvac-flash --batch --stlink-sn 066DFF383638424E43172239
# 사용자 정의 설정으로 실행
hvac-flash --config my_config.ini --batch
```
## 명령줄 인수
- `repeat` (선택사항): 빌드 반복 횟수 (기본값: 1)
- `start_serial` (선택사항): 시작 시리얼 번호 또는 "auto" (기본값: auto)
- `model` (선택사항): 모델명 (기본값: QZ25)
- `--slack`: Slack으로 ZIP 파일 업로드
## 출력 파일
- 개별 펌웨어 파일: `firmware/hvac-main-stm32f103@CYBER-QZ25_{serial}_{tag}.bin`
- 압축 파일: `{model}_{start_serial}_{count}.zip`
## 문제 해결
### Slack 업로드 오류
1. **missing_scope**:
- 오류 메시지: `'error': 'missing_scope', 'needed': 'files:write'`
- 해결 방법:
1. https://api.slack.com/apps 에서 앱 선택
2. "OAuth & Permissions" → "Scopes" → "Bot Token Scopes"
3. `files:write` 권한 추가
4. 페이지 상단에서 "reinstall your app" 클릭
5. 재설치 완료 후 다시 시도
2. **invalid_auth**: SLACK_BOT_TOKEN이 올바른지 확인
3. **channel_not_found**: SLACK_CHANNEL_ID가 올바른지 확인
4. **not_in_channel**: Bot을 채널에 초대 (`/invite @bot-name`)
5. **file_too_large**: Slack 파일 크기 제한 (1GB) 확인
### 환경 변수 문제
- `.env` 파일이 프로젝트 루트에 있는지 확인
- `.env` 파일이 `.gitignore`에 포함되어 있는지 확인 (보안)
## 주의사항
- Slack Bot Token을 절대 코드에 직접 입력하지 마세요
- `.env` 파일을 Git에 커밋하지 마세요
- 대용량 파일 업로드 시 네트워크 상태 확인
Raw data
{
"_id": null,
"home_page": null,
"name": "hvac-did-flash",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "HVAC Team <team@example.com>",
"keywords": "STM32, firmware, programming, HVAC, DID, flash",
"author": null,
"author_email": "HVAC Team <team@example.com>",
"download_url": "https://files.pythonhosted.org/packages/b2/0c/f6c380a87b5f328f220f150a571702c18e91c67ec361fbcb914b719045f7/hvac_did_flash-1.1.2.tar.gz",
"platform": null,
"description": "# HVAC DID Flash\r\n\r\nSTM32 \ud38c\uc6e8\uc5b4 \ud504\ub85c\uadf8\ub798\ubc0d \uc2dc\uc2a4\ud15c - HVAC \uc7a5\uce58\ub97c \uc704\ud55c DID \ud50c\ub798\uc2dc \uc9c0\uc6d0\r\n\r\n\uc790\ub3d9\ud654\ub41c STM32 \ud38c\uc6e8\uc5b4 \ud504\ub85c\uadf8\ub798\ubc0d \uc2dc\uc2a4\ud15c\uc73c\ub85c, HVAC \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \ud2b9\ud654\ub41c DID(Data Identifier) \ud50c\ub798\uc2dc \uc9c0\uc6d0\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.\r\n\r\n## \uc8fc\uc694 \uae30\ub2a5\r\n\r\n- **\uc790\ub3d9\ud654\ub41c STM32 \ud38c\uc6e8\uc5b4 \ud504\ub85c\uadf8\ub798\ubc0d**: ST-Link\ub97c \ud1b5\ud55c \uc644\uc804 \uc790\ub3d9\ud654\ub41c \ud504\ub85c\uadf8\ub798\ubc0d\r\n- **\uc9c0\ub2a5\ud615 \ud50c\ub798\uc2dc \uac80\uc99d**: \ud504\ub85c\uadf8\ub798\ubc0d \uc804\ud6c4 \ud50c\ub798\uc2dc \uba54\ubaa8\ub9ac \uac80\uc99d\r\n- **\uc2dc\ub9ac\uc5bc \ud1b5\uc2e0 \uac80\uc99d**: UART\ub97c \ud1b5\ud55c \ud38c\uc6e8\uc5b4 \ub3d9\uc791 \ud655\uc778\r\n- **\uc74c\uc131 \uc548\ub0b4**: \ud504\ub85c\uadf8\ub798\ubc0d \uc9c4\ud589 \uc0c1\ud669\uc744 \uc74c\uc131\uc73c\ub85c \uc548\ub0b4\r\n- **\ubc30\uce58 \ucc98\ub9ac**: \uc5ec\ub7ec \ud38c\uc6e8\uc5b4 \ud30c\uc77c\uc758 \uc77c\uad04 \ucc98\ub9ac\r\n- **\uc131\ub2a5 \ubaa8\ub2c8\ud130\ub9c1**: \uc0c1\uc138\ud55c \uc131\ub2a5 \ubd84\uc11d \ubc0f \ub9ac\ud3ec\ud305\r\n- **\uc624\ub958 \ubcf5\uad6c**: \uac15\ub825\ud55c \uc624\ub958 \ucc98\ub9ac \ubc0f \uc790\ub3d9 \uc7ac\uc2dc\ub3c4\r\n\r\n## \uc2dc\ub9ac\uc5bc \ubc88\ud638 \uad00\ub9ac\r\n\r\n- did_serial.csv \ud30c\uc77c\uc5d0 \uae30\ub85d\ub41c serial number\ub294 \"\uc774\uc804 \ucd9c\ub825\ub41c \ubc88\ud638\"\uc785\ub2c8\ub2e4.\r\n- \uc608\ub97c \ub4e4\uc5b4, csv\uc5d0 0000\uc774 \uae30\ub85d\ub418\uc5b4 \uc788\uc73c\uba74, \ub2e4\uc74c \uc218\ud589 \uc2dc 0001\uc774 \uc790\ub3d9\uc73c\ub85c \uc0dd\uc131\ub418\uc5b4 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.\r\n\r\n## \uc124\uce58\r\n\r\n### PyPI\uc5d0\uc11c \uc124\uce58 (\uad8c\uc7a5)\r\n\r\n```bash\r\npip install hvac-did-flash\r\n```\r\n\r\n### \uc18c\uc2a4\uc5d0\uc11c \uc124\uce58\r\n\r\n```bash\r\ngit clone https://github.com/your-org/hvac-did-flash.git\r\ncd hvac-did-flash\r\npip install -e .\r\n```\r\n\r\n### \uac1c\ubc1c\uc790 \uc124\uce58\r\n\r\n```bash\r\ngit clone https://github.com/your-org/hvac-did-flash.git\r\ncd hvac-did-flash\r\npip install -e \".[dev]\"\r\n```\r\n\r\n### 2. Slack \uc124\uc815 (\uc120\ud0dd\uc0ac\ud56d)\r\n\r\nSlack\uc73c\ub85c \ud38c\uc6e8\uc5b4\ub97c \uc790\ub3d9 \uc5c5\ub85c\ub4dc\ud558\ub824\uba74 \ub2e4\uc74c \ub2e8\uacc4\ub97c \ub530\ub974\uc138\uc694:\r\n\r\n#### 2.1 Slack App \uc0dd\uc131\r\n\r\n1. https://api.slack.com/apps \ub85c \uc774\ub3d9\r\n2. \"Create New App\" \u2192 \"From scratch\" \ud074\ub9ad\r\n3. App \uc774\ub984 \uc785\ub825 (\uc608: \"HVAC Firmware Upload Bot\")\r\n4. \uc6cc\ud06c\uc2a4\ud398\uc774\uc2a4 \uc120\ud0dd\r\n\r\n#### 2.2 \uad8c\ud55c \uc124\uc815\r\n\r\n1. \uc88c\uce21 \uba54\ub274\uc5d0\uc11c \"OAuth & Permissions\" \ud074\ub9ad\r\n2. \"Scopes\" \uc139\uc158\uc73c\ub85c \uc2a4\ud06c\ub864\r\n3. \"Bot Token Scopes\"\uc5d0\uc11c \"Add an OAuth Scope\" \ud074\ub9ad\r\n4. \ub2e4\uc74c \uad8c\ud55c\uc744 \ucd94\uac00:\r\n - `files:write` - \ud30c\uc77c \uc5c5\ub85c\ub4dc (\ud544\uc218)\r\n - `chat:write` - \uba54\uc2dc\uc9c0 \uc804\uc1a1 (\uc120\ud0dd\uc0ac\ud56d)\r\n5. \uad8c\ud55c \ucd94\uac00 \ud6c4 \ud398\uc774\uc9c0 \uc0c1\ub2e8\uc758 \ub178\ub780\uc0c9 \ubc30\ub108\uc5d0\uc11c \"reinstall your app\" \ud074\ub9ad\r\n6. \uc6cc\ud06c\uc2a4\ud398\uc774\uc2a4\uc5d0 \uc7ac\uc124\uce58 \uc2b9\uc778\r\n\r\n#### 2.3 App \uc124\uce58\r\n\r\n1. \"OAuth & Permissions\" \ud398\uc774\uc9c0 \uc0c1\ub2e8\uc758 \"Install to Workspace\" \ud074\ub9ad\r\n2. \uad8c\ud55c \uc2b9\uc778\r\n3. \"Bot User OAuth Token\" \ubcf5\uc0ac (xoxb-\ub85c \uc2dc\uc791)\r\n\r\n#### 2.4 \ucc44\ub110\uc5d0 Bot \ucd94\uac00\r\n\r\n1. Slack\uc5d0\uc11c \ud30c\uc77c\uc744 \uc5c5\ub85c\ub4dc\ud560 \ucc44\ub110\ub85c \uc774\ub3d9\r\n2. \ucc44\ub110\uc5d0\uc11c `/invite @[Bot \uc774\ub984]` \uc785\ub825\r\n\r\n#### 2.5 \ud658\uacbd \ubcc0\uc218 \uc124\uc815\r\n\r\n1. `.env.example` \ud30c\uc77c\uc744 `.env`\ub85c \ubcf5\uc0ac\r\n2. \ub2e4\uc74c \uac12\uc744 \uc124\uc815:\r\n\r\n```env\r\nSLACK_BOT_TOKEN=xoxb-your-bot-token-here\r\nSLACK_CHANNEL_ID=C1234567890\r\n```\r\n\r\n**\ucc44\ub110 ID \ucc3e\ub294 \ubc29\ubc95:**\r\n- Slack \uc6f9/\ub370\uc2a4\ud06c\ud1b1\uc5d0\uc11c \ucc44\ub110 \uc6b0\ud074\ub9ad \u2192 \"View channel details\"\r\n- \ud558\ub2e8\uc758 Channel ID \ubcf5\uc0ac\r\n\r\n## \uc0ac\uc6a9\ubc95\r\n\r\n### \uba85\ub839\uc904 \uc778\ud130\ud398\uc774\uc2a4\r\n\r\n```bash\r\n# \uae30\ubcf8 \uc0ac\uc6a9\ubc95 - \ubc30\uce58 \ubaa8\ub4dc\ub85c \ubaa8\ub4e0 \ud38c\uc6e8\uc5b4 \ud30c\uc77c \ucc98\ub9ac\r\nhvac-flash --batch\r\n\r\n# \ub2e8\uc77c \ud30c\uc77c \ucc98\ub9ac\r\nhvac-flash --single-file firmware.bin\r\n\r\n# \uc124\uc815 \ud30c\uc77c \uc9c0\uc815\r\nhvac-flash --config config.ini --batch\r\n\r\n# \ub4dc\ub77c\uc774\ub7f0 \ubaa8\ub4dc (\uc2e4\uc81c \ud504\ub85c\uadf8\ub798\ubc0d \uc5c6\uc774 \ud14c\uc2a4\ud2b8)\r\nhvac-flash --dry-run\r\n\r\n# ST-Link \uc2dc\ub9ac\uc5bc \ubc88\ud638 \uc9c0\uc815\r\nhvac-flash --batch --stlink-sn 123456789\r\n```\r\n\r\n### Python API \uc0ac\uc6a9\r\n\r\n```python\r\nfrom hvac_did_flash import STM32ProgrammingSystem, Config\r\n\r\n# \uc124\uc815 \ub85c\ub4dc\r\nconfig = Config()\r\n\r\n# \ud504\ub85c\uadf8\ub798\ubc0d \uc2dc\uc2a4\ud15c \ucd08\uae30\ud654\r\nsystem = STM32ProgrammingSystem(config)\r\n\r\n# \ubc30\uce58 \ucc98\ub9ac\r\nfirmware_files = system.scan_firmware_directory()\r\nstats = system.process_batch_files(firmware_files)\r\n\r\nprint(f\"\ucc98\ub9ac \uc644\ub8cc: {stats['successful']}/{stats['total']} \uc131\uacf5\")\r\n```\r\n\r\n### \uace0\uae09 \uc0ac\uc6a9\ubc95\r\n\r\n```bash\r\n# \uac80\uc99d \ud65c\uc131\ud654\r\nhvac-flash --batch --verify\r\n\r\n# \uac80\uc99d \ube44\ud65c\uc131\ud654\r\nhvac-flash --batch --no-verify\r\n\r\n# \ud2b9\uc815 ST-Link \uc2dc\ub9ac\uc5bc \ubc88\ud638 \uc0ac\uc6a9\r\nhvac-flash --batch --stlink-sn 066DFF383638424E43172239\r\n\r\n# \uc0ac\uc6a9\uc790 \uc815\uc758 \uc124\uc815\uc73c\ub85c \uc2e4\ud589\r\nhvac-flash --config my_config.ini --batch\r\n```\r\n\r\n## \uba85\ub839\uc904 \uc778\uc218\r\n\r\n- `repeat` (\uc120\ud0dd\uc0ac\ud56d): \ube4c\ub4dc \ubc18\ubcf5 \ud69f\uc218 (\uae30\ubcf8\uac12: 1)\r\n- `start_serial` (\uc120\ud0dd\uc0ac\ud56d): \uc2dc\uc791 \uc2dc\ub9ac\uc5bc \ubc88\ud638 \ub610\ub294 \"auto\" (\uae30\ubcf8\uac12: auto)\r\n- `model` (\uc120\ud0dd\uc0ac\ud56d): \ubaa8\ub378\uba85 (\uae30\ubcf8\uac12: QZ25)\r\n- `--slack`: Slack\uc73c\ub85c ZIP \ud30c\uc77c \uc5c5\ub85c\ub4dc\r\n\r\n## \ucd9c\ub825 \ud30c\uc77c\r\n\r\n- \uac1c\ubcc4 \ud38c\uc6e8\uc5b4 \ud30c\uc77c: `firmware/hvac-main-stm32f103@CYBER-QZ25_{serial}_{tag}.bin`\r\n- \uc555\ucd95 \ud30c\uc77c: `{model}_{start_serial}_{count}.zip`\r\n\r\n## \ubb38\uc81c \ud574\uacb0\r\n\r\n### Slack \uc5c5\ub85c\ub4dc \uc624\ub958\r\n\r\n1. **missing_scope**: \r\n - \uc624\ub958 \uba54\uc2dc\uc9c0: `'error': 'missing_scope', 'needed': 'files:write'`\r\n - \ud574\uacb0 \ubc29\ubc95:\r\n 1. https://api.slack.com/apps \uc5d0\uc11c \uc571 \uc120\ud0dd\r\n 2. \"OAuth & Permissions\" \u2192 \"Scopes\" \u2192 \"Bot Token Scopes\"\r\n 3. `files:write` \uad8c\ud55c \ucd94\uac00\r\n 4. \ud398\uc774\uc9c0 \uc0c1\ub2e8\uc5d0\uc11c \"reinstall your app\" \ud074\ub9ad\r\n 5. \uc7ac\uc124\uce58 \uc644\ub8cc \ud6c4 \ub2e4\uc2dc \uc2dc\ub3c4\r\n\r\n2. **invalid_auth**: SLACK_BOT_TOKEN\uc774 \uc62c\ubc14\ub978\uc9c0 \ud655\uc778\r\n3. **channel_not_found**: SLACK_CHANNEL_ID\uac00 \uc62c\ubc14\ub978\uc9c0 \ud655\uc778\r\n4. **not_in_channel**: Bot\uc744 \ucc44\ub110\uc5d0 \ucd08\ub300 (`/invite @bot-name`)\r\n5. **file_too_large**: Slack \ud30c\uc77c \ud06c\uae30 \uc81c\ud55c (1GB) \ud655\uc778\r\n\r\n### \ud658\uacbd \ubcc0\uc218 \ubb38\uc81c\r\n\r\n- `.env` \ud30c\uc77c\uc774 \ud504\ub85c\uc81d\ud2b8 \ub8e8\ud2b8\uc5d0 \uc788\ub294\uc9c0 \ud655\uc778\r\n- `.env` \ud30c\uc77c\uc774 `.gitignore`\uc5d0 \ud3ec\ud568\ub418\uc5b4 \uc788\ub294\uc9c0 \ud655\uc778 (\ubcf4\uc548)\r\n\r\n## \uc8fc\uc758\uc0ac\ud56d\r\n\r\n- Slack Bot Token\uc744 \uc808\ub300 \ucf54\ub4dc\uc5d0 \uc9c1\uc811 \uc785\ub825\ud558\uc9c0 \ub9c8\uc138\uc694\r\n- `.env` \ud30c\uc77c\uc744 Git\uc5d0 \ucee4\ubc0b\ud558\uc9c0 \ub9c8\uc138\uc694\r\n- \ub300\uc6a9\ub7c9 \ud30c\uc77c \uc5c5\ub85c\ub4dc \uc2dc \ub124\ud2b8\uc6cc\ud06c \uc0c1\ud0dc \ud655\uc778\r\n\r\n\r\n",
"bugtrack_url": null,
"license": null,
"summary": "STM32 Firmware Programming System for HVAC devices with DID flash support",
"version": "1.1.2",
"project_urls": {
"Bug Tracker": "https://github.com/your-org/hvac-did-flash/issues",
"Documentation": "https://github.com/your-org/hvac-did-flash/blob/main/README.md",
"Homepage": "https://github.com/your-org/hvac-did-flash",
"Repository": "https://github.com/your-org/hvac-did-flash.git"
},
"split_keywords": [
"stm32",
" firmware",
" programming",
" hvac",
" did",
" flash"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "cb9407594657024628028664b9a4f096b5821ab6dea0cdd33e0b58a65b07b758",
"md5": "8e32e5103f7b22a408ba22ee1e50abda",
"sha256": "2469b92091e8e0213f5d535c125a0e3fefd1af441aaca2af719017688741bd4d"
},
"downloads": -1,
"filename": "hvac_did_flash-1.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8e32e5103f7b22a408ba22ee1e50abda",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 63221,
"upload_time": "2025-09-05T07:23:08",
"upload_time_iso_8601": "2025-09-05T07:23:08.249699Z",
"url": "https://files.pythonhosted.org/packages/cb/94/07594657024628028664b9a4f096b5821ab6dea0cdd33e0b58a65b07b758/hvac_did_flash-1.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b20cf6c380a87b5f328f220f150a571702c18e91c67ec361fbcb914b719045f7",
"md5": "40343d3b49e7e5c1885f7e1efd8feadc",
"sha256": "94d4300e7cfc9b7094f09f9042a14591495dd326b3d5e34877ffb12047f7fa95"
},
"downloads": -1,
"filename": "hvac_did_flash-1.1.2.tar.gz",
"has_sig": false,
"md5_digest": "40343d3b49e7e5c1885f7e1efd8feadc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 565438,
"upload_time": "2025-09-05T07:23:09",
"upload_time_iso_8601": "2025-09-05T07:23:09.830438Z",
"url": "https://files.pythonhosted.org/packages/b2/0c/f6c380a87b5f328f220f150a571702c18e91c67ec361fbcb914b719045f7/hvac_did_flash-1.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-05 07:23:09",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "your-org",
"github_project": "hvac-did-flash",
"github_not_found": true,
"lcname": "hvac-did-flash"
}