markitecture 0.1.15__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. markitecture/__init__.py +41 -0
  2. markitecture/__main__.py +4 -0
  3. markitecture/cli/__init__.py +3 -0
  4. markitecture/cli/app.py +38 -0
  5. markitecture/cli/commands/__init__.py +21 -0
  6. markitecture/cli/commands/config.py +84 -0
  7. markitecture/cli/commands/links.py +146 -0
  8. markitecture/cli/commands/metrics.py +193 -0
  9. markitecture/cli/commands/mkdocs.py +39 -0
  10. markitecture/cli/commands/split.py +48 -0
  11. markitecture/errors.py +64 -0
  12. markitecture/generators/__init__.py +3 -0
  13. markitecture/generators/configs/__init__.py +0 -0
  14. markitecture/generators/configs/mintlify_json.py +0 -0
  15. markitecture/generators/configs/mkdocs_yaml.py +317 -0
  16. markitecture/metrics/__init__.py +9 -0
  17. markitecture/metrics/analyzer.py +109 -0
  18. markitecture/metrics/badges/__init__.py +28 -0
  19. markitecture/metrics/badges/base.py +7 -0
  20. markitecture/metrics/badges/compact.py +35 -0
  21. markitecture/metrics/badges/detailed.py +60 -0
  22. markitecture/metrics/badges/minimal.py +19 -0
  23. markitecture/metrics/badges/modern.py +45 -0
  24. markitecture/metrics/badges/retro.py +23 -0
  25. markitecture/metrics/badges/shields.py +124 -0
  26. markitecture/metrics/svg_generator.py +70 -0
  27. markitecture/processing/__init__.py +0 -0
  28. markitecture/processing/link_validator.py +133 -0
  29. markitecture/processing/reflink_converter.py +198 -0
  30. markitecture/processing/reflink_extractor.py +82 -0
  31. markitecture/processing/text_splitter.py +290 -0
  32. markitecture/settings/__init__.py +9 -0
  33. markitecture/settings/config.py +61 -0
  34. markitecture/settings/validators.py +26 -0
  35. markitecture/utils/__init__.py +5 -0
  36. markitecture/utils/file_handler.py +24 -0
  37. markitecture/utils/printer.py +195 -0
  38. markitecture/utils/sanitizer.py +78 -0
  39. markitecture-0.1.15.dist-info/METADATA +271 -0
  40. markitecture-0.1.15.dist-info/RECORD +43 -0
  41. markitecture-0.1.15.dist-info/WHEEL +4 -0
  42. markitecture-0.1.15.dist-info/entry_points.txt +2 -0
  43. markitecture-0.1.15.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,271 @@
1
+ Metadata-Version: 2.4
2
+ Name: markitecture
3
+ Version: 0.1.15
4
+ Summary: ❂ Markdown tools for modular and flexible docs: link validation, reference link conversion, text splitting, & more.
5
+ Project-URL: documentation, https://github.com/eli64s/markitecture/blob/main/README.md
6
+ Project-URL: homepage, https://github.com/eli64s/markitecture
7
+ Project-URL: repository, https://github.com/eli64s/markitecture
8
+ Author-email: Eli Salamie <egsalamie@gmail.com>
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: automated-markdown,content-management,documentation-tools,intelligent-documentation,markdown-ai,markdown-link-checker,markdown-parser,markdown-splitter,markdown-tools,mkdocs,modular-docs,readme-generator,reference-links,smart-markdown
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Framework :: Pydantic
14
+ Classifier: Framework :: Pytest
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Operating System :: OS Independent
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 :: Software Development :: Documentation
23
+ Classifier: Topic :: Software Development :: Libraries
24
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
+ Classifier: Typing :: Typed
26
+ Requires-Python: <=3.14,>=3.10
27
+ Requires-Dist: httpx
28
+ Requires-Dist: pydantic
29
+ Requires-Dist: pydantic-settings
30
+ Requires-Dist: pyyaml
31
+ Requires-Dist: rich
32
+ Requires-Dist: toml; python_full_version < '3.11'
33
+ Description-Content-Type: text/markdown
34
+
35
+ <div id="top" align="center">
36
+
37
+ <!-- HEADER -->
38
+ <picture>
39
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/eli64s/markitecture/13c4b28213fb8e8c75299ef5c905ce1d195a6988/docs/assets/logos/circle-dark.svg">
40
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/eli64s/markitecture/13c4b28213fb8e8c75299ef5c905ce1d195a6988/docs/assets/logos/circle-light.svg">
41
+ <img alt="markitecture Logo" src="https://raw.githubusercontent.com/eli64s/markitecture/13c4b28213fb8e8c75299ef5c905ce1d195a6988/docs/assets/logos/circle-light.svg" width="900" style="max-width: 100%;">
42
+ </picture>
43
+
44
+ <h3 align="center">
45
+ Building Blocks for Brilliant Documentation.
46
+ </h3>
47
+ <p align="center">
48
+ <em>Markitecture: The Python toolkit that empowers modular Markdown workflows.</em>
49
+ </p>
50
+
51
+ <!-- BADGES -->
52
+ <div align="center">
53
+ <p align="center" style="margin-bottom: 20px;">
54
+ <a href="https://github.com/eli64s/markitecture/actions">
55
+ <img src="https://img.shields.io/github/actions/workflow/status/eli64s/markitecture/ci.yml?label=CI&style=flat&logo=githubactions&logoColor=white&labelColor=2A2A2A&color=FFD700" alt="GitHub Actions" />
56
+ </a>
57
+ <a href="https://app.codecov.io/gh/eli64s/markitecture">
58
+ <img src="https://img.shields.io/codecov/c/github/eli64s/markitecture?label=Coverage&style=flat&logo=codecov&logoColor=white&labelColor=2A2A2A&color=3fe1c0" alt="Coverage" />
59
+ </a>
60
+ <a href="https://pypi.org/project/markitecture/">
61
+ <img src="https://img.shields.io/pypi/v/markitecture?label=PyPI&style=flat&logo=pypi&logoColor=white&labelColor=2A2A2A&color=00E5FF" alt="PyPI Version" />
62
+ </a>
63
+ <a href="https://github.com/eli64s/markitecture">
64
+ <img src="https://img.shields.io/pypi/pyversions/markitecture?label=Python&style=flat&logo=python&logoColor=white&labelColor=2A2A2A&color=7934C5" alt="Python Version" />
65
+ </a>
66
+ <a href="https://opensource.org/license/mit/">
67
+ <img src="https://img.shields.io/github/license/eli64s/markitecture?label=License&style=flat&logo=opensourceinitiative&logoColor=white&labelColor=2A2A2A&color=FF00FF" alt="MIT License">
68
+ </a>
69
+ </p>
70
+ </div>
71
+
72
+ <div align="center">
73
+ <img src="https://raw.githubusercontent.com/eli64s/markitecture/216a92894e6f30c707a214fad5a5fba417e3bc39/docs/assets/line.svg" alt="separator" width="100%" height="2px" style="margin: 20px 0;">
74
+ </div>
75
+
76
+ </div>
77
+ <!-- HEADER END -->
78
+
79
+ ## What is Markitecture?
80
+
81
+ **Markitecture** is a comprehensive Python toolkit designed to streamline your Markdown workflow. Whether you're managing documentation, writing technical content, or maintaining a knowledge base, Markitecture provides essential utilities to make working with Markdown files easier and more efficient.
82
+
83
+ ### Key Features
84
+
85
+ - **Text Splitting:** Break down large Markdown files into manageable sections based on headings or custom rules.
86
+ - **Link Management:** Convert between inline and reference-style links, validate URLs, and identify broken links.
87
+ - **Content Analysis:** Analyze document structure, extract metadata, and ensure consistent formatting.
88
+ - **Documentation Tools:** Generate configurations for static site generators like [MkDocs][mkdocs].
89
+
90
+ ---
91
+
92
+ ## Quick Start
93
+
94
+ ### Installation
95
+
96
+ Install from [PyPI][pypi] using your preferred package manager.
97
+
98
+ #### <img width="2%" src="https://simpleicons.org/icons/python.svg">&emsp13;pip
99
+
100
+ Use [pip][pip] (recommended for most users):
101
+
102
+ ```sh
103
+ pip install -U markitecture
104
+ ```
105
+
106
+ #### <img width="2%" src="https://simpleicons.org/icons/pipx.svg">&emsp13;pipx
107
+
108
+ Install in an isolated environment with [pipx][pipx]:
109
+
110
+ ```sh
111
+ ❯ pipx install markitecture
112
+ ```
113
+
114
+ #### <img width="2%" src="https://simpleicons.org/icons/uv.svg">&emsp13;uv
115
+
116
+ For the fastest installation use [uv][uv]:
117
+
118
+ ```sh
119
+ ❯ uv tool install markitecture
120
+ ```
121
+
122
+ ### Using the CLI
123
+
124
+ #### Text Splitting
125
+
126
+ Split large Markdown files into smaller, organized sections:
127
+
128
+ ```sh
129
+ markitect \
130
+ --split.i tests/data/readme-ai.md \
131
+ --split.o examples/split-sections-h2
132
+ ```
133
+
134
+ #### Link Validation
135
+
136
+ Check for broken links in your documentation:
137
+
138
+ ```sh
139
+ markitect --check-links.input tests/data/pydantic.md
140
+ ```
141
+
142
+ In your terminal, you'll see a summary of the results:
143
+
144
+ ```console
145
+
146
+ Markdown Link Check Results
147
+
148
+ ┏━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
149
+ ┃ Status ┃ Line ┃ Link ┃ Error ┃
150
+ ┡━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
151
+ │ ✓ │ 2 │ https://img.shields.io/github/actions/workflow/status/pydantic/pydantic/ci.yml?b… │ │
152
+ │ ✓ │ 3 │ https://coverage-badge.samuelcolvin.workers.dev/pydantic/pydantic.svg │ │
153
+ │ ✓ │ 4 │ https://img.shields.io/pypi/v/pydantic.svg │ │
154
+ │ ✓ │ 5 │ https://img.shields.io/conda/v/conda-forge/pydantic.svg │ │
155
+ │ ✓ │ 6 │ https://static.pepy.tech/badge/pydantic/month │ │
156
+ │ ✓ │ 7 │ https://img.shields.io/pypi/pyversions/pydantic.svg │ │
157
+ │ ✓ │ 8 │ https://img.shields.io/github/license/pydantic/pydantic.svg │ │
158
+ │ ✓ │ 9 │ https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/pydantic/p… │ │
159
+ │ ✓ │ 18 │ https://pydantic.dev/articles/logfire-announcement │ │
160
+ │ ✓ │ 24 │ https://docs.pydantic.dev/ │ │
161
+ │ ✓ │ 24 │ https://github.com/pydantic/pydantic/tree/1.10.X-fixes │ │
162
+ │ ✓ │ 28 │ https://docs.pydantic.dev/ │ │
163
+ │ 𝗫 │ 34 │ https://docs.pydantic.dev/install/invalid-link │ HTTP 404 │
164
+ └────────┴──────┴───────────────────────────────────────────────────────────────────────────────────┴──────────┘
165
+
166
+ Summary: 1 broken links out of 13 total links.
167
+ ```
168
+
169
+ #### Reference Link Conversion
170
+
171
+ In Markdown, [reference-style links][reflinks] let you write cleaner text by keeping URLs in a reference section - think footnotes for the web.
172
+
173
+ To convert inline links to reference-style links:
174
+
175
+ ```sh
176
+ markitect \
177
+ --reflinks.input tests/data/pydantic.md \
178
+ --reflinks.output with_refs.md
179
+ ```
180
+
181
+ #### Static Site Configuration Generation
182
+
183
+ Generate a MkDocs configuration [(mkdocs.yml)][mkdocs.yml] from a given Markdown file.
184
+
185
+ 1. Split the Markdown file into sections:
186
+
187
+ ```sh
188
+ markitect \
189
+ --split.i tests/data/readme-ai.md \
190
+ --split.o examples/split-sections-h2
191
+ ```
192
+
193
+ 2. Generate the MkDocs configuration:
194
+
195
+ ```sh
196
+ markitect \
197
+ --mkdocs.dir examples/split-sections-h2 \
198
+ --mkdocs.site-name "MyDocsSite"
199
+ ```
200
+
201
+ <sub>
202
+
203
+ See additional example and usage details in the [here][examples].
204
+
205
+ </sub>
206
+
207
+ <!--
208
+ >[!NOTE]
209
+ > Explore the [Official Documentation][docs] for more detailed guides and examples.
210
+ -->
211
+
212
+ ---
213
+
214
+ ## Roadmap
215
+
216
+ - [ ] Support for additional documentation formats (e.g., reStructuredText, HTML)
217
+ - [ ] Enhanced link management utilities
218
+ - [ ] Improved content analysis features
219
+ - [ ] Integration with more static site generators
220
+ - [ ] Plugin system for custom utilities
221
+ - [ ] More intuitive CLI commands and options
222
+
223
+ ---
224
+
225
+ ## Contributing
226
+
227
+ Contributions are welcome! Whether it's bug reports, feature requests, or code contributions, please feel free to:
228
+
229
+ - Open an [issue][github-issues]
230
+ - Submit a [pull request][github-pulls]
231
+ - Improve documentation, write tutorials, etc.
232
+ - Share your feedback and suggestions
233
+
234
+ ---
235
+
236
+ ## License
237
+
238
+ Copyright © 2024-2025 [Markitecture][markitecture]. <br />
239
+ Released under the [MIT][mit-license] license.
240
+
241
+ <div align="left">
242
+ <a href="#top">
243
+ <img src="https://raw.githubusercontent.com/eli64s/markitecture/77bec69129dd3a075d7d0816c7bd826da131ccc7/docs/assets/buttons/rectangle.svg" width="100px" height="100px" alt="Return to Top">
244
+ </a>
245
+ </div>
246
+
247
+ <div align="center">
248
+ <img src="https://raw.githubusercontent.com/eli64s/markitecture/216a92894e6f30c707a214fad5a5fba417e3bc39/docs/assets/line.svg" alt="separator" width="100%" height="2px" style="margin: 20px 0;">
249
+ </div>
250
+
251
+
252
+ <!-- REFERENCE LINKS -->
253
+
254
+ <!-- PROJECT RESOURCES -->
255
+ [pypi]: https://pypi.org/project/markitecture/
256
+ [markitecture]: https://github.com/eli64s/markitecture
257
+ [github-issues]: https://github.com/eli64s/markitecture/issues
258
+ [github-pulls]: https://github.com/eli64s/markitecture/pulls
259
+ [mit-license]: https://github.com/eli64s/markitecture/blob/main/LICENSE
260
+ [examples]: https://github.com/eli64s/markitecture/tree/main/examples
261
+
262
+ <!-- DEVELOPER TOOLS -->
263
+ [python]: https://www.python.org/
264
+ [pip]: https://pip.pypa.io/en/stable/
265
+ [pipx]: https://pipx.pypa.io/stable/
266
+ [uv]: https://docs.astral.sh/uv/
267
+ [mkdocs]: https://www.mkdocs.org/
268
+ [mkdocs.yml]: https://www.mkdocs.org/user-guide/configuration/
269
+
270
+ <!-- RESOURCES -->
271
+ [reflinks]: https://www.markdownguide.org/basic-syntax/#reference-style-links
@@ -0,0 +1,43 @@
1
+ markitecture/__init__.py,sha256=gE8YEGeliYuntbLAMEAm3Q6d9M9p2CNlkuX7Soolb90,986
2
+ markitecture/__main__.py,sha256=dpolm4cutAQQMX5n20Lx0MXxMZokzaI0W3ieXKhwRno,83
3
+ markitecture/errors.py,sha256=QhainV4ofuezJuhXLt2AVKPyUPYIyUnNNWS78YfuQ1c,1219
4
+ markitecture/cli/__init__.py,sha256=dsYvYkXGLj2RV64cwxk4K0HNsR8AJAFh0QwIxMw5MOc,64
5
+ markitecture/cli/app.py,sha256=Jk8tisqVe6zNzdSrJ3JFuQKPMGD61hBoiwGkkmAOfkE,1113
6
+ markitecture/cli/commands/__init__.py,sha256=9Ww1F_DKzNnfEmdLyh3Lox7l9STuUtq_b4hF6NSDiUM,568
7
+ markitecture/cli/commands/config.py,sha256=8YA20XSBRx5_lJWsoYyFZhjq2-qlkQ3SbGGUltIr1RQ,2695
8
+ markitecture/cli/commands/links.py,sha256=joxc4CJWODs3lwquQ2qbe-rXwAgHWQzQxWk_NQtswYk,4821
9
+ markitecture/cli/commands/metrics.py,sha256=h0_aDL1NBSNQuHiT4rJ8RrLXU8klK8l1zDWYirehym0,6715
10
+ markitecture/cli/commands/mkdocs.py,sha256=Fb0uzpiZLZdNZxbDRRDr0ur1PtM4IXk5MlHdM3SmPDQ,1270
11
+ markitecture/cli/commands/split.py,sha256=tdTxclPrt-Zo8bxOQ3gxocNPAa_7yXomMELZFfs7AWc,1715
12
+ markitecture/generators/__init__.py,sha256=naQqfmmntGvGDdIgJhpIPZRVjYLeS0Ab-88dOZAsQQg,108
13
+ markitecture/generators/configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ markitecture/generators/configs/mintlify_json.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ markitecture/generators/configs/mkdocs_yaml.py,sha256=ABe2XWxrf17vPA8w4YhpqMgR972i_CLHldDYMgkE8Ts,10895
16
+ markitecture/metrics/__init__.py,sha256=XmutCXu8czKLuXdqSp7ynN9xWMAdVlnm4mlZG_Dl3UA,274
17
+ markitecture/metrics/analyzer.py,sha256=_gxET8of9ye2k1UF_4ar1QkdP25zIKJ9qBymFxiMZhA,4304
18
+ markitecture/metrics/svg_generator.py,sha256=UEK_Mh6TYV5rgPcowGK1ivn5OVHYO3FK9tjTf_A5378,2760
19
+ markitecture/metrics/badges/__init__.py,sha256=ojF3_MEFqC7OSyjXByRcQAob6i36bxV89qGVu1piu38,817
20
+ markitecture/metrics/badges/base.py,sha256=Id5xHmPwkSp2yubbwx351aoNfjPRDx3CIT9crS0iT30,288
21
+ markitecture/metrics/badges/compact.py,sha256=xXCb-3Yu61Je9K7JwmJiDJEdqhVf4Oc8NQBdLPc9N8I,1446
22
+ markitecture/metrics/badges/detailed.py,sha256=YO_AUOK8SxXA0to7mOFHsMjNSFPPzOGCtWdXPRNkb80,3299
23
+ markitecture/metrics/badges/minimal.py,sha256=nzMWeSm__ZnCBKuCiDobX1cmHuL9A04VOCosVywp2-E,915
24
+ markitecture/metrics/badges/modern.py,sha256=gtkWnr3ohcNeH9LAdhoYpXOhiHCx4-s8yx35P-ugOtI,2210
25
+ markitecture/metrics/badges/retro.py,sha256=8-2hqFZOQTp7cxXgiu-KF0Q3nkAfXPBLFihAXpIpYcQ,1588
26
+ markitecture/metrics/badges/shields.py,sha256=rCM8R2k0IBK4qHdtarYdpXR_w6fkvOQyLBZXz8o_sDQ,5810
27
+ markitecture/processing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
+ markitecture/processing/link_validator.py,sha256=UwTBl_YloqR0gUZNbIh48eU18e9I1bEqM3GAM0-X10c,4188
29
+ markitecture/processing/reflink_converter.py,sha256=1U9X0GzqmsLhFioD4xzp4Y2mkTolvzCNBheBn-0OTdE,6958
30
+ markitecture/processing/reflink_extractor.py,sha256=yGAeDt9mw3ItiTcQheP9V5LNLV8I9OvvOxV5Qs0K7Og,2855
31
+ markitecture/processing/text_splitter.py,sha256=1s-wI_GnDF0xK3yIR8Fi9MLjvgh1OleNyvNvskVjOHA,11042
32
+ markitecture/settings/__init__.py,sha256=0-5lcEiin8-WlNAhiSm32rMZ-hzyT0KDbwg19OXhQ8o,215
33
+ markitecture/settings/config.py,sha256=RbOdDon3xzfrkGP8SIkLsp80-F2Zvu8TZP3rJ7L9xAE,2127
34
+ markitecture/settings/validators.py,sha256=dJRmIO5RBawn2jmtOCmYrDrorSytr2btfhURq9Rg0jc,672
35
+ markitecture/utils/__init__.py,sha256=y6ur3d-KUAE7WRMTmBV41QqwcoVHoMxZB8Ba2JoD1SU,175
36
+ markitecture/utils/file_handler.py,sha256=ixFzMGgLh5DMwK7zUwyn_Fjk7z3OOvNbKn4uxpzIIPU,863
37
+ markitecture/utils/printer.py,sha256=dPywBAS6qh3sKFhwB8D2Pe9TqsoeDH600Wt4RMMjGos,6948
38
+ markitecture/utils/sanitizer.py,sha256=MjfVMSkXFP3X9_A8czqzGkE5u9RAM8TosuhfWsEbUJg,2227
39
+ markitecture-0.1.15.dist-info/METADATA,sha256=1w6o9qSoVPMMudopLdHsMHePXCNQDufmJX_F6q3wnaQ,11704
40
+ markitecture-0.1.15.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
41
+ markitecture-0.1.15.dist-info/entry_points.txt,sha256=neXBHoMEodLhdSjfqVoz9fnKODF_tdolI40Xm06F2pk,60
42
+ markitecture-0.1.15.dist-info/licenses/LICENSE,sha256=_lS8UU-SncVp61_NHQp9PHIAiDZtNuKYeaqyFDiF6Bk,1109
43
+ markitecture-0.1.15.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.27.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ markitect = markitecture.__main__:run_cli
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 to present Markitecture and individual contributors.
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.