You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
| :hourglass_flowing_sand: | Use self-contained environments |
104
-
| :white_check_mark: | Put imports at the beginning |
105
-
| :white_check_mark: | Ensure re-executability (re-run notebooks top to bottom) |
106
-
| :hourglass_flowing_sand: | Modularize your code |
107
-
| :hourglass_flowing_sand: | Test your code |
108
-
| :white_check_mark: | Name your notebooks consistently |
109
-
| :hourglass_flowing_sand: | Stick to coding standards |
110
-
| :hourglass_flowing_sand: | Use relative paths |
111
-
| :white_check_mark: | Document your analysis |
112
-
| :white_check_mark: | Leverage Markdown headings to structure your notebook |
113
-
| :white_check_mark: | Keep your notebook clean |
114
-
| :white_check_mark: | Keep your notebook concise |
115
-
| :x: | Distinguish production and development artifacts |
116
-
| :hourglass_flowing_sand: | Make your notebooks available |
117
-
| :white_check_mark: | Make your data available |
91
+
Pynblint currently implements 22 linting rules based on empirically-validated best practices for collaborative Jupyter notebook usage:
92
+
- 17 rules applicable to standalone notebooks
93
+
- 5 rules applicable to entire data science repositories
94
+
95
+
These rules are derived from our comprehensive catalog of best practices collaborative notebook development [\[1\]](#references). Below is the current implementation state of linting rules associated with each best practice:
96
+
97
+
- :white_check_mark: Complete: Fully implemented
98
+
- :puzzle_piece: Partial: Partially implemented with planned improvements
99
+
- :hourglass_flowing_sand: In Progress: Implementation planned for future releases
100
+
- :x: Not Planned: No implementation planned
101
+
102
+
| Best Practice from [\[1\]](#references) | **Status** | Details |
| 3. *Use self-contained environments*| :hourglass_flowing_sand: In Progress: |*Planned*: detection of<br>- Python virtual environments (e.g., created with `venv`, `pyenv`, or `conda`)<br>- containerized environments (e.g., Docker). |
107
+
| 4. *Put imports at the beginning*| :white_check_mark: Complete | Fully implemented |
108
+
| 5. *Ensure re-executability (re-run notebooks top to bottom)*| :white_check_mark: Complete | Fully implemented |
109
+
| 6. *Modularize your code*| :puzzle_piece: Partial |*Current*: detection of modularization constructs in notebooks.<br>*Planned*: modularization-focused refactoring recommendations based on detected patterns |
110
+
| 7. *Test your code*| :puzzle_piece: Partial |*Current*: repository-level detection of coverage data.<br>*Planned*: detection of test modules/functions independent of coverage tools |
| 9. *Stick to coding standards*| :puzzle_piece: Partial |*Current*: detection of cells with invalid Python syntax.<br>*Planned*: Integration of Python linters such as pylint, flake8, and ruff |
113
+
| 10. *Use relative paths*| :hourglass_flowing_sand: In Progress: |*Planned*: identification of absolute paths instances in notebooks and recommendation of corresponding relative paths |
| 15. *Distinguish production and development artifacts*| :x: Not Planned | Implementation deemed infeasible (see the note below) |
119
+
| 16. *Make your notebooks available*| :hourglass_flowing_sand: In Progress: |*Planned*: Pynblint will ensure that notebooks marked as published in its configuration are available online |
120
+
| 17. *Make your data available*| :white_check_mark: Complete | Fully implemented |
121
+
**Note**: Best practice #15 (Distinguishing Production/Development Artifacts) will not be implemented as there are no objective criteria for determining this distinction through static analysis of notebooks or repositories.
0 commit comments