|
22 | 22 | NeedsTemplateException,
|
23 | 23 | )
|
24 | 24 | from sphinx_needs.config import NeedsSphinxConfig
|
| 25 | +from sphinx_needs.data import NeedsInfoType, SphinxNeedsData |
25 | 26 | from sphinx_needs.directives.needuml import Needuml, NeedumlException
|
26 | 27 | from sphinx_needs.filter_common import filter_single_need
|
27 | 28 | from sphinx_needs.logging import get_logger
|
@@ -271,11 +272,8 @@ def run():
|
271 | 272 | #############################################################################################
|
272 | 273 | # Add need to global need list
|
273 | 274 | #############################################################################################
|
274 |
| - # be sure, global var is available. If not, create it |
275 |
| - if not hasattr(env, "needs_all_needs"): |
276 |
| - env.needs_all_needs = {} |
277 | 275 |
|
278 |
| - if need_id in env.needs_all_needs: |
| 276 | + if need_id in SphinxNeedsData(env).get_or_create_needs(): |
279 | 277 | if id:
|
280 | 278 | raise NeedsDuplicatedId(
|
281 | 279 | f"A need with ID {need_id} already exists! "
|
@@ -307,7 +305,7 @@ def run():
|
307 | 305 | doctype = ".rst"
|
308 | 306 |
|
309 | 307 | # Add the need and all needed information
|
310 |
| - needs_info = { |
| 308 | + needs_info: NeedsInfoType = { |
311 | 309 | "docname": docname,
|
312 | 310 | "doctype": doctype,
|
313 | 311 | "lineno": lineno,
|
@@ -403,7 +401,7 @@ def run():
|
403 | 401 | content = new_content
|
404 | 402 | needs_info["content"] = new_content
|
405 | 403 |
|
406 |
| - env.needs_all_needs[need_id] = needs_info |
| 404 | + SphinxNeedsData(env).get_or_create_needs()[need_id] = needs_info |
407 | 405 |
|
408 | 406 | # Template builds
|
409 | 407 | ##############################
|
@@ -457,7 +455,7 @@ def run():
|
457 | 455 | if isinstance(child, Needuml):
|
458 | 456 | needuml_id = child.rawsource
|
459 | 457 | try:
|
460 |
| - needuml = env.needs_all_needumls.get(needuml_id) |
| 458 | + needuml = SphinxNeedsData(env).get_or_create_umls().get(needuml_id) |
461 | 459 | key_name = needuml["key"]
|
462 | 460 | if key_name:
|
463 | 461 | # check if key_name already exists in needs_info["arch"]
|
@@ -507,8 +505,9 @@ def del_need(app: Sphinx, need_id: str) -> None:
|
507 | 505 | :param need_id: Sphinx need id.
|
508 | 506 | """
|
509 | 507 | env = unwrap(app.env)
|
510 |
| - if need_id in env.needs_all_needs: |
511 |
| - del env.needs_all_needs[need_id] |
| 508 | + needs = SphinxNeedsData(env).get_or_create_needs() |
| 509 | + if need_id in needs: |
| 510 | + del needs[need_id] |
512 | 511 | else:
|
513 | 512 | logger.warning(f"Given need id {need_id} not exists! [needs]", type="needs")
|
514 | 513 |
|
|
0 commit comments