htmlarc 0.1.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 (209) hide show
  1. htmlarc-0.1.0/COMMERCIAL.md +57 -0
  2. htmlarc-0.1.0/Cargo.lock +2553 -0
  3. htmlarc-0.1.0/Cargo.toml +78 -0
  4. htmlarc-0.1.0/LICENSE +661 -0
  5. htmlarc-0.1.0/NOTICE +103 -0
  6. htmlarc-0.1.0/PKG-INFO +130 -0
  7. htmlarc-0.1.0/README.md +113 -0
  8. htmlarc-0.1.0/THIRD_PARTY_NOTICES.txt +1099 -0
  9. htmlarc-0.1.0/crates/htmlarc-archive/COMMERCIAL.md +57 -0
  10. htmlarc-0.1.0/crates/htmlarc-archive/Cargo.toml +47 -0
  11. htmlarc-0.1.0/crates/htmlarc-archive/LICENSE +661 -0
  12. htmlarc-0.1.0/crates/htmlarc-archive/NOTICE +103 -0
  13. htmlarc-0.1.0/crates/htmlarc-archive/README.md +12 -0
  14. htmlarc-0.1.0/crates/htmlarc-archive/benches/mmap_read.rs +110 -0
  15. htmlarc-0.1.0/crates/htmlarc-archive/benches/select_linear_vs_stack.rs +127 -0
  16. htmlarc-0.1.0/crates/htmlarc-archive/benches/select_vs_scraper.rs +99 -0
  17. htmlarc-0.1.0/crates/htmlarc-archive/benches/string_access.rs +119 -0
  18. htmlarc-0.1.0/crates/htmlarc-archive/examples/profile_walk.rs +124 -0
  19. htmlarc-0.1.0/crates/htmlarc-archive/examples/query_floor.rs +99 -0
  20. htmlarc-0.1.0/crates/htmlarc-archive/examples/wiktionary/aerodynamik.html +192 -0
  21. htmlarc-0.1.0/crates/htmlarc-archive/examples/wiktionary/axel.html +338 -0
  22. htmlarc-0.1.0/crates/htmlarc-archive/examples/wiktionary/zzz_no_entry.html +29 -0
  23. htmlarc-0.1.0/crates/htmlarc-archive/examples/wiktionary.rs +355 -0
  24. htmlarc-0.1.0/crates/htmlarc-archive/src/append.rs +123 -0
  25. htmlarc-0.1.0/crates/htmlarc-archive/src/archive.rs +503 -0
  26. htmlarc-0.1.0/crates/htmlarc-archive/src/archive_trait.rs +50 -0
  27. htmlarc-0.1.0/crates/htmlarc-archive/src/builder.rs +113 -0
  28. htmlarc-0.1.0/crates/htmlarc-archive/src/bundle.rs +91 -0
  29. htmlarc-0.1.0/crates/htmlarc-archive/src/bundle_strings.rs +423 -0
  30. htmlarc-0.1.0/crates/htmlarc-archive/src/codec.rs +173 -0
  31. htmlarc-0.1.0/crates/htmlarc-archive/src/doc_table.rs +77 -0
  32. htmlarc-0.1.0/crates/htmlarc-archive/src/entry.rs +198 -0
  33. htmlarc-0.1.0/crates/htmlarc-archive/src/error.rs +19 -0
  34. htmlarc-0.1.0/crates/htmlarc-archive/src/filter.rs +239 -0
  35. htmlarc-0.1.0/crates/htmlarc-archive/src/header.rs +94 -0
  36. htmlarc-0.1.0/crates/htmlarc-archive/src/lib.rs +32 -0
  37. htmlarc-0.1.0/crates/htmlarc-archive/src/meta.rs +572 -0
  38. htmlarc-0.1.0/crates/htmlarc-archive/src/mmap.rs +787 -0
  39. htmlarc-0.1.0/crates/htmlarc-archive/src/trailer.rs +193 -0
  40. htmlarc-0.1.0/crates/htmlarc-archive/src/writer.rs +559 -0
  41. htmlarc-0.1.0/crates/htmlarc-archive/tests/append.rs +312 -0
  42. htmlarc-0.1.0/crates/htmlarc-archive/tests/compatibility.rs +28 -0
  43. htmlarc-0.1.0/crates/htmlarc-archive/tests/data/v12.bin +0 -0
  44. htmlarc-0.1.0/crates/htmlarc-archive/tests/mmap.rs +817 -0
  45. htmlarc-0.1.0/crates/htmlarc-dom/COMMERCIAL.md +57 -0
  46. htmlarc-0.1.0/crates/htmlarc-dom/Cargo.toml +58 -0
  47. htmlarc-0.1.0/crates/htmlarc-dom/LICENSE +661 -0
  48. htmlarc-0.1.0/crates/htmlarc-dom/NOTICE +103 -0
  49. htmlarc-0.1.0/crates/htmlarc-dom/README.md +12 -0
  50. htmlarc-0.1.0/crates/htmlarc-dom/benches/iteration.rs +34 -0
  51. htmlarc-0.1.0/crates/htmlarc-dom/benches/loading.rs +19 -0
  52. htmlarc-0.1.0/crates/htmlarc-dom/benches/parsing.rs +17 -0
  53. htmlarc-0.1.0/crates/htmlarc-dom/benches/repackaging.rs +22 -0
  54. htmlarc-0.1.0/crates/htmlarc-dom/benches/selectors.rs +143 -0
  55. htmlarc-0.1.0/crates/htmlarc-dom/benches/selectors_vs_scraper.rs +78 -0
  56. htmlarc-0.1.0/crates/htmlarc-dom/src/accessors/attributes.rs +150 -0
  57. htmlarc-0.1.0/crates/htmlarc-dom/src/accessors/classes.rs +120 -0
  58. htmlarc-0.1.0/crates/htmlarc-dom/src/accessors/mod.rs +5 -0
  59. htmlarc-0.1.0/crates/htmlarc-dom/src/css/chars.rs +106 -0
  60. htmlarc-0.1.0/crates/htmlarc-dom/src/css/ext.rs +14 -0
  61. htmlarc-0.1.0/crates/htmlarc-dom/src/css/helpers.rs +32 -0
  62. htmlarc-0.1.0/crates/htmlarc-dom/src/css/mod.rs +158 -0
  63. htmlarc-0.1.0/crates/htmlarc-dom/src/css/owned.rs +113 -0
  64. htmlarc-0.1.0/crates/htmlarc-dom/src/css/parse.rs +52 -0
  65. htmlarc-0.1.0/crates/htmlarc-dom/src/css/patterns/attribute_operator.rs +152 -0
  66. htmlarc-0.1.0/crates/htmlarc-dom/src/css/patterns/attribute_pattern.rs +1061 -0
  67. htmlarc-0.1.0/crates/htmlarc-dom/src/css/patterns/attribute_value.rs +162 -0
  68. htmlarc-0.1.0/crates/htmlarc-dom/src/css/patterns/case_indicator.rs +104 -0
  69. htmlarc-0.1.0/crates/htmlarc-dom/src/css/patterns/combinator.rs +101 -0
  70. htmlarc-0.1.0/crates/htmlarc-dom/src/css/patterns/integer_pattern.rs +95 -0
  71. htmlarc-0.1.0/crates/htmlarc-dom/src/css/patterns/mod.rs +28 -0
  72. htmlarc-0.1.0/crates/htmlarc-dom/src/css/patterns/ordinal_pattern.rs +384 -0
  73. htmlarc-0.1.0/crates/htmlarc-dom/src/css/patterns/parenthesized.rs +262 -0
  74. htmlarc-0.1.0/crates/htmlarc-dom/src/css/patterns/quoted_string.rs +114 -0
  75. htmlarc-0.1.0/crates/htmlarc-dom/src/css/patterns/text_pattern.rs +249 -0
  76. htmlarc-0.1.0/crates/htmlarc-dom/src/css/selectors/attribute.rs +212 -0
  77. htmlarc-0.1.0/crates/htmlarc-dom/src/css/selectors/class.rs +183 -0
  78. htmlarc-0.1.0/crates/htmlarc-dom/src/css/selectors/complex.rs +538 -0
  79. htmlarc-0.1.0/crates/htmlarc-dom/src/css/selectors/complex_relative.rs +280 -0
  80. htmlarc-0.1.0/crates/htmlarc-dom/src/css/selectors/compound.rs +708 -0
  81. htmlarc-0.1.0/crates/htmlarc-dom/src/css/selectors/id.rs +182 -0
  82. htmlarc-0.1.0/crates/htmlarc-dom/src/css/selectors/list.rs +356 -0
  83. htmlarc-0.1.0/crates/htmlarc-dom/src/css/selectors/list_relative.rs +256 -0
  84. htmlarc-0.1.0/crates/htmlarc-dom/src/css/selectors/mod.rs +34 -0
  85. htmlarc-0.1.0/crates/htmlarc-dom/src/css/selectors/pseudo_class.rs +924 -0
  86. htmlarc-0.1.0/crates/htmlarc-dom/src/css/selectors/relative.rs +164 -0
  87. htmlarc-0.1.0/crates/htmlarc-dom/src/css/selectors/tag.rs +208 -0
  88. htmlarc-0.1.0/crates/htmlarc-dom/src/css/snapshots/htmlarc_dom__css__parse__parse_error-2.snap +9 -0
  89. htmlarc-0.1.0/crates/htmlarc-dom/src/css/snapshots/htmlarc_dom__css__parse__parse_error-3.snap +11 -0
  90. htmlarc-0.1.0/crates/htmlarc-dom/src/css/snapshots/htmlarc_dom__css__parse__parse_error.snap +10 -0
  91. htmlarc-0.1.0/crates/htmlarc-dom/src/css/tests/css3.rs +2379 -0
  92. htmlarc-0.1.0/crates/htmlarc-dom/src/css/tests/ext_tags.rs +98 -0
  93. htmlarc-0.1.0/crates/htmlarc-dom/src/css/tests/extra.rs +63 -0
  94. htmlarc-0.1.0/crates/htmlarc-dom/src/css/tests/helpers.rs +27 -0
  95. htmlarc-0.1.0/crates/htmlarc-dom/src/css/tests/ishadeed.rs +279 -0
  96. htmlarc-0.1.0/crates/htmlarc-dom/src/css/tests/mod.rs +5 -0
  97. htmlarc-0.1.0/crates/htmlarc-dom/src/dom/dom_inner.rs +1122 -0
  98. htmlarc-0.1.0/crates/htmlarc-dom/src/dom/dom_view.rs +288 -0
  99. htmlarc-0.1.0/crates/htmlarc-dom/src/dom/dom_wrappers.rs +204 -0
  100. htmlarc-0.1.0/crates/htmlarc-dom/src/dom/mod.rs +18 -0
  101. htmlarc-0.1.0/crates/htmlarc-dom/src/dom/node_index.rs +65 -0
  102. htmlarc-0.1.0/crates/htmlarc-dom/src/dom/nodes.rs +1236 -0
  103. htmlarc-0.1.0/crates/htmlarc-dom/src/dom/rebuilder.rs +161 -0
  104. htmlarc-0.1.0/crates/htmlarc-dom/src/dom/tests/html/prune/no_spaces_needed.html +3 -0
  105. htmlarc-0.1.0/crates/htmlarc-dom/src/dom/tests/html/prune/spaces_needed.html +3 -0
  106. htmlarc-0.1.0/crates/htmlarc-dom/src/dom/tests/html/unwrap/many divs.html +15 -0
  107. htmlarc-0.1.0/crates/htmlarc-dom/src/dom/tests/html/unwrap/simple div.html +6 -0
  108. htmlarc-0.1.0/crates/htmlarc-dom/src/dom/tests/mod.rs +304 -0
  109. htmlarc-0.1.0/crates/htmlarc-dom/src/dom/tests/nodes_tests.rs +642 -0
  110. htmlarc-0.1.0/crates/htmlarc-dom/src/dom/tests/snapshots/htmlarc_dom__dom__tests__remove_with_space@no_spaces_needed.html.snap +8 -0
  111. htmlarc-0.1.0/crates/htmlarc-dom/src/dom/tests/snapshots/htmlarc_dom__dom__tests__remove_with_space@spaces_needed.html.snap +8 -0
  112. htmlarc-0.1.0/crates/htmlarc-dom/src/dom/tests/snapshots/htmlarc_dom__dom__tests__unwrap_with_space@many divs.html.snap +7 -0
  113. htmlarc-0.1.0/crates/htmlarc-dom/src/dom/tests/snapshots/htmlarc_dom__dom__tests__unwrap_with_space@simple div.html.snap +7 -0
  114. htmlarc-0.1.0/crates/htmlarc-dom/src/entities.rs +143 -0
  115. htmlarc-0.1.0/crates/htmlarc-dom/src/error.rs +135 -0
  116. htmlarc-0.1.0/crates/htmlarc-dom/src/fmt/fmt_buf.rs +65 -0
  117. htmlarc-0.1.0/crates/htmlarc-dom/src/fmt/format/common.rs +61 -0
  118. htmlarc-0.1.0/crates/htmlarc-dom/src/fmt/format/mod.rs +25 -0
  119. htmlarc-0.1.0/crates/htmlarc-dom/src/fmt/format/pretty.rs +157 -0
  120. htmlarc-0.1.0/crates/htmlarc-dom/src/fmt/format/raw.rs +105 -0
  121. htmlarc-0.1.0/crates/htmlarc-dom/src/fmt/iter/inliner.rs +158 -0
  122. htmlarc-0.1.0/crates/htmlarc-dom/src/fmt/iter/mod.rs +6 -0
  123. htmlarc-0.1.0/crates/htmlarc-dom/src/fmt/iter/queue_iter.rs +257 -0
  124. htmlarc-0.1.0/crates/htmlarc-dom/src/fmt/iter/tag_iter.rs +141 -0
  125. htmlarc-0.1.0/crates/htmlarc-dom/src/fmt/mod.rs +9 -0
  126. htmlarc-0.1.0/crates/htmlarc-dom/src/fmt/spaces.rs +52 -0
  127. htmlarc-0.1.0/crates/htmlarc-dom/src/fmt/tests/html/aerodynamik.html +192 -0
  128. htmlarc-0.1.0/crates/htmlarc-dom/src/fmt/tests/html/axel.html +338 -0
  129. htmlarc-0.1.0/crates/htmlarc-dom/src/fmt/tests/mod.rs +36 -0
  130. htmlarc-0.1.0/crates/htmlarc-dom/src/fmt/tests/pretty.rs +152 -0
  131. htmlarc-0.1.0/crates/htmlarc-dom/src/fmt/tests/snapshots/htmlarc_dom__fmt__tests__pretty_format@aerodynamik.html.snap +490 -0
  132. htmlarc-0.1.0/crates/htmlarc-dom/src/fmt/tests/snapshots/htmlarc_dom__fmt__tests__pretty_format@axel.html.snap +1969 -0
  133. htmlarc-0.1.0/crates/htmlarc-dom/src/html/doc.rs +66 -0
  134. htmlarc-0.1.0/crates/htmlarc-dom/src/html/element.rs +822 -0
  135. htmlarc-0.1.0/crates/htmlarc-dom/src/html/foreign.rs +196 -0
  136. htmlarc-0.1.0/crates/htmlarc-dom/src/html/html_attr.rs +232 -0
  137. htmlarc-0.1.0/crates/htmlarc-dom/src/html/html_tag.rs +396 -0
  138. htmlarc-0.1.0/crates/htmlarc-dom/src/html/mod.rs +48 -0
  139. htmlarc-0.1.0/crates/htmlarc-dom/src/html/tests/html/aerodynamik.html +192 -0
  140. htmlarc-0.1.0/crates/htmlarc-dom/src/html/tests/html/axel.html +338 -0
  141. htmlarc-0.1.0/crates/htmlarc-dom/src/html/tests/html/foreign-svg-math.html +39 -0
  142. htmlarc-0.1.0/crates/htmlarc-dom/src/html/tests/mod.rs +182 -0
  143. htmlarc-0.1.0/crates/htmlarc-dom/src/html/tests/snapshots/htmlarc_dom__html__tests__pretty_format@aerodynamik.html.snap +490 -0
  144. htmlarc-0.1.0/crates/htmlarc-dom/src/html/tests/snapshots/htmlarc_dom__html__tests__pretty_format@axel.html.snap +1969 -0
  145. htmlarc-0.1.0/crates/htmlarc-dom/src/html/tests/snapshots/htmlarc_dom__html__tests__pretty_format@foreign-svg-math.html.snap +69 -0
  146. htmlarc-0.1.0/crates/htmlarc-dom/src/html/tests/snapshots/htmlarc_dom__html__tests__remove_formatting@aerodynamik.html.snap +6 -0
  147. htmlarc-0.1.0/crates/htmlarc-dom/src/html/tests/snapshots/htmlarc_dom__html__tests__remove_formatting@axel.html.snap +7 -0
  148. htmlarc-0.1.0/crates/htmlarc-dom/src/html/tests/snapshots/htmlarc_dom__html__tests__remove_formatting@foreign-svg-math.html.snap +6 -0
  149. htmlarc-0.1.0/crates/htmlarc-dom/src/html/tests/snapshots/htmlarc_dom__html__tests__repackaged_doc_nodes.snap +19 -0
  150. htmlarc-0.1.0/crates/htmlarc-dom/src/html/tests/snapshots/htmlarc_dom__html__tests__roundtrip@aerodynamik.html.snap +197 -0
  151. htmlarc-0.1.0/crates/htmlarc-dom/src/html/tests/snapshots/htmlarc_dom__html__tests__roundtrip@axel.html.snap +344 -0
  152. htmlarc-0.1.0/crates/htmlarc-dom/src/html/tests/snapshots/htmlarc_dom__html__tests__roundtrip@foreign-svg-math.html.snap +44 -0
  153. htmlarc-0.1.0/crates/htmlarc-dom/src/html/tests/snapshots/htmlarc_dom__html__tests__select_css@aerodynamik.html.snap +22 -0
  154. htmlarc-0.1.0/crates/htmlarc-dom/src/html/tests/snapshots/htmlarc_dom__html__tests__select_css@axel.html.snap +22 -0
  155. htmlarc-0.1.0/crates/htmlarc-dom/src/html/tests/snapshots/htmlarc_dom__html__tests__select_css@foreign-svg-math.html.snap +6 -0
  156. htmlarc-0.1.0/crates/htmlarc-dom/src/iters/chars_iter.rs +503 -0
  157. htmlarc-0.1.0/crates/htmlarc-dom/src/iters/element_iter.rs +380 -0
  158. htmlarc-0.1.0/crates/htmlarc-dom/src/iters/element_iter_rev.rs +376 -0
  159. htmlarc-0.1.0/crates/htmlarc-dom/src/iters/exactly_iter.rs +125 -0
  160. htmlarc-0.1.0/crates/htmlarc-dom/src/iters/linear_iter.rs +456 -0
  161. htmlarc-0.1.0/crates/htmlarc-dom/src/iters/match_iter.rs +265 -0
  162. htmlarc-0.1.0/crates/htmlarc-dom/src/iters/mod.rs +103 -0
  163. htmlarc-0.1.0/crates/htmlarc-dom/src/iters/node_chars.rs +105 -0
  164. htmlarc-0.1.0/crates/htmlarc-dom/src/iters/relative_iter.rs +269 -0
  165. htmlarc-0.1.0/crates/htmlarc-dom/src/iters/stack.rs +188 -0
  166. htmlarc-0.1.0/crates/htmlarc-dom/src/iters/tag_iter.rs +138 -0
  167. htmlarc-0.1.0/crates/htmlarc-dom/src/lib.rs +108 -0
  168. htmlarc-0.1.0/crates/htmlarc-dom/src/parser/builder.rs +284 -0
  169. htmlarc-0.1.0/crates/htmlarc-dom/src/parser/dom.rs +166 -0
  170. htmlarc-0.1.0/crates/htmlarc-dom/src/parser/mod.rs +13 -0
  171. htmlarc-0.1.0/crates/htmlarc-dom/src/parser/testdom.rs +143 -0
  172. htmlarc-0.1.0/crates/htmlarc-dom/src/parser/tests/html/en.interest.html +928 -0
  173. htmlarc-0.1.0/crates/htmlarc-dom/src/parser/tests/html/fr.serrer.html +1128 -0
  174. htmlarc-0.1.0/crates/htmlarc-dom/src/parser/tests/mod.rs +489 -0
  175. htmlarc-0.1.0/crates/htmlarc-dom/src/parser/tests/snapshots/htmlarc_dom__parser__tests__full_doc_with_dom@en.interest.html.snap +901 -0
  176. htmlarc-0.1.0/crates/htmlarc-dom/src/parser/tests/snapshots/htmlarc_dom__parser__tests__full_doc_with_dom@fr.serrer.html.snap +1089 -0
  177. htmlarc-0.1.0/crates/htmlarc-dom/src/parser/tokenizer.rs +407 -0
  178. htmlarc-0.1.0/crates/htmlarc-dom/src/stores/attrstore/builder.rs +104 -0
  179. htmlarc-0.1.0/crates/htmlarc-dom/src/stores/attrstore/mod.rs +64 -0
  180. htmlarc-0.1.0/crates/htmlarc-dom/src/stores/attrstore/rebuilder.rs +84 -0
  181. htmlarc-0.1.0/crates/htmlarc-dom/src/stores/attrstore/store.rs +240 -0
  182. htmlarc-0.1.0/crates/htmlarc-dom/src/stores/attrstore/tests.rs +129 -0
  183. htmlarc-0.1.0/crates/htmlarc-dom/src/stores/ext_tags.rs +252 -0
  184. htmlarc-0.1.0/crates/htmlarc-dom/src/stores/interner.rs +50 -0
  185. htmlarc-0.1.0/crates/htmlarc-dom/src/stores/mod.rs +23 -0
  186. htmlarc-0.1.0/crates/htmlarc-dom/src/stores/runs/mod.rs +249 -0
  187. htmlarc-0.1.0/crates/htmlarc-dom/src/stores/runs/rebuilder.rs +86 -0
  188. htmlarc-0.1.0/crates/htmlarc-dom/src/stores/runs/tests.rs +140 -0
  189. htmlarc-0.1.0/crates/htmlarc-dom/src/stores/string_source.rs +269 -0
  190. htmlarc-0.1.0/crates/htmlarc-dom/src/stores/stringheap.rs +204 -0
  191. htmlarc-0.1.0/crates/htmlarc-dom/src/stores/stringstack.rs +63 -0
  192. htmlarc-0.1.0/crates/htmlarc-dom/src/stores/symbols/builder.rs +43 -0
  193. htmlarc-0.1.0/crates/htmlarc-dom/src/stores/symbols/mod.rs +75 -0
  194. htmlarc-0.1.0/crates/htmlarc-dom/src/stores/symbols/table.rs +208 -0
  195. htmlarc-0.1.0/crates/htmlarc-dom/src/stores/symbols/tests.rs +201 -0
  196. htmlarc-0.1.0/crates/htmlarc-py/COMMERCIAL.md +57 -0
  197. htmlarc-0.1.0/crates/htmlarc-py/Cargo.toml +25 -0
  198. htmlarc-0.1.0/crates/htmlarc-py/LICENSE +661 -0
  199. htmlarc-0.1.0/crates/htmlarc-py/NOTICE +103 -0
  200. htmlarc-0.1.0/crates/htmlarc-py/README.md +113 -0
  201. htmlarc-0.1.0/crates/htmlarc-py/THIRD_PARTY_NOTICES.txt +1099 -0
  202. htmlarc-0.1.0/crates/htmlarc-py/htmlarc.pyi +483 -0
  203. htmlarc-0.1.0/crates/htmlarc-py/src/lib.rs +2115 -0
  204. htmlarc-0.1.0/crates/htmlarc-py/tests/test_append.py +128 -0
  205. htmlarc-0.1.0/crates/htmlarc-py/tests/test_builder_ergonomics.py +100 -0
  206. htmlarc-0.1.0/crates/htmlarc-py/tests/test_meta.py +121 -0
  207. htmlarc-0.1.0/crates/htmlarc-py/tests/test_smoke.py +401 -0
  208. htmlarc-0.1.0/crates/htmlarc-py/tests/test_stub_docs.py +108 -0
  209. htmlarc-0.1.0/pyproject.toml +25 -0
@@ -0,0 +1,57 @@
1
+ # Commercial licensing
2
+
3
+ htmlarc is **dual-licensed**:
4
+
5
+ - **Open source — [GNU AGPL-3.0](LICENSE).** Free to use, modify, and distribute under the
6
+ terms of the AGPL. Distribution carries source and notice obligations; section 13
7
+ also requires modified versions used over a network to offer corresponding source
8
+ to their remote users. See the [license](LICENSE) and
9
+ [GNU FAQ](https://www.gnu.org/licenses/gpl-faq.html#AGPLv3InteractingRemotely).
10
+ - **Commercial — a separate paid license.** For organizations that want to use htmlarc in
11
+ closed-source or SaaS software **without** the AGPL's source-disclosure obligations.
12
+
13
+ ## When you need a commercial license
14
+
15
+ You likely need one if any of the following apply:
16
+
17
+ - You link the htmlarc libraries into a **proprietary / closed-source** product.
18
+ - You offer htmlarc's functionality as part of a **hosted or SaaS** product and don't want to
19
+ release your service's source under the AGPL.
20
+ - Your organization's policy **prohibits AGPL** dependencies.
21
+
22
+ A commercial license is optional if you comply with the AGPL. Internal use and
23
+ research are not blanket exemptions: for example, a modified network service may
24
+ have obligations to its internal users under section 13.
25
+
26
+ ## What it covers
27
+
28
+ A commercial license covers the **whole project** — the core crates (`htmlarc-dom`,
29
+ `htmlarc-archive`), the `htmlarc` and `htmlarc-convert` CLIs, and the official Python bindings (`htmlarc` on PyPI).
30
+ Third-party dependencies and Wikimedia fixtures retain their own licenses; a
31
+ commercial license does not replace those terms.
32
+
33
+ ## Pricing
34
+
35
+ Annual license, covering the whole legal entity, by organization size:
36
+
37
+ | Organization size | Internal use¹ | Embedded / SaaS² |
38
+ |---|---|---|
39
+ | Fewer than 25 employees | $750 / year | $3,000 / year |
40
+ | 25 – 250 employees | $2,500 / year | $9,000 / year |
41
+ | More than 250 employees | $7,500 / year | get in touch |
42
+
43
+ ¹ **Internal use** — your own staff and systems use htmlarc-based tools; nothing is shipped
44
+ to customers. This tier is available for organizations whose policy prohibits AGPL dependencies,
45
+ including uses that could otherwise comply with the AGPL at no cost.
46
+
47
+ ² **Embedded / SaaS** — htmlarc functionality is part of a product or hosted service you
48
+ provide to your customers, without AGPL source obligations.
49
+
50
+ Custom terms (OEM, redistribution to your own customers' deployments, multi-year): get in touch.
51
+
52
+ ## Contact
53
+
54
+ **Email:** [license@akesson.io](mailto:license@akesson.io) · **GitHub:** [@akesson](https://github.com/akesson)
55
+
56
+ I'm also available for **paid contract work** to extend, integrate, or maintain htmlarc for your
57
+ use case — same contact. License and contract inquiries are answered within one business day.