fix(ci): uv lock 생성 + setup-uv 옵션 정리 + UI 진행률 인디케이터 (#6, #4 부분)
All checks were successful
CI / Ruff + Test (Py3.11 + Py3.13) (3.11) (push) Successful in 23s
CI / Ruff + Test (Py3.11 + Py3.13) (3.13) (push) Successful in 23s

CI uv setup 실패 (#6 후속):
- 원인: astral-sh/setup-uv@v3 의 enable-cache:true 가 **/uv.lock 미발견 시 fail.
  7개 push 모두 ::error::No file ... matched to [**/uv.lock] → 10-20초 만에 abort.
- 해결: uv.lock 생성 (438KB, 89 packages 해결) + cache-dependency-glob 명시.

연쇄 수정 (uv.lock 생성 과정에서 노출):
- pyproject.toml: scipy/pyproj/numpy 핀을 hard-pin == 에서 range > = 로 완화
  (base vs [py313] extras 충돌 해소). requires-python ">=3.9" → ">=3.11"
  (pyproj>=3.7 wheel 가용 환경과 일치). [tool.uv] no-progress = false 제거 (deprecated).
- .gitea/workflows/ci.yml: 별도 Setup Python step 제거 (uv venv가 자동 fetch),
  install step 단순화 (matrix 분기 EXTRAS 변수), 모든 run: 에 shell: bash 명시.

UI 진행률 인디케이터 (#4 부분):
- self.progress_bar (CTkProgressBar mode=indeterminate, MC overlap orange #FF5F00)
  status_bar 우측에 hidden 배치. start_progress(label)/stop_progress() 메서드 추가.
- self.textbox height 120 → 80 (인라인 로그 비중 축소, 백엔드 파일이 주 기록처).

ruff cleanup (harness/perf.py):
- Optional[Callable[...]] → Callable[...] | None (UP045).
- try/except/pass → contextlib.suppress (SIM105).
- 미사용 # noqa: BLE001 제거 (RUF100).

검증: uv lock 성공, ruff check All checks passed, py_compile + AST OK.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-08 17:13:33 +09:00
parent 5a44c90ea6
commit fc963007b7
6 changed files with 2333 additions and 21 deletions

View File

@@ -16,7 +16,9 @@ name = "scanvas"
version = "0.7.0"
description = "S-CANVAS — Generative Design & Visualization Engine (DXF + DEM + AI)"
readme = "README.md"
requires-python = ">=3.9"
# pyproj>=3.7 (py313 extras) 이 Py3.11+ 만 지원. CI matrix Py3.11/3.13 와 일치.
# Py3.9/3.10 legacy 지원이 필요하면 pyproj 범위 좁혀야 함.
requires-python = ">=3.11"
license = { text = "Proprietary" }
authors = [
{ name = "Saman Corp.", email = "saman@example.com" },
@@ -35,12 +37,12 @@ dependencies = [
# --- Geospatial / DXF ---
"ezdxf==1.4.2",
"pyproj==3.6.1",
"pyproj>=3.6,<4", # 3.6.1 (build pin) ~ 3.7+ (py313 extras) 동시 수용. lock 파일이 정확 핀.
"rasterio==1.4.3",
# --- Numerical ---
"numpy==2.0.2",
"scipy==1.13.1",
"numpy>=2.0.2,<3", # py313 extras 와 충돌 방지 위해 범위 핀.
"scipy>=1.13,<2", # 1.13.x (Py3.9~3.12) ~ 1.14+ (Py3.13) 둘 다 lock 가능.
"matplotlib==3.9.4",
# --- Image / video ---
@@ -99,9 +101,6 @@ Repository = "https://gitea.hmac.kr/HYUNJUNGLEE/scanvas.git"
# Python 인터프리터 선택 우선순위 (uv가 자동 검색).
python-preference = "managed" # managed = uv가 직접 받아 관리 (3.13 자동 다운로드 가능)
# 색상/진행률 표시.
no-progress = false
# ─────────────────────────────────────────────────────────────────────────
# 빌드 시스템 (편집 가능 설치 / pip install -e . 가능)
# ─────────────────────────────────────────────────────────────────────────