Repolode
tach-org

tach-org/tach

Rust로 작성된 Python 도구로, 코드베이스의 모듈 의존성과 공개 인터페이스를 시각화하고 규칙을 적용합니다.

스타
2,861
포크
98
열린 이슈
56
마지막 커밋
8일 전

어떤 프로젝트인가요?

Tach는 Python 프로젝트에서 모듈 경계를 지킬 수 있도록 돕습니다. 어떤 모듈이 어떤 모듈에 의존할 수 있는지 선언하면, import가 해당 선언을 따르는지 검사하고 경계를 넘어서는 import를 표시합니다. 모듈 간 호출을 각 모듈에 선언된 공개 인터페이스로 제한하고 의존성 그래프의 순환도 감지할 수 있습니다.

모듈형 모놀리스 구조를 위해 설계되었으며 점진적으로 도입할 수 있어, 추적하려는 패키지만 지정하면 됩니다. `tach init`으로 대화형 설정을 진행하고, 위반 사항이 있으면 `tach check`가 0이 아닌 종료 코드를 반환하므로 CI나 pre-commit hook에서 간편하게 실행할 수 있습니다.

`tach show --web`으로 웹 뷰에서 의존성 그래프를 확인하거나 로컬 GraphViz DOT 파일로 렌더링할 수도 있습니다. `tach report`는 지정한 경로의 의존성과 사용 내역을 보여줍니다.

핵심 기능

  • 01선언한 모듈 의존성을 기준으로 import를 검사
  • 02모듈 간 호출을 공개 인터페이스로 제한
  • 03의존성 그래프의 순환 감지
  • 04선택한 모듈만 지정해 점진적으로 도입 가능
  • 05의존성을 웹 그래프 또는 GraphViz DOT 출력으로 시각화
  • 06위반 시 0이 아닌 종료 코드를 반환해 CI 및 pre-commit hook과 연동

활용 사례

  • 대규모 Python 모놀리스에서 계층 또는 모듈 경계를 적용
  • Python 모노레포의 패키지 간 원치 않는 import 방지
  • 기존 코드베이스에 아키텍처 규칙을 점진적으로 도입
  • 생성된 그래프로 프로젝트의 의존성 구조 검토

빠른 시작

  1. 1

    PyPI에서 Tach를 설치합니다

    pip install tach
  2. 2

    대화형 설정을 실행해 모듈 경계를 지정합니다

    tach init
  3. 3

    프로젝트 루트에서 설정된 경계를 적용합니다

    tach check

사용 전 알아둘 점

  • Python 코드베이스만 지원합니다.
  • 경계를 정적으로 적용하며, tach.toml에서 모듈 종속성을 수동으로 선언해야 합니다.

포함된 컬렉션

토픽

자주 묻는 질문

tach은(는) 무엇인가요?
Rust로 작성된 Python 도구로, 코드베이스의 모듈 의존성과 공개 인터페이스를 시각화하고 규칙을 적용합니다. Tach는 Python 프로젝트에서 모듈 경계를 지킬 수 있도록 돕습니다. 어떤 모듈이 어떤 모듈에 의존할 수 있는지 선언하면, import가 해당 선언을 따르는지 검사하고 경계를 넘어서는 import를 표시합니다. 모듈 간 호출을 각 모듈에 선언된 공개 인터페이스로 제한하고 의존성 그래프의 순환도 감지할 수 있습니다.
tach은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
tach은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
tach은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. tach의 마지막 커밋은 2026년 10월 29일입니다.
tach은(는) 어디에 사용할 수 있나요?
대규모 Python 모놀리스에서 계층 또는 모듈 경계를 적용 Python 모노레포의 패키지 간 원치 않는 import 방지 기존 코드베이스에 아키텍처 규칙을 점진적으로 도입 생성된 그래프로 프로젝트의 의존성 구조 검토
tach는 어떻게 설치하나요?
PyPI에서 Tach를 설치합니다: pip install tach 대화형 설정을 실행해 모듈 경계를 지정합니다: tach init 프로젝트 루트에서 설정된 경계를 적용합니다: tach check
tach은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/tach-org/tach

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트