NexR-qc


NameNexR-qc JSON
Version 0.0.13 PyPI version JSON
download
home_pagehttps://github.com/mata-1223/NexR_qc
SummaryPYPI package creation written by NexR-qc
upload_time2024-10-21 06:27:06
maintainerNone
docs_urlNone
authormata.lee
requires_python>=3.6
licenseNone
keywords qc nexr mata.lee nexr_qc python python tutorial pypi
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # NexR_qc
[![PyPI version](https://badge.fury.io/py/NexR-qc.svg)](https://badge.fury.io/py/NexR-qc)
<br><br>

## 요구사항
- python >= 3.6
- numpy
- pandas
- openpyxl
<br>

## 설치

### pip 설치
```
#!/bin/bash
pip install NexR_qc
```

### 정형데이터 QC

#### 디렉토리 기본 구성
- documents 하위 항목(테이블정의서, 컬럼정의서, 코드정의서)은 필수 항목은 아니지만, 테이블별 정확한 정보를 얻기위해서 작성되는 문서임 ([Github 링크](https://github.com/mata-1223/NexR_qc)의 document 폴더 내 문서 양식 참고)
- log, output 폴더는 초기에 생성되어 있지않아도 수행 결과로 자동 생성됨
- config.json 파일은 데이터 내 결측값을 커스텀하기 위한 파일로 초기에 생성되어 있지않아도 수행 결과로 자동 생성됨 (결측처리 default 값: "?", "na", "null", "Null", "NULL", " ", "[NULL]")

```
.
├── datasets/
│   ├── DataName
│   │    ├── 데이터_001.csv
│   │    ├── 데이터_002.csv
│   │    ├── 데이터_003.xlsx
│   │    ├── ...
├── documents/
│   ├── DataName
│   │    ├── 테이블정의서.xlsx
│   │    ├── 컬럼정의서.xlsx
│   │    └── 코드정의서.xlsx
├── log/
│   ├── DataName
│   │    ├── QualityCheck_yyyymmdd_hhmmss.log
│   │    ├── ...
├── output/
│   ├── DataName
│   │    └── QC결과서_yyyymmdd_hhmmss.xlsx
└── config.json
``` 
<br>

#### 예제 실행 
```
#!bin/usr/python3
from pathlib import Path
from NexR_qc.QualityCheck import *
DataName = "data1"
PATH = {}
PATH.setdefault("ROOT", Path.cwd())
PATH.setdefault("DATA", PATH["ROOT"] / "datasets" / DataName)
ext_fmt = [".csv", ".xlsx", "xls", ".ftr", ".feather", ".pkl", ".pickle"]
if __name__ == "__main__":
    Process = QualityCheck(DataName=DataName, PathDict=PATH)
```

<br>

#### Input / Output 정보

##### Input
* 데이터 타입: Dictionary 형태
	* 상세 형상: {data_name1: Dataframe1, data_name2: Dataframe2,…}
		* data_name: 데이터 테이블명 or 데이터 파일명 
		* Dataframe: 데이터를 불러온 Dataframe 형상
* 예시
![NexR_qc_Info_002](https://github.com/mata-1223/NexR_qc/blob/test/img/NexR_qc_Info_002.png)

##### Output
* 결과 파일 경로: output/QC_결과서.xlsx
* 예시
1) 예시 1: 테이블 리스트 시트
![NexR_qc_Info_003](https://github.com/mata-1223/NexR_qc/blob/test/img/NexR_qc_Info_003.png)

2) 예시 2: 데이터 별 QC 수행 결과 시트
![NexR_qc_Info_001](https://github.com/mata-1223/NexR_qc/blob/test/img/NexR_qc_Info_001.png)

### 이미지 데이터 QC

#### 디렉토리 기본 구성
- documents 하위 항목(데이터정의서)은 필수 항목은 아니지만, 테이블별 정확한 정보를 얻기위해서 작성되는 문서임 ([Github 링크](https://github.com/mata-1223/NexR_qc)의 document 폴더 내 문서 양식 참고)
  * 초기 파일이 없는 경우 최초 모듈 실행으로 생성됨
- log, output 폴더는 초기에 생성되어 있지않아도 수행 결과로 자동 생성됨

##### 일반
```
.
├── datasets/
│   ├── DataName/
│   │    ├── (optional) train/
│   │    │   ├── img_00001.png
│   │    │   ├── img_00002.png
│   │    │   ├── img_00003.png
│   │    │   ├── ...
├── documents/
│   ├── DataName
│   │    └── (optional) 데이터정의서.xlsx
├── log/
│   ├── DataName
│   │    ├── QualityCheck_yyyymmdd_hhmmss.log
│   │    ├── ...
├── output/
│   ├── DataName
│   │    └── QC결과서_yyyymmdd_hhmmss.xlsx
``` 
<br>

##### 분류
```
.
├── datasets/
│   ├── DataName/
│   │    ├── train/
│   │    │   ├── 분류Class001명/
│   │    │   │   ├── img_00001.png
│   │    │   │   ├── img_00002.png
│   │    │   │   ├── ...
│   │    │   ├── 분류Class002명/
│   │    ├── 분류Class002명/
│   │    ├── 분류Class003명/
│   │    ├── ...
├── documents/
│   ├── DataName
│   │    └── (optional) 데이터정의서.xlsx
├── log/
│   ├── DataName
│   │    ├── QualityCheck_yyyymmdd_hhmmss.log
│   │    ├── ...
├── output/
│   ├── DataName
│   │    └── QC결과서_yyyymmdd_hhmmss.xlsx
└── config.json
``` 
<br>

##### 객체탐지
```
.
├── datasets/
│   ├── DataName/
│   │    ├── images/
│   │    │   ├── train/
│   │    │   │   ├── img_00001.png
│   │    │   │   ├── img_00002.png
│   │    │   │   ├── ...
│   │    │   ├── val/
│   │    │   │   ├── img_10001.png
│   │    │   │   ├── img_10002.png
│   │    │   │   ├── ...
│   │    ├── labels/
│   │    │   ├── train/
│   │    │   │   ├── img_00001.txt
│   │    │   │   ├── img_00002.txt
│   │    │   │   ├── ...
│   │    │   ├── val/
│   │    │   │   ├── img_10001.txt
│   │    │   │   ├── img_10002.txt
│   │    │   │   ├── ...
│   │    ├── ...
├── documents/
│   ├── DataName
│   │    └── (optional) 데이터정의서.xlsx
├── log/
│   ├── DataName
│   │    ├── QualityCheck_yyyymmdd_hhmmss.log
│   │    ├── ...
├── output/
│   ├── DataName
│   │    └── QC결과서_yyyymmdd_hhmmss.xlsx
└── DataName.yaml
``` 
<br>

#### 예제 실행
```
#!bin/usr/python3
from pathlib import Path
from NexR_qc.QualityCheck import *
DataName = "한국음식_sample2" # 분류 Case 예시
# DataName = "fire_smoke"
# DataName = "coco8"
# DataName = "AI_기반_아동_미술심리_진단을_위한_그림_데이터_구축"
PATH = {}
PATH.setdefault("ROOT", Path.cwd())
PATH.setdefault("DATA", PATH["ROOT"] / "datasets" / DataName)
PATH.setdefault("IMAGE", PATH["DATA"])
# PATH.setdefault("IMAGE", PATH["DATA"] / "images")
# PATH.setdefault("LABEL", PATH["DATA"] / "labels")
# PATH.setdefault("YAML", PATH["ROOT"] / "coco8.yaml")
# PATH.setdefault("YAML", PATH["ROOT"] / "fire_smoke.yaml")
logger_save = False
# mode = "일반"
mode = "분류"
# mode = "객체탐지"
if __name__ == "__main__":
    Process = QualityCheck(DataName=DataName, DataType="image", Mode=mode, PathDict=PATH, logger_save=logger_save)
```

#### Output 형상

##### 일반
![NexR_qc_Info_004](https://github.com/mata-1223/NexR_qc/blob/test/img/NexR_qc_Info_004.png)

##### 분류
![NexR_qc_Info_005](https://github.com/mata-1223/NexR_qc/blob/test/img/NexR_qc_Info_005.png)

##### 객체탐지
![NexR_qc_Info_006](https://github.com/mata-1223/NexR_qc/blob/test/img/NexR_qc_Info_006.png)


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/mata-1223/NexR_qc",
    "name": "NexR-qc",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": "qc, NexR, mata.lee, NexR_qc, python, python tutorial, pypi",
    "author": "mata.lee",
    "author_email": "ldh3810@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/51/c5/475f021cc769dfaf8836df806d1cc324c567441b94974c6ea152fc2f215e/NexR_qc-0.0.13.tar.gz",
    "platform": null,
    "description": "# NexR_qc\n[![PyPI version](https://badge.fury.io/py/NexR-qc.svg)](https://badge.fury.io/py/NexR-qc)\n<br><br>\n\n## \uc694\uad6c\uc0ac\ud56d\n- python >= 3.6\n- numpy\n- pandas\n- openpyxl\n<br>\n\n## \uc124\uce58\n\n### pip \uc124\uce58\n```\n#!/bin/bash\npip install NexR_qc\n```\n\n### \uc815\ud615\ub370\uc774\ud130 QC\n\n#### \ub514\ub809\ud1a0\ub9ac \uae30\ubcf8 \uad6c\uc131\n- documents \ud558\uc704 \ud56d\ubaa9(\ud14c\uc774\ube14\uc815\uc758\uc11c, \uceec\ub7fc\uc815\uc758\uc11c, \ucf54\ub4dc\uc815\uc758\uc11c)\uc740 \ud544\uc218 \ud56d\ubaa9\uc740 \uc544\ub2c8\uc9c0\ub9cc, \ud14c\uc774\ube14\ubcc4 \uc815\ud655\ud55c \uc815\ubcf4\ub97c \uc5bb\uae30\uc704\ud574\uc11c \uc791\uc131\ub418\ub294 \ubb38\uc11c\uc784 ([Github \ub9c1\ud06c](https://github.com/mata-1223/NexR_qc)\uc758 document \ud3f4\ub354 \ub0b4 \ubb38\uc11c \uc591\uc2dd \ucc38\uace0)\n- log, output \ud3f4\ub354\ub294 \ucd08\uae30\uc5d0 \uc0dd\uc131\ub418\uc5b4 \uc788\uc9c0\uc54a\uc544\ub3c4 \uc218\ud589 \uacb0\uacfc\ub85c \uc790\ub3d9 \uc0dd\uc131\ub428\n- config.json \ud30c\uc77c\uc740 \ub370\uc774\ud130 \ub0b4 \uacb0\uce21\uac12\uc744 \ucee4\uc2a4\ud140\ud558\uae30 \uc704\ud55c \ud30c\uc77c\ub85c \ucd08\uae30\uc5d0 \uc0dd\uc131\ub418\uc5b4 \uc788\uc9c0\uc54a\uc544\ub3c4 \uc218\ud589 \uacb0\uacfc\ub85c \uc790\ub3d9 \uc0dd\uc131\ub428 (\uacb0\uce21\ucc98\ub9ac default \uac12: \"?\", \"na\", \"null\", \"Null\", \"NULL\", \" \", \"[NULL]\")\n\n```\n.\n\u251c\u2500\u2500 datasets/\n\u2502   \u251c\u2500\u2500 DataName\n\u2502   \u2502    \u251c\u2500\u2500 \ub370\uc774\ud130_001.csv\n\u2502   \u2502    \u251c\u2500\u2500 \ub370\uc774\ud130_002.csv\n\u2502   \u2502    \u251c\u2500\u2500 \ub370\uc774\ud130_003.xlsx\n\u2502   \u2502    \u251c\u2500\u2500 ...\n\u251c\u2500\u2500 documents/\n\u2502   \u251c\u2500\u2500 DataName\n\u2502   \u2502    \u251c\u2500\u2500 \ud14c\uc774\ube14\uc815\uc758\uc11c.xlsx\n\u2502   \u2502    \u251c\u2500\u2500 \uceec\ub7fc\uc815\uc758\uc11c.xlsx\n\u2502   \u2502    \u2514\u2500\u2500 \ucf54\ub4dc\uc815\uc758\uc11c.xlsx\n\u251c\u2500\u2500 log/\n\u2502   \u251c\u2500\u2500 DataName\n\u2502   \u2502    \u251c\u2500\u2500 QualityCheck_yyyymmdd_hhmmss.log\n\u2502   \u2502    \u251c\u2500\u2500 ...\n\u251c\u2500\u2500 output/\n\u2502   \u251c\u2500\u2500 DataName\n\u2502   \u2502    \u2514\u2500\u2500 QC\uacb0\uacfc\uc11c_yyyymmdd_hhmmss.xlsx\n\u2514\u2500\u2500 config.json\n``` \n<br>\n\n#### \uc608\uc81c \uc2e4\ud589 \n```\n#!bin/usr/python3\nfrom pathlib import Path\nfrom NexR_qc.QualityCheck import *\nDataName = \"data1\"\nPATH = {}\nPATH.setdefault(\"ROOT\", Path.cwd())\nPATH.setdefault(\"DATA\", PATH[\"ROOT\"] / \"datasets\" / DataName)\next_fmt = [\".csv\", \".xlsx\", \"xls\", \".ftr\", \".feather\", \".pkl\", \".pickle\"]\nif __name__ == \"__main__\":\n    Process = QualityCheck(DataName=DataName, PathDict=PATH)\n```\n\n<br>\n\n#### Input / Output \uc815\ubcf4\n\n##### Input\n* \ub370\uc774\ud130 \ud0c0\uc785: Dictionary \ud615\ud0dc\n\t* \uc0c1\uc138 \ud615\uc0c1: {data_name1: Dataframe1, data_name2: Dataframe2,\u2026}\n\t\t* data_name: \ub370\uc774\ud130 \ud14c\uc774\ube14\uba85 or \ub370\uc774\ud130 \ud30c\uc77c\uba85 \n\t\t* Dataframe: \ub370\uc774\ud130\ub97c \ubd88\ub7ec\uc628 Dataframe \ud615\uc0c1\n* \uc608\uc2dc\n![NexR_qc_Info_002](https://github.com/mata-1223/NexR_qc/blob/test/img/NexR_qc_Info_002.png)\n\n##### Output\n* \uacb0\uacfc \ud30c\uc77c \uacbd\ub85c: output/QC_\uacb0\uacfc\uc11c.xlsx\n* \uc608\uc2dc\n1) \uc608\uc2dc 1: \ud14c\uc774\ube14 \ub9ac\uc2a4\ud2b8 \uc2dc\ud2b8\n![NexR_qc_Info_003](https://github.com/mata-1223/NexR_qc/blob/test/img/NexR_qc_Info_003.png)\n\n2) \uc608\uc2dc 2: \ub370\uc774\ud130 \ubcc4 QC \uc218\ud589 \uacb0\uacfc \uc2dc\ud2b8\n![NexR_qc_Info_001](https://github.com/mata-1223/NexR_qc/blob/test/img/NexR_qc_Info_001.png)\n\n### \uc774\ubbf8\uc9c0 \ub370\uc774\ud130 QC\n\n#### \ub514\ub809\ud1a0\ub9ac \uae30\ubcf8 \uad6c\uc131\n- documents \ud558\uc704 \ud56d\ubaa9(\ub370\uc774\ud130\uc815\uc758\uc11c)\uc740 \ud544\uc218 \ud56d\ubaa9\uc740 \uc544\ub2c8\uc9c0\ub9cc, \ud14c\uc774\ube14\ubcc4 \uc815\ud655\ud55c \uc815\ubcf4\ub97c \uc5bb\uae30\uc704\ud574\uc11c \uc791\uc131\ub418\ub294 \ubb38\uc11c\uc784 ([Github \ub9c1\ud06c](https://github.com/mata-1223/NexR_qc)\uc758 document \ud3f4\ub354 \ub0b4 \ubb38\uc11c \uc591\uc2dd \ucc38\uace0)\n  * \ucd08\uae30 \ud30c\uc77c\uc774 \uc5c6\ub294 \uacbd\uc6b0 \ucd5c\ucd08 \ubaa8\ub4c8 \uc2e4\ud589\uc73c\ub85c \uc0dd\uc131\ub428\n- log, output \ud3f4\ub354\ub294 \ucd08\uae30\uc5d0 \uc0dd\uc131\ub418\uc5b4 \uc788\uc9c0\uc54a\uc544\ub3c4 \uc218\ud589 \uacb0\uacfc\ub85c \uc790\ub3d9 \uc0dd\uc131\ub428\n\n##### \uc77c\ubc18\n```\n.\n\u251c\u2500\u2500 datasets/\n\u2502   \u251c\u2500\u2500 DataName/\n\u2502   \u2502    \u251c\u2500\u2500 (optional) train/\n\u2502   \u2502    \u2502   \u251c\u2500\u2500 img_00001.png\n\u2502   \u2502    \u2502   \u251c\u2500\u2500 img_00002.png\n\u2502   \u2502    \u2502   \u251c\u2500\u2500 img_00003.png\n\u2502   \u2502    \u2502   \u251c\u2500\u2500 ...\n\u251c\u2500\u2500 documents/\n\u2502   \u251c\u2500\u2500 DataName\n\u2502   \u2502    \u2514\u2500\u2500 (optional) \ub370\uc774\ud130\uc815\uc758\uc11c.xlsx\n\u251c\u2500\u2500 log/\n\u2502   \u251c\u2500\u2500 DataName\n\u2502   \u2502    \u251c\u2500\u2500 QualityCheck_yyyymmdd_hhmmss.log\n\u2502   \u2502    \u251c\u2500\u2500 ...\n\u251c\u2500\u2500 output/\n\u2502   \u251c\u2500\u2500 DataName\n\u2502   \u2502    \u2514\u2500\u2500 QC\uacb0\uacfc\uc11c_yyyymmdd_hhmmss.xlsx\n``` \n<br>\n\n##### \ubd84\ub958\n```\n.\n\u251c\u2500\u2500 datasets/\n\u2502   \u251c\u2500\u2500 DataName/\n\u2502   \u2502    \u251c\u2500\u2500 train/\n\u2502   \u2502    \u2502   \u251c\u2500\u2500 \ubd84\ub958Class001\uba85/\n\u2502   \u2502    \u2502   \u2502   \u251c\u2500\u2500 img_00001.png\n\u2502   \u2502    \u2502   \u2502   \u251c\u2500\u2500 img_00002.png\n\u2502   \u2502    \u2502   \u2502   \u251c\u2500\u2500 ...\n\u2502   \u2502    \u2502   \u251c\u2500\u2500 \ubd84\ub958Class002\uba85/\n\u2502   \u2502    \u251c\u2500\u2500 \ubd84\ub958Class002\uba85/\n\u2502   \u2502    \u251c\u2500\u2500 \ubd84\ub958Class003\uba85/\n\u2502   \u2502    \u251c\u2500\u2500 ...\n\u251c\u2500\u2500 documents/\n\u2502   \u251c\u2500\u2500 DataName\n\u2502   \u2502    \u2514\u2500\u2500 (optional) \ub370\uc774\ud130\uc815\uc758\uc11c.xlsx\n\u251c\u2500\u2500 log/\n\u2502   \u251c\u2500\u2500 DataName\n\u2502   \u2502    \u251c\u2500\u2500 QualityCheck_yyyymmdd_hhmmss.log\n\u2502   \u2502    \u251c\u2500\u2500 ...\n\u251c\u2500\u2500 output/\n\u2502   \u251c\u2500\u2500 DataName\n\u2502   \u2502    \u2514\u2500\u2500 QC\uacb0\uacfc\uc11c_yyyymmdd_hhmmss.xlsx\n\u2514\u2500\u2500 config.json\n``` \n<br>\n\n##### \uac1d\uccb4\ud0d0\uc9c0\n```\n.\n\u251c\u2500\u2500 datasets/\n\u2502   \u251c\u2500\u2500 DataName/\n\u2502   \u2502    \u251c\u2500\u2500 images/\n\u2502   \u2502    \u2502   \u251c\u2500\u2500 train/\n\u2502   \u2502    \u2502   \u2502   \u251c\u2500\u2500 img_00001.png\n\u2502   \u2502    \u2502   \u2502   \u251c\u2500\u2500 img_00002.png\n\u2502   \u2502    \u2502   \u2502   \u251c\u2500\u2500 ...\n\u2502   \u2502    \u2502   \u251c\u2500\u2500 val/\n\u2502   \u2502    \u2502   \u2502   \u251c\u2500\u2500 img_10001.png\n\u2502   \u2502    \u2502   \u2502   \u251c\u2500\u2500 img_10002.png\n\u2502   \u2502    \u2502   \u2502   \u251c\u2500\u2500 ...\n\u2502   \u2502    \u251c\u2500\u2500 labels/\n\u2502   \u2502    \u2502   \u251c\u2500\u2500 train/\n\u2502   \u2502    \u2502   \u2502   \u251c\u2500\u2500 img_00001.txt\n\u2502   \u2502    \u2502   \u2502   \u251c\u2500\u2500 img_00002.txt\n\u2502   \u2502    \u2502   \u2502   \u251c\u2500\u2500 ...\n\u2502   \u2502    \u2502   \u251c\u2500\u2500 val/\n\u2502   \u2502    \u2502   \u2502   \u251c\u2500\u2500 img_10001.txt\n\u2502   \u2502    \u2502   \u2502   \u251c\u2500\u2500 img_10002.txt\n\u2502   \u2502    \u2502   \u2502   \u251c\u2500\u2500 ...\n\u2502   \u2502    \u251c\u2500\u2500 ...\n\u251c\u2500\u2500 documents/\n\u2502   \u251c\u2500\u2500 DataName\n\u2502   \u2502    \u2514\u2500\u2500 (optional) \ub370\uc774\ud130\uc815\uc758\uc11c.xlsx\n\u251c\u2500\u2500 log/\n\u2502   \u251c\u2500\u2500 DataName\n\u2502   \u2502    \u251c\u2500\u2500 QualityCheck_yyyymmdd_hhmmss.log\n\u2502   \u2502    \u251c\u2500\u2500 ...\n\u251c\u2500\u2500 output/\n\u2502   \u251c\u2500\u2500 DataName\n\u2502   \u2502    \u2514\u2500\u2500 QC\uacb0\uacfc\uc11c_yyyymmdd_hhmmss.xlsx\n\u2514\u2500\u2500 DataName.yaml\n``` \n<br>\n\n#### \uc608\uc81c \uc2e4\ud589\n```\n#!bin/usr/python3\nfrom pathlib import Path\nfrom NexR_qc.QualityCheck import *\nDataName = \"\ud55c\uad6d\uc74c\uc2dd_sample2\" # \ubd84\ub958 Case \uc608\uc2dc\n# DataName = \"fire_smoke\"\n# DataName = \"coco8\"\n# DataName = \"AI_\uae30\ubc18_\uc544\ub3d9_\ubbf8\uc220\uc2ec\ub9ac_\uc9c4\ub2e8\uc744_\uc704\ud55c_\uadf8\ub9bc_\ub370\uc774\ud130_\uad6c\ucd95\"\nPATH = {}\nPATH.setdefault(\"ROOT\", Path.cwd())\nPATH.setdefault(\"DATA\", PATH[\"ROOT\"] / \"datasets\" / DataName)\nPATH.setdefault(\"IMAGE\", PATH[\"DATA\"])\n# PATH.setdefault(\"IMAGE\", PATH[\"DATA\"] / \"images\")\n# PATH.setdefault(\"LABEL\", PATH[\"DATA\"] / \"labels\")\n# PATH.setdefault(\"YAML\", PATH[\"ROOT\"] / \"coco8.yaml\")\n# PATH.setdefault(\"YAML\", PATH[\"ROOT\"] / \"fire_smoke.yaml\")\nlogger_save = False\n# mode = \"\uc77c\ubc18\"\nmode = \"\ubd84\ub958\"\n# mode = \"\uac1d\uccb4\ud0d0\uc9c0\"\nif __name__ == \"__main__\":\n    Process = QualityCheck(DataName=DataName, DataType=\"image\", Mode=mode, PathDict=PATH, logger_save=logger_save)\n```\n\n#### Output \ud615\uc0c1\n\n##### \uc77c\ubc18\n![NexR_qc_Info_004](https://github.com/mata-1223/NexR_qc/blob/test/img/NexR_qc_Info_004.png)\n\n##### \ubd84\ub958\n![NexR_qc_Info_005](https://github.com/mata-1223/NexR_qc/blob/test/img/NexR_qc_Info_005.png)\n\n##### \uac1d\uccb4\ud0d0\uc9c0\n![NexR_qc_Info_006](https://github.com/mata-1223/NexR_qc/blob/test/img/NexR_qc_Info_006.png)\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "PYPI package creation written by NexR-qc",
    "version": "0.0.13",
    "project_urls": {
        "Homepage": "https://github.com/mata-1223/NexR_qc"
    },
    "split_keywords": [
        "qc",
        " nexr",
        " mata.lee",
        " nexr_qc",
        " python",
        " python tutorial",
        " pypi"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "62a68984df3ae1024c8cef73237d1d112cb578c25b988b2e2b8ce57666062d6f",
                "md5": "3f7f9d092f2bf57109ca740e94837544",
                "sha256": "42350adc4df982509fb322944df620c55799729097269471140b0f4c7b5cbd41"
            },
            "downloads": -1,
            "filename": "NexR_qc-0.0.13-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "3f7f9d092f2bf57109ca740e94837544",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 27941,
            "upload_time": "2024-10-21T06:26:59",
            "upload_time_iso_8601": "2024-10-21T06:26:59.213353Z",
            "url": "https://files.pythonhosted.org/packages/62/a6/8984df3ae1024c8cef73237d1d112cb578c25b988b2e2b8ce57666062d6f/NexR_qc-0.0.13-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "51c5475f021cc769dfaf8836df806d1cc324c567441b94974c6ea152fc2f215e",
                "md5": "70372d84f191173189f80b2ac16fb40b",
                "sha256": "c7c17a1e9df12ee005ff3c66f0624c9176b1b59b010526a12d018ff16c1b683d"
            },
            "downloads": -1,
            "filename": "NexR_qc-0.0.13.tar.gz",
            "has_sig": false,
            "md5_digest": "70372d84f191173189f80b2ac16fb40b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 24736,
            "upload_time": "2024-10-21T06:27:06",
            "upload_time_iso_8601": "2024-10-21T06:27:06.351166Z",
            "url": "https://files.pythonhosted.org/packages/51/c5/475f021cc769dfaf8836df806d1cc324c567441b94974c6ea152fc2f215e/NexR_qc-0.0.13.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-21 06:27:06",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "mata-1223",
    "github_project": "NexR_qc",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "lcname": "nexr-qc"
}
        
Elapsed time: 0.86969s