:Full Changelog: `1.3.0...v2.0.0 <https://github.com/useblocks/sphinx-needs/compare/1.3.0...faba19e>`__
This release is focussed on improving the internal code-base and its build time performance, as well as improved build warnings and other functionality improvements / fixes.
Changed
.......
* Add Sphinx 7 support and drop Python 3.7 (:pr:`1056`).
Sphinx 5, 6, 7 and Python 3.8 to 3.11 are now fully supported and tested.
* The ``matplotlib`` dependency (for ``needbar`` and ``needpie`` plots) is now optional, and should be installed with ``sphinx-needs[plotting]``, see :ref:`installation` (:pr:`1061`)
* The ``NeedsBuilder`` format name is changed to ``needs`` (:pr:`978`)
New
...
* Added Builder :ref:`needs_id_builder` and config option :ref:`needs_build_json_per_id` in ``conf.py`` (:pr:`960`)
* Added ``needs_reproducible_json`` config option for the needs builder, see :ref:`needs_build_json` (:pr:`1065`)
* Added error messages for constraint failures (:pr:`1036`)
Improved
........
Performance:
* General performance improvement (up to 50%) and less memory consumption (~40%).
* ``external_needs`` now uses cached templates to save generation time.
* Improved performance for :ref:`needextend` with single needs.
* Improved performance by memoizing the inline parse in ``build_need`` (:pr:`968`)
* Remove ``deepcopy`` of needs data (:pr:`1033`)
* Optimize ``needextend`` filter_needs usage (:pr:`1030`)
* Improve performance of needs builders by skipping document post-transforms (:pr:`1054`)
Other:
* Improve sphinx warnings (:pr:`975`, :pr:`982`)
All warnings are now suffixed with ``[needs]``, and can be suppressed (see `suppress_warnings <https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-suppress_warnings>`_)
* Improve logging for static file copies (:pr:`992`)
* Improve removal of hidden need nodes (:pr:`1013`)
* Improve ``process_constraints`` function (:pr:`1015`)
* Allow ``needextend`` directive to use dynamic functions (:pr:`1052`)
* Remove some unnecessary keys from output ``needs.json`` (:pr:`1053`)
Fixed
.....
* Fix gantt chart rendering (:pr:`984`)
* Fix ``execute_func`` (:pr:`994`)
* Fix adding sections to hidden needs (:pr:`995`)
* Fix ``NeedImport`` logic (:pr:`1006`)
* Fix creation of need title nodes (:pr:`1008`)
* Fix logic for ``process_needextend`` function (:pr:`1037`)
* Fix usage of reST syntax in prefix parameter of meta (:pr:`1046`)
Internal
........
* ๐ง Centralise access to sphinx-needs config to ``NeedsSphinxConfig`` (:pr:`998`)
* ๐ง Centralise sphinx ``env`` data access to ``SphinxNeedsData`` (:pr:`987`)
* ๐ง Consolidate needs data post-processing into ``post_process_needs_data`` function (:pr:`1039`)
* ๐ง Add strict type checking (:pr:`1000`, :pr:`1002`, :pr:`1042`)
* ๐ง Replace ``Directive`` with ``SphinxDirective`` (:pr:`986`)
* ๐ง Remove ``unwrap`` function (:pr:`1017`)
* ๐ง Add ``remove_node_from_tree`` utility function (:pr:`1063`)
* โป๏ธ Refactor needs post-processing function signatures (:pr:`1040`)
* ๐ Simplify Sphinx-Needs docs builds (:pr:`972`)
* ๐ Always use headless plantuml (:pr:`983`)
* ๐ Add intersphinx (:pr:`991`)
* ๐ Add outline of extension logic (:pr:`1012`)
* ๐ Fixed extra links example (:pr:`1016`)
* ๐งช Remove boilerplate from test build ``conf.py`` files (:pr:`989`, :pr:`990`)
* ๐งช Add headless java to test builds (:pr:`988`)
* ๐งช Add snapshot testing (:pr:`1019`, :pr:`1020`, :pr:`1059`)
* ๐งช Make documentation builds fail on warnings (:pr:`1005`)
* ๐งช Add testing of JS scripts using Cypress integrated into PyTest (:pr:`1051`)
* ๐งช Add code coverage to CI testing (:pr:`1067`)