semvec/pypi-packages huggingface dataset:
static-path-tree 0.1.0
Static definition of directory and file structure to avoid hard-coding file paths
License: MIT
Requires Python: >=3.8
Keywords: file, path, directory, tree, structure, static

# Static Path Tree

파일 경로 구조를 정적으로 정의하고 관리하는 Python 라이브러리입니다. 타입 어노테이션을 사용하여 파일 및 디렉토리 구조를 정의하고, 트리 형태로 출력하거나 경로를 관리할 수 있습니다.

## 주요 기능

- 📁 **타입 기반 구조 정의**: 클래스 어노테이션을 사용하여 파일/디렉토리 구조를 정의
- 🌳 **트리 출력**: 정의된 구조를 트리 형태로 시각화
- ✅ **존재 여부 확인**: 파일/디렉토리 존재 여부를 색상으로 표시
- 🔗 **경로 관리**: `pathlib.Path` 객체를 통한 편리한 경로 접근

## 설치

### 개발 모드로 설치

```bash
pip install -e .
```

### 배포 패키지 빌드

```bash
pip install build
python -m build
```

### PyPI에 배포

```bash
pip install twine
python -m build
twine upload dist/*
```

## 사용법

### 기본 사용 예제

```python
from static_path_tree import Root, Dir, File

# 구조 정의
class Config(Dir):
    """Configuration directory."""
    config_yaml: File

class Dataset(Dir):
    """Dataset directory."""
    log_json: File
    images: Dir

class Resource(Root):
    """Resource root directory."""
    config: Config
    dataset: Dataset
    readme_txt: File

# 인스턴스 생성
root = Resource(name="/path/to/resource")

# 경로 접근
print(root.config.config_yaml.path)
# 출력: /path/to/resource/config/config.yaml

# 트리 출력 (존재 여부 확인 포함)
root.print_tree(check_exist=True)

# 트리 출력 (색상 없이)
root.print_tree(check_exist=False)
```

### 파일 확장자 명명 규칙

파일 필드는 `filename_extension` 형식으로 명명해야 합니다:

- ✅ `config_yaml` → `config.yaml`
- ✅ `readme_txt` → `readme.txt`
- ✅ `log_json` → `log.json`
- ❌ `config` (경고 발생)

### 트리 출력 예시

```
/path/to/resource/
├── config/
│   └── config.yaml
├── dataset/
│   ├── log.json
│   └── images/
└── readme.txt
```

존재하는 파일/디렉토리는 초록색, 존재하지 않는 것은 빨간색으로 표시됩니다.

## API 문서

### 클래스

#### `Element`
모든 파일/디렉토리 요소의 기본 클래스입니다.

#### `Dir`
디렉토리를 나타내는 클래스입니다.

#### `Root`
루트 디렉토리를 나타내는 클래스입니다. `Dir`을 상속합니다.

#### `File`
파일을 나타내는 클래스입니다. 확장자 지원이 포함되어 있습니다.

### 주요 메서드

#### `Element.print_tree(prefix="", is_last=True, check_exist=True)`
디렉토리/파일 구조를 트리 형식으로 출력합니다.

**매개변수:**
- `prefix`: 트리 출력을 위한 접두사 (들여쓰기용)
- `is_last`: 마지막 자식 노드인지 여부
- `check_exist`: 파일/디렉토리 존재 여부를 확인하고 색상으로 표시할지 여부

#### `Element.path`
요소의 전체 경로를 `pathlib.Path` 객체로 반환합니다.

## 예제 실행

```bash
python -m static_path_tree.examples.example
```

## 요구사항

- Python 3.8 이상
- 표준 라이브러리만 사용 (외부 의존성 없음)

## 라이선스

MIT License

## 기여

이슈 및 풀 리퀘스트를 환영합니다!