Skip to content

chore(deps): dateparser를 dates extra로 분리하고 라이선스 출처를 공식 저장소로 교체 - #15

Merged
needsbuilder merged 1 commit into
mainfrom
chore/deps-consistency
Aug 6, 2026
Merged

chore(deps): dateparser를 dates extra로 분리하고 라이선스 출처를 공식 저장소로 교체#15
needsbuilder merged 1 commit into
mainfrom
chore/deps-consistency

Conversation

@needsbuilder

Copy link
Copy Markdown
Owner

Closes #14

무엇을

2026-08-06 배포된 [부록1] SBOM 작성 가이드 기준으로 결과보고서 붙임1을 자체 점검하다가 발견한, 선언과 실제의 불일치를 정리한다.

이전 이후
dateparser [project.dependencies] (필수) — 어느 모듈도 import 안 함 dates extra
Source 열 https://pypi.org/project/... (배포 페이지) 공식 소스 저장소
hwp-hwpx-parser 라이선스 근거 표기만 Apache-2.0 저장소 LICENSE 원문 확인 + 각주 고정
Kanana-1.5 "recommended local fallback" 기본 아님을 명시 (Ollama 공식 라이브러리 부재, 2026-07-29)

pip check가 이렇게 말하고 있었다:

ttobak 0.1.0 requires dateparser, which is not installed.
ttobak 0.1.0 has requirement pypdf<6,>=4.0, but you have pypdf 6.14.2.

dateparserTHIRD_PARTY_LICENSES.md가 이미 "declared but currently used only as a documented optional cross-check"라고 정확히 적고 있었다. 즉 문서는 사실을 알고 있었고 pyproject.toml만 이를 필수 런타임 의존성으로 주장하는 상태였다.

pypdf는 실탄이 아니었다 — 실측으로 확인

로컬 venv가 선언(<6)을 어긴 상태였기에 검증관과 동일 조건을 재현했다:

python3 -m venv /tmp/ttobak-clean
/tmp/ttobak-clean/bin/python -m pip install -e ".[dev]"   → pypdf 5.9.0
pytest  → 417 passed, 7 warnings in 8.88s
audit   → PASS: license & security audit clean.

선언대로 설치한 환경에서 전부 통과한다. 어긋나 있던 것은 pyproject.toml이 아니라 오염된 로컬 venv 하나뿐이었으므로 pypdf 핀은 건드리지 않고 venv를 재생성했다.

지어내지 않은 것

Source URL은 전부 PyPI 메타데이터로 조회해 확인했다. 저장소 필드를 공개하지 않는 두 건은 추정하지 않고 그 사실을 문서에 남겼다:

  • olefile — repository 필드 없음 (GitHub은 Download URL로만 도달 가능)
  • korean-number — project URLs 자체가 비어 있음

둘 다 stretch/parser 행이며 MVP가 import하지 않는다.

게이트

pip check          → No broken requirements found.
pytest             → 417 passed, 7 warnings in 8.43s
ruff               → All checks passed!
ttobak audit       → PASS: license & security audit clean.
pip-licenses gate  → License gate passed: 70 packages, all allowlisted.
assets 분리 검사    → exit 0

후속

이 PR이 닫히면 확정된 설치 버전으로 결과보고서 붙임1(SBOM)을 재작성한다 — 부록1은 범위 표기가 아니라 실제 설치 버전을 요구한다.

pydantic 2.12.3 · kiwipiepy 0.23.2 · pypdf 5.9.0 · pdfminer.six 20260107
hwp-hwpx-parser 1.0.0 · Jinja2 3.1.6 · gradio 5.50.0

제출물 재업로드 마감: 2026-08-27 18:00

운영사무국이 2026-08-06 배포한 [부록1] SBOM 작성 가이드 기준으로 붙임1을
자체 점검하다가 선언과 실제가 어긋난 지점을 발견했다 (closes #14).

- dateparser: `[project.dependencies]`에 있으나 어느 모듈도 import 하지 않는다.
  코어 날짜 경로는 stdlib datetime 이다. 필수 의존성으로 두면 설치자에게 쓰지
  않는 패키지를 강제하고 SBOM 에 미사용 항목이 올라간다 → `dates` extra 로 이동.
  `pip check` 가 보고하던 "requires dateparser, which is not installed" 해소.

- THIRD_PARTY_LICENSES.md Source 열: 배포 페이지(pypi.org) → 소스코드가 있는
  공식 저장소. 부록1 이 요구하는 형태이며, 리뷰어가 각 LICENSE 원문을 출처에서
  바로 읽을 수 있다. URL 은 전부 PyPI 메타데이터로 확인했고, 저장소 필드를
  공개하지 않는 olefile·korean-number 는 지어내지 않고 그 사실을 명시했다.

- hwp-hwpx-parser: PyPI license 필드가 비어 있고 GitHub 라이선스 감지도
  NOASSERTION 이지만, 저장소 LICENSE 파일이 Apache-2.0 원문임을 확인해 각주로
  근거를 고정했다. 라이선스 검증에서 되물어질 자리라 답을 다시 도출하지 않게 한다.

- Kanana-1.5: NOTICE·THIRD_PARTY 양쪽에서 "recommended local fallback" 로
  남아 있었다. Ollama 공식 라이브러리에 없어 2026-07-29 에 기본 모델을
  qwen2.5:7b 로 교체했으므로 사실과 다르다 → 기본이 아닌 대안임을 명시.

pypdf 상한(<6)은 건드리지 않았다. 검증관과 같은 조건(클린 venv)에서 pypdf
5.9.0 으로 417 passed · audit PASS 를 확인했고, 어긋나 있던 것은 선언이 아니라
오염된 로컬 venv 하나였다. venv 재생성으로 pip check 가 깨끗해졌다.

게이트: pip check clean · pytest 417 passed · ruff clean · ttobak audit PASS ·
pip-licenses 70 packages allowlisted · assets 분리 검사 통과.
@needsbuilder
needsbuilder merged commit 5fb1409 into main Aug 6, 2026
7 checks passed
@needsbuilder
needsbuilder deleted the chore/deps-consistency branch August 6, 2026 08:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore(deps): 선언한 의존성과 실제 사용·설치의 불일치 정리 (dateparser 미사용 필수 의존성, Source URL 배포 페이지)

1 participant