montin 0.6.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. montin-0.6.0/LICENSE +21 -0
  2. montin-0.6.0/PKG-INFO +173 -0
  3. montin-0.6.0/README.md +126 -0
  4. montin-0.6.0/montin/__init__.py +63 -0
  5. montin-0.6.0/montin/cells/__init__.py +55 -0
  6. montin-0.6.0/montin/cells/base.py +305 -0
  7. montin-0.6.0/montin/cells/image.py +56 -0
  8. montin-0.6.0/montin/cells/image_slider.py +48 -0
  9. montin-0.6.0/montin/cells/matplotlib.py +88 -0
  10. montin-0.6.0/montin/cells/misc.py +195 -0
  11. montin-0.6.0/montin/cells/plotly.py +43 -0
  12. montin-0.6.0/montin/cells/table.py +46 -0
  13. montin-0.6.0/montin/cells/tabulator.py +393 -0
  14. montin-0.6.0/montin/cells/text.py +41 -0
  15. montin-0.6.0/montin/core/__init__.py +1 -0
  16. montin-0.6.0/montin/core/assembler.py +402 -0
  17. montin-0.6.0/montin/core/deck.py +635 -0
  18. montin-0.6.0/montin/core/plugins.py +140 -0
  19. montin-0.6.0/montin/core/security.py +112 -0
  20. montin-0.6.0/montin/core/slide.py +1094 -0
  21. montin-0.6.0/montin/exceptions.py +54 -0
  22. montin-0.6.0/montin/py.typed +0 -0
  23. montin-0.6.0/montin/static/__init__.py +1 -0
  24. montin-0.6.0/montin/static/js/boot.js +74 -0
  25. montin-0.6.0/montin/static/js/charts.js +249 -0
  26. montin-0.6.0/montin/static/js/copy.js +89 -0
  27. montin-0.6.0/montin/static/js/keyboard.js +39 -0
  28. montin-0.6.0/montin/static/js/lightbox.js +209 -0
  29. montin-0.6.0/montin/static/js/navigation.js +85 -0
  30. montin-0.6.0/montin/static/js/sidebar.js +375 -0
  31. montin-0.6.0/montin/static/js/slider.js +63 -0
  32. montin-0.6.0/montin/static/js/stage.js +91 -0
  33. montin-0.6.0/montin/static/js/state.js +24 -0
  34. montin-0.6.0/montin/static/js/toolbar.js +34 -0
  35. montin-0.6.0/montin/static/js/touch.js +110 -0
  36. montin-0.6.0/montin/static/js/view.js +49 -0
  37. montin-0.6.0/montin/static/js/zoom.js +54 -0
  38. montin-0.6.0/montin/static/vendor/UPDATE_LOG.md +7 -0
  39. montin-0.6.0/montin/static/vendor/highlight/LICENSE +29 -0
  40. montin-0.6.0/montin/static/vendor/highlight/github-dark.min.css +10 -0
  41. montin-0.6.0/montin/static/vendor/highlight/github.min.css +10 -0
  42. montin-0.6.0/montin/static/vendor/highlight/highlight.min.js +1232 -0
  43. montin-0.6.0/montin/static/vendor/manifest.json +99 -0
  44. montin-0.6.0/montin/static/vendor/mathjax/LICENSE +202 -0
  45. montin-0.6.0/montin/static/vendor/mathjax/tex-svg.js +1 -0
  46. montin-0.6.0/montin/static/vendor/mermaid/LICENSE +21 -0
  47. montin-0.6.0/montin/static/vendor/mermaid/mermaid.min.js +2314 -0
  48. montin-0.6.0/montin/static/vendor/plotly/LICENSE +21 -0
  49. montin-0.6.0/montin/static/vendor/plotly/LICENSE.txt +60 -0
  50. montin-0.6.0/montin/static/vendor/plotly/plotly.min.js +8 -0
  51. montin-0.6.0/montin/static/vendor/tabulator/LICENSE +21 -0
  52. montin-0.6.0/montin/static/vendor/tabulator/tabulator.min.css +2 -0
  53. montin-0.6.0/montin/static/vendor/tabulator/tabulator.min.js +3 -0
  54. montin-0.6.0/montin/static/vendor/tabulator/tabulator_midnight.min.css +2 -0
  55. montin-0.6.0/montin/templates/__init__.py +1 -0
  56. montin-0.6.0/montin/templates/base.html +301 -0
  57. montin-0.6.0/montin/templates/cell_code.html +28 -0
  58. montin-0.6.0/montin/templates/cell_empty.html +8 -0
  59. montin-0.6.0/montin/templates/cell_html.html +26 -0
  60. montin-0.6.0/montin/templates/cell_iframe.html +28 -0
  61. montin-0.6.0/montin/templates/cell_image.html +40 -0
  62. montin-0.6.0/montin/templates/cell_image_slider.html +49 -0
  63. montin-0.6.0/montin/templates/cell_list.html +41 -0
  64. montin-0.6.0/montin/templates/cell_matplotlib.html +40 -0
  65. montin-0.6.0/montin/templates/cell_matplotlib_svg.html +28 -0
  66. montin-0.6.0/montin/templates/cell_mermaid.html +28 -0
  67. montin-0.6.0/montin/templates/cell_metric.html +28 -0
  68. montin-0.6.0/montin/templates/cell_plotly.html +25 -0
  69. montin-0.6.0/montin/templates/cell_table.html +46 -0
  70. montin-0.6.0/montin/templates/cell_tabulator.html +35 -0
  71. montin-0.6.0/montin/templates/cell_text.html +26 -0
  72. montin-0.6.0/montin/themes/__init__.py +1 -0
  73. montin-0.6.0/montin/themes/academic/__init__.py +1 -0
  74. montin-0.6.0/montin/themes/academic/layout.css +18 -0
  75. montin-0.6.0/montin/themes/academic/metric.css +11 -0
  76. montin-0.6.0/montin/themes/academic/slide.css +34 -0
  77. montin-0.6.0/montin/themes/dark/__init__.py +0 -0
  78. montin-0.6.0/montin/themes/dark/layout.css +18 -0
  79. montin-0.6.0/montin/themes/default/__init__.py +1 -0
  80. montin-0.6.0/montin/themes/default/code.css +89 -0
  81. montin-0.6.0/montin/themes/default/image.css +238 -0
  82. montin-0.6.0/montin/themes/default/layout.css +661 -0
  83. montin-0.6.0/montin/themes/default/list.css +29 -0
  84. montin-0.6.0/montin/themes/default/metric.css +41 -0
  85. montin-0.6.0/montin/themes/default/slide.css +205 -0
  86. montin-0.6.0/montin/themes/default/table.css +38 -0
  87. montin-0.6.0/montin/themes/default/tabulator.css +129 -0
  88. montin-0.6.0/montin/themes/default/toc.css +129 -0
  89. montin-0.6.0/montin/themes/default/toolbar.css +3 -0
  90. montin-0.6.0/montin/themes/light/__init__.py +0 -0
  91. montin-0.6.0/montin/themes/light/layout.css +18 -0
  92. montin-0.6.0/montin/themes/light/metric.css +6 -0
  93. montin-0.6.0/montin/themes/light-blue/__init__.py +0 -0
  94. montin-0.6.0/montin/themes/light-blue/layout.css +18 -0
  95. montin-0.6.0/montin/themes/light-blue/metric.css +6 -0
  96. montin-0.6.0/montin/themes/sobrio/__init__.py +0 -0
  97. montin-0.6.0/montin/themes/sobrio/layout.css +18 -0
  98. montin-0.6.0/montin/themes/sobrio/metric.css +11 -0
  99. montin-0.6.0/montin/themes/sobrio/slide.css +45 -0
  100. montin-0.6.0/montin/utils/__init__.py +1 -0
  101. montin-0.6.0/montin/utils/image_encoder.py +54 -0
  102. montin-0.6.0/montin/utils/media.py +126 -0
  103. montin-0.6.0/montin/utils/notebook.py +151 -0
  104. montin-0.6.0/montin/utils/resource_loader.py +38 -0
  105. montin-0.6.0/montin/utils/tabular.py +112 -0
  106. montin-0.6.0/montin/utils/theme_resolver.py +79 -0
  107. montin-0.6.0/montin/utils/vendor.py +171 -0
  108. montin-0.6.0/montin.egg-info/PKG-INFO +173 -0
  109. montin-0.6.0/montin.egg-info/SOURCES.txt +124 -0
  110. montin-0.6.0/montin.egg-info/dependency_links.txt +1 -0
  111. montin-0.6.0/montin.egg-info/requires.txt +22 -0
  112. montin-0.6.0/montin.egg-info/top_level.txt +1 -0
  113. montin-0.6.0/pyproject.toml +84 -0
  114. montin-0.6.0/setup.cfg +4 -0
  115. montin-0.6.0/tests/test_cells.py +353 -0
  116. montin-0.6.0/tests/test_fontscale.py +116 -0
  117. montin-0.6.0/tests/test_media.py +84 -0
  118. montin-0.6.0/tests/test_notebook_unique.py +78 -0
  119. montin-0.6.0/tests/test_plugins.py +302 -0
  120. montin-0.6.0/tests/test_preview.py +117 -0
  121. montin-0.6.0/tests/test_security.py +125 -0
  122. montin-0.6.0/tests/test_slide.py +168 -0
  123. montin-0.6.0/tests/test_slides.py +409 -0
  124. montin-0.6.0/tests/test_tabulator.py +300 -0
  125. montin-0.6.0/tests/test_themes.py +104 -0
  126. montin-0.6.0/tests/test_write.py +295 -0
montin-0.6.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 André Rezende Dessimoni Carvalho
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
montin-0.6.0/PKG-INFO ADDED
@@ -0,0 +1,173 @@
1
+ Metadata-Version: 2.4
2
+ Name: montin
3
+ Version: 0.6.0
4
+ Summary: Generate self-contained, interactive HTML reports from data in Python
5
+ Author-email: André Rezende Dessimoni Carvalho <andre.rdc@outlook.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/andre-dessimoni/montin
8
+ Project-URL: Repository, https://github.com/andre-dessimoni/montin
9
+ Project-URL: Issues, https://github.com/andre-dessimoni/montin/issues
10
+ Project-URL: Documentation, https://montin.readthedocs.io/
11
+ Keywords: report,dashboard,html,data,analytics,visualization,plotly,mermaid,self-contained,notebook
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Topic :: Documentation
23
+ Classifier: Topic :: Scientific/Engineering :: Visualization
24
+ Classifier: Topic :: Text Processing :: Markup :: HTML
25
+ Requires-Python: >=3.9
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Requires-Dist: jinja2>=3.1
29
+ Provides-Extra: markdown
30
+ Requires-Dist: markdown-it-py>=3.0; extra == "markdown"
31
+ Provides-Extra: image
32
+ Requires-Dist: pillow>=9.0; extra == "image"
33
+ Provides-Extra: full
34
+ Requires-Dist: markdown-it-py>=3.0; extra == "full"
35
+ Requires-Dist: pillow>=9.0; extra == "full"
36
+ Provides-Extra: dev
37
+ Requires-Dist: pytest>=8.0; extra == "dev"
38
+ Requires-Dist: pytest-cov; extra == "dev"
39
+ Requires-Dist: ruff>=0.4; extra == "dev"
40
+ Requires-Dist: mypy>=1.10; extra == "dev"
41
+ Requires-Dist: build; extra == "dev"
42
+ Requires-Dist: twine; extra == "dev"
43
+ Requires-Dist: plotly>=5.0; extra == "dev"
44
+ Requires-Dist: pandas>=1.5; extra == "dev"
45
+ Requires-Dist: matplotlib>=3.5; extra == "dev"
46
+ Dynamic: license-file
47
+
48
+ # Montin
49
+
50
+ > **See the whole.**
51
+
52
+ [![CI](https://github.com/andre-dessimoni/montin/actions/workflows/ci.yml/badge.svg)](https://github.com/andre-dessimoni/montin/actions/workflows/ci.yml)
53
+
54
+ Build **self-contained, interactive HTML reports** from Python — one file you
55
+ can commit, or serve, with no runtime and no dependencies on the viewer's
56
+ machine. Designed for **batch-generated data and ML output**: loop over your
57
+ experiments, runs, or segments and emit a report per iteration.
58
+
59
+ Content is laid out on a grid of typed cells (charts, tables, metrics, code,
60
+ images, diagrams), and the whole deck embeds into a single `.html`.
61
+
62
+ ## Documentation
63
+
64
+ https://montin.readthedocs.io/
65
+
66
+ ## Installation
67
+
68
+ ```bash
69
+ pip install montin
70
+ ```
71
+
72
+
73
+ ## Quick start
74
+
75
+ ```python
76
+ from montin import Deck
77
+
78
+ deck = Deck(
79
+ title="My Report",
80
+ )
81
+
82
+ deck.add_title("My Report", subtitle="Subtitle here")
83
+ deck.add_section("1 — Introduction")
84
+
85
+ slide = deck.add_slide("Results", ncols=2)
86
+
87
+ slide.add_metric(value=98.7, label="Efficiency (%)", delta=+2.3)
88
+ slide.add_text("Text with **markdown** and LaTeX: $E = mc^2$")
89
+
90
+ deck.write("report", open_browser=True)
91
+ ```
92
+
93
+ ## Batch generation
94
+
95
+ The core use case — one report per run, generated in a loop:
96
+
97
+ ```python
98
+ deck = Deck(title=f"Experiment Results", author="Company name", date="Jun 20th, 2026")
99
+
100
+ for run in experiment_runs:
101
+
102
+ deck.add_section(title=f"Run #{run.id}")
103
+
104
+ slide = deck.add_slide("Metrics", nrows=1, ncols=3)
105
+
106
+ slide.add_metric(value=run.accuracy, label="Accuracy", delta=run.delta)
107
+ slide.add_plotly(run.loss_curve)
108
+ slide.add_table(run.results_table, caption="Results")
109
+
110
+ deck.write("report")
111
+ ```
112
+
113
+
114
+ ## Cell types
115
+
116
+ | Method | Cell | Description |
117
+ |---|---|---|
118
+ | `add_text` | TextCell | Markdown + LaTeX (MathJax) |
119
+ | `add_metric` | MetricCell | KPI card with value, label and delta |
120
+ | `add_table` | TableCell | CSV, dict, list or DataFrame |
121
+ | `add_image` | ImageCell | Image with lightbox and zoom/pan |
122
+ | `add_image_slider` | ImageSliderCell | Image carousel |
123
+ | `add_list` | ListCell | Bullet or numbered list |
124
+ | `add_code` | CodeCell | Code with syntax highlighting |
125
+ | `add_plotly` | PlotlyCell | Interactive Plotly chart |
126
+ | `add_mermaid` | MermaidCell | Declarative diagram (flowchart, etc.) |
127
+ | `add_html` | HtmlCell | Raw HTML without escaping |
128
+ | `add_iframe` | IframeCell | Embed external content |
129
+ | `add_empty` | EmptyCell | Reserves space in the grid |
130
+
131
+ ## Common cell options
132
+
133
+ All `add_*` methods accept:
134
+
135
+ ```python
136
+ slide.add_text(
137
+ "content",
138
+ colspan=2, # spans 2 columns
139
+ rowspan=1,
140
+ caption="Caption",
141
+ overflow=True, # internal scroll
142
+ expand_button=True, # expand to fullscreen button
143
+ copy_button=True, # copy button (CodeCell)
144
+ transparent=True, # hides cell border and background
145
+ )
146
+ ```
147
+
148
+ ## About the name
149
+
150
+ **Montin** fuses two roots:
151
+
152
+ - **Muntin** — the slender bar that divides a window's panes into one composed
153
+ whole. It maps directly onto the library's **CSS Grid**: the structure that
154
+ organizes cells and panels across a report.
155
+ - **Monte** — a heap of raw data (simulations, DOE iterations, notebooks) waiting
156
+ to be processed and understood.
157
+
158
+ Montin is the structure that turns a heap of data into understanding — and, from
159
+ above, you *see the whole*.
160
+
161
+ ### Palette
162
+
163
+ | Name | Hex | Use |
164
+ |---|---|---|
165
+ | Ink | `#0F1F2E` | Primary text, dark background |
166
+ | Slate | `#35546B` | Secondary colour, UI elements |
167
+ | Stone | `#9AA6B2` | Neutral, secondary text |
168
+ | Sand | `#E9ECEF` | Light background, borders |
169
+ | Accent | `#E07A3F` | Highlight (logo sun, CTAs, links) |
170
+
171
+ ## License
172
+
173
+ MIT
montin-0.6.0/README.md ADDED
@@ -0,0 +1,126 @@
1
+ # Montin
2
+
3
+ > **See the whole.**
4
+
5
+ [![CI](https://github.com/andre-dessimoni/montin/actions/workflows/ci.yml/badge.svg)](https://github.com/andre-dessimoni/montin/actions/workflows/ci.yml)
6
+
7
+ Build **self-contained, interactive HTML reports** from Python — one file you
8
+ can commit, or serve, with no runtime and no dependencies on the viewer's
9
+ machine. Designed for **batch-generated data and ML output**: loop over your
10
+ experiments, runs, or segments and emit a report per iteration.
11
+
12
+ Content is laid out on a grid of typed cells (charts, tables, metrics, code,
13
+ images, diagrams), and the whole deck embeds into a single `.html`.
14
+
15
+ ## Documentation
16
+
17
+ https://montin.readthedocs.io/
18
+
19
+ ## Installation
20
+
21
+ ```bash
22
+ pip install montin
23
+ ```
24
+
25
+
26
+ ## Quick start
27
+
28
+ ```python
29
+ from montin import Deck
30
+
31
+ deck = Deck(
32
+ title="My Report",
33
+ )
34
+
35
+ deck.add_title("My Report", subtitle="Subtitle here")
36
+ deck.add_section("1 — Introduction")
37
+
38
+ slide = deck.add_slide("Results", ncols=2)
39
+
40
+ slide.add_metric(value=98.7, label="Efficiency (%)", delta=+2.3)
41
+ slide.add_text("Text with **markdown** and LaTeX: $E = mc^2$")
42
+
43
+ deck.write("report", open_browser=True)
44
+ ```
45
+
46
+ ## Batch generation
47
+
48
+ The core use case — one report per run, generated in a loop:
49
+
50
+ ```python
51
+ deck = Deck(title=f"Experiment Results", author="Company name", date="Jun 20th, 2026")
52
+
53
+ for run in experiment_runs:
54
+
55
+ deck.add_section(title=f"Run #{run.id}")
56
+
57
+ slide = deck.add_slide("Metrics", nrows=1, ncols=3)
58
+
59
+ slide.add_metric(value=run.accuracy, label="Accuracy", delta=run.delta)
60
+ slide.add_plotly(run.loss_curve)
61
+ slide.add_table(run.results_table, caption="Results")
62
+
63
+ deck.write("report")
64
+ ```
65
+
66
+
67
+ ## Cell types
68
+
69
+ | Method | Cell | Description |
70
+ |---|---|---|
71
+ | `add_text` | TextCell | Markdown + LaTeX (MathJax) |
72
+ | `add_metric` | MetricCell | KPI card with value, label and delta |
73
+ | `add_table` | TableCell | CSV, dict, list or DataFrame |
74
+ | `add_image` | ImageCell | Image with lightbox and zoom/pan |
75
+ | `add_image_slider` | ImageSliderCell | Image carousel |
76
+ | `add_list` | ListCell | Bullet or numbered list |
77
+ | `add_code` | CodeCell | Code with syntax highlighting |
78
+ | `add_plotly` | PlotlyCell | Interactive Plotly chart |
79
+ | `add_mermaid` | MermaidCell | Declarative diagram (flowchart, etc.) |
80
+ | `add_html` | HtmlCell | Raw HTML without escaping |
81
+ | `add_iframe` | IframeCell | Embed external content |
82
+ | `add_empty` | EmptyCell | Reserves space in the grid |
83
+
84
+ ## Common cell options
85
+
86
+ All `add_*` methods accept:
87
+
88
+ ```python
89
+ slide.add_text(
90
+ "content",
91
+ colspan=2, # spans 2 columns
92
+ rowspan=1,
93
+ caption="Caption",
94
+ overflow=True, # internal scroll
95
+ expand_button=True, # expand to fullscreen button
96
+ copy_button=True, # copy button (CodeCell)
97
+ transparent=True, # hides cell border and background
98
+ )
99
+ ```
100
+
101
+ ## About the name
102
+
103
+ **Montin** fuses two roots:
104
+
105
+ - **Muntin** — the slender bar that divides a window's panes into one composed
106
+ whole. It maps directly onto the library's **CSS Grid**: the structure that
107
+ organizes cells and panels across a report.
108
+ - **Monte** — a heap of raw data (simulations, DOE iterations, notebooks) waiting
109
+ to be processed and understood.
110
+
111
+ Montin is the structure that turns a heap of data into understanding — and, from
112
+ above, you *see the whole*.
113
+
114
+ ### Palette
115
+
116
+ | Name | Hex | Use |
117
+ |---|---|---|
118
+ | Ink | `#0F1F2E` | Primary text, dark background |
119
+ | Slate | `#35546B` | Secondary colour, UI elements |
120
+ | Stone | `#9AA6B2` | Neutral, secondary text |
121
+ | Sand | `#E9ECEF` | Light background, borders |
122
+ | Accent | `#E07A3F` | Highlight (logo sun, CTAs, links) |
123
+
124
+ ## License
125
+
126
+ MIT
@@ -0,0 +1,63 @@
1
+ """
2
+ montin
3
+ =======
4
+ Python library for generating self-contained, interactive HTML reports
5
+ from data — built for batch-generated ML and analytics output.
6
+
7
+ Basic usage::
8
+
9
+ from montin import Deck, Plugin, SlideDefaults, CellDefaults
10
+
11
+ deck = Deck(title="My Report")
12
+ slide = deck.add_slide("Results", nrows=1, ncols=2)
13
+ slide.add_text("Hello, world!")
14
+ deck.write("my-report")
15
+ """
16
+
17
+ from importlib.metadata import PackageNotFoundError, version
18
+
19
+ from montin.core.deck import CellDefaults, Deck, SlideDefaults
20
+ from montin.core.plugins import (
21
+ Highlight,
22
+ MathJax,
23
+ Mermaid,
24
+ Plotly,
25
+ Plugin,
26
+ Plugins,
27
+ Tabulator,
28
+ )
29
+ from montin.core.security import Security
30
+ from montin.exceptions import (
31
+ CellPlacementError,
32
+ MontinError,
33
+ InvalidDataError,
34
+ PluginNotDeclaredError,
35
+ SecurityError,
36
+ ThemeNotFoundError,
37
+ )
38
+
39
+ try:
40
+ __version__ = version("montin")
41
+ except PackageNotFoundError: # running from source without installing
42
+ __version__ = "0.0.0.dev"
43
+
44
+ __all__ = [
45
+ "Deck",
46
+ "Plugin",
47
+ "Plugins",
48
+ "Plotly",
49
+ "Mermaid",
50
+ "Highlight",
51
+ "MathJax",
52
+ "Tabulator",
53
+ "Security",
54
+ "SlideDefaults",
55
+ "CellDefaults",
56
+ "MontinError",
57
+ "CellPlacementError",
58
+ "PluginNotDeclaredError",
59
+ "ThemeNotFoundError",
60
+ "InvalidDataError",
61
+ "SecurityError",
62
+ "__version__",
63
+ ]
@@ -0,0 +1,55 @@
1
+ """
2
+ montin.cells
3
+ =============
4
+ Sub-package containing all cell types.
5
+
6
+ Import directly from here::
7
+
8
+ from montin.cells import TextCell, TableCell, ImageCell, ...
9
+ """
10
+
11
+ from montin.cells.base import (
12
+ _UNSET,
13
+ Cell,
14
+ CellParams,
15
+ cell_method,
16
+ )
17
+ from montin.cells.image import ImageCell
18
+ from montin.cells.image_slider import ImageSliderCell
19
+ from montin.cells.matplotlib import MatplotlibCell
20
+ from montin.cells.misc import (
21
+ CodeCell,
22
+ EmptyCell,
23
+ HtmlCell,
24
+ IframeCell,
25
+ ListCell,
26
+ MermaidCell,
27
+ MetricCell,
28
+ )
29
+ from montin.cells.plotly import PlotlyCell
30
+ from montin.cells.table import TableCell
31
+ from montin.cells.tabulator import TabulatorCell
32
+ from montin.cells.text import TextCell
33
+
34
+ __all__ = [
35
+ # base
36
+ "_UNSET",
37
+ "Cell",
38
+ "CellParams",
39
+ "cell_method",
40
+ # concrete types
41
+ "TextCell",
42
+ "ImageCell",
43
+ "ImageSliderCell",
44
+ "MatplotlibCell",
45
+ "TableCell",
46
+ "TabulatorCell",
47
+ "ListCell",
48
+ "PlotlyCell",
49
+ "CodeCell",
50
+ "MetricCell",
51
+ "MermaidCell",
52
+ "HtmlCell",
53
+ "IframeCell",
54
+ "EmptyCell",
55
+ ]