많은 전문 데이터 과학자들은 예비 데이터 탐색에서 모델 프로토 타이핑에 이르기까지 Jupyter Notebook을 사용하여 일상적인 작업을 수행합니다. 노트북의 상호 작용은 데이터 중심 프로그래밍에 특히 편리하며 자체 문서화 특성은 분석 결과의 커뮤니케이션에 대한 탁월한 지원을 제공합니다.
그럼에도 불구하고, Jupyter Notebook은 종종 나쁜 프로그래밍 습관을 유도하고 소프트웨어 엔지니어링 모범 사례를 거의 지원하지 않는다는 비판을 받았습니다. 노트북의 혜택을 실제로 혜택을 받으려면 사용자는 일반적인 함정을 알고 예방하는 방법을 배워야합니다.
이전 연구 ( "컴퓨터 노트와의 협력을위한 모범 사례를 도출하기위한 모범 사례"[1])에서, 우리는 전문적인 맥락에서 노트북의 공동 작업 사용을위한 17 가지 경험적으로 검증 된 지침 카탈로그를 도입했습니다.
이러한 모범 사례의 채택을 촉진하기 위해 Python으로 작성된 Jupyter 노트북을위한 정적 분석 도구 인 Pynblint를 만들었습니다. Pynblint는 잠재적 노트북 결함을 보여주고 시정 조치를 권장합니다. 독립형 CLI 응용 프로그램 또는 CI/CD 파이프 라인의 일부로 작동 할 수 있습니다.
Pynblint의 핵심 라인 규칙은 카탈로그에서 모범 사례의 운영으로 도출되었습니다. 그럼에도 불구하고 Pynblint의 플러그인 아키텍처를 통해 사용자는 자신의 핵심 검사 세트를 자체 라인 규칙으로 쉽게 확장 할 수 있습니다.
파이썬 3.7+.
Pynblint는 pip 또는 다른 PYPI 패키지 관리자와 함께 설치할 수 있습니다.
pip install pynblint설치 후 도구의 명령 줄 인터페이스를 탐색하는 것이 좋습니다.
pynblint --helpPynblint는 분석에 사용될 수 있습니다.
독립형 노트 :
pynblint path/to/the/notebook.ipynb노트북이 포함 된 코드 저장소 :
pynblint path/to/the/project/dir/ (아마도 .zip 아카이브로 압축 될 수도 있음) :
pynblint path/to/the/compressed/archive.zip노트북이 포함 된 공개 Github 저장소 (개인 리포지토리 지원에 대한 지원) : 로드맵에 있습니까?) :
pynblint --from-github https://github.com/collab-uniba/pynblint사용 가능한 옵션에 대한 자세한 내용은 프로젝트 문서를 참조하십시오.
Pynblint는 현재 22 개의 라인 규칙을 구현합니다.
이 규칙은 공동 노트북 개발을위한 모범 사례의 포괄적 인 카탈로그에서 파생됩니다 [1]. 아래는 각 모범 사례와 관련된 현재 구현 규칙입니다.
| [1]의 모범 사례 | 상태 | 세부 |
|---|---|---|
| 1. 버전 제어를 사용하십시오 | ✅ 완료 | 완전히 구현되었습니다 |
| 2. 프로젝트 종속성 관리 | ✅ 완료 | 완전히 구현되었습니다 |
| 3. 자급 환경을 사용하십시오 | ⏳ 진행중인 : | 계획 : 탐지 -Python Virtual Environments (예 : venv , pyenv 또는 conda 로 생성)- 컨테이너화 된 환경 (예 : Docker). |
| 4. 처음에 수입을 넣습니다 | ✅ 완료 | 완전히 구현되었습니다 |
| 5. 재전전 가능성을 확인하십시오 (노트북을 위에서 아래로 다시 실행) | ✅ 완료 | 완전히 구현되었습니다 |
| 6. 코드를 모듈화하십시오 | ? 부분적 | 전류 : 노트북에서 모듈화 구조의 감지. 계획 : 감지 된 패턴을 기반으로 한 모듈화 중심 리팩토링 권장 사항 |
| 7. 코드를 테스트하십시오 | ? 부분적 | 현재 : 적용 범위 데이터의 저장소 수준 감지. 계획 : 커버리지 도구와 무관 한 테스트 모듈/기능 감지 |
| 8. 노트북의 이름을 일관되게 지정하십시오 | ✅ 완료 | 완전히 구현되었습니다 |
| 9. 코딩 표준을 고수하십시오 | ? 부분적 | 전류 : 유효하지 않은 파이썬 구문을 가진 셀의 검출. 계획 : Pylint, Flake8 및 Ruff와 같은 Python Linters의 통합 |
| 10. 상대 경로를 사용하십시오 | ⏳ 진행중인 : | 계획 : 절대 경로 식별 노트북의 인스턴스 및 해당 상대 경로의 권장 사항 |
| 11. 분석을 문서화하십시오 | ✅ 완료 | 완전히 구현되었습니다 |
| 12. 마크 다운 헤딩을 활용하여 노트북을 구조화하십시오 | ✅ 완료 | 완전히 구현되었습니다 |
| 13. 노트북을 깨끗하게 유지하십시오 | ✅ 완료 | 완전히 구현되었습니다 |
| 14. 노트북을 간결하게 유지하십시오 | ✅ 완료 | 완전히 구현되었습니다 |
| 15. 생산 및 개발 유물을 구별합니다 | 계획되지 않았습니다 | 구현이 불가능하다고 간주 (아래 참고 참조) |
| 16. 노트북을 사용할 수 있도록하십시오 | ⏳ 진행중인 : | 계획 : Pynblint는 구성에 게시 된대로 표시된 노트북이 온라인으로 제공되도록합니다. |
| 17. 데이터를 사용할 수 있도록하십시오 | ✅ 완료 | 완전히 구현되었습니다 |
참고 : 노트북이나 리포지토리의 정적 분석을 통해 이러한 차이를 결정하기위한 객관적인 기준이 없으므로 모범 사례 #15 (생산/개발 아티팩트 구별)는 구현되지 않습니다.
이 프로젝트는 MIT 라이센스의 조건에 따라 라이센스가 부여됩니다.
[1] Luigi Quaranta, Fabio Calefato 및 Filippo Lanubile. 2022. 컴퓨팅 노트북과의 협력을위한 모범 사례를 이끌어냅니다. Proc. ACM HUM.-Comput. 상호 작용하십시오. 6 , CSCW1, 제 87 조 (2022 년 4 월), 41 페이지. https://doi.org/10.1145/3512934