kptha


Namekptha JSON
Version 1.0.0 PyPI version JSON
download
home_pageNone
SummaryKorean-based Python syntax translator | 한국어 파이썬 번역기
upload_time2025-07-26 09:55:47
maintainerNone
docs_urlNone
authorrainy58
requires_python>=3.10
licenseNone
keywords korea korean python kpy kpth 한국어 한국 파이썬
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            `README by Claude (나보다 더 잘만드네)`

# 🇰🇷 KPTH (Korean Python)

[![Python Version](https://img.shields.io/badge/python-3.10+-blue.svg)](https://python.org)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Version](https://img.shields.io/badge/version-1.0.0-green.svg)](https://github.com/yhg4908/kpth)

**KPTH**는 파이썬 문법을 한국어로 번역해주는 교육용 프로그래밍 언어입니다. 한국어로 프로그래밍을 배우고 싶은 분들을 위해 만들어졌습니다.

> ⚠️ **주의**: 이 라이브러리는 교육 목적으로 제작되었으며, 실제 프로젝트에서 사용하기에는 제한이 있을 수 있습니다.

## 📋 목차

- [설치](#-설치)
- [사용법](#-사용법)
- [기본 예제](#-기본-예제)
- [번역된 문법](#-번역된-문법)
- [고급 예제](#-고급-예제)
- [디버그 모드](#-디버그-모드)
- [기여하기](#-기여하기)
- [라이센스](#-라이센스)

## 🚀 설치

### pip으로 설치

```bash
pip install kptha
```

### 소스코드에서 설치

```bash
git clone https://github.com/yhg4908/kpth.git
cd kpth
pip install -e .
```

## 📖 사용법

KPTH는 `.kpy` 확장자를 사용합니다. 한국어로 프로그램을 작성한 후 `ㅋㅍ` 명령어로 실행할 수 있습니다.

### 기본 실행

```bash
ㅋㅍ 파일명.kpy
```

### 옵션

```bash
ㅋㅍ --help           # 도움말 출력
ㅋㅍ --version        # 버전 정보 출력
ㅋㅍ --debug 파일.kpy  # 디버그 모드로 실행
```

## 🌟 기본 예제

### Hello World

**hello.kpy**
```kpy
출력("안녕, 세계!")
```

**실행**
```bash
$ ㅋㅍ hello.kpy
안녕, 세계!
```

### 변수와 연산

**calculator.kpy**
```kpy
이름 = 입력("이름을 입력하세요: ")
나이 = 정수(입력("나이를 입력하세요: "))

출력(이름 + "님은 " + 문자열(나이) + "살입니다.")

만약 나이 >= 20:
    출력("성인입니다.")
아니면:
    출력("미성년자입니다.")
```

### 반복문과 조건문

**loop.kpy**
```kpy
# 구구단 출력
각각 i 안에 범위(1, 10):
    각각 j 안에 범위(1, 10):
        출력(문자열(i) + " × " + 문자열(j) + " = " + 문자열(i * j))
    출력()  # 빈 줄
```

### 함수 정의

**function.kpy**
```kpy
정의 인사말(이름):
    반환 "안녕하세요, " + 이름 + "님!"

정의 계산기(a, b, 연산):
    만약 연산 == "더하기":
        반환 a + b
    아니고만약 연산 == "빼기":  
        반환 a - b
    아니고만약 연산 == "곱하기":
        반환 a * b
    아니고만약 연산 == "나누기":
        만약 b != 0:
            반환 a / b
        아니면:
            반환 "0으로 나눌 수 없습니다"
    아니면:
        반환 "알 수 없는 연산입니다"

# 함수 사용
결과 = 인사말("김철수")
출력(결과)

계산결과 = 계산기(10, 5, "더하기")
출력("10 + 5 =", 계산결과)
```

## 📚 번역된 문법

### 기본 키워드

| 한국어 | Python | 설명 |
|--------|--------|------|
| `출력` | `print` | 화면에 출력 |
| `입력` | `input` | 사용자 입력 받기 |
| `만약` | `if` | 조건문 |
| `아니고만약` | `elif` | 조건문 확장 |
| `아니면` | `else` | 조건문 기본값 |
| `동안` | `while` | 반복문 |
| `각각` | `for` | 반복문 |
| `안에` | `in` | 포함 연산자 |
| `정의` | `def` | 함수 정의 |
| `반환` | `return` | 함수 반환값 |
| `클래스` | `class` | 클래스 정의 |
| `시도` | `try` | 예외 처리 |
| `예외` | `except` | 예외 처리 |
| `중단` | `break` | 반복문 중단 |
| `계속` | `continue` | 반복문 계속 |

### 데이터 타입

| 한국어 | Python | 설명 |
|--------|--------|------|
| `정수` | `int` | 정수 타입 |
| `실수` | `float` | 실수 타입 |
| `문자열` | `str` | 문자열 타입 |
| `불리언` | `bool` | 참/거짓 타입 |
| `리스트` | `list` | 리스트 타입 |
| `튜플` | `tuple` | 튜플 타입 |
| `사전` | `dict` | 딕셔너리 타입 |
| `집합` | `set` | 집합 타입 |

### 내장 함수

| 한국어 | Python | 설명 |
|--------|--------|------|
| `길이` | `len` | 길이 반환 |
| `범위` | `range` | 범위 생성 |
| `최대값` | `max` | 최대값 반환 |
| `최소값` | `min` | 최소값 반환 |
| `합계` | `sum` | 합계 계산 |
| `정렬` | `sorted` | 정렬된 리스트 반환 |
| `역순` | `reversed` | 역순 반환 |
| `열거` | `enumerate` | 인덱스와 함께 반환 |
| `압축` | `zip` | 여러 시퀀스 압축 |

## 🎯 고급 예제

### 클래스와 객체

**class_example.kpy**
```kpy
클래스 학생:
    정의 초기화(자기, 이름, 나이, 학년):
        자기.이름 = 이름
        자기.나이 = 나이
        자기.학년 = 학년
        자기.점수들 = []
    
    정의 점수추가(자기, 점수):
        자기.점수들.추가(점수)
    
    정의 평균계산(자기):
        만약 길이(자기.점수들) > 0:
            반환 합계(자기.점수들) / 길이(자기.점수들)
        아니면:
            반환 0
    
    정의 정보출력(자기):
        출력("이름:", 자기.이름)
        출력("나이:", 자기.나이)
        출력("학년:", 자기.학년)
        출력("평균 점수:", 자기.평균계산())

# 객체 생성 및 사용
학생1 = 학생("김철수", 16, 1)
학생1.점수추가(85)
학생1.점수추가(92)
학생1.점수추가(78)
학생1.정보출력()
```

### 예외 처리

**exception_example.kpy**
```kpy
정의 안전한나누기(a, b):
    시도:
        결과 = a / b
        반환 결과
    예외 영으로나눔오류:
        출력("오류: 0으로 나눌 수 없습니다!")
        반환 없음
    예외 타입오류:
        출력("오류: 숫자가 아닌 값이 입력되었습니다!")
        반환 없음

# 사용 예시
결과1 = 안전한나누기(10, 2)
출력("10 / 2 =", 결과1)

결과2 = 안전한나누기(10, 0)
출력("10 / 0 =", 결과2)
```

### 파일 처리

**file_example.kpy**
```kpy
# 파일 쓰기
함께 열기("data.txt", "w", encoding="utf-8") 로서 파일:
    파일.write("안녕하세요\n")
    파일.write("KPTH로 작성된 파일입니다\n")

# 파일 읽기
시도:
    함께 열기("data.txt", "r", encoding="utf-8") 로서 파일:
        내용 = 파일.read()
        출력("파일 내용:")
        출력(내용)
예외 파일없음오류:
    출력("파일을 찾을 수 없습니다!")
```

## 🔍 디버그 모드

디버그 모드를 사용하면 번역된 Python 코드와 상세한 오류 정보를 확인할 수 있습니다.

```bash
ㅋㅍ --debug example.kpy
```

디버그 모드에서는 다음 정보가 표시됩니다:
- 번역된 Python 코드 (줄 번호 포함)
- 상세한 오류 메시지와 스택 트레이스
- 실행 과정에서의 추가 정보

## 🤝 기여하기

KPTH 프로젝트에 기여하고 싶으시다면:

1. 이 저장소를 포크하세요
2. 기능 브랜치를 생성하세요 (`git checkout -b feature/새기능`)
3. 변경사항을 커밋하세요 (`git commit -am '새 기능 추가'`)
4. 브랜치에 푸시하세요 (`git push origin feature/새기능`)
5. Pull Request를 생성하세요

### 개발 환경 설정

```bash
git clone https://github.com/yhg4908/kpth.git
cd kpth
pip install -e .
```

### 테스트 실행

```bash
# 간단한 테스트
echo '출력("테스트")' > test.kpy
ㅋㅍ test.kpy
```

## 📝 라이센스

이 프로젝트는 MIT 라이센스 하에 배포됩니다. 자세한 내용은 [LICENSE](LICENSE) 파일을 참조하세요.

## 🔗 링크

- **GitHub**: https://github.com/yhg4908/kpth
- **Issues**: https://github.com/yhg4908/kpth/issues
- **PyPI**: https://pypi.org/project/kptha/

## 📞 문의

- **이메일**: yhg4908@naver.com
- **GitHub Issues**: 버그 리포트나 기능 요청은 GitHub Issues를 이용해주세요

## 📖 완전한 번역 사전

### 파이썬 예약어 (Keywords)

#### 논리값 / None
| 한국어 | Python | 설명 |
|--------|--------|------|
| `거짓` | `False` | 거짓 값 |
| `참` | `True` | 참 값 |
| `없음` | `None` | None 값 |

#### 논리 연산
| 한국어 | Python | 설명 |
|--------|--------|------|
| `그리고` | `and` | 논리 AND |
| `또는` | `or` | 논리 OR |
| `아니다` | `not` | 논리 NOT |

#### 조건/반복
| 한국어 | Python | 설명 |
|--------|--------|------|
| `만약` | `if` | 조건문 |
| `아니고만약` | `elif` | 조건문 확장 |
| `아니면` | `else` | 조건문 기본값 |
| `동안` | `while` | while 반복문 |
| `각각` | `for` | for 반복문 |
| `안에` | `in` | 포함 연산자 |
| `중단` | `break` | 반복문 중단 |
| `계속` | `continue` | 반복문 계속 |

#### 예외 처리
| 한국어 | Python | 설명 |
|--------|--------|------|
| `시도` | `try` | 예외 처리 시작 |
| `예외` | `except` | 예외 처리 |
| `결국` | `finally` | 최종 실행 블록 |
| `발생` | `raise` | 예외 발생 |

#### 함수/클래스/람다
| 한국어 | Python | 설명 |
|--------|--------|------|
| `정의` | `def` | 함수 정의 |
| `클래스` | `class` | 클래스 정의 |
| `람다` | `lambda` | 람다 함수 |
| `반환` | `return` | 함수 반환 |
| `넘어가기` | `pass` | pass 문 |

#### 비동기 처리
| 한국어 | Python | 설명 |
|--------|--------|------|
| `비동기` | `async` | 비동기 함수 |
| `기다림` | `await` | 비동기 대기 |

#### 패턴 매칭
| 한국어 | Python | 설명 |
|--------|--------|------|
| `매칭` | `match` | 패턴 매칭 |
| `경우` | `case` | 매칭 케이스 |

#### 기타 키워드
| 한국어 | Python | 설명 |
|--------|--------|------|
| `삭제` | `del` | 객체 삭제 |
| `전역` | `global` | 전역 변수 |
| `비전역` | `nonlocal` | 비지역 변수 |
| `로서` | `as` | as 키워드 |
| `은` | `is` | is 연산자 |
| `에서` | `from` | from 임포트 |
| `불러오기` | `import` | import 문 |
| `단언` | `assert` | assert 문 |
| `함께` | `with` | with 문 |
| `생성` | `yield` | yield 문 |

### 파이썬 내장 함수 (Built-in Functions)

#### 기본 내장 함수
| 한국어 | Python | 설명 |
|--------|--------|------|
| `절댓값` | `abs` | 절댓값 계산 |
| `모두참` | `all` | 모든 요소가 참인지 확인 |
| `하나참` | `any` | 하나라도 참인지 확인 |
| `아스키` | `ascii` | ASCII 문자열 반환 |
| `이진수` | `bin` | 이진수 변환 |
| `불리언` | `bool` | 불리언 타입 |
| `중단점` | `breakpoint` | 디버거 중단점 |
| `바이트배열` | `bytearray` | 바이트 배열 |
| `바이트` | `bytes` | 바이트 객체 |
| `호출가능` | `callable` | 호출 가능 여부 확인 |
| `문자` | `chr` | 유니코드 문자 반환 |
| `클래스메서드` | `classmethod` | 클래스 메서드 |
| `컴파일` | `compile` | 코드 컴파일 |
| `복소수` | `complex` | 복소수 타입 |
| `삭제속성` | `delattr` | 속성 삭제 |
| `사전` | `dict` | 딕셔너리 타입 |
| `디렉터리` | `dir` | 객체 속성 목록 |
| `몫나머지` | `divmod` | 몫과 나머지 |
| `열거` | `enumerate` | 인덱스와 값 쌍 |
| `평가` | `eval` | 표현식 평가 |
| `실행` | `exec` | 코드 실행 |
| `필터` | `filter` | 조건 필터링 |
| `실수` | `float` | 실수 타입 |
| `형식` | `format` | 문자열 포맷 |
| `고정집합` | `frozenset` | 불변 집합 |
| `속성얻기` | `getattr` | 속성 가져오기 |
| `전역변수` | `globals` | 전역 변수 딕셔너리 |
| `존재여부` | `hasattr` | 속성 존재 여부 |
| `해시` | `hash` | 해시 값 |
| `도움말` | `help` | 도움말 출력 |
| `16진수` | `hex` | 16진수 변환 |
| `객체ID` | `id` | 객체 ID |
| `입력` | `input` | 사용자 입력 |
| `정수` | `int` | 정수 타입 |
| `인스턴스여부` | `isinstance` | 인스턴스 여부 확인 |
| `서브클래스여부` | `issubclass` | 서브클래스 여부 확인 |
| `반복자` | `iter` | 반복자 생성 |
| `길이` | `len` | 길이 반환 |
| `리스트` | `list` | 리스트 타입 |
| `지역변수` | `locals` | 지역 변수 딕셔너리 |
| `맵` | `map` | 맵 함수 |
| `최대값` | `max` | 최대값 |
| `메모리뷰` | `memoryview` | 메모리 뷰 |
| `최소값` | `min` | 최소값 |
| `다음값` | `next` | 다음 값 |
| `객체` | `object` | 기본 객체 |
| `8진수` | `oct` | 8진수 변환 |
| `열기` | `open` | 파일 열기 |
| `유니코드값` | `ord` | 유니코드 값 |
| `거듭제곱` | `pow` | 거듭제곱 |
| `출력` | `print` | 화면 출력 |
| `속성` | `property` | 프로퍼티 |
| `범위` | `range` | 범위 생성 |
| `표현식` | `repr` | 표현식 문자열 |
| `역순` | `reversed` | 역순 반복자 |
| `반올림` | `round` | 반올림 |
| `집합` | `set` | 집합 타입 |
| `설정속성` | `setattr` | 속성 설정 |
| `슬라이스` | `slice` | 슬라이스 객체 |
| `정렬` | `sorted` | 정렬된 리스트 |
| `정적메서드` | `staticmethod` | 정적 메서드 |
| `문자열` | `str` | 문자열 타입 |
| `합계` | `sum` | 합계 |
| `슈퍼클래스` | `super` | 상위 클래스 |
| `튜플` | `tuple` | 튜플 타입 |
| `타입` | `type` | 타입 확인 |
| `변수들` | `vars` | 변수 딕셔너리 |
| `압축` | `zip` | 여러 시퀀스 압축 |
| `모듈가져오기` | `__import__` | 동적 임포트 |

#### 추가 내장 함수들
| 한국어 | Python | 설명 |
|--------|--------|------|
| `적용` | `apply` | 함수 적용 |
| `버퍼` | `buffer` | 버퍼 객체 |
| `바이트순서` | `byteorder` | 바이트 순서 |
| `코드` | `code` | 코드 객체 |
| `공변` | `coerce` | 타입 강제 변환 |
| `내부함수` | `intern` | 문자열 내부화 |
| `긴정수` | `long` | 긴 정수 |
| `원시입력` | `raw_input` | 원시 입력 |
| `문자열감소` | `reduce` | 축약 함수 |
| `다시로드` | `reload` | 모듈 재로드 |
| `유니코드` | `unicode` | 유니코드 문자열 |
| `실행파일` | `execfile` | 파일 실행 |
| `파일` | `file` | 파일 객체 |

### 연산자 키워드

| 한국어 | Python | 설명 |
|--------|--------|------|
| `이고` | `and` | 논리 AND |
| `이거나` | `or` | 논리 OR |
| `가아니다` | `not` | 논리 NOT |
| `같다` | `==` | 같음 비교 |
| `다르다` | `!=` | 다름 비교 |
| `크다` | `>` | 큼 비교 |
| `작다` | `<` | 작음 비교 |
| `크거나같다` | `>=` | 크거나 같음 |
| `작거나같다` | `<=` | 작거나 같음 |

### 타입 관련

| 한국어 | Python | 설명 |
|--------|--------|------|
| `정수타입` | `int` | 정수 타입 |
| `실수타입` | `float` | 실수 타입 |
| `문자열타입` | `str` | 문자열 타입 |
| `불타입` | `bool` | 불리언 타입 |
| `리스트타입` | `list` | 리스트 타입 |
| `튜플타입` | `tuple` | 튜플 타입 |
| `사전타입` | `dict` | 딕셔너리 타입 |
| `집합타입` | `set` | 집합 타입 |
| `바이트타입` | `bytes` | 바이트 타입 |
| `없음타입` | `type(None)` | None 타입 |

### 특수 메서드 확장

| 한국어 | Python | 설명 |
|--------|--------|------|
| `초기화` | `__init__` | 객체 초기화 |
| `문자열화` | `__str__` | 문자열 표현 |
| `표현` | `__repr__` | 개발자용 표현 |
| `길이` | `__len__` | 길이 메서드 |
| `호출` | `__call__` | 호출 가능 객체 |
| `반복자` | `__iter__` | 반복자 메서드 |
| `다음` | `__next__` | 다음 값 |
| `포함` | `__contains__` | 포함 여부 |
| `덧셈` | `__add__` | 덧셈 연산자 |
| `뺄셈` | `__sub__` | 뺄셈 연산자 |
| `곱셈` | `__mul__` | 곱셈 연산자 |
| `나눗셈` | `__truediv__` | 나눗셈 연산자 |
| `정수나눗셈` | `__floordiv__` | 정수 나눗셈 |
| `나머지` | `__mod__` | 나머지 연산자 |
| `거듭제곱` | `__pow__` | 거듭제곱 연산자 |
| `같음` | `__eq__` | 같음 비교 |
| `다름` | `__ne__` | 다름 비교 |
| `작음` | `__lt__` | 작음 비교 |
| `작거나같음` | `__le__` | 작거나 같음 |
| `큼` | `__gt__` | 큼 비교 |
| `크거나같음` | `__ge__` | 크거나 같음 |
| `인덱싱` | `__getitem__` | 인덱스 접근 |
| `인덱스설정` | `__setitem__` | 인덱스 설정 |
| `인덱스삭제` | `__delitem__` | 인덱스 삭제 |
| `속성접근` | `__getattr__` | 속성 접근 |
| `속성설정` | `__setattr__` | 속성 설정 |
| `속성삭제` | `__delattr__` | 속성 삭제 |
| `진입` | `__enter__` | 컨텍스트 진입 |
| `종료` | `__exit__` | 컨텍스트 종료 |
| `해시` | `__hash__` | 해시 값 |
| `불리언화` | `__bool__` | 불리언 변환 |
| `바이트화` | `__bytes__` | 바이트 변환 |
| `형식화` | `__format__` | 포맷 문자열 |
| `크기힌트` | `__sizeof__` | 메모리 크기 |
| `복사` | `__copy__` | 복사 |
| `깊은복사` | `__deepcopy__` | 깊은 복사 |
| `상태얻기` | `__getstate__` | 상태 가져오기 |
| `상태설정` | `__setstate__` | 상태 설정 |
| `감소` | `__reduce__` | 객체 축약 |
| `감소확장` | `__reduce_ex__` | 확장 축약 |

### 새로운 문법 요소들

| 한국어 | Python | 설명 |
|--------|--------|------|
| `모두생성` | `yield from` | yield from 구문 |
| `왈러스` | `:=` | 왈러스 연산자 |
| `타입힌트` | `:` | 타입 힌트 |
| `반환타입` | `->` | 반환 타입 힌트 |
| `포맷문자열` | `f` | f-string |
| `원시문자열` | `r` | raw string |
| `바이트문자열` | `b` | byte string |
| `유니코드문자열` | `u` | unicode string |

### 패턴 매칭 확장

| 한국어 | Python | 설명 |
|--------|--------|------|
| `와일드카드` | `_` | 와일드카드 패턴 |
| `또는패턴` | `\|` | OR 패턴 |
| `가드조건` | `if` | 가드 조건 |

### 컨텍스트 매니저

| 한국어 | Python | 설명 |
|--------|--------|------|
| `문맥관리자` | `contextlib` | 컨텍스트 관리자 |
| `임시억제` | `suppress` | 예외 억제 |
| `리다이렉트출력` | `redirect_stdout` | 출력 리다이렉트 |
| `리다이렉트오류` | `redirect_stderr` | 오류 리다이렉트 |

### 데코레이터 관련

| 한국어 | Python | 설명 |
|--------|--------|------|
| `데코레이터` | `@` | 데코레이터 |
| `속성장식` | `property` | 프로퍼티 데코레이터 |
| `정적장식` | `staticmethod` | 정적 메서드 데코레이터 |
| `클래스장식` | `classmethod` | 클래스 메서드 데코레이터 |
| `캐시장식` | `cache` | 캐시 데코레이터 |
| `LRU캐시` | `lru_cache` | LRU 캐시 |

### 타입 힌트 모듈 (typing)

| 한국어 | Python | 설명 |
|--------|--------|------|
| `타입힌트모듈` | `typing` | 타입 힌트 모듈 |
| `리스트형` | `List` | 리스트 타입 힌트 |
| `튜플형` | `Tuple` | 튜플 타입 힌트 |
| `사전형` | `Dict` | 딕셔너리 타입 힌트 |
| `집합형` | `Set` | 집합 타입 힌트 |
| `고정집합형` | `FrozenSet` | 고정집합 타입 힌트 |
| `옵션형` | `Optional` | 옵션 타입 |
| `유니온형` | `Union` | 유니온 타입 |
| `콜러블형` | `Callable` | 호출 가능 타입 |
| `모든형` | `Any` | 모든 타입 |
| `타입변수` | `TypeVar` | 타입 변수 |
| `제네릭` | `Generic` | 제네릭 타입 |
| `리터럴` | `Literal` | 리터럴 타입 |
| `파이널` | `Final` | 최종 타입 |
| `노반환` | `NoReturn` | 반환 없음 |
| `클래스변수` | `ClassVar` | 클래스 변수 |
| `자기참조` | `Self` | 자기 참조 |

### 파이썬 내장 예외

| 한국어 | Python | 설명 |
|--------|--------|------|
| `예외` | `Exception` | 기본 예외 |
| `기본예외` | `BaseException` | 최상위 예외 |
| `시스템종료` | `SystemExit` | 시스템 종료 |
| `키보드인터럽트` | `KeyboardInterrupt` | 키보드 인터럽트 |
| `제너레이터종료` | `GeneratorExit` | 제너레이터 종료 |
| `중단예외` | `StopIteration` | 반복 중단 |
| `비동기중단예외` | `StopAsyncIteration` | 비동기 반복 중단 |
| `산술오류` | `ArithmeticError` | 산술 연산 오류 |
| `오버플로우오류` | `OverflowError` | 오버플로우 |
| `영으로나눔오류` | `ZeroDivisionError` | 0으로 나눔 |
| `부동소수점오류` | `FloatingPointError` | 부동소수점 오류 |
| `속성오류` | `AttributeError` | 속성 오류 |
| `버퍼오류` | `BufferError` | 버퍼 오류 |
| `EOF오류` | `EOFError` | 파일 끝 오류 |
| `입출력오류` | `IOError` | 입출력 오류 |
| `OS오류` | `OSError` | 운영체제 오류 |
| `파일존재오류` | `FileExistsError` | 파일 존재 |
| `파일없음오류` | `FileNotFoundError` | 파일 없음 |
| `디렉터리없음오류` | `NotADirectoryError` | 디렉터리 아님 |
| `디렉터리아님오류` | `IsADirectoryError` | 디렉터리임 |
| `권한오류` | `PermissionError` | 권한 오류 |
| `프로세스찾을수없음오류` | `ProcessLookupError` | 프로세스 찾을 수 없음 |
| `시간초과오류` | `TimeoutError` | 시간 초과 |
| `참조오류` | `ReferenceError` | 참조 오류 |
| `메모리오류` | `MemoryError` | 메모리 오류 |
| `인덱스오류` | `IndexError` | 인덱스 오류 |
| `키오류` | `KeyError` | 키 오류 |
| `값오류` | `ValueError` | 값 오류 |
| `타입오류` | `TypeError` | 타입 오류 |
| `이름오류` | `NameError` | 이름 오류 |
| `언바운드로컬오류` | `UnboundLocalError` | 지역 변수 오류 |
| `모듈없음오류` | `ModuleNotFoundError` | 모듈 없음 |
| `임포트오류` | `ImportError` | 임포트 오류 |
| `중단오류` | `InterruptedError` | 중단 오류 |
| `런타임오류` | `RuntimeError` | 런타임 오류 |
| `재귀오류` | `RecursionError` | 재귀 오류 |
| `구현안됨오류` | `NotImplementedError` | 구현 안됨 |
| `문법오류` | `SyntaxError` | 문법 오류 |
| `들여쓰기오류` | `IndentationError` | 들여쓰기 오류 |
| `탭오류` | `TabError` | 탭 오류 |
| `유니코드오류` | `UnicodeError` | 유니코드 오류 |
| `유니코드인코딩오류` | `UnicodeEncodeError` | 유니코드 인코딩 오류 |
| `유니코드디코딩오류` | `UnicodeDecodeError` | 유니코드 디코딩 오류 |
| `유니코드번역오류` | `UnicodeTranslateError` | 유니코드 번역 오류 |

### 경고 (Warnings)

| 한국어 | Python | 설명 |
|--------|--------|------|
| `경고` | `Warning` | 기본 경고 |
| `사용자경고` | `UserWarning` | 사용자 경고 |
| `폐기경고` | `DeprecationWarning` | 폐기 예정 경고 |
| `대기중경고` | `PendingDeprecationWarning` | 폐기 대기 경고 |
| `문법경고` | `SyntaxWarning` | 문법 경고 |
| `런타임경고` | `RuntimeWarning` | 런타임 경고 |
| `미래기능경고` | `FutureWarning` | 미래 기능 경고 |
| `임포트경고` | `ImportWarning` | 임포트 경고 |
| `유니코드경고` | `UnicodeWarning` | 유니코드 경고 |
| `바이트경고` | `BytesWarning` | 바이트 경고 |
| `자원경고` | `ResourceWarning` | 자원 경고 |

### 유용한 모듈들

| 한국어 | Python | 설명 |
|--------|--------|------|
| `운영체제` | `os` | 운영체제 인터페이스 |
| `시스템` | `sys` | 시스템별 매개변수 |
| `시간` | `time` | 시간 관련 함수 |
| `날짜시간` | `datetime` | 날짜와 시간 |
| `수학` | `math` | 수학 함수 |
| `랜덤` | `random` | 난수 생성 |
| `정규식` | `re` | 정규 표현식 |
| `JSON` | `json` | JSON 인코더/디코더 |
| `경로` | `pathlib` | 객체지향 파일시스템 경로 |
| `콜렉션` | `collections` | 특수 컨테이너 |
| `반복도구` | `itertools` | 반복자 도구 |
| `함수도구` | `functools` | 함수 도구 |
| `스레딩` | `threading` | 스레드 기반 병렬성 |
| `멀티프로세싱` | `multiprocessing` | 프로세스 기반 병렬성 |
| `비동기IO` | `asyncio` | 비동기 I/O |
| `HTTP요청` | `requests` | HTTP 라이브러리 |
| `URL해석` | `urllib` | URL 처리 모듈 |
| `CSV` | `csv` | CSV 파일 읽기/쓰기 |
| `피클` | `pickle` | 파이썬 객체 직렬화 |
| `복사` | `copy` | 얕은/깊은 복사 |
| `약한참조` | `weakref` | 약한 참조 |
| `가비지수집` | `gc` | 가비지 컬렉터 |
| `디스` | `dis` | 바이트코드 디스어셈블러 |
| `추적` | `traceback` | 스택 추적 출력 |
| `로깅` | `logging` | 로깅 시설 |
| `압축` | `zipfile` | ZIP 아카이브 |
| `타르` | `tarfile` | TAR 아카이브 |
| `임시파일` | `tempfile` | 임시 파일과 디렉터리 |
| `셸명령` | `subprocess` | 하위 프로세스 관리 |
| `플랫폼` | `platform` | 플랫폼 정보 |

---

🇰🇷 **한국어로 프로그래밍하세요!** 📝✨

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "kptha",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "korea korean python kpy kpth \ud55c\uad6d\uc5b4 \ud55c\uad6d \ud30c\uc774\uc36c",
    "author": "rainy58",
    "author_email": "yhg4908@naver.com",
    "download_url": "https://files.pythonhosted.org/packages/d8/5c/d6906ec8d38e3fd0943507e487ffd7281d78d5c5a41034b492f8c2d23572/kptha-1.0.0.tar.gz",
    "platform": null,
    "description": "`README by Claude (\ub098\ubcf4\ub2e4 \ub354 \uc798\ub9cc\ub4dc\ub124)`\n\n# \ud83c\uddf0\ud83c\uddf7 KPTH (Korean Python)\n\n[![Python Version](https://img.shields.io/badge/python-3.10+-blue.svg)](https://python.org)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Version](https://img.shields.io/badge/version-1.0.0-green.svg)](https://github.com/yhg4908/kpth)\n\n**KPTH**\ub294 \ud30c\uc774\uc36c \ubb38\ubc95\uc744 \ud55c\uad6d\uc5b4\ub85c \ubc88\uc5ed\ud574\uc8fc\ub294 \uad50\uc721\uc6a9 \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\uc785\ub2c8\ub2e4. \ud55c\uad6d\uc5b4\ub85c \ud504\ub85c\uadf8\ub798\ubc0d\uc744 \ubc30\uc6b0\uace0 \uc2f6\uc740 \ubd84\ub4e4\uc744 \uc704\ud574 \ub9cc\ub4e4\uc5b4\uc84c\uc2b5\ub2c8\ub2e4.\n\n> \u26a0\ufe0f **\uc8fc\uc758**: \uc774 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 \uad50\uc721 \ubaa9\uc801\uc73c\ub85c \uc81c\uc791\ub418\uc5c8\uc73c\uba70, \uc2e4\uc81c \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \uc0ac\uc6a9\ud558\uae30\uc5d0\ub294 \uc81c\ud55c\uc774 \uc788\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\n## \ud83d\udccb \ubaa9\ucc28\n\n- [\uc124\uce58](#-\uc124\uce58)\n- [\uc0ac\uc6a9\ubc95](#-\uc0ac\uc6a9\ubc95)\n- [\uae30\ubcf8 \uc608\uc81c](#-\uae30\ubcf8-\uc608\uc81c)\n- [\ubc88\uc5ed\ub41c \ubb38\ubc95](#-\ubc88\uc5ed\ub41c-\ubb38\ubc95)\n- [\uace0\uae09 \uc608\uc81c](#-\uace0\uae09-\uc608\uc81c)\n- [\ub514\ubc84\uadf8 \ubaa8\ub4dc](#-\ub514\ubc84\uadf8-\ubaa8\ub4dc)\n- [\uae30\uc5ec\ud558\uae30](#-\uae30\uc5ec\ud558\uae30)\n- [\ub77c\uc774\uc13c\uc2a4](#-\ub77c\uc774\uc13c\uc2a4)\n\n## \ud83d\ude80 \uc124\uce58\n\n### pip\uc73c\ub85c \uc124\uce58\n\n```bash\npip install kptha\n```\n\n### \uc18c\uc2a4\ucf54\ub4dc\uc5d0\uc11c \uc124\uce58\n\n```bash\ngit clone https://github.com/yhg4908/kpth.git\ncd kpth\npip install -e .\n```\n\n## \ud83d\udcd6 \uc0ac\uc6a9\ubc95\n\nKPTH\ub294 `.kpy` \ud655\uc7a5\uc790\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \ud55c\uad6d\uc5b4\ub85c \ud504\ub85c\uadf8\ub7a8\uc744 \uc791\uc131\ud55c \ud6c4 `\u314b\u314d` \uba85\ub839\uc5b4\ub85c \uc2e4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\n### \uae30\ubcf8 \uc2e4\ud589\n\n```bash\n\u314b\u314d \ud30c\uc77c\uba85.kpy\n```\n\n### \uc635\uc158\n\n```bash\n\u314b\u314d --help           # \ub3c4\uc6c0\ub9d0 \ucd9c\ub825\n\u314b\u314d --version        # \ubc84\uc804 \uc815\ubcf4 \ucd9c\ub825\n\u314b\u314d --debug \ud30c\uc77c.kpy  # \ub514\ubc84\uadf8 \ubaa8\ub4dc\ub85c \uc2e4\ud589\n```\n\n## \ud83c\udf1f \uae30\ubcf8 \uc608\uc81c\n\n### Hello World\n\n**hello.kpy**\n```kpy\n\ucd9c\ub825(\"\uc548\ub155, \uc138\uacc4!\")\n```\n\n**\uc2e4\ud589**\n```bash\n$ \u314b\u314d hello.kpy\n\uc548\ub155, \uc138\uacc4!\n```\n\n### \ubcc0\uc218\uc640 \uc5f0\uc0b0\n\n**calculator.kpy**\n```kpy\n\uc774\ub984 = \uc785\ub825(\"\uc774\ub984\uc744 \uc785\ub825\ud558\uc138\uc694: \")\n\ub098\uc774 = \uc815\uc218(\uc785\ub825(\"\ub098\uc774\ub97c \uc785\ub825\ud558\uc138\uc694: \"))\n\n\ucd9c\ub825(\uc774\ub984 + \"\ub2d8\uc740 \" + \ubb38\uc790\uc5f4(\ub098\uc774) + \"\uc0b4\uc785\ub2c8\ub2e4.\")\n\n\ub9cc\uc57d \ub098\uc774 >= 20:\n    \ucd9c\ub825(\"\uc131\uc778\uc785\ub2c8\ub2e4.\")\n\uc544\ub2c8\uba74:\n    \ucd9c\ub825(\"\ubbf8\uc131\ub144\uc790\uc785\ub2c8\ub2e4.\")\n```\n\n### \ubc18\ubcf5\ubb38\uacfc \uc870\uac74\ubb38\n\n**loop.kpy**\n```kpy\n# \uad6c\uad6c\ub2e8 \ucd9c\ub825\n\uac01\uac01 i \uc548\uc5d0 \ubc94\uc704(1, 10):\n    \uac01\uac01 j \uc548\uc5d0 \ubc94\uc704(1, 10):\n        \ucd9c\ub825(\ubb38\uc790\uc5f4(i) + \" \u00d7 \" + \ubb38\uc790\uc5f4(j) + \" = \" + \ubb38\uc790\uc5f4(i * j))\n    \ucd9c\ub825()  # \ube48 \uc904\n```\n\n### \ud568\uc218 \uc815\uc758\n\n**function.kpy**\n```kpy\n\uc815\uc758 \uc778\uc0ac\ub9d0(\uc774\ub984):\n    \ubc18\ud658 \"\uc548\ub155\ud558\uc138\uc694, \" + \uc774\ub984 + \"\ub2d8!\"\n\n\uc815\uc758 \uacc4\uc0b0\uae30(a, b, \uc5f0\uc0b0):\n    \ub9cc\uc57d \uc5f0\uc0b0 == \"\ub354\ud558\uae30\":\n        \ubc18\ud658 a + b\n    \uc544\ub2c8\uace0\ub9cc\uc57d \uc5f0\uc0b0 == \"\ube7c\uae30\":  \n        \ubc18\ud658 a - b\n    \uc544\ub2c8\uace0\ub9cc\uc57d \uc5f0\uc0b0 == \"\uacf1\ud558\uae30\":\n        \ubc18\ud658 a * b\n    \uc544\ub2c8\uace0\ub9cc\uc57d \uc5f0\uc0b0 == \"\ub098\ub204\uae30\":\n        \ub9cc\uc57d b != 0:\n            \ubc18\ud658 a / b\n        \uc544\ub2c8\uba74:\n            \ubc18\ud658 \"0\uc73c\ub85c \ub098\ub20c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4\"\n    \uc544\ub2c8\uba74:\n        \ubc18\ud658 \"\uc54c \uc218 \uc5c6\ub294 \uc5f0\uc0b0\uc785\ub2c8\ub2e4\"\n\n# \ud568\uc218 \uc0ac\uc6a9\n\uacb0\uacfc = \uc778\uc0ac\ub9d0(\"\uae40\ucca0\uc218\")\n\ucd9c\ub825(\uacb0\uacfc)\n\n\uacc4\uc0b0\uacb0\uacfc = \uacc4\uc0b0\uae30(10, 5, \"\ub354\ud558\uae30\")\n\ucd9c\ub825(\"10 + 5 =\", \uacc4\uc0b0\uacb0\uacfc)\n```\n\n## \ud83d\udcda \ubc88\uc5ed\ub41c \ubb38\ubc95\n\n### \uae30\ubcf8 \ud0a4\uc6cc\ub4dc\n\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\ucd9c\ub825` | `print` | \ud654\uba74\uc5d0 \ucd9c\ub825 |\n| `\uc785\ub825` | `input` | \uc0ac\uc6a9\uc790 \uc785\ub825 \ubc1b\uae30 |\n| `\ub9cc\uc57d` | `if` | \uc870\uac74\ubb38 |\n| `\uc544\ub2c8\uace0\ub9cc\uc57d` | `elif` | \uc870\uac74\ubb38 \ud655\uc7a5 |\n| `\uc544\ub2c8\uba74` | `else` | \uc870\uac74\ubb38 \uae30\ubcf8\uac12 |\n| `\ub3d9\uc548` | `while` | \ubc18\ubcf5\ubb38 |\n| `\uac01\uac01` | `for` | \ubc18\ubcf5\ubb38 |\n| `\uc548\uc5d0` | `in` | \ud3ec\ud568 \uc5f0\uc0b0\uc790 |\n| `\uc815\uc758` | `def` | \ud568\uc218 \uc815\uc758 |\n| `\ubc18\ud658` | `return` | \ud568\uc218 \ubc18\ud658\uac12 |\n| `\ud074\ub798\uc2a4` | `class` | \ud074\ub798\uc2a4 \uc815\uc758 |\n| `\uc2dc\ub3c4` | `try` | \uc608\uc678 \ucc98\ub9ac |\n| `\uc608\uc678` | `except` | \uc608\uc678 \ucc98\ub9ac |\n| `\uc911\ub2e8` | `break` | \ubc18\ubcf5\ubb38 \uc911\ub2e8 |\n| `\uacc4\uc18d` | `continue` | \ubc18\ubcf5\ubb38 \uacc4\uc18d |\n\n### \ub370\uc774\ud130 \ud0c0\uc785\n\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\uc815\uc218` | `int` | \uc815\uc218 \ud0c0\uc785 |\n| `\uc2e4\uc218` | `float` | \uc2e4\uc218 \ud0c0\uc785 |\n| `\ubb38\uc790\uc5f4` | `str` | \ubb38\uc790\uc5f4 \ud0c0\uc785 |\n| `\ubd88\ub9ac\uc5b8` | `bool` | \ucc38/\uac70\uc9d3 \ud0c0\uc785 |\n| `\ub9ac\uc2a4\ud2b8` | `list` | \ub9ac\uc2a4\ud2b8 \ud0c0\uc785 |\n| `\ud29c\ud50c` | `tuple` | \ud29c\ud50c \ud0c0\uc785 |\n| `\uc0ac\uc804` | `dict` | \ub515\uc154\ub108\ub9ac \ud0c0\uc785 |\n| `\uc9d1\ud569` | `set` | \uc9d1\ud569 \ud0c0\uc785 |\n\n### \ub0b4\uc7a5 \ud568\uc218\n\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\uae38\uc774` | `len` | \uae38\uc774 \ubc18\ud658 |\n| `\ubc94\uc704` | `range` | \ubc94\uc704 \uc0dd\uc131 |\n| `\ucd5c\ub300\uac12` | `max` | \ucd5c\ub300\uac12 \ubc18\ud658 |\n| `\ucd5c\uc18c\uac12` | `min` | \ucd5c\uc18c\uac12 \ubc18\ud658 |\n| `\ud569\uacc4` | `sum` | \ud569\uacc4 \uacc4\uc0b0 |\n| `\uc815\ub82c` | `sorted` | \uc815\ub82c\ub41c \ub9ac\uc2a4\ud2b8 \ubc18\ud658 |\n| `\uc5ed\uc21c` | `reversed` | \uc5ed\uc21c \ubc18\ud658 |\n| `\uc5f4\uac70` | `enumerate` | \uc778\ub371\uc2a4\uc640 \ud568\uaed8 \ubc18\ud658 |\n| `\uc555\ucd95` | `zip` | \uc5ec\ub7ec \uc2dc\ud000\uc2a4 \uc555\ucd95 |\n\n## \ud83c\udfaf \uace0\uae09 \uc608\uc81c\n\n### \ud074\ub798\uc2a4\uc640 \uac1d\uccb4\n\n**class_example.kpy**\n```kpy\n\ud074\ub798\uc2a4 \ud559\uc0dd:\n    \uc815\uc758 \ucd08\uae30\ud654(\uc790\uae30, \uc774\ub984, \ub098\uc774, \ud559\ub144):\n        \uc790\uae30.\uc774\ub984 = \uc774\ub984\n        \uc790\uae30.\ub098\uc774 = \ub098\uc774\n        \uc790\uae30.\ud559\ub144 = \ud559\ub144\n        \uc790\uae30.\uc810\uc218\ub4e4 = []\n    \n    \uc815\uc758 \uc810\uc218\ucd94\uac00(\uc790\uae30, \uc810\uc218):\n        \uc790\uae30.\uc810\uc218\ub4e4.\ucd94\uac00(\uc810\uc218)\n    \n    \uc815\uc758 \ud3c9\uade0\uacc4\uc0b0(\uc790\uae30):\n        \ub9cc\uc57d \uae38\uc774(\uc790\uae30.\uc810\uc218\ub4e4) > 0:\n            \ubc18\ud658 \ud569\uacc4(\uc790\uae30.\uc810\uc218\ub4e4) / \uae38\uc774(\uc790\uae30.\uc810\uc218\ub4e4)\n        \uc544\ub2c8\uba74:\n            \ubc18\ud658 0\n    \n    \uc815\uc758 \uc815\ubcf4\ucd9c\ub825(\uc790\uae30):\n        \ucd9c\ub825(\"\uc774\ub984:\", \uc790\uae30.\uc774\ub984)\n        \ucd9c\ub825(\"\ub098\uc774:\", \uc790\uae30.\ub098\uc774)\n        \ucd9c\ub825(\"\ud559\ub144:\", \uc790\uae30.\ud559\ub144)\n        \ucd9c\ub825(\"\ud3c9\uade0 \uc810\uc218:\", \uc790\uae30.\ud3c9\uade0\uacc4\uc0b0())\n\n# \uac1d\uccb4 \uc0dd\uc131 \ubc0f \uc0ac\uc6a9\n\ud559\uc0dd1 = \ud559\uc0dd(\"\uae40\ucca0\uc218\", 16, 1)\n\ud559\uc0dd1.\uc810\uc218\ucd94\uac00(85)\n\ud559\uc0dd1.\uc810\uc218\ucd94\uac00(92)\n\ud559\uc0dd1.\uc810\uc218\ucd94\uac00(78)\n\ud559\uc0dd1.\uc815\ubcf4\ucd9c\ub825()\n```\n\n### \uc608\uc678 \ucc98\ub9ac\n\n**exception_example.kpy**\n```kpy\n\uc815\uc758 \uc548\uc804\ud55c\ub098\ub204\uae30(a, b):\n    \uc2dc\ub3c4:\n        \uacb0\uacfc = a / b\n        \ubc18\ud658 \uacb0\uacfc\n    \uc608\uc678 \uc601\uc73c\ub85c\ub098\ub214\uc624\ub958:\n        \ucd9c\ub825(\"\uc624\ub958: 0\uc73c\ub85c \ub098\ub20c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!\")\n        \ubc18\ud658 \uc5c6\uc74c\n    \uc608\uc678 \ud0c0\uc785\uc624\ub958:\n        \ucd9c\ub825(\"\uc624\ub958: \uc22b\uc790\uac00 \uc544\ub2cc \uac12\uc774 \uc785\ub825\ub418\uc5c8\uc2b5\ub2c8\ub2e4!\")\n        \ubc18\ud658 \uc5c6\uc74c\n\n# \uc0ac\uc6a9 \uc608\uc2dc\n\uacb0\uacfc1 = \uc548\uc804\ud55c\ub098\ub204\uae30(10, 2)\n\ucd9c\ub825(\"10 / 2 =\", \uacb0\uacfc1)\n\n\uacb0\uacfc2 = \uc548\uc804\ud55c\ub098\ub204\uae30(10, 0)\n\ucd9c\ub825(\"10 / 0 =\", \uacb0\uacfc2)\n```\n\n### \ud30c\uc77c \ucc98\ub9ac\n\n**file_example.kpy**\n```kpy\n# \ud30c\uc77c \uc4f0\uae30\n\ud568\uaed8 \uc5f4\uae30(\"data.txt\", \"w\", encoding=\"utf-8\") \ub85c\uc11c \ud30c\uc77c:\n    \ud30c\uc77c.write(\"\uc548\ub155\ud558\uc138\uc694\\n\")\n    \ud30c\uc77c.write(\"KPTH\ub85c \uc791\uc131\ub41c \ud30c\uc77c\uc785\ub2c8\ub2e4\\n\")\n\n# \ud30c\uc77c \uc77d\uae30\n\uc2dc\ub3c4:\n    \ud568\uaed8 \uc5f4\uae30(\"data.txt\", \"r\", encoding=\"utf-8\") \ub85c\uc11c \ud30c\uc77c:\n        \ub0b4\uc6a9 = \ud30c\uc77c.read()\n        \ucd9c\ub825(\"\ud30c\uc77c \ub0b4\uc6a9:\")\n        \ucd9c\ub825(\ub0b4\uc6a9)\n\uc608\uc678 \ud30c\uc77c\uc5c6\uc74c\uc624\ub958:\n    \ucd9c\ub825(\"\ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!\")\n```\n\n## \ud83d\udd0d \ub514\ubc84\uadf8 \ubaa8\ub4dc\n\n\ub514\ubc84\uadf8 \ubaa8\ub4dc\ub97c \uc0ac\uc6a9\ud558\uba74 \ubc88\uc5ed\ub41c Python \ucf54\ub4dc\uc640 \uc0c1\uc138\ud55c \uc624\ub958 \uc815\ubcf4\ub97c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\n```bash\n\u314b\u314d --debug example.kpy\n```\n\n\ub514\ubc84\uadf8 \ubaa8\ub4dc\uc5d0\uc11c\ub294 \ub2e4\uc74c \uc815\ubcf4\uac00 \ud45c\uc2dc\ub429\ub2c8\ub2e4:\n- \ubc88\uc5ed\ub41c Python \ucf54\ub4dc (\uc904 \ubc88\ud638 \ud3ec\ud568)\n- \uc0c1\uc138\ud55c \uc624\ub958 \uba54\uc2dc\uc9c0\uc640 \uc2a4\ud0dd \ud2b8\ub808\uc774\uc2a4\n- \uc2e4\ud589 \uacfc\uc815\uc5d0\uc11c\uc758 \ucd94\uac00 \uc815\ubcf4\n\n## \ud83e\udd1d \uae30\uc5ec\ud558\uae30\n\nKPTH \ud504\ub85c\uc81d\ud2b8\uc5d0 \uae30\uc5ec\ud558\uace0 \uc2f6\uc73c\uc2dc\ub2e4\uba74:\n\n1. \uc774 \uc800\uc7a5\uc18c\ub97c \ud3ec\ud06c\ud558\uc138\uc694\n2. \uae30\ub2a5 \ube0c\ub79c\uce58\ub97c \uc0dd\uc131\ud558\uc138\uc694 (`git checkout -b feature/\uc0c8\uae30\ub2a5`)\n3. \ubcc0\uacbd\uc0ac\ud56d\uc744 \ucee4\ubc0b\ud558\uc138\uc694 (`git commit -am '\uc0c8 \uae30\ub2a5 \ucd94\uac00'`)\n4. \ube0c\ub79c\uce58\uc5d0 \ud478\uc2dc\ud558\uc138\uc694 (`git push origin feature/\uc0c8\uae30\ub2a5`)\n5. Pull Request\ub97c \uc0dd\uc131\ud558\uc138\uc694\n\n### \uac1c\ubc1c \ud658\uacbd \uc124\uc815\n\n```bash\ngit clone https://github.com/yhg4908/kpth.git\ncd kpth\npip install -e .\n```\n\n### \ud14c\uc2a4\ud2b8 \uc2e4\ud589\n\n```bash\n# \uac04\ub2e8\ud55c \ud14c\uc2a4\ud2b8\necho '\ucd9c\ub825(\"\ud14c\uc2a4\ud2b8\")' > test.kpy\n\u314b\u314d test.kpy\n```\n\n## \ud83d\udcdd \ub77c\uc774\uc13c\uc2a4\n\n\uc774 \ud504\ub85c\uc81d\ud2b8\ub294 MIT \ub77c\uc774\uc13c\uc2a4 \ud558\uc5d0 \ubc30\ud3ec\ub429\ub2c8\ub2e4. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 [LICENSE](LICENSE) \ud30c\uc77c\uc744 \ucc38\uc870\ud558\uc138\uc694.\n\n## \ud83d\udd17 \ub9c1\ud06c\n\n- **GitHub**: https://github.com/yhg4908/kpth\n- **Issues**: https://github.com/yhg4908/kpth/issues\n- **PyPI**: https://pypi.org/project/kptha/\n\n## \ud83d\udcde \ubb38\uc758\n\n- **\uc774\uba54\uc77c**: yhg4908@naver.com\n- **GitHub Issues**: \ubc84\uadf8 \ub9ac\ud3ec\ud2b8\ub098 \uae30\ub2a5 \uc694\uccad\uc740 GitHub Issues\ub97c \uc774\uc6a9\ud574\uc8fc\uc138\uc694\n\n## \ud83d\udcd6 \uc644\uc804\ud55c \ubc88\uc5ed \uc0ac\uc804\n\n### \ud30c\uc774\uc36c \uc608\uc57d\uc5b4 (Keywords)\n\n#### \ub17c\ub9ac\uac12 / None\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\uac70\uc9d3` | `False` | \uac70\uc9d3 \uac12 |\n| `\ucc38` | `True` | \ucc38 \uac12 |\n| `\uc5c6\uc74c` | `None` | None \uac12 |\n\n#### \ub17c\ub9ac \uc5f0\uc0b0\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\uadf8\ub9ac\uace0` | `and` | \ub17c\ub9ac AND |\n| `\ub610\ub294` | `or` | \ub17c\ub9ac OR |\n| `\uc544\ub2c8\ub2e4` | `not` | \ub17c\ub9ac NOT |\n\n#### \uc870\uac74/\ubc18\ubcf5\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\ub9cc\uc57d` | `if` | \uc870\uac74\ubb38 |\n| `\uc544\ub2c8\uace0\ub9cc\uc57d` | `elif` | \uc870\uac74\ubb38 \ud655\uc7a5 |\n| `\uc544\ub2c8\uba74` | `else` | \uc870\uac74\ubb38 \uae30\ubcf8\uac12 |\n| `\ub3d9\uc548` | `while` | while \ubc18\ubcf5\ubb38 |\n| `\uac01\uac01` | `for` | for \ubc18\ubcf5\ubb38 |\n| `\uc548\uc5d0` | `in` | \ud3ec\ud568 \uc5f0\uc0b0\uc790 |\n| `\uc911\ub2e8` | `break` | \ubc18\ubcf5\ubb38 \uc911\ub2e8 |\n| `\uacc4\uc18d` | `continue` | \ubc18\ubcf5\ubb38 \uacc4\uc18d |\n\n#### \uc608\uc678 \ucc98\ub9ac\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\uc2dc\ub3c4` | `try` | \uc608\uc678 \ucc98\ub9ac \uc2dc\uc791 |\n| `\uc608\uc678` | `except` | \uc608\uc678 \ucc98\ub9ac |\n| `\uacb0\uad6d` | `finally` | \ucd5c\uc885 \uc2e4\ud589 \ube14\ub85d |\n| `\ubc1c\uc0dd` | `raise` | \uc608\uc678 \ubc1c\uc0dd |\n\n#### \ud568\uc218/\ud074\ub798\uc2a4/\ub78c\ub2e4\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\uc815\uc758` | `def` | \ud568\uc218 \uc815\uc758 |\n| `\ud074\ub798\uc2a4` | `class` | \ud074\ub798\uc2a4 \uc815\uc758 |\n| `\ub78c\ub2e4` | `lambda` | \ub78c\ub2e4 \ud568\uc218 |\n| `\ubc18\ud658` | `return` | \ud568\uc218 \ubc18\ud658 |\n| `\ub118\uc5b4\uac00\uae30` | `pass` | pass \ubb38 |\n\n#### \ube44\ub3d9\uae30 \ucc98\ub9ac\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\ube44\ub3d9\uae30` | `async` | \ube44\ub3d9\uae30 \ud568\uc218 |\n| `\uae30\ub2e4\ub9bc` | `await` | \ube44\ub3d9\uae30 \ub300\uae30 |\n\n#### \ud328\ud134 \ub9e4\uce6d\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\ub9e4\uce6d` | `match` | \ud328\ud134 \ub9e4\uce6d |\n| `\uacbd\uc6b0` | `case` | \ub9e4\uce6d \ucf00\uc774\uc2a4 |\n\n#### \uae30\ud0c0 \ud0a4\uc6cc\ub4dc\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\uc0ad\uc81c` | `del` | \uac1d\uccb4 \uc0ad\uc81c |\n| `\uc804\uc5ed` | `global` | \uc804\uc5ed \ubcc0\uc218 |\n| `\ube44\uc804\uc5ed` | `nonlocal` | \ube44\uc9c0\uc5ed \ubcc0\uc218 |\n| `\ub85c\uc11c` | `as` | as \ud0a4\uc6cc\ub4dc |\n| `\uc740` | `is` | is \uc5f0\uc0b0\uc790 |\n| `\uc5d0\uc11c` | `from` | from \uc784\ud3ec\ud2b8 |\n| `\ubd88\ub7ec\uc624\uae30` | `import` | import \ubb38 |\n| `\ub2e8\uc5b8` | `assert` | assert \ubb38 |\n| `\ud568\uaed8` | `with` | with \ubb38 |\n| `\uc0dd\uc131` | `yield` | yield \ubb38 |\n\n### \ud30c\uc774\uc36c \ub0b4\uc7a5 \ud568\uc218 (Built-in Functions)\n\n#### \uae30\ubcf8 \ub0b4\uc7a5 \ud568\uc218\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\uc808\ub313\uac12` | `abs` | \uc808\ub313\uac12 \uacc4\uc0b0 |\n| `\ubaa8\ub450\ucc38` | `all` | \ubaa8\ub4e0 \uc694\uc18c\uac00 \ucc38\uc778\uc9c0 \ud655\uc778 |\n| `\ud558\ub098\ucc38` | `any` | \ud558\ub098\ub77c\ub3c4 \ucc38\uc778\uc9c0 \ud655\uc778 |\n| `\uc544\uc2a4\ud0a4` | `ascii` | ASCII \ubb38\uc790\uc5f4 \ubc18\ud658 |\n| `\uc774\uc9c4\uc218` | `bin` | \uc774\uc9c4\uc218 \ubcc0\ud658 |\n| `\ubd88\ub9ac\uc5b8` | `bool` | \ubd88\ub9ac\uc5b8 \ud0c0\uc785 |\n| `\uc911\ub2e8\uc810` | `breakpoint` | \ub514\ubc84\uac70 \uc911\ub2e8\uc810 |\n| `\ubc14\uc774\ud2b8\ubc30\uc5f4` | `bytearray` | \ubc14\uc774\ud2b8 \ubc30\uc5f4 |\n| `\ubc14\uc774\ud2b8` | `bytes` | \ubc14\uc774\ud2b8 \uac1d\uccb4 |\n| `\ud638\ucd9c\uac00\ub2a5` | `callable` | \ud638\ucd9c \uac00\ub2a5 \uc5ec\ubd80 \ud655\uc778 |\n| `\ubb38\uc790` | `chr` | \uc720\ub2c8\ucf54\ub4dc \ubb38\uc790 \ubc18\ud658 |\n| `\ud074\ub798\uc2a4\uba54\uc11c\ub4dc` | `classmethod` | \ud074\ub798\uc2a4 \uba54\uc11c\ub4dc |\n| `\ucef4\ud30c\uc77c` | `compile` | \ucf54\ub4dc \ucef4\ud30c\uc77c |\n| `\ubcf5\uc18c\uc218` | `complex` | \ubcf5\uc18c\uc218 \ud0c0\uc785 |\n| `\uc0ad\uc81c\uc18d\uc131` | `delattr` | \uc18d\uc131 \uc0ad\uc81c |\n| `\uc0ac\uc804` | `dict` | \ub515\uc154\ub108\ub9ac \ud0c0\uc785 |\n| `\ub514\ub809\ud130\ub9ac` | `dir` | \uac1d\uccb4 \uc18d\uc131 \ubaa9\ub85d |\n| `\ubaab\ub098\uba38\uc9c0` | `divmod` | \ubaab\uacfc \ub098\uba38\uc9c0 |\n| `\uc5f4\uac70` | `enumerate` | \uc778\ub371\uc2a4\uc640 \uac12 \uc30d |\n| `\ud3c9\uac00` | `eval` | \ud45c\ud604\uc2dd \ud3c9\uac00 |\n| `\uc2e4\ud589` | `exec` | \ucf54\ub4dc \uc2e4\ud589 |\n| `\ud544\ud130` | `filter` | \uc870\uac74 \ud544\ud130\ub9c1 |\n| `\uc2e4\uc218` | `float` | \uc2e4\uc218 \ud0c0\uc785 |\n| `\ud615\uc2dd` | `format` | \ubb38\uc790\uc5f4 \ud3ec\ub9f7 |\n| `\uace0\uc815\uc9d1\ud569` | `frozenset` | \ubd88\ubcc0 \uc9d1\ud569 |\n| `\uc18d\uc131\uc5bb\uae30` | `getattr` | \uc18d\uc131 \uac00\uc838\uc624\uae30 |\n| `\uc804\uc5ed\ubcc0\uc218` | `globals` | \uc804\uc5ed \ubcc0\uc218 \ub515\uc154\ub108\ub9ac |\n| `\uc874\uc7ac\uc5ec\ubd80` | `hasattr` | \uc18d\uc131 \uc874\uc7ac \uc5ec\ubd80 |\n| `\ud574\uc2dc` | `hash` | \ud574\uc2dc \uac12 |\n| `\ub3c4\uc6c0\ub9d0` | `help` | \ub3c4\uc6c0\ub9d0 \ucd9c\ub825 |\n| `16\uc9c4\uc218` | `hex` | 16\uc9c4\uc218 \ubcc0\ud658 |\n| `\uac1d\uccb4ID` | `id` | \uac1d\uccb4 ID |\n| `\uc785\ub825` | `input` | \uc0ac\uc6a9\uc790 \uc785\ub825 |\n| `\uc815\uc218` | `int` | \uc815\uc218 \ud0c0\uc785 |\n| `\uc778\uc2a4\ud134\uc2a4\uc5ec\ubd80` | `isinstance` | \uc778\uc2a4\ud134\uc2a4 \uc5ec\ubd80 \ud655\uc778 |\n| `\uc11c\ube0c\ud074\ub798\uc2a4\uc5ec\ubd80` | `issubclass` | \uc11c\ube0c\ud074\ub798\uc2a4 \uc5ec\ubd80 \ud655\uc778 |\n| `\ubc18\ubcf5\uc790` | `iter` | \ubc18\ubcf5\uc790 \uc0dd\uc131 |\n| `\uae38\uc774` | `len` | \uae38\uc774 \ubc18\ud658 |\n| `\ub9ac\uc2a4\ud2b8` | `list` | \ub9ac\uc2a4\ud2b8 \ud0c0\uc785 |\n| `\uc9c0\uc5ed\ubcc0\uc218` | `locals` | \uc9c0\uc5ed \ubcc0\uc218 \ub515\uc154\ub108\ub9ac |\n| `\ub9f5` | `map` | \ub9f5 \ud568\uc218 |\n| `\ucd5c\ub300\uac12` | `max` | \ucd5c\ub300\uac12 |\n| `\uba54\ubaa8\ub9ac\ubdf0` | `memoryview` | \uba54\ubaa8\ub9ac \ubdf0 |\n| `\ucd5c\uc18c\uac12` | `min` | \ucd5c\uc18c\uac12 |\n| `\ub2e4\uc74c\uac12` | `next` | \ub2e4\uc74c \uac12 |\n| `\uac1d\uccb4` | `object` | \uae30\ubcf8 \uac1d\uccb4 |\n| `8\uc9c4\uc218` | `oct` | 8\uc9c4\uc218 \ubcc0\ud658 |\n| `\uc5f4\uae30` | `open` | \ud30c\uc77c \uc5f4\uae30 |\n| `\uc720\ub2c8\ucf54\ub4dc\uac12` | `ord` | \uc720\ub2c8\ucf54\ub4dc \uac12 |\n| `\uac70\ub4ed\uc81c\uacf1` | `pow` | \uac70\ub4ed\uc81c\uacf1 |\n| `\ucd9c\ub825` | `print` | \ud654\uba74 \ucd9c\ub825 |\n| `\uc18d\uc131` | `property` | \ud504\ub85c\ud37c\ud2f0 |\n| `\ubc94\uc704` | `range` | \ubc94\uc704 \uc0dd\uc131 |\n| `\ud45c\ud604\uc2dd` | `repr` | \ud45c\ud604\uc2dd \ubb38\uc790\uc5f4 |\n| `\uc5ed\uc21c` | `reversed` | \uc5ed\uc21c \ubc18\ubcf5\uc790 |\n| `\ubc18\uc62c\ub9bc` | `round` | \ubc18\uc62c\ub9bc |\n| `\uc9d1\ud569` | `set` | \uc9d1\ud569 \ud0c0\uc785 |\n| `\uc124\uc815\uc18d\uc131` | `setattr` | \uc18d\uc131 \uc124\uc815 |\n| `\uc2ac\ub77c\uc774\uc2a4` | `slice` | \uc2ac\ub77c\uc774\uc2a4 \uac1d\uccb4 |\n| `\uc815\ub82c` | `sorted` | \uc815\ub82c\ub41c \ub9ac\uc2a4\ud2b8 |\n| `\uc815\uc801\uba54\uc11c\ub4dc` | `staticmethod` | \uc815\uc801 \uba54\uc11c\ub4dc |\n| `\ubb38\uc790\uc5f4` | `str` | \ubb38\uc790\uc5f4 \ud0c0\uc785 |\n| `\ud569\uacc4` | `sum` | \ud569\uacc4 |\n| `\uc288\ud37c\ud074\ub798\uc2a4` | `super` | \uc0c1\uc704 \ud074\ub798\uc2a4 |\n| `\ud29c\ud50c` | `tuple` | \ud29c\ud50c \ud0c0\uc785 |\n| `\ud0c0\uc785` | `type` | \ud0c0\uc785 \ud655\uc778 |\n| `\ubcc0\uc218\ub4e4` | `vars` | \ubcc0\uc218 \ub515\uc154\ub108\ub9ac |\n| `\uc555\ucd95` | `zip` | \uc5ec\ub7ec \uc2dc\ud000\uc2a4 \uc555\ucd95 |\n| `\ubaa8\ub4c8\uac00\uc838\uc624\uae30` | `__import__` | \ub3d9\uc801 \uc784\ud3ec\ud2b8 |\n\n#### \ucd94\uac00 \ub0b4\uc7a5 \ud568\uc218\ub4e4\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\uc801\uc6a9` | `apply` | \ud568\uc218 \uc801\uc6a9 |\n| `\ubc84\ud37c` | `buffer` | \ubc84\ud37c \uac1d\uccb4 |\n| `\ubc14\uc774\ud2b8\uc21c\uc11c` | `byteorder` | \ubc14\uc774\ud2b8 \uc21c\uc11c |\n| `\ucf54\ub4dc` | `code` | \ucf54\ub4dc \uac1d\uccb4 |\n| `\uacf5\ubcc0` | `coerce` | \ud0c0\uc785 \uac15\uc81c \ubcc0\ud658 |\n| `\ub0b4\ubd80\ud568\uc218` | `intern` | \ubb38\uc790\uc5f4 \ub0b4\ubd80\ud654 |\n| `\uae34\uc815\uc218` | `long` | \uae34 \uc815\uc218 |\n| `\uc6d0\uc2dc\uc785\ub825` | `raw_input` | \uc6d0\uc2dc \uc785\ub825 |\n| `\ubb38\uc790\uc5f4\uac10\uc18c` | `reduce` | \ucd95\uc57d \ud568\uc218 |\n| `\ub2e4\uc2dc\ub85c\ub4dc` | `reload` | \ubaa8\ub4c8 \uc7ac\ub85c\ub4dc |\n| `\uc720\ub2c8\ucf54\ub4dc` | `unicode` | \uc720\ub2c8\ucf54\ub4dc \ubb38\uc790\uc5f4 |\n| `\uc2e4\ud589\ud30c\uc77c` | `execfile` | \ud30c\uc77c \uc2e4\ud589 |\n| `\ud30c\uc77c` | `file` | \ud30c\uc77c \uac1d\uccb4 |\n\n### \uc5f0\uc0b0\uc790 \ud0a4\uc6cc\ub4dc\n\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\uc774\uace0` | `and` | \ub17c\ub9ac AND |\n| `\uc774\uac70\ub098` | `or` | \ub17c\ub9ac OR |\n| `\uac00\uc544\ub2c8\ub2e4` | `not` | \ub17c\ub9ac NOT |\n| `\uac19\ub2e4` | `==` | \uac19\uc74c \ube44\uad50 |\n| `\ub2e4\ub974\ub2e4` | `!=` | \ub2e4\ub984 \ube44\uad50 |\n| `\ud06c\ub2e4` | `>` | \ud07c \ube44\uad50 |\n| `\uc791\ub2e4` | `<` | \uc791\uc74c \ube44\uad50 |\n| `\ud06c\uac70\ub098\uac19\ub2e4` | `>=` | \ud06c\uac70\ub098 \uac19\uc74c |\n| `\uc791\uac70\ub098\uac19\ub2e4` | `<=` | \uc791\uac70\ub098 \uac19\uc74c |\n\n### \ud0c0\uc785 \uad00\ub828\n\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\uc815\uc218\ud0c0\uc785` | `int` | \uc815\uc218 \ud0c0\uc785 |\n| `\uc2e4\uc218\ud0c0\uc785` | `float` | \uc2e4\uc218 \ud0c0\uc785 |\n| `\ubb38\uc790\uc5f4\ud0c0\uc785` | `str` | \ubb38\uc790\uc5f4 \ud0c0\uc785 |\n| `\ubd88\ud0c0\uc785` | `bool` | \ubd88\ub9ac\uc5b8 \ud0c0\uc785 |\n| `\ub9ac\uc2a4\ud2b8\ud0c0\uc785` | `list` | \ub9ac\uc2a4\ud2b8 \ud0c0\uc785 |\n| `\ud29c\ud50c\ud0c0\uc785` | `tuple` | \ud29c\ud50c \ud0c0\uc785 |\n| `\uc0ac\uc804\ud0c0\uc785` | `dict` | \ub515\uc154\ub108\ub9ac \ud0c0\uc785 |\n| `\uc9d1\ud569\ud0c0\uc785` | `set` | \uc9d1\ud569 \ud0c0\uc785 |\n| `\ubc14\uc774\ud2b8\ud0c0\uc785` | `bytes` | \ubc14\uc774\ud2b8 \ud0c0\uc785 |\n| `\uc5c6\uc74c\ud0c0\uc785` | `type(None)` | None \ud0c0\uc785 |\n\n### \ud2b9\uc218 \uba54\uc11c\ub4dc \ud655\uc7a5\n\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\ucd08\uae30\ud654` | `__init__` | \uac1d\uccb4 \ucd08\uae30\ud654 |\n| `\ubb38\uc790\uc5f4\ud654` | `__str__` | \ubb38\uc790\uc5f4 \ud45c\ud604 |\n| `\ud45c\ud604` | `__repr__` | \uac1c\ubc1c\uc790\uc6a9 \ud45c\ud604 |\n| `\uae38\uc774` | `__len__` | \uae38\uc774 \uba54\uc11c\ub4dc |\n| `\ud638\ucd9c` | `__call__` | \ud638\ucd9c \uac00\ub2a5 \uac1d\uccb4 |\n| `\ubc18\ubcf5\uc790` | `__iter__` | \ubc18\ubcf5\uc790 \uba54\uc11c\ub4dc |\n| `\ub2e4\uc74c` | `__next__` | \ub2e4\uc74c \uac12 |\n| `\ud3ec\ud568` | `__contains__` | \ud3ec\ud568 \uc5ec\ubd80 |\n| `\ub367\uc148` | `__add__` | \ub367\uc148 \uc5f0\uc0b0\uc790 |\n| `\ube84\uc148` | `__sub__` | \ube84\uc148 \uc5f0\uc0b0\uc790 |\n| `\uacf1\uc148` | `__mul__` | \uacf1\uc148 \uc5f0\uc0b0\uc790 |\n| `\ub098\ub217\uc148` | `__truediv__` | \ub098\ub217\uc148 \uc5f0\uc0b0\uc790 |\n| `\uc815\uc218\ub098\ub217\uc148` | `__floordiv__` | \uc815\uc218 \ub098\ub217\uc148 |\n| `\ub098\uba38\uc9c0` | `__mod__` | \ub098\uba38\uc9c0 \uc5f0\uc0b0\uc790 |\n| `\uac70\ub4ed\uc81c\uacf1` | `__pow__` | \uac70\ub4ed\uc81c\uacf1 \uc5f0\uc0b0\uc790 |\n| `\uac19\uc74c` | `__eq__` | \uac19\uc74c \ube44\uad50 |\n| `\ub2e4\ub984` | `__ne__` | \ub2e4\ub984 \ube44\uad50 |\n| `\uc791\uc74c` | `__lt__` | \uc791\uc74c \ube44\uad50 |\n| `\uc791\uac70\ub098\uac19\uc74c` | `__le__` | \uc791\uac70\ub098 \uac19\uc74c |\n| `\ud07c` | `__gt__` | \ud07c \ube44\uad50 |\n| `\ud06c\uac70\ub098\uac19\uc74c` | `__ge__` | \ud06c\uac70\ub098 \uac19\uc74c |\n| `\uc778\ub371\uc2f1` | `__getitem__` | \uc778\ub371\uc2a4 \uc811\uadfc |\n| `\uc778\ub371\uc2a4\uc124\uc815` | `__setitem__` | \uc778\ub371\uc2a4 \uc124\uc815 |\n| `\uc778\ub371\uc2a4\uc0ad\uc81c` | `__delitem__` | \uc778\ub371\uc2a4 \uc0ad\uc81c |\n| `\uc18d\uc131\uc811\uadfc` | `__getattr__` | \uc18d\uc131 \uc811\uadfc |\n| `\uc18d\uc131\uc124\uc815` | `__setattr__` | \uc18d\uc131 \uc124\uc815 |\n| `\uc18d\uc131\uc0ad\uc81c` | `__delattr__` | \uc18d\uc131 \uc0ad\uc81c |\n| `\uc9c4\uc785` | `__enter__` | \ucee8\ud14d\uc2a4\ud2b8 \uc9c4\uc785 |\n| `\uc885\ub8cc` | `__exit__` | \ucee8\ud14d\uc2a4\ud2b8 \uc885\ub8cc |\n| `\ud574\uc2dc` | `__hash__` | \ud574\uc2dc \uac12 |\n| `\ubd88\ub9ac\uc5b8\ud654` | `__bool__` | \ubd88\ub9ac\uc5b8 \ubcc0\ud658 |\n| `\ubc14\uc774\ud2b8\ud654` | `__bytes__` | \ubc14\uc774\ud2b8 \ubcc0\ud658 |\n| `\ud615\uc2dd\ud654` | `__format__` | \ud3ec\ub9f7 \ubb38\uc790\uc5f4 |\n| `\ud06c\uae30\ud78c\ud2b8` | `__sizeof__` | \uba54\ubaa8\ub9ac \ud06c\uae30 |\n| `\ubcf5\uc0ac` | `__copy__` | \ubcf5\uc0ac |\n| `\uae4a\uc740\ubcf5\uc0ac` | `__deepcopy__` | \uae4a\uc740 \ubcf5\uc0ac |\n| `\uc0c1\ud0dc\uc5bb\uae30` | `__getstate__` | \uc0c1\ud0dc \uac00\uc838\uc624\uae30 |\n| `\uc0c1\ud0dc\uc124\uc815` | `__setstate__` | \uc0c1\ud0dc \uc124\uc815 |\n| `\uac10\uc18c` | `__reduce__` | \uac1d\uccb4 \ucd95\uc57d |\n| `\uac10\uc18c\ud655\uc7a5` | `__reduce_ex__` | \ud655\uc7a5 \ucd95\uc57d |\n\n### \uc0c8\ub85c\uc6b4 \ubb38\ubc95 \uc694\uc18c\ub4e4\n\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\ubaa8\ub450\uc0dd\uc131` | `yield from` | yield from \uad6c\ubb38 |\n| `\uc648\ub7ec\uc2a4` | `:=` | \uc648\ub7ec\uc2a4 \uc5f0\uc0b0\uc790 |\n| `\ud0c0\uc785\ud78c\ud2b8` | `:` | \ud0c0\uc785 \ud78c\ud2b8 |\n| `\ubc18\ud658\ud0c0\uc785` | `->` | \ubc18\ud658 \ud0c0\uc785 \ud78c\ud2b8 |\n| `\ud3ec\ub9f7\ubb38\uc790\uc5f4` | `f` | f-string |\n| `\uc6d0\uc2dc\ubb38\uc790\uc5f4` | `r` | raw string |\n| `\ubc14\uc774\ud2b8\ubb38\uc790\uc5f4` | `b` | byte string |\n| `\uc720\ub2c8\ucf54\ub4dc\ubb38\uc790\uc5f4` | `u` | unicode string |\n\n### \ud328\ud134 \ub9e4\uce6d \ud655\uc7a5\n\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\uc640\uc77c\ub4dc\uce74\ub4dc` | `_` | \uc640\uc77c\ub4dc\uce74\ub4dc \ud328\ud134 |\n| `\ub610\ub294\ud328\ud134` | `\\|` | OR \ud328\ud134 |\n| `\uac00\ub4dc\uc870\uac74` | `if` | \uac00\ub4dc \uc870\uac74 |\n\n### \ucee8\ud14d\uc2a4\ud2b8 \ub9e4\ub2c8\uc800\n\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\ubb38\ub9e5\uad00\ub9ac\uc790` | `contextlib` | \ucee8\ud14d\uc2a4\ud2b8 \uad00\ub9ac\uc790 |\n| `\uc784\uc2dc\uc5b5\uc81c` | `suppress` | \uc608\uc678 \uc5b5\uc81c |\n| `\ub9ac\ub2e4\uc774\ub809\ud2b8\ucd9c\ub825` | `redirect_stdout` | \ucd9c\ub825 \ub9ac\ub2e4\uc774\ub809\ud2b8 |\n| `\ub9ac\ub2e4\uc774\ub809\ud2b8\uc624\ub958` | `redirect_stderr` | \uc624\ub958 \ub9ac\ub2e4\uc774\ub809\ud2b8 |\n\n### \ub370\ucf54\ub808\uc774\ud130 \uad00\ub828\n\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\ub370\ucf54\ub808\uc774\ud130` | `@` | \ub370\ucf54\ub808\uc774\ud130 |\n| `\uc18d\uc131\uc7a5\uc2dd` | `property` | \ud504\ub85c\ud37c\ud2f0 \ub370\ucf54\ub808\uc774\ud130 |\n| `\uc815\uc801\uc7a5\uc2dd` | `staticmethod` | \uc815\uc801 \uba54\uc11c\ub4dc \ub370\ucf54\ub808\uc774\ud130 |\n| `\ud074\ub798\uc2a4\uc7a5\uc2dd` | `classmethod` | \ud074\ub798\uc2a4 \uba54\uc11c\ub4dc \ub370\ucf54\ub808\uc774\ud130 |\n| `\uce90\uc2dc\uc7a5\uc2dd` | `cache` | \uce90\uc2dc \ub370\ucf54\ub808\uc774\ud130 |\n| `LRU\uce90\uc2dc` | `lru_cache` | LRU \uce90\uc2dc |\n\n### \ud0c0\uc785 \ud78c\ud2b8 \ubaa8\ub4c8 (typing)\n\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\ud0c0\uc785\ud78c\ud2b8\ubaa8\ub4c8` | `typing` | \ud0c0\uc785 \ud78c\ud2b8 \ubaa8\ub4c8 |\n| `\ub9ac\uc2a4\ud2b8\ud615` | `List` | \ub9ac\uc2a4\ud2b8 \ud0c0\uc785 \ud78c\ud2b8 |\n| `\ud29c\ud50c\ud615` | `Tuple` | \ud29c\ud50c \ud0c0\uc785 \ud78c\ud2b8 |\n| `\uc0ac\uc804\ud615` | `Dict` | \ub515\uc154\ub108\ub9ac \ud0c0\uc785 \ud78c\ud2b8 |\n| `\uc9d1\ud569\ud615` | `Set` | \uc9d1\ud569 \ud0c0\uc785 \ud78c\ud2b8 |\n| `\uace0\uc815\uc9d1\ud569\ud615` | `FrozenSet` | \uace0\uc815\uc9d1\ud569 \ud0c0\uc785 \ud78c\ud2b8 |\n| `\uc635\uc158\ud615` | `Optional` | \uc635\uc158 \ud0c0\uc785 |\n| `\uc720\ub2c8\uc628\ud615` | `Union` | \uc720\ub2c8\uc628 \ud0c0\uc785 |\n| `\ucf5c\ub7ec\ube14\ud615` | `Callable` | \ud638\ucd9c \uac00\ub2a5 \ud0c0\uc785 |\n| `\ubaa8\ub4e0\ud615` | `Any` | \ubaa8\ub4e0 \ud0c0\uc785 |\n| `\ud0c0\uc785\ubcc0\uc218` | `TypeVar` | \ud0c0\uc785 \ubcc0\uc218 |\n| `\uc81c\ub124\ub9ad` | `Generic` | \uc81c\ub124\ub9ad \ud0c0\uc785 |\n| `\ub9ac\ud130\ub7f4` | `Literal` | \ub9ac\ud130\ub7f4 \ud0c0\uc785 |\n| `\ud30c\uc774\ub110` | `Final` | \ucd5c\uc885 \ud0c0\uc785 |\n| `\ub178\ubc18\ud658` | `NoReturn` | \ubc18\ud658 \uc5c6\uc74c |\n| `\ud074\ub798\uc2a4\ubcc0\uc218` | `ClassVar` | \ud074\ub798\uc2a4 \ubcc0\uc218 |\n| `\uc790\uae30\ucc38\uc870` | `Self` | \uc790\uae30 \ucc38\uc870 |\n\n### \ud30c\uc774\uc36c \ub0b4\uc7a5 \uc608\uc678\n\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\uc608\uc678` | `Exception` | \uae30\ubcf8 \uc608\uc678 |\n| `\uae30\ubcf8\uc608\uc678` | `BaseException` | \ucd5c\uc0c1\uc704 \uc608\uc678 |\n| `\uc2dc\uc2a4\ud15c\uc885\ub8cc` | `SystemExit` | \uc2dc\uc2a4\ud15c \uc885\ub8cc |\n| `\ud0a4\ubcf4\ub4dc\uc778\ud130\ub7fd\ud2b8` | `KeyboardInterrupt` | \ud0a4\ubcf4\ub4dc \uc778\ud130\ub7fd\ud2b8 |\n| `\uc81c\ub108\ub808\uc774\ud130\uc885\ub8cc` | `GeneratorExit` | \uc81c\ub108\ub808\uc774\ud130 \uc885\ub8cc |\n| `\uc911\ub2e8\uc608\uc678` | `StopIteration` | \ubc18\ubcf5 \uc911\ub2e8 |\n| `\ube44\ub3d9\uae30\uc911\ub2e8\uc608\uc678` | `StopAsyncIteration` | \ube44\ub3d9\uae30 \ubc18\ubcf5 \uc911\ub2e8 |\n| `\uc0b0\uc220\uc624\ub958` | `ArithmeticError` | \uc0b0\uc220 \uc5f0\uc0b0 \uc624\ub958 |\n| `\uc624\ubc84\ud50c\ub85c\uc6b0\uc624\ub958` | `OverflowError` | \uc624\ubc84\ud50c\ub85c\uc6b0 |\n| `\uc601\uc73c\ub85c\ub098\ub214\uc624\ub958` | `ZeroDivisionError` | 0\uc73c\ub85c \ub098\ub214 |\n| `\ubd80\ub3d9\uc18c\uc218\uc810\uc624\ub958` | `FloatingPointError` | \ubd80\ub3d9\uc18c\uc218\uc810 \uc624\ub958 |\n| `\uc18d\uc131\uc624\ub958` | `AttributeError` | \uc18d\uc131 \uc624\ub958 |\n| `\ubc84\ud37c\uc624\ub958` | `BufferError` | \ubc84\ud37c \uc624\ub958 |\n| `EOF\uc624\ub958` | `EOFError` | \ud30c\uc77c \ub05d \uc624\ub958 |\n| `\uc785\ucd9c\ub825\uc624\ub958` | `IOError` | \uc785\ucd9c\ub825 \uc624\ub958 |\n| `OS\uc624\ub958` | `OSError` | \uc6b4\uc601\uccb4\uc81c \uc624\ub958 |\n| `\ud30c\uc77c\uc874\uc7ac\uc624\ub958` | `FileExistsError` | \ud30c\uc77c \uc874\uc7ac |\n| `\ud30c\uc77c\uc5c6\uc74c\uc624\ub958` | `FileNotFoundError` | \ud30c\uc77c \uc5c6\uc74c |\n| `\ub514\ub809\ud130\ub9ac\uc5c6\uc74c\uc624\ub958` | `NotADirectoryError` | \ub514\ub809\ud130\ub9ac \uc544\ub2d8 |\n| `\ub514\ub809\ud130\ub9ac\uc544\ub2d8\uc624\ub958` | `IsADirectoryError` | \ub514\ub809\ud130\ub9ac\uc784 |\n| `\uad8c\ud55c\uc624\ub958` | `PermissionError` | \uad8c\ud55c \uc624\ub958 |\n| `\ud504\ub85c\uc138\uc2a4\ucc3e\uc744\uc218\uc5c6\uc74c\uc624\ub958` | `ProcessLookupError` | \ud504\ub85c\uc138\uc2a4 \ucc3e\uc744 \uc218 \uc5c6\uc74c |\n| `\uc2dc\uac04\ucd08\uacfc\uc624\ub958` | `TimeoutError` | \uc2dc\uac04 \ucd08\uacfc |\n| `\ucc38\uc870\uc624\ub958` | `ReferenceError` | \ucc38\uc870 \uc624\ub958 |\n| `\uba54\ubaa8\ub9ac\uc624\ub958` | `MemoryError` | \uba54\ubaa8\ub9ac \uc624\ub958 |\n| `\uc778\ub371\uc2a4\uc624\ub958` | `IndexError` | \uc778\ub371\uc2a4 \uc624\ub958 |\n| `\ud0a4\uc624\ub958` | `KeyError` | \ud0a4 \uc624\ub958 |\n| `\uac12\uc624\ub958` | `ValueError` | \uac12 \uc624\ub958 |\n| `\ud0c0\uc785\uc624\ub958` | `TypeError` | \ud0c0\uc785 \uc624\ub958 |\n| `\uc774\ub984\uc624\ub958` | `NameError` | \uc774\ub984 \uc624\ub958 |\n| `\uc5b8\ubc14\uc6b4\ub4dc\ub85c\uceec\uc624\ub958` | `UnboundLocalError` | \uc9c0\uc5ed \ubcc0\uc218 \uc624\ub958 |\n| `\ubaa8\ub4c8\uc5c6\uc74c\uc624\ub958` | `ModuleNotFoundError` | \ubaa8\ub4c8 \uc5c6\uc74c |\n| `\uc784\ud3ec\ud2b8\uc624\ub958` | `ImportError` | \uc784\ud3ec\ud2b8 \uc624\ub958 |\n| `\uc911\ub2e8\uc624\ub958` | `InterruptedError` | \uc911\ub2e8 \uc624\ub958 |\n| `\ub7f0\ud0c0\uc784\uc624\ub958` | `RuntimeError` | \ub7f0\ud0c0\uc784 \uc624\ub958 |\n| `\uc7ac\uadc0\uc624\ub958` | `RecursionError` | \uc7ac\uadc0 \uc624\ub958 |\n| `\uad6c\ud604\uc548\ub428\uc624\ub958` | `NotImplementedError` | \uad6c\ud604 \uc548\ub428 |\n| `\ubb38\ubc95\uc624\ub958` | `SyntaxError` | \ubb38\ubc95 \uc624\ub958 |\n| `\ub4e4\uc5ec\uc4f0\uae30\uc624\ub958` | `IndentationError` | \ub4e4\uc5ec\uc4f0\uae30 \uc624\ub958 |\n| `\ud0ed\uc624\ub958` | `TabError` | \ud0ed \uc624\ub958 |\n| `\uc720\ub2c8\ucf54\ub4dc\uc624\ub958` | `UnicodeError` | \uc720\ub2c8\ucf54\ub4dc \uc624\ub958 |\n| `\uc720\ub2c8\ucf54\ub4dc\uc778\ucf54\ub529\uc624\ub958` | `UnicodeEncodeError` | \uc720\ub2c8\ucf54\ub4dc \uc778\ucf54\ub529 \uc624\ub958 |\n| `\uc720\ub2c8\ucf54\ub4dc\ub514\ucf54\ub529\uc624\ub958` | `UnicodeDecodeError` | \uc720\ub2c8\ucf54\ub4dc \ub514\ucf54\ub529 \uc624\ub958 |\n| `\uc720\ub2c8\ucf54\ub4dc\ubc88\uc5ed\uc624\ub958` | `UnicodeTranslateError` | \uc720\ub2c8\ucf54\ub4dc \ubc88\uc5ed \uc624\ub958 |\n\n### \uacbd\uace0 (Warnings)\n\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\uacbd\uace0` | `Warning` | \uae30\ubcf8 \uacbd\uace0 |\n| `\uc0ac\uc6a9\uc790\uacbd\uace0` | `UserWarning` | \uc0ac\uc6a9\uc790 \uacbd\uace0 |\n| `\ud3d0\uae30\uacbd\uace0` | `DeprecationWarning` | \ud3d0\uae30 \uc608\uc815 \uacbd\uace0 |\n| `\ub300\uae30\uc911\uacbd\uace0` | `PendingDeprecationWarning` | \ud3d0\uae30 \ub300\uae30 \uacbd\uace0 |\n| `\ubb38\ubc95\uacbd\uace0` | `SyntaxWarning` | \ubb38\ubc95 \uacbd\uace0 |\n| `\ub7f0\ud0c0\uc784\uacbd\uace0` | `RuntimeWarning` | \ub7f0\ud0c0\uc784 \uacbd\uace0 |\n| `\ubbf8\ub798\uae30\ub2a5\uacbd\uace0` | `FutureWarning` | \ubbf8\ub798 \uae30\ub2a5 \uacbd\uace0 |\n| `\uc784\ud3ec\ud2b8\uacbd\uace0` | `ImportWarning` | \uc784\ud3ec\ud2b8 \uacbd\uace0 |\n| `\uc720\ub2c8\ucf54\ub4dc\uacbd\uace0` | `UnicodeWarning` | \uc720\ub2c8\ucf54\ub4dc \uacbd\uace0 |\n| `\ubc14\uc774\ud2b8\uacbd\uace0` | `BytesWarning` | \ubc14\uc774\ud2b8 \uacbd\uace0 |\n| `\uc790\uc6d0\uacbd\uace0` | `ResourceWarning` | \uc790\uc6d0 \uacbd\uace0 |\n\n### \uc720\uc6a9\ud55c \ubaa8\ub4c8\ub4e4\n\n| \ud55c\uad6d\uc5b4 | Python | \uc124\uba85 |\n|--------|--------|------|\n| `\uc6b4\uc601\uccb4\uc81c` | `os` | \uc6b4\uc601\uccb4\uc81c \uc778\ud130\ud398\uc774\uc2a4 |\n| `\uc2dc\uc2a4\ud15c` | `sys` | \uc2dc\uc2a4\ud15c\ubcc4 \ub9e4\uac1c\ubcc0\uc218 |\n| `\uc2dc\uac04` | `time` | \uc2dc\uac04 \uad00\ub828 \ud568\uc218 |\n| `\ub0a0\uc9dc\uc2dc\uac04` | `datetime` | \ub0a0\uc9dc\uc640 \uc2dc\uac04 |\n| `\uc218\ud559` | `math` | \uc218\ud559 \ud568\uc218 |\n| `\ub79c\ub364` | `random` | \ub09c\uc218 \uc0dd\uc131 |\n| `\uc815\uaddc\uc2dd` | `re` | \uc815\uaddc \ud45c\ud604\uc2dd |\n| `JSON` | `json` | JSON \uc778\ucf54\ub354/\ub514\ucf54\ub354 |\n| `\uacbd\ub85c` | `pathlib` | \uac1d\uccb4\uc9c0\ud5a5 \ud30c\uc77c\uc2dc\uc2a4\ud15c \uacbd\ub85c |\n| `\ucf5c\ub809\uc158` | `collections` | \ud2b9\uc218 \ucee8\ud14c\uc774\ub108 |\n| `\ubc18\ubcf5\ub3c4\uad6c` | `itertools` | \ubc18\ubcf5\uc790 \ub3c4\uad6c |\n| `\ud568\uc218\ub3c4\uad6c` | `functools` | \ud568\uc218 \ub3c4\uad6c |\n| `\uc2a4\ub808\ub529` | `threading` | \uc2a4\ub808\ub4dc \uae30\ubc18 \ubcd1\ub82c\uc131 |\n| `\uba40\ud2f0\ud504\ub85c\uc138\uc2f1` | `multiprocessing` | \ud504\ub85c\uc138\uc2a4 \uae30\ubc18 \ubcd1\ub82c\uc131 |\n| `\ube44\ub3d9\uae30IO` | `asyncio` | \ube44\ub3d9\uae30 I/O |\n| `HTTP\uc694\uccad` | `requests` | HTTP \ub77c\uc774\ube0c\ub7ec\ub9ac |\n| `URL\ud574\uc11d` | `urllib` | URL \ucc98\ub9ac \ubaa8\ub4c8 |\n| `CSV` | `csv` | CSV \ud30c\uc77c \uc77d\uae30/\uc4f0\uae30 |\n| `\ud53c\ud074` | `pickle` | \ud30c\uc774\uc36c \uac1d\uccb4 \uc9c1\ub82c\ud654 |\n| `\ubcf5\uc0ac` | `copy` | \uc595\uc740/\uae4a\uc740 \ubcf5\uc0ac |\n| `\uc57d\ud55c\ucc38\uc870` | `weakref` | \uc57d\ud55c \ucc38\uc870 |\n| `\uac00\ube44\uc9c0\uc218\uc9d1` | `gc` | \uac00\ube44\uc9c0 \uceec\ub809\ud130 |\n| `\ub514\uc2a4` | `dis` | \ubc14\uc774\ud2b8\ucf54\ub4dc \ub514\uc2a4\uc5b4\uc148\ube14\ub7ec |\n| `\ucd94\uc801` | `traceback` | \uc2a4\ud0dd \ucd94\uc801 \ucd9c\ub825 |\n| `\ub85c\uae45` | `logging` | \ub85c\uae45 \uc2dc\uc124 |\n| `\uc555\ucd95` | `zipfile` | ZIP \uc544\uce74\uc774\ube0c |\n| `\ud0c0\ub974` | `tarfile` | TAR \uc544\uce74\uc774\ube0c |\n| `\uc784\uc2dc\ud30c\uc77c` | `tempfile` | \uc784\uc2dc \ud30c\uc77c\uacfc \ub514\ub809\ud130\ub9ac |\n| `\uc178\uba85\ub839` | `subprocess` | \ud558\uc704 \ud504\ub85c\uc138\uc2a4 \uad00\ub9ac |\n| `\ud50c\ub7ab\ud3fc` | `platform` | \ud50c\ub7ab\ud3fc \uc815\ubcf4 |\n\n---\n\n\ud83c\uddf0\ud83c\uddf7 **\ud55c\uad6d\uc5b4\ub85c \ud504\ub85c\uadf8\ub798\ubc0d\ud558\uc138\uc694!** \ud83d\udcdd\u2728\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Korean-based Python syntax translator | \ud55c\uad6d\uc5b4 \ud30c\uc774\uc36c \ubc88\uc5ed\uae30",
    "version": "1.0.0",
    "project_urls": {
        "Issues": "https://github.com/yhg4908/kpth/issues",
        "Repository": "https://github.com/yhg4908/kpth"
    },
    "split_keywords": [
        "korea",
        "korean",
        "python",
        "kpy",
        "kpth",
        "\ud55c\uad6d\uc5b4",
        "\ud55c\uad6d",
        "\ud30c\uc774\uc36c"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d4cd4f0c09c656031797dace447f380416a496a0f481af699eddc0027650830f",
                "md5": "7a855663ede4dc796c4069e81d184f7d",
                "sha256": "1c2124904ffb51410c5d80c5d75162c4a643d69a66565cbc79eb6c85737d65b3"
            },
            "downloads": -1,
            "filename": "kptha-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "7a855663ede4dc796c4069e81d184f7d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 19339,
            "upload_time": "2025-07-26T09:55:46",
            "upload_time_iso_8601": "2025-07-26T09:55:46.239029Z",
            "url": "https://files.pythonhosted.org/packages/d4/cd/4f0c09c656031797dace447f380416a496a0f481af699eddc0027650830f/kptha-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d85cd6906ec8d38e3fd0943507e487ffd7281d78d5c5a41034b492f8c2d23572",
                "md5": "a974d199713548542ac47eaf64c39174",
                "sha256": "1857bb948233d4532a4a07ae786d8d96a08b1c7a68fc8cb0b5ff7172ca36d907"
            },
            "downloads": -1,
            "filename": "kptha-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "a974d199713548542ac47eaf64c39174",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 25396,
            "upload_time": "2025-07-26T09:55:47",
            "upload_time_iso_8601": "2025-07-26T09:55:47.238451Z",
            "url": "https://files.pythonhosted.org/packages/d8/5c/d6906ec8d38e3fd0943507e487ffd7281d78d5c5a41034b492f8c2d23572/kptha-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-26 09:55:47",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "yhg4908",
    "github_project": "kpth",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "kptha"
}
        
Elapsed time: 0.61081s