markitecture 0.1.15__py3-none-any.whl

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 (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.