22import os
33
44import sphinx
5+ import sphinx_needs
56from docutils .parsers .rst import directives
67from packaging .version import Version
78from sphinx .application import Sphinx
@@ -176,6 +177,14 @@ def sphinx_needs_update(app: Sphinx, config: Config) -> None:
176177 sphinx-needs configuration
177178 """
178179
180+ # Check sphinx-needs version to determine if schema is needed
181+ try :
182+ needs_version = Version (sphinx_needs .__version__ )
183+ use_schema = needs_version >= Version ("6.0.0" )
184+ except ImportError :
185+ # If we can't determine version, assume older version
186+ use_schema = False
187+
179188 # Extra options
180189 # For details read
181190 # https://sphinx-needs.readthedocs.io/en/latest/api.html#sphinx_needs.api.configuration.add_extra_option
@@ -187,17 +196,25 @@ def sphinx_needs_update(app: Sphinx, config: Config) -> None:
187196 add_extra_option (app , "case_name" )
188197 add_extra_option (app , "case_parameter" )
189198 add_extra_option (app , "classname" )
190- add_extra_option (app , "time" )
191-
192- add_extra_option (app , "suites" )
193- add_extra_option (app , "cases" )
194-
195- add_extra_option (app , "passed" )
196- add_extra_option (app , "skipped" )
197- add_extra_option (app , "failed" )
198- add_extra_option (app , "errors" )
199- add_extra_option (app , "result" ) # used by test cases only
200-
199+ # Add schema parameter conditionally based on sphinx-needs version
200+ if use_schema :
201+ add_extra_option (app , "time" , schema = {"type" : "string" })
202+ add_extra_option (app , "suites" , schema = {"type" : "integer" })
203+ add_extra_option (app , "cases" , schema = {"type" : "integer" })
204+ add_extra_option (app , "passed" , schema = {"type" : "integer" })
205+ add_extra_option (app , "skipped" , schema = {"type" : "integer" })
206+ add_extra_option (app , "failed" , schema = {"type" : "integer" })
207+ add_extra_option (app , "errors" , schema = {"type" : "integer" })
208+ add_extra_option (app , "result" , schema = {"type" : "string" })
209+ else :
210+ add_extra_option (app , "time" )
211+ add_extra_option (app , "suites" )
212+ add_extra_option (app , "cases" )
213+ add_extra_option (app , "passed" )
214+ add_extra_option (app , "skipped" )
215+ add_extra_option (app , "failed" )
216+ add_extra_option (app , "errors" )
217+ add_extra_option (app , "result" )
201218 # Extra dynamic functions
202219 # For details about usage read
203220 # https://sphinx-needs.readthedocs.io/en/latest/api.html#sphinx_needs.api.configuration.add_dynamic_function
0 commit comments