Changelog & License¶
Copyright (c) 2016-2022 useblocks GmbH
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- Full Changelog:
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.
Add Sphinx 7 support and drop Python 3.7 (#1056). Sphinx 5, 6, 7 and Python 3.8 to 3.11 are now fully supported and tested.
NeedsBuilderformat name is changed to
Added error messages for constraint failures (#1036)
General performance improvement (up to 50%) and less memory consumption (~40%).
external_needsnow uses cached templates to save generation time.
Improved performance for needextend with single needs.
Improved performance by memoizing the inline parse in
deepcopyof needs data (#1033)
needextendfilter_needs usage (#1030)
Improve performance of needs builders by skipping document post-transforms (#1054)
Improve logging for static file copies (#992)
Improve removal of hidden need nodes (#1013)
needextenddirective to use dynamic functions (#1052)
Remove some unnecessary keys from output
Fix gantt chart rendering (#984)
Fix adding sections to hidden needs (#995)
Fix creation of need title nodes (#1008)
Fix logic for
Fix usage of reST syntax in prefix parameter of meta (#1046)
🔧 Centralise access to sphinx-needs config to
🔧 Centralise sphinx
envdata access to
🔧 Consolidate needs data post-processing into
remove_node_from_treeutility function (#1063)
♻️ Refactor needs post-processing function signatures (#1040)
📚 Simplify Sphinx-Needs docs builds (#972)
📚 Always use headless plantuml (#983)
📚 Add intersphinx (#991)
📚 Add outline of extension logic (#1012)
📚 Fixed extra links example (#1016)
🧪 Add headless java to test builds (#988)
🧪 Make documentation builds fail on warnings (#1005)
🧪 Add testing of JS scripts using Cypress integrated into PyTest (#1051)
🧪 Add code coverage to CI testing (#1067)
Bugfix: Replace hardcoded index with config value root_doc. (#877)
Bugfix: Fix unbounded memory usage in pickle environment. (#912)
Bugfix: Supports “None” body in Github services. (#903)
Removed esbonio for IDE Support.
Removed configuration option needs_ide_snippets_id to support custom need ID for IDE Support snippets.
Removed configuration needs_ide_directive_snippets to support custom directive snippets for IDE features.
Provided new IDE support option: VsCode extension Sphinx-Needs-VsCode.
Bugfix: Changed needed version of jsonschema-lib to be not so strict. (#871)
Bugfix: Allowing newer versions of jsonschema. (#848)
Bugfix: Removed outdated JS codes that handles the collapse button. (#840)
Improvement: Write autogenerated images into output folder (#413)
Improvement: Added vector output support to need figures. (#815).
Bugfix: Needflow fix bug in child need handling. (#785).
Bugfix: Needextract handles image and download directives correctly. (#818).
Bugfix: Needextract handles substitutions correctly. (#835).
Bugfix: Expand/Collapse button does not work. (#795).
Bugfix: singlehtml and latex related builders are working again. (#796).
Bugfix: Needextend throws the same information 3 times as part of a single warning. (#747).
Improvement: Memory consumption and runtime improvements (#790).
Improvement: Obfuscate HTTP authentication credentials from log output. (#759)
Bugfix: needflow: nested needs on same level throws PlantUML error. (#799)
Improvement: Fixed issue with handling needs-variants by default. (#776)
Improvement: Performance fix needs processing. (#756)
Improvement: Performance fix for needflow. (#760)
Improvement: Fixed rendering issue with the debug layout. (#721)
Improvement: Added needs_show_link_id.
Bugfix: Fixed needuml key shown in need meta data by providing internal need option arch. (#687)
Bugfix: Fixed import() be included in needarch. (#730)
Improvement: needarch provide need() function to get “need data”. (#732)
Improvement: needuml - flow() shall return plantuml text without newline. (#737)
Bugfix: Needuml used but “sphinxcontrib.plantuml” not installed leads to exception (#742)
Improvement: better documentation of mixing orientation and coloring in needs_extra_links (#764)
Bugfix: Needarch: Fixed import() function to work with new implemented flow() (#737). (#752)
Bugfix: Needtable: generate id for nodes.table (#434)
Improvement: Updated pantuml in test folder to same version as in doc folder (#765)
Improvement: Added support for variants handling for need options. (#671)
Improvement: Added key option for needuml.
Bugfix: Fixed the collapse button issue for needs including nested needs. (#659)
Improvement: Added save option for needuml.
Improvement: Added filter function for needuml.
Improvement: Renamed jinja function need to flow for needuml.
Improvement: Added directive needarch.
Improvement: Added configuration option needs_ide_snippets_id to support custom need ID for IDE Support snippets.
Improvement: Added configuration needs_ide_directive_snippets to support custom directive snippets for IDE features. (#640)
Bugfix: Updated pip install URLs in Dockerfile. (#673)
Improvement: Providing IDE features support for ide_myst.
Notice: Sphinx <5.0 is no longer supported.
Notice: Docutils <0.18.1 is no longer supported.
Improvement: Provides needuml for powerful, reusable Need objects.
Improvement: Provides needreport for documenting configuration used in a Sphinx-Needs project’s conf.py.
Improvement: Provides initial support for Sphinx-Needs IDE language features. (#584)
Improvement: Support snippet for auto directive completion for Sphinx-Needs IDE language features.
Improvement: Added needs_constraints option. Constraints can be set for individual needs and describe properties a need has to meet.
Bugfix: Support embedded needs in embedded needs. (#486)
Bugfix: Correct references in needtables to be external or internal instead of always external.
Bugfix: Correct documentation and configuration in tags to list type.
Bugfix: needimport uses source-folder for relative path calculation (instead of confdir).
Improvement: Add permanent link layout function. (#390)
Improvement: Support for Sphinx-Needs Docker Image. (#531)
Improvement: Provides line number info for needs node. (#499)
Bugfix: Empty and invalid
need.jsonfiles throw user-friendly exceptions. (#441)
needrole supporting lower and upper IDs. (#508)
Bugfix: Correct image registration to support build via Sphinx API. (#505)
Bugfix: Correct css/js file registration on windows. (#455)
Improvement: Migrate tests to Pytest and Sphinx internal testing structure. (#471)
Improvement: needs_external_needs supports relative path for
Bugfix: Added implementation for simple_footer grid in Layouts Grids (#457)
Improvement: Better css table handling.
Improvement: Schema check for
Improvement: API to register warnings (#343)
Bugfix: Scrolling tables improved and ReadTheDocs Tables fixed (#305)
Improvement: Support for parallel sphinx-build when using
eval()handling for filter strings (#328)
Improvement: Internal performance measurement script
Improvement: Profiling support for selected functions
Bugfix: needtable shows attributes with value
Improvement: Support for Multiline options in templates.
Bugfix: needflow: links for need-parts get correctly calculated. (#205)
Bugfix: CSS update for ReadTheDocsTheme to show tables correctly. (#263)
current_needvar is accessible in all need-filters. (#169)
Bugfix: Sets defaults for color and style of need type configuration, if not set by user. (#151)
idin filter code handling. (#156)
Bugfix: Dynamic Functions registration working for external extensions. (#288)
Improvement: Parent needs of nested needs get collected and are available in filters. (#249)
Bugfix: Copying static files during sphinx build is working again. (#252)
Bugfix: Link function for layouts setting correct text. (#251)
Support: Removes support for Sphinx version <3.0 (Sphinx 2.x may still work, but it gets not tested).
Improvement: Internal change to poetry, nox and github actions. (#216)
Bugfix: Need-service calls get mocked during tests, so that tests don’t need reachable external services any more.
Bugfix: Needs nodes get
idsset directly, to avoid empty ids given by sphinx or other extensions for need-nodes. (#193)
Bugfix: Checking for ending / of given github api url. (#187)
Bugfix: Using correct indention for pre and post_template function of needs.
Bugfix: Certain log message don’t use python internal id any more. (#257)
Bugfix: JS-code for meta area collapse is working again. (#242)
Improvement: GitHub services added to fetch issues, pr or commits from GitHub or GitHub Enterprise.
Bugfix: Dynamic function registration via API supports new internal function handling (#147)
Bugfix: Deactivated linked gantt elements in needgantt, as PlantUML does not support them in its latest version (not beta).
Improvement: Clean up of internal configuration handling and avoiding needs_functions to get pickled by sphinx.
Bugfix: Dynamic functions can be used in links (text and url) now.
transparentfor transparent background to needflow configurations.
Improvement: needflow uses directive argument as caption now.
Improvement: Added option align to align needflow images.
Bugfix: Setting correct urls for needs in needflow charts.
Bugfix: Setting correct image candidates (#134)
Improvement: Sphinx-Needs configuration gets checked before build. (#118)
meta_links_alllayout function now supports an exclude parameter
Bugfix: needs_global_options handles None values correctly.
stylecan now be set.
Bugfix: needs_title_from_content takes
Bugfix: Setting css-attribute
white-space: normalfor all need-tables, which is set badly in some sphinx-themes. (Yes, I’m looking at you ReadTheDocs theme…)
meta_alllayout function also outputs extra links and the no_links parameter now works as expected
Bugfix: Added need-type as css-class back on need. Css class name is
needs_type_(need_type attribute). (#124)
Bugfix: Need access inside list comprehensions in Filter string is now working.
Improvement: Added new styles
Bugfix: Some minor css fixes for new layout system.
Improvement: Introduction of needs Layouts & Styles.
Bugfix: Need css style name is now based on need-type and not on the longer, whitespace-containing type name. Example:
need-testinstead of not valid
need-test case. (#108)
Bugfix: No more exception raise if
copyvalue not set inside needs_extra_links.
Improvement: Better log message, if required id is missing. (#112)
WARNING: This version changes a lot the html output and therefore the needed css selectors. So if you are using custom css definitions you need to update them.
Improvement: Role need supports standard sphinx-ref syntax. Example:
:need:`custom name <need_id>`
Improvement: Added Filter based global options to set values of global options only under custom circumstances.
Improvement: Dynamic function copy supports uppercase and lowercase transformation.
Improvement: Dynamic function copy supports filter_string.
Improvement: Added style option to allow custom styles for needs.
Improvement: Added style_row option to allow custom styles for table rows and columns.
Improvement: Provides API for other sphinx-extensions. See API for documentation.
Improvement: Added Support page.
Bugfix: Fixed deprecation warnings to support upcoming Sphinx3.0 API.
Improvement: In filter operations, all needs can be accessed by using keyword
Bugfix: Removed prefix from normal needs for needtable (#97)
Bugfix: Filters on needs with
id_completedo not raise an exception any more and filters gets executed correctly.
Improvement: Tables can be sorted by any alphanumeric option. (#92)
Improvement: Added config option needs_extra_links to define additional link types like blocks, tested by and more. Supports also style configuration and custom presentation names for links.
Improvement: Added export_id option for filter directives to export results of filters to
Bugfix: Unicode handling for Python 2.7 fixed. (#86)
Bugfix: needs_functions parameter in conf.py created a sphinx error, if containing python methods. Internal workaround added, so that usage of own Dynamic functions stays the same as in prior versions (#78)
Bugfix: Grubby tag/link strings in needs, which define empty links/tags, produce a warning now.
Bugfix: Better logging of document location, if a filter string is not valid.
Bugfix: Replaced all print-statements with sphinx warnings.
Improvement: The ID of a need is now printed as link, which can easily be used for sharing. (#75)
Bugfix: Filter functionality in different directives are now using the same internal filter function.
Improvement: Added needtable option show_parts.
Improvement: Added configuration option needs_part_prefix.
Improvement: Added docname to output file of builder needs
Bugfix: Added missing needs_import template to MANIFEST.ini.
Bugfix: A need_part / np without a given ID gets a random id based on its content now.
Bugfix: Calculation of outgoing links does not crash, if need_parts are involved.
Bugfix: Need representation in PDFs were broken (e.g. all meta data on one line).
Bugfix: Latex and Latexpdf are working again.
Bugfix: Links to parts of needs (need_part / np) are now stored and presented as links incoming of target link.
Improvement: Added dynamic function check_linked_values.
Improvement: Added dynamic function calc_sum.
Improvement: Added role need_count, which shows the amount of found needs for a given filter-string.
Improvement: Dynamic functions are now available to support calculation of need values.
Improvement: needs_functions can be used to register and use own dynamic functions.
Improvement: Added needs_global_options to set need values globally for all needs.
Improvement: Added needs_hide_options to hide specific options of all needs.
Bugfix: Removed needs are now deleted from existing needs.json (#68)
Bugfix: Fix for changes made in 0.2.5.
Bugfix: Fixed performance issue (#63)
Bugfix: Logging fixed (#50 )
Bugfix: Tests for custom styles are now working when executed with all other tests (#47)
Bugfix: Sphinx warnings fixed, if need-collapse was used. (#46)
Bugfix: dark.css, blank.css and common.css used wrong need-container selector. Fixed.
Improvement: Added needtable directive.
Improvement: Added needs_id_regex, which takes a regular expression and which is used to validate given IDs of needs.
Improvement: Added meta information shields on documentation page
Improvement: Added more examples to documentation
Bugfix: Care about unneeded separator characters in tags (#36)
Bugfix: Avoiding multiple registration of resource files (js, css), if sphinx gets called several times (e.g. during tests)
Bugfix: Needs with no status shows up on filters (#45)
Bugfix: Supporting Sphinx 1.7 (#41)
Bugfix: Supporting plantuml >= 0.9 (#38)
Bugfix: need_outgoing does not crash, if given need-id does not exist (#32)
Improvement: Added configuration option needs_role_need_template.
Bugfix: Referencing not existing needs will result in build warnings instead of a build crash.
- Refactoring: needs development files are stored internally under sphinxcontrib/needs, which is in sync with
most other sphinxcontrib-packages.
Bugfix: dark.css was missing in MANIFEST.in.
Improvement: Better output, if configured needs_css file can not be found during build.
Bugfix: Added python2/3 compatibility for needs_import.
Bugfix: needs with no status are handled the correct way now.
Bugfix: Import statements are checked, if Python 2 or 3 is used.
Improvement: Added “dark.css” as style
Bugfix: Removed “,” as as separator of links in need presentation.
Improvement: Added config parameter needs_css, which allows to set a css file.
Improvement: Most need-elements (title, id, tags, status, …) got their own html class attribute to support custom styles.
Improvement: Set default style “modern.css” for all projects without configured needs_css parameter.
Bugfix: Added LICENSE file (MIT)
Bugfix: Removed jinja activation
Bugfix: Added missing needimport_template.rst to package
Bugfix: Corrected version param of needimport
- Improvement: :links:, :tags: and other list-based options can handle “,” as delimiter
(beside documented “;”). No spooky errors are thrown any more if “,” is used accidentally.
Bugfix: Implemented 0.1.36 bugfix also for
Bugfix: Empty :links: and :tags: options for need / req (or any other defined need type) raise no error during build.
Improvement/Bug: Updated default node_template to use less space for node parameter representation
Improvement: Added :filter: option to needimport directive
Bugfix: Set correct default value for need_list option. So no more warnings should be thrown during build.
Bugfix: Imported needs gets sorted by id before adding them to the related document.
Improvement: New option tags for needimport directive
Bugfix: Handling of relative paths in needs builder
New feature: Directive needimport implemented
Improvement: needs-builder stores needs.json for all cases in the build directory (like _build/needs/needs.json) (See issue comment)
Bugfix: Wrong version in needs.json, if an existing needs.json got imported
Bugfix: Wrong need amount in initial needs.json fixed
Bugfix: Setting correct working directory during conf.py import
Bugfix: Better config handling, if Sphinx builds gets called multiple times during one single python process. (Configs from prio sphinx builds may still be active.)
Bugifx: Some clean ups for using Sphinx >= 1.6
Bugfix: Added missing dependency to setup.py: Sphinx>=1.6
Improvement: Builder needs added, which exports all needs to a json file.
Bugfix: Build has crashed, if sphinx-needs was loaded but not a single need was defined.
- Bugfix: Added support for multiple sphinx projects initialisations/builds during a single python process call.
(Reliable sphinx-needs configuration separation)
Improvement: Role need_outgoing was added to print outgoing links from a given need
Improvement: Role need_incoming was added to print incoming links to a given need
Bugfix: Reactivated jinja execution for documentation.
Improvement: complex filter has access to nearly all need variables (id, title, content, …)`.
Bugfix: If a duplicated ID is detected an error gets thrown.
Improvement: needfilter directives supports complex filter-logic by using parameter Filtering needs.
Improvement: Added word highlighting of need titles in linked pages of svg diagram boxes.
Bugfix for custom needs_types: Parameter in conf.py was not taken into account.
Added configuration parameter needs_id_required.
Backwards compatibility changes:
Reimplemented needlist as alias for
Added need directive/need as part of the default needs_types configuration.
Initial start for the changelog
Free definable need types (Requirements, Bugs, Tests, Employees, …)
Allowing configuration of needs with a
prefix for generated IDs
Added needfilter directive
Added layouts for needfilter:
diagram (based on plantuml)
Integrated interaction with the activated plantuml sphinx extension
Added role need to create a reference to a need by giving the id