sphinx-needs 9.0.0__tar.gz → 9.2.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 (812) hide show
  1. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/PKG-INFO +5 -2
  2. sphinx_needs-9.2.0/docs/_static/_css/furo.css +51 -0
  3. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/ubc-theme.css +6 -4
  4. sphinx_needs-9.2.0/docs/api.rst +462 -0
  5. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/builders.rst +10 -0
  6. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/card_layouts.rst +3 -4
  7. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/changelog.rst +1369 -0
  8. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/conf.py +23 -20
  9. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/configuration.rst +931 -513
  10. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/contributing.rst +9 -2
  11. sphinx_needs-9.2.0/docs/derived_fields.rst +1490 -0
  12. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/needbar.rst +4 -8
  13. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/needflow.rst +9 -2
  14. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/needimport.rst +7 -0
  15. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/needpie.rst +4 -8
  16. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/needservice.rst +2 -0
  17. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/needtable.rst +21 -2
  18. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/dynamic_functions.rst +184 -76
  19. sphinx_needs-9.2.0/docs/filter.rst +853 -0
  20. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/index.rst +6 -4
  21. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/installation.rst +1 -1
  22. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/layout_styles.rst +12 -0
  23. sphinx_needs-9.2.0/docs/need_types.rst +539 -0
  24. sphinx_needs-9.2.0/docs/performance/incremental.rst +79 -0
  25. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/performance/index.rst +1 -0
  26. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/roles.rst +4 -3
  27. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/schema/index.rst +331 -7
  28. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/services/github.rst +51 -5
  29. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/services/index.rst +3 -2
  30. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/tutorial.rst +37 -3
  31. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/ubproject.toml +45 -53
  32. sphinx_needs-9.2.0/docs/v_model.rst +92 -0
  33. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/pyproject.toml +5 -2
  34. sphinx_needs-9.2.0/src/sphinx_needs/__init__.py +16 -0
  35. sphinx_needs-9.2.0/src/sphinx_needs/_incremental.py +792 -0
  36. sphinx_needs-9.2.0/src/sphinx_needs/_need_source.py +1295 -0
  37. sphinx_needs-9.2.0/src/sphinx_needs/_read_watch.py +166 -0
  38. sphinx_needs-9.2.0/src/sphinx_needs/_source_facets.py +316 -0
  39. sphinx_needs-9.2.0/src/sphinx_needs/_wording.py +24 -0
  40. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/api/__init__.py +18 -0
  41. sphinx_needs-9.2.0/src/sphinx_needs/api/configuration.py +530 -0
  42. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/api/need.py +753 -162
  43. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/builder.py +32 -13
  44. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/card_layouts.py +5 -4
  45. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/config.py +644 -57
  46. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/data.py +212 -13
  47. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/debug.py +45 -7
  48. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/derive.py +497 -59
  49. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/diagrams_common.py +4 -0
  50. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/list2need.py +139 -42
  51. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/need.py +257 -124
  52. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needbar.py +46 -38
  53. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needextend.py +161 -52
  54. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needextract.py +24 -11
  55. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needflow/_directive.py +8 -4
  56. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needflow/_graphviz.py +6 -5
  57. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needflow/_model.py +11 -10
  58. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needflow/_plantuml.py +10 -11
  59. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needflow/_shared.py +2 -2
  60. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needgantt.py +18 -4
  61. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needimport.py +35 -15
  62. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needlist.py +17 -3
  63. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needpie.py +18 -4
  64. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needreport.py +1 -1
  65. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needsequence.py +17 -4
  66. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needservice.py +151 -28
  67. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needtable.py +50 -35
  68. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needuml.py +7 -3
  69. sphinx_needs-9.2.0/src/sphinx_needs/exchange.py +61 -0
  70. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/external_needs.py +24 -10
  71. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/filter_common.py +521 -138
  72. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/functions/__init__.py +2 -0
  73. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/functions/common.py +340 -22
  74. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/functions/functions.py +691 -85
  75. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/functions/order.py +507 -26
  76. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/layout.py +37 -15
  77. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/logging.py +18 -0
  78. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/need_constraints.py +1 -3
  79. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/need_content.py +5 -5
  80. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/need_item.py +589 -106
  81. sphinx_needs-9.2.0/src/sphinx_needs/needs.py +4715 -0
  82. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/needs_schema.py +1373 -371
  83. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/needsfile.py +176 -42
  84. sphinx_needs-9.2.0/src/sphinx_needs/roles/__init__.py +40 -0
  85. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/roles/need_count.py +1 -1
  86. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/roles/need_func.py +1 -1
  87. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/roles/need_incoming.py +6 -2
  88. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/roles/need_outgoing.py +56 -3
  89. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/roles/need_ref.py +5 -1
  90. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/schema/config.py +126 -5
  91. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/schema/config_utils.py +11 -1
  92. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/schema/core.py +163 -34
  93. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/schema/reporting.py +17 -18
  94. sphinx_needs-9.2.0/src/sphinx_needs/services/config/__init__.py +0 -0
  95. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/services/config/github.py +16 -0
  96. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/services/github.py +81 -15
  97. sphinx_needs-9.2.0/src/sphinx_needs/services/manager.py +113 -0
  98. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/string_links.py +8 -2
  99. sphinx_needs-9.2.0/src/sphinx_needs/ubquery.py +801 -0
  100. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/utils.py +85 -9
  101. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/variant_data.py +3 -0
  102. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/variants.py +3 -1
  103. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/views.py +16 -7
  104. sphinx_needs-9.0.0/docs/_static/_css/furo.css +0 -327
  105. sphinx_needs-9.0.0/docs/_static/_templates/furo/side-github.html +0 -37
  106. sphinx_needs-9.0.0/docs/api.rst +0 -149
  107. sphinx_needs-9.0.0/docs/filter.rst +0 -554
  108. sphinx_needs-9.0.0/src/sphinx_needs/__init__.py +0 -9
  109. sphinx_needs-9.0.0/src/sphinx_needs/api/configuration.py +0 -274
  110. sphinx_needs-9.0.0/src/sphinx_needs/exchange.py +0 -286
  111. sphinx_needs-9.0.0/src/sphinx_needs/needs.py +0 -1988
  112. sphinx_needs-9.0.0/src/sphinx_needs/roles/__init__.py +0 -22
  113. sphinx_needs-9.0.0/src/sphinx_needs/services/manager.py +0 -59
  114. sphinx_needs-9.0.0/src/sphinx_needs/ubquery.py +0 -299
  115. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/AUTHORS +0 -0
  116. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/LICENSE +0 -0
  117. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/README.rst +0 -0
  118. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/Makefile +0 -0
  119. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/activity.png +0 -0
  120. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/car.png +0 -0
  121. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/daniel.png +0 -0
  122. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/diagram.png +0 -0
  123. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/github_issue_1.png +0 -0
  124. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/github_issue_2.png +0 -0
  125. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/github_issue_3.png +0 -0
  126. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/github_issue_4.png +0 -0
  127. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/logos/sphinx-needs-enterprise-card.png +0 -0
  128. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/logos/sphinx-needs-logo-old.png +0 -0
  129. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/logos/sphinx-test-reports-logo.png +0 -0
  130. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/logos/sphinx_bazel_logo.png +0 -0
  131. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/logos/sphinx_collections_logo.png +0 -0
  132. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/logos/useblocks_logo.png +0 -0
  133. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/need_1.png +0 -0
  134. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/need_2.png +0 -0
  135. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/need_blank.png +0 -0
  136. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/need_dark.png +0 -0
  137. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/need_modern.png +0 -0
  138. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/need_part_as_flow.png +0 -0
  139. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/need_pie_overlapping_labels.png +0 -0
  140. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/needflow_1.png +0 -0
  141. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/needflow_flow.png +0 -0
  142. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/needflow_flow_legend.png +0 -0
  143. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/needflow_link_names.png +0 -0
  144. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/needpie_1.png +0 -0
  145. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/needs_logo.png +0 -0
  146. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/needtable_1.png +0 -0
  147. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/ons_example.png +0 -0
  148. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/ons_table.png +0 -0
  149. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/service_github_1.png +0 -0
  150. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/sn_debug_measurement_html_report.png +0 -0
  151. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_images/snakeviz_needtable.png +0 -0
  152. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/_css/pydata_sphinx_theme.css +0 -0
  153. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/_css/shared.css +0 -0
  154. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/_css/sphinx_immaterial.css +0 -0
  155. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/_css/sphinx_rtd_theme.css +0 -0
  156. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/_templates/sphinx_immaterial/layout.html +0 -0
  157. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/_templates/sphinx_immaterial/partials/nav.html +0 -0
  158. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/architecture_bg-dark.png +0 -0
  159. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/architecture_bg-dark.svg +0 -0
  160. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/architecture_bg-light.png +0 -0
  161. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/architecture_bg-light.svg +0 -0
  162. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/flow_chart.svg +0 -0
  163. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/sphinx-needs-logo-long-dark.svg +0 -0
  164. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/sphinx-needs-logo-long-light.svg +0 -0
  165. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/sphinx-needs-logo-square-dark.svg +0 -0
  166. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/sphinx-needs-logo-square-light.svg +0 -0
  167. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/sphinx_needs_paper.odt +0 -0
  168. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/sphinx_needs_paper.pdf +0 -0
  169. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/useblocks-logo-long-dark.svg +0 -0
  170. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/_static/useblocks-logo-long-light.svg +0 -0
  171. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/choose.rst +0 -0
  172. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/if.rst +0 -0
  173. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/index.rst +0 -0
  174. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/list2need.rst +0 -0
  175. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/need.rst +0 -0
  176. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/needarch.rst +0 -0
  177. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/needextend.rst +0 -0
  178. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/needextract.rst +0 -0
  179. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/needgantt.rst +0 -0
  180. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/needlist.rst +0 -0
  181. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/needreport.rst +0 -0
  182. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/needsequence.rst +0 -0
  183. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/directives/needuml.rst +0 -0
  184. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/docker.rst +0 -0
  185. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/license.rst +0 -0
  186. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/make.bat +0 -0
  187. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/needs_templates/report_template.need +0 -0
  188. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/needs_templates/spec_post_template.need +0 -0
  189. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/needs_templates/spec_pre_template.need +0 -0
  190. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/needs_templates/spec_template.need +0 -0
  191. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/performance/complex.txt +0 -0
  192. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/performance/debug.rst +0 -0
  193. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/performance/help.txt +0 -0
  194. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/performance/script.rst +0 -0
  195. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/performance/series_output.txt +0 -0
  196. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/schema/01_basic_setup.drawio.png +0 -0
  197. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/schema/02_local_check.drawio.png +0 -0
  198. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/schema/03_network_check.drawio.png +0 -0
  199. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/support.rst +0 -0
  200. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/docs/utils.rst +0 -0
  201. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/_jinja.py +0 -0
  202. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/api/exceptions.py +0 -0
  203. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/css/common/need_core.css +0 -0
  204. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/css/common/need_links.css +0 -0
  205. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/css/common/need_style.css +0 -0
  206. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/css/common/need_toggle.css +0 -0
  207. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/css/common/needstable.css +0 -0
  208. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/css/themes/blank.css +0 -0
  209. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/css/themes/dark.css +0 -0
  210. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/css/themes/modern.css +0 -0
  211. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/defaults.py +0 -0
  212. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/__init__.py +0 -0
  213. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needchoose.py +0 -0
  214. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needflow/__init__.py +0 -0
  215. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needflow/_options.py +0 -0
  216. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needif.py +0 -0
  217. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needimport_template.rst +0 -0
  218. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/needreport_template.rst +0 -0
  219. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/directives/utils.py +0 -0
  220. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/environment.py +0 -0
  221. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/errors.py +0 -0
  222. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/exceptions.py +0 -0
  223. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/avatar.png +0 -0
  224. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/avatar.svg +0 -0
  225. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/activity.png +0 -0
  226. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/airplay.png +0 -0
  227. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/alert-circle.png +0 -0
  228. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/alert-octagon.png +0 -0
  229. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/alert-triangle.png +0 -0
  230. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/align-center.png +0 -0
  231. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/align-justify.png +0 -0
  232. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/align-left.png +0 -0
  233. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/align-right.png +0 -0
  234. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/anchor.png +0 -0
  235. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/aperture.png +0 -0
  236. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/archive.png +0 -0
  237. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/arrow-down-circle.png +0 -0
  238. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/arrow-down-left.png +0 -0
  239. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/arrow-down-right.png +0 -0
  240. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/arrow-down.png +0 -0
  241. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/arrow-left-circle.png +0 -0
  242. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/arrow-left.png +0 -0
  243. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/arrow-right-circle.png +0 -0
  244. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/arrow-right.png +0 -0
  245. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/arrow-up-circle.png +0 -0
  246. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/arrow-up-left.png +0 -0
  247. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/arrow-up-right.png +0 -0
  248. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/arrow-up.png +0 -0
  249. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/at-sign.png +0 -0
  250. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/award.png +0 -0
  251. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/bar-chart-2.png +0 -0
  252. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/bar-chart.png +0 -0
  253. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/battery-charging.png +0 -0
  254. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/battery.png +0 -0
  255. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/bell-off.png +0 -0
  256. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/bell.png +0 -0
  257. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/bluetooth.png +0 -0
  258. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/bold.png +0 -0
  259. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/book-open.png +0 -0
  260. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/book.png +0 -0
  261. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/bookmark.png +0 -0
  262. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/box.png +0 -0
  263. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/briefcase.png +0 -0
  264. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/calendar.png +0 -0
  265. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/camera-off.png +0 -0
  266. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/camera.png +0 -0
  267. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/cast.png +0 -0
  268. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/check-circle.png +0 -0
  269. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/check-square.png +0 -0
  270. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/check.png +0 -0
  271. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/chevron-down.png +0 -0
  272. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/chevron-left.png +0 -0
  273. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/chevron-right.png +0 -0
  274. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/chevron-up.png +0 -0
  275. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/chevrons-down.png +0 -0
  276. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/chevrons-left.png +0 -0
  277. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/chevrons-right.png +0 -0
  278. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/chevrons-up.png +0 -0
  279. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/chrome.png +0 -0
  280. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/circle.png +0 -0
  281. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/clipboard.png +0 -0
  282. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/clock.png +0 -0
  283. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/cloud-drizzle.png +0 -0
  284. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/cloud-lightning.png +0 -0
  285. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/cloud-off.png +0 -0
  286. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/cloud-rain.png +0 -0
  287. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/cloud-snow.png +0 -0
  288. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/cloud.png +0 -0
  289. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/code.png +0 -0
  290. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/codepen.png +0 -0
  291. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/codesandbox.png +0 -0
  292. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/coffee.png +0 -0
  293. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/columns.png +0 -0
  294. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/command.png +0 -0
  295. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/compass.png +0 -0
  296. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/copy.png +0 -0
  297. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/corner-down-left.png +0 -0
  298. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/corner-down-right.png +0 -0
  299. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/corner-left-down.png +0 -0
  300. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/corner-left-up.png +0 -0
  301. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/corner-right-down.png +0 -0
  302. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/corner-right-up.png +0 -0
  303. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/corner-up-left.png +0 -0
  304. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/corner-up-right.png +0 -0
  305. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/cpu.png +0 -0
  306. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/credit-card.png +0 -0
  307. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/crop.png +0 -0
  308. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/crosshair.png +0 -0
  309. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/database.png +0 -0
  310. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/delete.png +0 -0
  311. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/disc.png +0 -0
  312. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/dollar-sign.png +0 -0
  313. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/download-cloud.png +0 -0
  314. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/download.png +0 -0
  315. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/droplet.png +0 -0
  316. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/edit-2.png +0 -0
  317. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/edit-3.png +0 -0
  318. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/edit.png +0 -0
  319. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/external-link.png +0 -0
  320. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/eye-off.png +0 -0
  321. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/eye.png +0 -0
  322. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/facebook.png +0 -0
  323. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/fast-forward.png +0 -0
  324. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/feather.png +0 -0
  325. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/figma.png +0 -0
  326. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/file-minus.png +0 -0
  327. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/file-plus.png +0 -0
  328. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/file-text.png +0 -0
  329. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/file.png +0 -0
  330. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/film.png +0 -0
  331. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/filter.png +0 -0
  332. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/flag.png +0 -0
  333. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/folder-minus.png +0 -0
  334. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/folder-plus.png +0 -0
  335. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/folder.png +0 -0
  336. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/framer.png +0 -0
  337. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/frown.png +0 -0
  338. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/gift.png +0 -0
  339. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/git-branch.png +0 -0
  340. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/git-commit.png +0 -0
  341. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/git-merge.png +0 -0
  342. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/git-pull-request.png +0 -0
  343. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/github.png +0 -0
  344. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/gitlab.png +0 -0
  345. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/globe.png +0 -0
  346. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/grid.png +0 -0
  347. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/hard-drive.png +0 -0
  348. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/hash.png +0 -0
  349. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/headphones.png +0 -0
  350. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/heart.png +0 -0
  351. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/help-circle.png +0 -0
  352. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/hexagon.png +0 -0
  353. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/home.png +0 -0
  354. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/image.png +0 -0
  355. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/inbox.png +0 -0
  356. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/info.png +0 -0
  357. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/instagram.png +0 -0
  358. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/italic.png +0 -0
  359. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/key.png +0 -0
  360. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/layers.png +0 -0
  361. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/layout.png +0 -0
  362. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/life-buoy.png +0 -0
  363. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/link-2.png +0 -0
  364. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/link.png +0 -0
  365. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/linkedin.png +0 -0
  366. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/list.png +0 -0
  367. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/loader.png +0 -0
  368. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/lock.png +0 -0
  369. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/log-in.png +0 -0
  370. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/log-out.png +0 -0
  371. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/mail.png +0 -0
  372. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/map-pin.png +0 -0
  373. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/map.png +0 -0
  374. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/maximize-2.png +0 -0
  375. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/maximize.png +0 -0
  376. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/meh.png +0 -0
  377. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/menu.png +0 -0
  378. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/message-circle.png +0 -0
  379. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/message-square.png +0 -0
  380. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/mic-off.png +0 -0
  381. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/mic.png +0 -0
  382. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/minimize-2.png +0 -0
  383. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/minimize.png +0 -0
  384. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/minus-circle.png +0 -0
  385. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/minus-square.png +0 -0
  386. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/minus.png +0 -0
  387. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/monitor.png +0 -0
  388. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/moon.png +0 -0
  389. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/more-horizontal.png +0 -0
  390. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/more-vertical.png +0 -0
  391. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/mouse-pointer.png +0 -0
  392. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/move.png +0 -0
  393. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/music.png +0 -0
  394. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/navigation-2.png +0 -0
  395. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/navigation.png +0 -0
  396. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/octagon.png +0 -0
  397. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/package.png +0 -0
  398. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/paperclip.png +0 -0
  399. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/pause-circle.png +0 -0
  400. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/pause.png +0 -0
  401. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/pen-tool.png +0 -0
  402. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/percent.png +0 -0
  403. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/phone-call.png +0 -0
  404. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/phone-forwarded.png +0 -0
  405. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/phone-incoming.png +0 -0
  406. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/phone-missed.png +0 -0
  407. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/phone-off.png +0 -0
  408. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/phone-outgoing.png +0 -0
  409. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/phone.png +0 -0
  410. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/pie-chart.png +0 -0
  411. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/play-circle.png +0 -0
  412. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/play.png +0 -0
  413. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/plus-circle.png +0 -0
  414. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/plus-square.png +0 -0
  415. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/plus.png +0 -0
  416. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/pocket.png +0 -0
  417. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/power.png +0 -0
  418. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/printer.png +0 -0
  419. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/radio.png +0 -0
  420. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/refresh-ccw.png +0 -0
  421. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/refresh-cw.png +0 -0
  422. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/repeat.png +0 -0
  423. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/rewind.png +0 -0
  424. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/rotate-ccw.png +0 -0
  425. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/rotate-cw.png +0 -0
  426. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/rss.png +0 -0
  427. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/save.png +0 -0
  428. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/scissors.png +0 -0
  429. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/search.png +0 -0
  430. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/send.png +0 -0
  431. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/server.png +0 -0
  432. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/settings.png +0 -0
  433. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/share-2.png +0 -0
  434. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/share.png +0 -0
  435. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/shield-off.png +0 -0
  436. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/shield.png +0 -0
  437. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/shopping-bag.png +0 -0
  438. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/shopping-cart.png +0 -0
  439. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/shuffle.png +0 -0
  440. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/sidebar.png +0 -0
  441. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/skip-back.png +0 -0
  442. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/skip-forward.png +0 -0
  443. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/slack.png +0 -0
  444. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/slash.png +0 -0
  445. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/sliders.png +0 -0
  446. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/smartphone.png +0 -0
  447. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/smile.png +0 -0
  448. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/speaker.png +0 -0
  449. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/square.png +0 -0
  450. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/star.png +0 -0
  451. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/stop-circle.png +0 -0
  452. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/sun.png +0 -0
  453. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/sunrise.png +0 -0
  454. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/sunset.png +0 -0
  455. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/tablet.png +0 -0
  456. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/tag.png +0 -0
  457. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/target.png +0 -0
  458. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/terminal.png +0 -0
  459. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/thermometer.png +0 -0
  460. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/thumbs-down.png +0 -0
  461. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/thumbs-up.png +0 -0
  462. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/toggle-left.png +0 -0
  463. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/toggle-right.png +0 -0
  464. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/tool.png +0 -0
  465. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/trash-2.png +0 -0
  466. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/trash.png +0 -0
  467. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/trello.png +0 -0
  468. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/trending-down.png +0 -0
  469. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/trending-up.png +0 -0
  470. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/triangle.png +0 -0
  471. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/truck.png +0 -0
  472. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/tv.png +0 -0
  473. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/twitch.png +0 -0
  474. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/twitter.png +0 -0
  475. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/type.png +0 -0
  476. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/umbrella.png +0 -0
  477. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/underline.png +0 -0
  478. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/unlock.png +0 -0
  479. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/upload-cloud.png +0 -0
  480. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/upload.png +0 -0
  481. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/user-check.png +0 -0
  482. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/user-minus.png +0 -0
  483. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/user-plus.png +0 -0
  484. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/user-x.png +0 -0
  485. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/user.png +0 -0
  486. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/users.png +0 -0
  487. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/video-off.png +0 -0
  488. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/video.png +0 -0
  489. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/voicemail.png +0 -0
  490. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/volume-1.png +0 -0
  491. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/volume-2.png +0 -0
  492. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/volume-x.png +0 -0
  493. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/volume.png +0 -0
  494. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/watch.png +0 -0
  495. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/wifi-off.png +0 -0
  496. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/wifi.png +0 -0
  497. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/wind.png +0 -0
  498. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/x-circle.png +0 -0
  499. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/x-octagon.png +0 -0
  500. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/x-square.png +0 -0
  501. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/x.png +0 -0
  502. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/youtube.png +0 -0
  503. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/zap-off.png +0 -0
  504. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/zap.png +0 -0
  505. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/zoom-in.png +0 -0
  506. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_png/zoom-out.png +0 -0
  507. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/activity.svg +0 -0
  508. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/airplay.svg +0 -0
  509. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/alert-circle.svg +0 -0
  510. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/alert-octagon.svg +0 -0
  511. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/alert-triangle.svg +0 -0
  512. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/align-center.svg +0 -0
  513. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/align-justify.svg +0 -0
  514. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/align-left.svg +0 -0
  515. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/align-right.svg +0 -0
  516. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/anchor.svg +0 -0
  517. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/aperture.svg +0 -0
  518. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/archive.svg +0 -0
  519. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/arrow-down-circle.svg +0 -0
  520. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/arrow-down-left.svg +0 -0
  521. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/arrow-down-right.svg +0 -0
  522. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/arrow-down.svg +0 -0
  523. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/arrow-left-circle.svg +0 -0
  524. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/arrow-left.svg +0 -0
  525. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/arrow-right-circle.svg +0 -0
  526. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/arrow-right.svg +0 -0
  527. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/arrow-up-circle.svg +0 -0
  528. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/arrow-up-left.svg +0 -0
  529. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/arrow-up-right.svg +0 -0
  530. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/arrow-up.svg +0 -0
  531. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/at-sign.svg +0 -0
  532. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/award.svg +0 -0
  533. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/bar-chart-2.svg +0 -0
  534. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/bar-chart.svg +0 -0
  535. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/battery-charging.svg +0 -0
  536. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/battery.svg +0 -0
  537. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/bell-off.svg +0 -0
  538. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/bell.svg +0 -0
  539. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/bluetooth.svg +0 -0
  540. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/bold.svg +0 -0
  541. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/book-open.svg +0 -0
  542. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/book.svg +0 -0
  543. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/bookmark.svg +0 -0
  544. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/box.svg +0 -0
  545. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/briefcase.svg +0 -0
  546. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/calendar.svg +0 -0
  547. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/camera-off.svg +0 -0
  548. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/camera.svg +0 -0
  549. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/cast.svg +0 -0
  550. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/check-circle.svg +0 -0
  551. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/check-square.svg +0 -0
  552. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/check.svg +0 -0
  553. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/chevron-down.svg +0 -0
  554. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/chevron-left.svg +0 -0
  555. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/chevron-right.svg +0 -0
  556. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/chevron-up.svg +0 -0
  557. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/chevrons-down.svg +0 -0
  558. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/chevrons-left.svg +0 -0
  559. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/chevrons-right.svg +0 -0
  560. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/chevrons-up.svg +0 -0
  561. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/chrome.svg +0 -0
  562. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/circle.svg +0 -0
  563. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/clipboard.svg +0 -0
  564. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/clock.svg +0 -0
  565. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/cloud-drizzle.svg +0 -0
  566. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/cloud-lightning.svg +0 -0
  567. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/cloud-off.svg +0 -0
  568. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/cloud-rain.svg +0 -0
  569. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/cloud-snow.svg +0 -0
  570. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/cloud.svg +0 -0
  571. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/code.svg +0 -0
  572. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/codepen.svg +0 -0
  573. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/codesandbox.svg +0 -0
  574. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/coffee.svg +0 -0
  575. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/columns.svg +0 -0
  576. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/command.svg +0 -0
  577. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/compass.svg +0 -0
  578. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/copy.svg +0 -0
  579. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/corner-down-left.svg +0 -0
  580. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/corner-down-right.svg +0 -0
  581. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/corner-left-down.svg +0 -0
  582. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/corner-left-up.svg +0 -0
  583. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/corner-right-down.svg +0 -0
  584. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/corner-right-up.svg +0 -0
  585. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/corner-up-left.svg +0 -0
  586. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/corner-up-right.svg +0 -0
  587. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/cpu.svg +0 -0
  588. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/credit-card.svg +0 -0
  589. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/crop.svg +0 -0
  590. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/crosshair.svg +0 -0
  591. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/database.svg +0 -0
  592. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/delete.svg +0 -0
  593. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/disc.svg +0 -0
  594. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/dollar-sign.svg +0 -0
  595. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/download-cloud.svg +0 -0
  596. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/download.svg +0 -0
  597. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/droplet.svg +0 -0
  598. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/edit-2.svg +0 -0
  599. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/edit-3.svg +0 -0
  600. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/edit.svg +0 -0
  601. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/external-link.svg +0 -0
  602. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/eye-off.svg +0 -0
  603. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/eye.svg +0 -0
  604. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/facebook.svg +0 -0
  605. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/fast-forward.svg +0 -0
  606. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/feather.svg +0 -0
  607. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/figma.svg +0 -0
  608. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/file-minus.svg +0 -0
  609. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/file-plus.svg +0 -0
  610. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/file-text.svg +0 -0
  611. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/file.svg +0 -0
  612. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/film.svg +0 -0
  613. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/filter.svg +0 -0
  614. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/flag.svg +0 -0
  615. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/folder-minus.svg +0 -0
  616. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/folder-plus.svg +0 -0
  617. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/folder.svg +0 -0
  618. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/framer.svg +0 -0
  619. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/frown.svg +0 -0
  620. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/gift.svg +0 -0
  621. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/git-branch.svg +0 -0
  622. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/git-commit.svg +0 -0
  623. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/git-merge.svg +0 -0
  624. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/git-pull-request.svg +0 -0
  625. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/github.svg +0 -0
  626. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/gitlab.svg +0 -0
  627. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/globe.svg +0 -0
  628. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/grid.svg +0 -0
  629. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/hard-drive.svg +0 -0
  630. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/hash.svg +0 -0
  631. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/headphones.svg +0 -0
  632. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/heart.svg +0 -0
  633. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/help-circle.svg +0 -0
  634. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/hexagon.svg +0 -0
  635. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/home.svg +0 -0
  636. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/image.svg +0 -0
  637. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/inbox.svg +0 -0
  638. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/info.svg +0 -0
  639. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/instagram.svg +0 -0
  640. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/italic.svg +0 -0
  641. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/key.svg +0 -0
  642. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/layers.svg +0 -0
  643. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/layout.svg +0 -0
  644. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/life-buoy.svg +0 -0
  645. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/link-2.svg +0 -0
  646. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/link.svg +0 -0
  647. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/linkedin.svg +0 -0
  648. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/list.svg +0 -0
  649. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/loader.svg +0 -0
  650. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/lock.svg +0 -0
  651. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/log-in.svg +0 -0
  652. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/log-out.svg +0 -0
  653. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/mail.svg +0 -0
  654. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/map-pin.svg +0 -0
  655. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/map.svg +0 -0
  656. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/maximize-2.svg +0 -0
  657. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/maximize.svg +0 -0
  658. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/meh.svg +0 -0
  659. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/menu.svg +0 -0
  660. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/message-circle.svg +0 -0
  661. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/message-square.svg +0 -0
  662. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/mic-off.svg +0 -0
  663. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/mic.svg +0 -0
  664. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/minimize-2.svg +0 -0
  665. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/minimize.svg +0 -0
  666. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/minus-circle.svg +0 -0
  667. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/minus-square.svg +0 -0
  668. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/minus.svg +0 -0
  669. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/monitor.svg +0 -0
  670. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/moon.svg +0 -0
  671. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/more-horizontal.svg +0 -0
  672. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/more-vertical.svg +0 -0
  673. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/mouse-pointer.svg +0 -0
  674. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/move.svg +0 -0
  675. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/music.svg +0 -0
  676. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/navigation-2.svg +0 -0
  677. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/navigation.svg +0 -0
  678. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/octagon.svg +0 -0
  679. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/package.svg +0 -0
  680. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/paperclip.svg +0 -0
  681. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/pause-circle.svg +0 -0
  682. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/pause.svg +0 -0
  683. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/pen-tool.svg +0 -0
  684. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/percent.svg +0 -0
  685. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/phone-call.svg +0 -0
  686. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/phone-forwarded.svg +0 -0
  687. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/phone-incoming.svg +0 -0
  688. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/phone-missed.svg +0 -0
  689. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/phone-off.svg +0 -0
  690. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/phone-outgoing.svg +0 -0
  691. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/phone.svg +0 -0
  692. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/pie-chart.svg +0 -0
  693. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/play-circle.svg +0 -0
  694. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/play.svg +0 -0
  695. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/plus-circle.svg +0 -0
  696. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/plus-square.svg +0 -0
  697. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/plus.svg +0 -0
  698. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/pocket.svg +0 -0
  699. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/power.svg +0 -0
  700. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/printer.svg +0 -0
  701. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/radio.svg +0 -0
  702. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/refresh-ccw.svg +0 -0
  703. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/refresh-cw.svg +0 -0
  704. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/repeat.svg +0 -0
  705. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/rewind.svg +0 -0
  706. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/rotate-ccw.svg +0 -0
  707. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/rotate-cw.svg +0 -0
  708. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/rss.svg +0 -0
  709. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/save.svg +0 -0
  710. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/scissors.svg +0 -0
  711. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/search.svg +0 -0
  712. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/send.svg +0 -0
  713. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/server.svg +0 -0
  714. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/settings.svg +0 -0
  715. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/share-2.svg +0 -0
  716. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/share.svg +0 -0
  717. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/shield-off.svg +0 -0
  718. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/shield.svg +0 -0
  719. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/shopping-bag.svg +0 -0
  720. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/shopping-cart.svg +0 -0
  721. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/shuffle.svg +0 -0
  722. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/sidebar.svg +0 -0
  723. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/skip-back.svg +0 -0
  724. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/skip-forward.svg +0 -0
  725. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/slack.svg +0 -0
  726. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/slash.svg +0 -0
  727. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/sliders.svg +0 -0
  728. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/smartphone.svg +0 -0
  729. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/smile.svg +0 -0
  730. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/speaker.svg +0 -0
  731. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/square.svg +0 -0
  732. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/star.svg +0 -0
  733. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/stop-circle.svg +0 -0
  734. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/sun.svg +0 -0
  735. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/sunrise.svg +0 -0
  736. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/sunset.svg +0 -0
  737. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/tablet.svg +0 -0
  738. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/tag.svg +0 -0
  739. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/target.svg +0 -0
  740. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/terminal.svg +0 -0
  741. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/thermometer.svg +0 -0
  742. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/thumbs-down.svg +0 -0
  743. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/thumbs-up.svg +0 -0
  744. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/toggle-left.svg +0 -0
  745. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/toggle-right.svg +0 -0
  746. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/tool.svg +0 -0
  747. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/trash-2.svg +0 -0
  748. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/trash.svg +0 -0
  749. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/trello.svg +0 -0
  750. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/trending-down.svg +0 -0
  751. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/trending-up.svg +0 -0
  752. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/triangle.svg +0 -0
  753. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/truck.svg +0 -0
  754. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/tv.svg +0 -0
  755. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/twitch.svg +0 -0
  756. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/twitter.svg +0 -0
  757. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/type.svg +0 -0
  758. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/umbrella.svg +0 -0
  759. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/underline.svg +0 -0
  760. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/unlock.svg +0 -0
  761. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/upload-cloud.svg +0 -0
  762. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/upload.svg +0 -0
  763. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/user-check.svg +0 -0
  764. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/user-minus.svg +0 -0
  765. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/user-plus.svg +0 -0
  766. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/user-x.svg +0 -0
  767. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/user.svg +0 -0
  768. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/users.svg +0 -0
  769. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/video-off.svg +0 -0
  770. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/video.svg +0 -0
  771. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/voicemail.svg +0 -0
  772. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/volume-1.svg +0 -0
  773. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/volume-2.svg +0 -0
  774. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/volume-x.svg +0 -0
  775. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/volume.svg +0 -0
  776. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/watch.svg +0 -0
  777. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/wifi-off.svg +0 -0
  778. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/wifi.svg +0 -0
  779. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/wind.svg +0 -0
  780. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/x-circle.svg +0 -0
  781. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/x-octagon.svg +0 -0
  782. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/x-square.svg +0 -0
  783. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/x.svg +0 -0
  784. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/youtube.svg +0 -0
  785. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/zap-off.svg +0 -0
  786. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/zap.svg +0 -0
  787. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/zoom-in.svg +0 -0
  788. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/images/feather_svg/zoom-out.svg +0 -0
  789. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/libs/html/needstable.css +0 -0
  790. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/libs/html/needstable.js +0 -0
  791. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/libs/html/sphinx_needs_collapse.js +0 -0
  792. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/needsfile.json +0 -0
  793. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/nodes/__init__.py +0 -0
  794. /sphinx_needs-9.0.0/src/sphinx_needs/schema/__init__.py → /sphinx_needs-9.2.0/src/sphinx_needs/py.typed +0 -0
  795. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/roles/need_part.py +0 -0
  796. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/roles/variant.py +0 -0
  797. {sphinx_needs-9.0.0/src/sphinx_needs/services → sphinx_needs-9.2.0/src/sphinx_needs/schema}/__init__.py +0 -0
  798. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/schema/jsons/FieldBooleanSchemaType.schema.json +0 -0
  799. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/schema/jsons/FieldIntegerSchemaType.schema.json +0 -0
  800. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/schema/jsons/FieldMultiValueSchemaType.schema.json +0 -0
  801. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/schema/jsons/FieldNumberSchemaType.schema.json +0 -0
  802. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/schema/jsons/FieldStringSchemaType.schema.json +0 -0
  803. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/schema/jsons/LinkItemSchemaType.schema.json +0 -0
  804. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/schema/jsons/LinkSchemaType.schema.json +0 -0
  805. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/schema/jsons/SchemasRootType.schema.json +0 -0
  806. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/schema/process.py +0 -0
  807. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/schema/utils.py +0 -0
  808. {sphinx_needs-9.0.0/src/sphinx_needs/services/config → sphinx_needs-9.2.0/src/sphinx_needs/services}/__init__.py +0 -0
  809. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/services/base.py +0 -0
  810. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/templates/permalink.html +0 -0
  811. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/templates/time_measurements.html +0 -0
  812. {sphinx_needs-9.0.0 → sphinx_needs-9.2.0}/src/sphinx_needs/warnings.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: sphinx-needs
3
- Version: 9.0.0
3
+ Version: 9.2.0
4
4
  Summary: Sphinx needs extension for managing needs/requirements and specifications
5
5
  Author-email: team useblocks <info@useblocks.com>
6
6
  Requires-Python: >=3.11,<4
@@ -17,6 +17,7 @@ Classifier: Programming Language :: Python :: 3.13
17
17
  Classifier: Programming Language :: Python :: 3.14
18
18
  Classifier: Topic :: Documentation
19
19
  Classifier: Topic :: Utilities
20
+ Classifier: Typing :: Typed
20
21
  Classifier: Framework :: Sphinx :: Extension
21
22
  License-File: AUTHORS
22
23
  License-File: LICENSE
@@ -29,7 +30,8 @@ Requires-Dist: sphinx-data-viewer~=0.1.5
29
30
  Requires-Dist: sphinxcontrib-jquery~=4.0
30
31
  Requires-Dist: typing-extensions>=4.14.0
31
32
  Requires-Dist: minijinja~=2.15
32
- Requires-Dist: ub-project>=1.1.0,<2
33
+ Requires-Dist: ub-project>=1.2.0,<2
34
+ Requires-Dist: ub-needs-exchange>=1.1.0,<2
33
35
  Requires-Dist: matplotlib>=3.3.0 ; extra == "docs"
34
36
  Requires-Dist: sphinxcontrib-plantuml~=0.0 ; extra == "docs"
35
37
  Requires-Dist: sphinx-copybutton~=0.5 ; extra == "docs"
@@ -37,6 +39,7 @@ Requires-Dist: sphinxcontrib-programoutput~=0.17 ; extra == "docs"
37
39
  Requires-Dist: sphinx-design~=0.6 ; extra == "docs"
38
40
  Requires-Dist: sphinx-ai-index>=1.0.0,<2 ; extra == "docs"
39
41
  Requires-Dist: sphinx-syntax-example~=0.2.0 ; extra == "docs"
42
+ Requires-Dist: sphinxcontrib-mermaid>=1.0.0,<3 ; extra == "docs"
40
43
  Requires-Dist: matplotlib>=3.3.0 ; extra == "plotting"
41
44
  Requires-Dist: furo>=2025.12.19 ; extra == "theme-furo"
42
45
  Requires-Dist: sphinx-immaterial>=0.11.11,<0.14.0 ; extra == "theme-im"
@@ -0,0 +1,51 @@
1
+ /* This site's own rules for the https://pradyunsg.me/furo theme. The useblocks look every
2
+ furo site in this repository shares is docs-theme/static/ub-furo.css, which loads before
3
+ this file; what is here is used by these docs alone. */
4
+
5
+ /* the hero background on the landing page */
6
+ body {
7
+ --sn-architecture-bg: url(../architecture_bg-light.png);
8
+ }
9
+
10
+ @media not print {
11
+ body[data-theme="dark"] {
12
+ --sn-architecture-bg: url(../architecture_bg-dark.png);
13
+ }
14
+
15
+ @media (prefers-color-scheme: dark) {
16
+ body:not([data-theme="light"]) {
17
+ --sn-architecture-bg: url(../architecture_bg-dark.png);
18
+ }
19
+ }
20
+ }
21
+
22
+ /** styling for the flowchart diagram on the landing page **/
23
+ svg.sn-flow-chart path.text {
24
+ fill: var(--color-foreground-primary);
25
+ }
26
+
27
+ svg.sn-flow-chart rect.box {
28
+ stroke: var(--color-foreground-border);
29
+ }
30
+
31
+ svg.sn-flow-chart path.arrow {
32
+ fill: var(--ub-color-brand-main);
33
+ }
34
+
35
+ /** sphinx-design additional styling **/
36
+ svg.fill-primary {
37
+ fill: var(--sd-color-primary);
38
+ }
39
+
40
+ /* the `dropdown` these docs redefine in conf.py (`sd_custom_directives`) */
41
+ .sn-dropdown-default .sd-summary-icon svg {
42
+ color: var(--color-admonition-title--note);
43
+ }
44
+
45
+ .sn-dropdown-default {
46
+ border-left: .2rem solid var(--color-admonition-title--note) !important;
47
+ }
48
+
49
+ .sn-dropdown-default .sd-summary-title {
50
+ border-width: 0 !important;
51
+ }
@@ -1,8 +1,9 @@
1
1
  /*
2
2
  * useblocks branding for the `ubc build html` site.
3
3
  *
4
- * The ubCode counterpart of `furo.css`, which brands the Sphinx build: same
5
- * identity, different engine. Wired up by `extra_css` in `docs/ubproject.toml`,
4
+ * The ubCode counterpart of `docs-theme/static/ub-furo.css` at the repository
5
+ * root (the look every furo site here shares, which brands the Sphinx build) and
6
+ * of this site's own `_css/furo.css`: same identity, different engine. Wired up by `extra_css` in `docs/ubproject.toml`,
6
7
  * and written entirely against the documented theming surface — the `--ubc-*`
7
8
  * custom properties and the `ub-*` class names
8
9
  * (docs/source/configuration/build_html.rst). Nothing here reaches into a rule
@@ -17,8 +18,9 @@
17
18
  * NOTE for the Sphinx side: this file sits under `html_static_path`, so
18
19
  * `sphinx-build` copies it into its own `_static/` — but it is deliberately
19
20
  * ABSENT from `html_css_files` in `docs/conf.py`. Sphinx is branded by
20
- * `furo.css`; linking this one there too would apply two theme layers to one
21
- * page. Leave it unlinked.
21
+ * `ub-furo.css` (added by the `ub_docs_theme` extension) and `_css/furo.css`;
22
+ * linking this one there too would apply two theme layers to one page. Leave it
23
+ * unlinked.
22
24
  */
23
25
 
24
26
  :root {
@@ -0,0 +1,462 @@
1
+ .. _api:
2
+
3
+ Python API
4
+ ==========
5
+
6
+ **Sphinx-Needs** provides an open API for other Sphinx-extensions to provide specific need-types, create needs or
7
+ make usage of the filter possibilities.
8
+
9
+ The API allows the injection of extra configuration, but
10
+ does not support manipulation of it (e.g remove need types),
11
+ to keep the final configuration transparent for the Sphinx project authors.
12
+
13
+ .. _api_public:
14
+
15
+ What is public
16
+ --------------
17
+
18
+ A project or an extension may rely on the documented surface of Sphinx-Needs: its
19
+ configuration, its directives and their options, the filter names (``c.*`` included), the
20
+ ``needs.json`` format, and the Python API this page documents (``create_need``,
21
+ ``resolve_need_option`` and reading the configuration through ``NeedsSphinxConfig`` among
22
+ it). A name in it -- a configuration key, a directive or an option, a filter name, a
23
+ ``needs.json`` key, a documented function, class, argument or attribute -- is renamed or
24
+ removed only after a deprecation: a ``needs.deprecated`` Sphinx warning (which
25
+ ``suppress_warnings`` silences) or a Python ``DeprecationWarning``, naming the replacement;
26
+ the old spelling is removed only in a major release. What a name does is not frozen: a minor
27
+ release may fix what it outputs, or report with a new warning what it accepted in silence,
28
+ and the changelog says what changed and what to do.
29
+
30
+ What this page labels **provisional** follows its label. Through 9.x that is the hop types
31
+ and ``NeedItemSource``'s general constructor with its keywords: a minor release may add an
32
+ optional field, a hop kind or a keyword, while a rename, a removal, or a change to the
33
+ meaning or type of an existing one waits for 10.0, because published sibling extensions
34
+ construct them. They stay outside the stable surface until ``needs.json`` carries them.
35
+
36
+ Anything else is internal, and may change in a minor release without a deprecation: a name
37
+ this page does not document, a module or a name starting with ``_``, and whatever is reached
38
+ through one. The extensions developed in the Sphinx-Needs repository are changed with it in
39
+ the same pull request, and released with a raised minimum version of Sphinx-Needs; an older
40
+ release of one of them may need upgrading together with Sphinx-Needs. New internal modules
41
+ start with ``_``, and public names live in, or are re-exported from, a public module with
42
+ ``__all__``; existing modules are not renamed wholesale.
43
+
44
+ .. _`api_configuration`:
45
+
46
+ Configuration
47
+ -------------
48
+
49
+ .. automodule:: sphinx_needs.api.configuration
50
+ :members:
51
+
52
+ .. _api_reading_configuration:
53
+
54
+ Reading the configuration
55
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
56
+
57
+ .. py:currentmodule:: sphinx_needs.config
58
+
59
+ .. py:class:: NeedsSphinxConfig(config)
60
+
61
+ The project's Sphinx-Needs configuration, for an extension to read:
62
+ ``NeedsSphinxConfig(app.config).<name>`` is the configuration value ``needs_<name>`` as
63
+ resolved, with :ref:`needs_from_toml` applied, and for ``types``, ``layouts``,
64
+ ``functions`` and ``warnings`` with what extensions and the configured services add
65
+ included. Read it from a ``builder-inited`` handler or later; in ``config-inited``, from
66
+ a handler at a priority above 600, once sphinx-needs has merged its defaults and compiled
67
+ the card layouts (``types`` alone is complete from a priority above 12). What an
68
+ extension adds is included once the extension has added it.
69
+
70
+ .. code-block:: python
71
+
72
+ from sphinx_needs.config import NeedsSphinxConfig
73
+
74
+ need_types = {t["directive"]: t for t in NeedsSphinxConfig(app.config).types}
75
+
76
+ Every attribute named after a Sphinx-Needs configuration value (:ref:`config`),
77
+ without the ``needs_`` prefix, is stable to read; ``functions`` gives the dynamic
78
+ functions by name, a mapping, where ``needs_functions`` is a list. Reading only: setting
79
+ a value through it is not supported. Its other members are internal, but one:
80
+
81
+ .. py:attribute:: variant_data_proxy
82
+
83
+ The ``var`` proxy that filters read over the variant data (``needs_variant_data``,
84
+ merged with its file), or ``None`` when there is none. Read-only.
85
+
86
+ .. py:currentmodule:: None
87
+
88
+ .. autoclass:: sphinx_needs.functions.functions.DynamicFunction
89
+ :members: __name__,__call__
90
+
91
+ .. autoclass:: sphinx_needs.functions.functions.Reads
92
+
93
+ Need
94
+ ----
95
+
96
+ .. autofunction:: sphinx_needs.api.need.create_need
97
+
98
+ .. automodule:: sphinx_needs.api.need
99
+ :members:
100
+ :exclude-members: create_need
101
+
102
+ .. _api_migrating_add_need:
103
+
104
+ Migrating from ``add_need``
105
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
106
+
107
+ .. deprecated:: 9.2.0
108
+
109
+ :func:`~sphinx_needs.api.need.add_need` is deprecated, and is removed in 10.0. Each
110
+ call is one Python ``DeprecationWarning`` at the calling line (not a Sphinx warning, so
111
+ a ``-W`` build of a project using an extension that still calls it is not failed by
112
+ it).
113
+
114
+ :func:`~sphinx_needs.api.need.create_need` takes the need's location as one
115
+ :class:`~sphinx_needs.need_item.NeedItemSource`, and its field values and links as two
116
+ mappings, kept apart from its own arguments, so no name a project gives a field meets one
117
+ of them. In a directive the source is ``NeedItemSource.from_directive(self)``:
118
+
119
+ .. code-block:: python
120
+
121
+ # before
122
+ from sphinx.util.docutils import SphinxDirective
123
+
124
+ from sphinx_needs.api import add_need
125
+
126
+
127
+ class ReqDirective(SphinxDirective):
128
+ def run(self):
129
+ return add_need(
130
+ self.env.app, self.state, self.env.docname, self.lineno,
131
+ "req", self.arguments[0],
132
+ id=self.options.get("id"), status="open", priority="high", links="REQ_0",
133
+ )
134
+
135
+ .. code-block:: python
136
+
137
+ # after
138
+ from sphinx.util.docutils import SphinxDirective
139
+
140
+ from sphinx_needs.api import NeedItemSource, create_need
141
+
142
+
143
+ class ReqDirective(SphinxDirective):
144
+ def run(self):
145
+ need, nodes = create_need(
146
+ self.env.app, self.state, NeedItemSource.from_directive(self),
147
+ "req", self.arguments[0],
148
+ id=self.options.get("id"),
149
+ fields={"status": "open", "priority": "high"},
150
+ links={"links": "REQ_0"},
151
+ )
152
+ return nodes
153
+
154
+ ``from_directive`` works for any docutils ``Directive``, not only a ``SphinxDirective``.
155
+ With it, ``need["lineno"]`` is the line the directive is written on, which differs from
156
+ ``self.lineno`` where ``rst_prolog``, an include or generated input shifts the parser's
157
+ count; to keep the old number exactly, use
158
+ ``NeedItemSource.on_page(self.env.docname, lineno=self.lineno)``, which is the source
159
+ ``add_need`` built. ``on_page`` gives the need its page and the line the caller passes,
160
+ nothing more, so it is the source wherever the caller chooses the line: the directive's own
161
+ parser line, as ``add_need`` took it, or the lines a directive's data names. It works in a docutils
162
+ ``Directive`` and in a nested parse alike, and is also the ``need_source`` to give
163
+ ``generate_need``; ``create_need`` records the page's file on its hop, ``generate_need``,
164
+ which has no application, does not.
165
+ ``from_directive`` and ``on_page`` are stable, as the class's name is; the hops they build,
166
+ and ``NeedItemSource``'s general constructor with its keywords (``hops``, ``lineno``,
167
+ ``lineno_content``, ``parser_lineno``, ``is_import``), are provisional until needs.json
168
+ carries them: through 9.x a minor release only adds to them, and a rename or a removal
169
+ waits for 10.0 (see :ref:`api_public`, and the provisional note under "Data", below). The
170
+ constructor is for sphinx-needs' own producers and advanced use. ``create_need`` takes a
171
+ ``NeedItemSource`` and nothing else: an object with the ``NeedItemSourceProtocol``
172
+ interface alone is refused with a ``TypeError``.
173
+
174
+ A need placed on a page is created with a parser state, through ``create_need`` as through
175
+ ``add_need``: an event handler or a role, which has none, cannot create one, and without a
176
+ state only an external need can be created (``add_external_need``). Where ``add_need``
177
+ refused that with an ``AssertionError``, ``create_need`` raises ``ValueError``.
178
+
179
+ .. deprecated:: 9.2.0
180
+
181
+ A ``need_source`` that is not a ``NeedItemSource`` -- an object with the
182
+ ``NeedItemSourceProtocol`` interface alone -- given to
183
+ :func:`~sphinx_needs.api.need.generate_need`,
184
+ :func:`~sphinx_needs.api.need.add_external_need` or
185
+ :func:`~sphinx_needs.api.need.ingest_need_record` is one Python ``DeprecationWarning``
186
+ at the calling line, and the need is created as before; it is refused from 10.0, as
187
+ ``create_need`` refuses it now. ``add_need`` gives no second warning for it.
188
+
189
+ ``add_need``'s other arguments:
190
+
191
+ .. list-table::
192
+ :header-rows: 1
193
+ :widths: 40 60
194
+
195
+ * - ``add_need``
196
+ - ``create_need``
197
+ * - ``docname``, ``lineno``
198
+ - ``source=NeedItemSource.from_directive(self)``; for a line the caller gives
199
+ (``add_need``'s ``self.lineno``), ``NeedItemSource.on_page(docname, lineno=lineno)``
200
+ * - ``lineno_content``
201
+ - ``from_directive`` sets it (the provisional constructor takes ``lineno_content=``)
202
+ * - ``need_source``
203
+ - ``source``, a ``NeedItemSource`` (an object with the ``NeedItemSourceProtocol``
204
+ interface alone, which ``add_need`` took, is refused)
205
+ * - ``status``, ``tags``, ``constraints``, ``hide``, ``collapse``, ``style``,
206
+ ``layout``, ``template``, ``pre_template``, ``post_template``, and every field
207
+ - ``fields={...}``
208
+ * - every link type
209
+ - ``links={...}``
210
+ * - ``id``, ``content``, ``doctype``, ``jinja_content``, ``full_title``,
211
+ ``allow_type_coercion``
212
+ - the same keyword
213
+ * - ``is_external``, ``external_url``, ``external_css``
214
+ - :func:`~sphinx_needs.api.need.add_external_need`, which is not deprecated (an
215
+ ``external`` hop as ``create_need``'s source, with ``state=None``, is the
216
+ provisional hop type, and takes no ``external_css``)
217
+ * - ``is_import``
218
+ - ``NeedItemSource(..., is_import=True)`` (the provisional constructor), or
219
+ :func:`~sphinx_needs.api.need.ingest_need_record` for a needs.json-style record
220
+ * - ``parts``, ``arch``, ``sections``, ``signature``
221
+ - none: for a need on the page they are computed from its content and the page (a
222
+ record's ``parts`` and ``arch`` through
223
+ :func:`~sphinx_needs.api.need.ingest_need_record`); an external need ``add_need``
224
+ made kept them as given, which neither ``create_need`` nor ``add_external_need``
225
+ takes
226
+ * - the deprecated ``links_string``, ``hide_tags``, ``hide_status``, ``delete``,
227
+ ``constraints_passed``
228
+ - none (``add_need`` drops them, with a warning)
229
+ * - the return value, ``list[nodes.Node]``
230
+ - ``(need, nodes)``: the need as recorded, and the nodes
231
+
232
+ The five source classes of 9.1.0, ``NeedItemSourceUnknown``, ``NeedItemSourceDirective``,
233
+ ``NeedItemSourceService``, ``NeedItemSourceExternal`` and ``NeedItemSourceImport``, are
234
+ deprecated names of :mod:`sphinx_needs.need_item` until 10.0: each is a function taking its
235
+ class's keywords and returning the ``NeedItemSource`` with the legacy keys that class gave,
236
+ and reading one is a ``DeprecationWarning``. ``NeedItemSourceUnknown(docname=docname,
237
+ lineno=lineno)`` is ``NeedItemSource.on_page(docname, lineno=lineno)``.
238
+
239
+ .. _api_content_markup:
240
+
241
+ Content written in another markup
242
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
243
+
244
+ An extension that creates needs whose text was written somewhere else -- a comment in a
245
+ source file, an imported file -- in a markup that is not the page's passes
246
+ ``MarkupContent(text, markup=..., source=...)`` as the ``content`` of
247
+ :func:`~sphinx_needs.api.need.create_need` (:func:`~sphinx_needs.api.need.add_need` takes
248
+ the same ``content``). ``markup`` is the source suffix of that markup
249
+ (``".rst"``, ``".md"``, or any suffix ``source_suffix`` maps to a reStructuredText or MyST
250
+ parser): the content is parsed by that parser, whatever the page's parser, and the need
251
+ records the suffix as its ``doctype``. With ``source=(path, first_line)``, the warnings
252
+ raised while parsing the content, and those for references in it that do not resolve,
253
+ name ``path`` and the line the content came from rather than the page -- through
254
+ ``sphinx.util.docutils.switch_source_input``, the same mechanism ``sphinx.ext.autodoc`` uses
255
+ to report a docstring's lines at the Python file. ``create_need`` takes no other argument
256
+ for this, and takes the fields and links as mappings, so no field or link name is reserved.
257
+ :func:`~sphinx_needs.api.need.ingest_need_record` creates a need from a needs.json-style
258
+ record, and is the path :ref:`needimport` itself takes for each need it imports; with
259
+ :ref:`needs_import_parse_by_doctype` or its ``:parse_by_doctype:`` option set, needimport
260
+ passes a record's ``doctype`` as the content's markup when the project parses it and the
261
+ need is not rendered through a template.
262
+
263
+ .. autoclass:: sphinx_needs.api.MarkupContent
264
+
265
+ The content is parsed into the page it is rendered on, so a label defined in it belongs to
266
+ that page and other pages reference it there. The warnings myst-parser logs itself, such as
267
+ an unknown directive or role in Markdown content, name the page with the content's line;
268
+ with myst-parser 4 their file is the content's path with ``.rst`` appended. In a
269
+ reStructuredText page, MyST content's ``[text](#anchor)`` links are not resolved and a
270
+ missing anchor is not reported; use the ``{ref}`` and ``{need}`` roles, which work in both.
271
+
272
+ What such content should not contain
273
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
274
+
275
+ This version parses the content as the page would parse it, and refuses none of the
276
+ following; a later version will, as ubCode's reader already does:
277
+
278
+ - directives that read files (``include``, ``literalinclude``, ``csv-table`` with
279
+ ``:file:``, ``raw`` with ``:file:``), and images and other references to files by a
280
+ relative path: Sphinx's ``include``, ``literalinclude`` and images, and everything in
281
+ MyST content, resolve against the page, while ``csv-table :file:`` and ``raw :file:``
282
+ in reStructuredText content resolve against the content's file;
283
+ - ``raw``, and raw HTML in Markdown;
284
+ - need or ``needimport`` directives: the needs they create are recorded against the page;
285
+ - anything relying on the page's substitutions or ``rst_prolog``: it works, but the same
286
+ text means something else on another page.
287
+
288
+ Events
289
+ ------
290
+
291
+ **Sphinx-Needs** registers two Sphinx events, which an extension connects to with
292
+ ``app.connect(event_name, callback)``. Both are emitted once per build, in the main
293
+ process (also in a parallel build), when the needs are first requested after all
294
+ documents are read. Each callback is called as ``callback(app, needs)``, where ``needs``
295
+ is the mutable mapping of need ids to needs, :py:obj:`~sphinx_needs.data.NeedsMutable`.
296
+
297
+ ``needs-before-post-processing``
298
+ Emitted before the ``needextend`` directives are applied and before dynamic
299
+ functions, links and constraints are resolved. This is the hook for an extension that
300
+ writes into the needs: a ``needextend`` in a document is applied afterwards, and can
301
+ override what the extension wrote.
302
+
303
+ ``needs-before-sealing``
304
+ Emitted after those steps, and before the needs become read-only. A callback sees
305
+ the needs as the ``needextend`` directives left them, with dynamic functions, links
306
+ and constraints resolved.
307
+
308
+ .. code-block:: python
309
+
310
+ def default_status(app, needs):
311
+ for need in needs.values():
312
+ if need["type"] == "req" and not need["status"]:
313
+ need["status"] = "draft"
314
+
315
+ def setup(app):
316
+ app.connect("needs-before-post-processing", default_status)
317
+
318
+ A field with a :ref:`derive <needs_derive>` rule cannot be set from a callback, a
319
+ :ref:`filter function <filter_func>` or a :ref:`dynamic function <dynamic_functions>`: it holds
320
+ what its rule computes, and ``need[name] = value`` raises ``KeyError``.
321
+
322
+
323
+ Exceptions
324
+ ----------
325
+
326
+ .. automodule:: sphinx_needs.exceptions
327
+ :members:
328
+
329
+ Data
330
+ ----
331
+
332
+ .. automodule:: sphinx_needs.need_item
333
+ :members: NeedItem, NeedLink, NeedPartItem, NeedItemSource, NeedItemSourceProtocol, NeedsContent, NeedPartData, NeedModification, NeedConstraintResults
334
+
335
+ .. note::
336
+
337
+ **Stable**: ``NeedItemSource``'s name, ``NeedItemSource.from_directive`` and ``NeedItemSource.on_page``, and
338
+ reading a source through ``NeedItemSourceProtocol`` (``dict_repr``). **Provisional**: ``NeedItemSource``'s general
339
+ constructor and its keywords (``hops``, ``lineno``, ``lineno_content``, ``parser_lineno``, ``is_import``), the
340
+ stored legacy facts a later release turns into projections, for sphinx-needs' own producers and advanced use; and
341
+ the hops, below. Provisional means additions only through 9.x: a minor release may add an optional field, a hop
342
+ kind or a keyword, and a rename, a removal, or a change to an existing one's meaning or type waits for 10.0,
343
+ because published sibling extensions construct them (:ref:`api_public`).
344
+
345
+ **Provisional**: a :class:`~sphinx_needs.need_item.NeedItemSource` has ``hops``, where the need's text came from,
346
+ innermost first; the hop types, ``NeedSourceHop``, ``NeedSourcePhysical`` and ``NeedSourceSemantic``, are
347
+ importable from ``sphinx_needs.api``. The first hop is the innermost place sphinx-needs knows the need came through: for a need
348
+ directive or ``list2need``, the file the need is written in (an included file's own, in an include; the module,
349
+ for an autodoc docstring); for an imported need, the ``needs.json`` it was read from (where the exporting project
350
+ wrote the need is not a hop yet); for a service, the service that made it, then the file of the ``needservice``
351
+ directive; for an external need, its page on the other site, its only hop, with the need's sections there as its
352
+ semantic location, outermost first (the legacy ``sections`` keeps them innermost first). In a nested reStructuredText include,
353
+ the included file's hop is followed by one ``file`` hop per file it was included through, innermost first, each
354
+ with its path and suffix and no line, as docutils' ``include_log`` names them. Two known gaps: myst-parser's
355
+ ``{include}`` is never logged, so a chain through MyST includes records its reStructuredText links alone (a
356
+ reStructuredText include in ``eval-rst`` is logged, a MyST include around it is not), and under docutils 0.22 and
357
+ later a file included with ``:parser:`` is not logged (it is parsed into a document of its own), so it is no link
358
+ of a chain through it, and a need written in that file itself records no chain at all (docutils 0.21 logs it). A
359
+ need created
360
+ through ``add_need`` or ``NeedItemSource.on_page`` has its page alone, whose file ``create_need`` records with no line
361
+ (the line the caller gives is not checked in the file); ``generate_need`` has no application, so it records no
362
+ page path; and no hops without a document
363
+ (``NeedItemSource.from_directive`` records the directive's file and lines, as a need directive does). The last hop with a ``document`` is
364
+ the page the need is placed on (an external need has none), and carries its sections and the domain objects it
365
+ is written in, outermost first. A hop has a line
366
+ range only where the file, read from disk, holds the need's text there: in reStructuredText every line of the
367
+ directive equals the file's line (whole lines, after a block quote's or a table cell's border, and the bullets of
368
+ the list item the directive opens); in MyST the line opens the directive's fence with its name and title.
369
+ Elsewhere the hop has no line. A recorded line can still be wrong only where the file holds an identical copy of
370
+ the need's text at the line the parser claims: a MyST need nested at once inside an identical twin (same name, same
371
+ title). In reStructuredText, a need in an included slice (``:start-after:``, ``:start-line:``) records the line it
372
+ is written on in the file, as its ``lineno`` and on its file hop, although docutils' own messages about the same
373
+ text (an unknown role in its content, say) name the line counted from the slice's start. It keeps the slice's line
374
+ where the slice cannot be matched with the file (an ``include-read`` handler that rewrote it, a file decoded
375
+ otherwise than with the project's ``source_encoding``, a ``:parser:`` include), and for a need in a table cell, in
376
+ ``list2need`` item content, in content parsed in a declared markup, or generated by a ``test-report``. Every path
377
+ is POSIX and relative to its hop's root: the source directory (``"srcdir"``, with ``..`` for a file outside it),
378
+ or, where ``root`` is ``None``, the producer's own root, which this build does not know, the path as the producer
379
+ gives it (a test report's test file, relative to the test run's root). A hop's ``semantic`` is ``None`` where it is
380
+ not determined, or where nothing finer than the file is known. Until the shape reaches ``needs.json``, a 9.x minor
381
+ release only adds to it, as above; ``NeedItemSourceProtocol`` does not include it, so read it with
382
+ ``getattr(need.source, "hops", ())``. A filter reads it through the ``c.source`` facets (:ref:`filter_source`),
383
+ its stable view: each facet names a position in the hops (``c.source.path`` the innermost, ``c.source.paths`` every
384
+ one), and keeps its meaning when the hops change shape. Nothing a table or ``needs.json`` shows depends on it.
385
+
386
+ A hop's ``language`` is what its text is written in, by the kind of hop: for a ``page`` hop, the page's suffix
387
+ its parser keys on (``.rst``, ``.md``); for a ``file`` hop, the file's own suffix (``.rst``, ``.json``; an
388
+ included ``inc.rst.txt`` records ``.txt``, whichever parser reads it); for a ``code`` hop, the language's name
389
+ (``python``, ``cpp``, ...), as sphinx-codelinks records it, as the ``code`` hop of a docstring autodoc reads
390
+ records it (``python``), and as sphinx-test-reports names a test case's file by its suffix (none for a suffix it
391
+ does not know).
392
+
393
+ A semantic entry's ``kind`` is in the vocabulary of its hop's kind and producer: a ``page`` hop's entries use the
394
+ document's (``section``, ``<domain>:<objtype>``), an ``external`` hop's are the ``section`` entries of the other
395
+ site's page, a ``generated`` hop's name its generator (``service``), and a
396
+ ``code`` hop's use its producer's entity kinds, read with the hop's ``language``: sphinx-codelinks' bare ones
397
+ (``function``, ``method``, ``class``, ``impl``, ...). In a ``code`` hop the kinds may carry
398
+ identity the names alone do not (Python's ``<locals>`` boundary is implied by a function or method followed by
399
+ another entry), so code hops compare by their producer's identity rule, not entry by entry. The innermost entry
400
+ of a ``code`` hop, the entity, carries its qualified name in its file as the producer renders it, a
401
+ ``("qualified_name", ...)`` extra: sphinx-codelinks' analysis renders it by the language (``ns::Widget::draw``,
402
+ ``<Widget as Shape>::area``, ``Shape.area.<locals>.inner``), and autodoc's docstring hop renders a Python entity
403
+ as sphinx-codelinks does (``make.<locals>.Made.go``), except a name CPython NFKC-normalises (``file`` reads
404
+ ``file`` in autodoc's hop and as written in sphinx-codelinks'). It is the producer's rendering of the entries'
405
+ names, so it adds no identity, and identity comparisons (sphinx-codelinks' ``name_chain``) leave it out. The
406
+ entity's own line range is not recorded: it is not identity.
407
+
408
+ Autodoc's docstring hop uses the same Python kinds as sphinx-codelinks, read from the syntax of the file the
409
+ docstring is defined in: ``class``, ``method`` for a ``def`` directly in a class, ``function`` for any other
410
+ ``def``, with ``<locals>`` implied, so a method of a class made in a function is ``function make > class Made >
411
+ method go``. A ``property``, a ``staticmethod`` or a ``classmethod`` is a ``method``, an exception a ``class``:
412
+ the page hop keeps autodoc's object type (``py:property``). An attribute documented with ``#:`` is a leaf
413
+ ``attribute`` (``class Shape > attribute sides``), where sphinx-codelinks attaches the same comment to the
414
+ enclosing class, or to the file. Autodoc names a docstring by its object's module and qualified name; the name is
415
+ tried at each module it starts with, longest first, and the definition it resolves to is trusted only where its
416
+ docstring holds every line of the need. The file is then that definition's, so a member inherited from another
417
+ module records that module's file. A module docstring
418
+ records its file alone. Where no definition holds the text, the hop records the file autodoc gives and nothing
419
+ finer, never another entity: an alias (autodoc names it by the object it aliases), an override that inherits its
420
+ docstring, an object made at run time, a function with no Python source. A function whose ``__module__`` is
421
+ rewritten to another module records that module's file, which does not hold the text either: a known gap.
422
+
423
+ .. autoclass:: sphinx_needs.api.NeedSourceHop
424
+ :members:
425
+
426
+ .. autoclass:: sphinx_needs.api.NeedSourcePhysical
427
+ :members:
428
+
429
+ .. autoclass:: sphinx_needs.api.NeedSourceSemantic
430
+ :members:
431
+
432
+ .. automodule:: sphinx_needs.data
433
+ :members: NeedsInfoType, NeedsInfoComputedType, NeedsSourceInfoType, NeedsMutable, NeedsPartType
434
+
435
+ Views
436
+ -----
437
+
438
+ These views are returned by certain functions, and injected into filters,
439
+ but should not be instantiated directly.
440
+
441
+ .. automodule:: sphinx_needs.views
442
+ :members:
443
+ :undoc-members:
444
+ :special-members: __iter__, __getitem__, __len__
445
+
446
+ Schema
447
+ ------
448
+
449
+ .. automodule:: sphinx_needs.needs_schema
450
+ :members: FieldsSchema, TypeFieldsSchema, FieldShape, LinkShape, FieldSchema,
451
+ FieldFunctionArray, LinksFunctionArray, FieldLiteralValue, LinkSchema,
452
+ LinkDisplayConfig, LinkTargetTypes, LinksLiteralValue, BackLinksSchema,
453
+ AllowedTypes, narrowing_problems
454
+
455
+ .. automodule:: sphinx_needs.derive
456
+ :members: DeriveRule, DeriveJoin, DeriveInvalid, DeriveCall
457
+
458
+ .. automodule:: sphinx_needs.schema.config
459
+ :members: FieldStringSchemaType, FieldBooleanSchemaType,
460
+ FieldIntegerSchemaType, FieldNumberSchemaType,
461
+ FieldMultiValueSchemaType,
462
+ LinkSchemaType, LinkItemSchemaType
@@ -47,6 +47,16 @@ As well as the ``needs`` data, each version in the **needs.json** file carries a
47
47
  This is a JSON schema for the data structure of a single need,
48
48
  and also includes a ``field_type`` for each field, to denote the source of the field,
49
49
  that can be one of: ``core``, ``links``, ``backlinks``, ``extra``.
50
+ A field, core or extra, is written as the project declares it for all need types together (a need type's own declaration is not written),
51
+ a :ref:`needs_fields` entry narrowing a core field included:
52
+ its type (with ``null`` where it is nullable), its item type and its default, but not its other constraints, such as an ``enum``.
53
+ A link type is written with its default links as a need holding them writes its links --
54
+ sorted and deduplicated, each with its condition under :ref:`needs_json_include_link_conditions` (the default) and without it otherwise:
55
+ the literal ``default`` of its :ref:`needs_links` entry
56
+ (a default a dynamic function or a variant computes is written ``[]``, as is a derived link type's,
57
+ but for one derived by type alone, whose default is the links of a need type without a rule).
58
+
59
+ How a needs.json is read is specified once, in the `needs.json exchange contract <https://github.com/useblocks/sphinx-needs/blob/master/packages/ub-needs-exchange/design/exchange-contract.md>`__ of the ``ub-needs-exchange`` library, through which :ref:`needimport` and :ref:`needs_external_needs` read it (ubCode is to vendor the contract's conformance corpus, and to be held to it); :ref:`needs_file` still reads the file with Python's ``json`` module, and moves to the library with the writer.
50
60
 
51
61
  See also :ref:`needs_json_exclude_fields`, :ref:`needs_json_remove_defaults`, :ref:`needs_reproducible_json`, and :ref:`needs_json_include_link_conditions` for more options on modifying the content of the ``needs.json`` file.
52
62
 
@@ -447,10 +447,9 @@ A header without a meta region leaves an empty band
447
447
  id in the normal reading direction.
448
448
 
449
449
  Layouts registered by services are not part of the collision set
450
- Services register their layouts later in the build than card layouts are compiled, so a
451
- card named after one of them — ``github``, for the :ref:`GitHub service <github_service>`
452
- — takes precedence over it silently, exactly as a :ref:`needs_layouts` entry of that name
453
- does today.
450
+ A layout a service registers is read after every configured layout, so a card named after
451
+ one of them — ``github``, for a configured :ref:`GitHub service <github_service>` — takes
452
+ precedence over it silently, exactly as a :ref:`needs_layouts` entry of that name does.
454
453
 
455
454
  Invalid specifications
456
455
  ----------------------