Skip to content

Commit c1682ba

Browse files
authored
🔧 Remove unwrap function (#1017)
This run-time null check is effectively now replaced by the static type-checking.
1 parent a0ba9b4 commit c1682ba

27 files changed

+71
-102
lines changed

‎sphinx_needs/api/need.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from sphinx_needs.logging import get_logger
2929
from sphinx_needs.nodes import Need
3030
from sphinx_needs.roles.need_part import find_parts, update_need_with_parts
31-
from sphinx_needs.utils import jinja_parse, unwrap
31+
from sphinx_needs.utils import jinja_parse
3232

3333
logger = get_logger(__name__)
3434

@@ -512,7 +512,7 @@ def del_need(app: Sphinx, need_id: str) -> None:
512512
:param app: Sphinx application object.
513513
:param need_id: Sphinx need id.
514514
"""
515-
env = unwrap(app.env)
515+
env = app.env
516516
needs = SphinxNeedsData(env).get_or_create_needs()
517517
if need_id in needs:
518518
del needs[need_id]

‎sphinx_needs/builder.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
from sphinx_needs.data import NeedsInfoType, SphinxNeedsData
1111
from sphinx_needs.logging import get_logger
1212
from sphinx_needs.needsfile import NeedsList
13-
from sphinx_needs.utils import unwrap
1413

1514
log = get_logger(__name__)
1615

@@ -25,7 +24,7 @@ def write_doc(self, docname: str, doctree: nodes.document) -> None:
2524
pass
2625

2726
def finish(self) -> None:
28-
env = unwrap(self.env)
27+
env = self.env
2928
data = SphinxNeedsData(env)
3029
filters = data.get_or_create_filters()
3130
version = getattr(env.config, "version", "unset")
@@ -82,7 +81,7 @@ def get_target_uri(self, _docname: str, _typ: Optional[str] = None) -> str:
8281

8382

8483
def build_needs_json(app: Sphinx, _exception: Exception) -> None:
85-
env = unwrap(app.env)
84+
env = app.env
8685

8786
if not NeedsSphinxConfig(env.config).build_json:
8887
return
@@ -107,7 +106,7 @@ def write_doc(self, docname: str, doctree: nodes.document) -> None:
107106
pass
108107

109108
def finish(self) -> None:
110-
env = unwrap(self.env)
109+
env = self.env
111110
needumls = SphinxNeedsData(env).get_or_create_umls().values()
112111

113112
for needuml in needumls:
@@ -140,7 +139,7 @@ def get_target_uri(self, _docname: str, _typ: Optional[str] = None) -> str:
140139

141140

142141
def build_needumls_pumls(app: Sphinx, _exception: Exception) -> None:
143-
env = unwrap(app.env)
142+
env = app.env
144143
config = NeedsSphinxConfig(env.config)
145144

146145
if not config.build_needumls:
@@ -174,7 +173,7 @@ def write_doc(self, docname: str, doctree: nodes.document) -> None:
174173
pass
175174

176175
def finish(self) -> None:
177-
env = unwrap(self.env)
176+
env = self.env
178177
data = SphinxNeedsData(env)
179178
needs = data.get_or_create_needs().values() # We need a list of needs for later filter checks
180179
version = getattr(env.config, "version", "unset")
@@ -216,7 +215,7 @@ def get_target_uri(self, _docname: str, _typ: Optional[str] = None) -> str:
216215

217216

218217
def build_needs_id_json(app: Sphinx, _exception: Exception) -> None:
219-
env = unwrap(app.env)
218+
env = app.env
220219

221220
if not NeedsSphinxConfig(env.config).build_json_per_id:
222221
return

‎sphinx_needs/diagrams_common.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from sphinx_needs.data import NeedsFilteredBaseType, NeedsPartsInfoType
1919
from sphinx_needs.errors import NoUri
2020
from sphinx_needs.logging import get_logger
21-
from sphinx_needs.utils import get_scale, split_link_types, unwrap
21+
from sphinx_needs.utils import get_scale, split_link_types
2222

2323
try:
2424
from typing import TypedDict
@@ -169,7 +169,7 @@ def calculate_link(app: Sphinx, need_info: NeedsPartsInfoType, _fromdocname: str
169169
:param fromdocname:
170170
:return:
171171
"""
172-
builder = unwrap(app.builder)
172+
builder = app.builder
173173
try:
174174
if need_info["is_external"]:
175175
assert need_info["external_url"] is not None, "external_url must be set for external needs"

‎sphinx_needs/directives/need.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from sphinx_needs.logging import get_logger
2929
from sphinx_needs.need_constraints import process_constraints
3030
from sphinx_needs.nodes import Need
31-
from sphinx_needs.utils import add_doc, profile, unwrap
31+
from sphinx_needs.utils import add_doc, profile
3232

3333
logger = get_logger(__name__)
3434

@@ -296,8 +296,7 @@ def analyse_need_locations(app: Sphinx, doctree: nodes.document) -> None:
296296
(i.e. ones that should not be rendered in the output)
297297
are removed from the doctree.
298298
"""
299-
builder = unwrap(app.builder)
300-
env = unwrap(builder.env)
299+
env = app.env
301300

302301
needs = SphinxNeedsData(env).get_or_create_needs()
303302

@@ -376,8 +375,7 @@ def process_need_nodes(app: Sphinx, doctree: nodes.document, fromdocname: str) -
376375
node.parent.remove(node) # type: ignore
377376
return
378377

379-
builder = unwrap(app.builder)
380-
env = unwrap(builder.env)
378+
env = app.env
381379

382380
# If no needs were defined, we do not need to do anything
383381
if not hasattr(env, "needs_all_needs"):
@@ -430,8 +428,7 @@ def print_need_nodes(app: Sphinx, doctree: nodes.document, fromdocname: str, fou
430428
:param fromdocname:
431429
:return:
432430
"""
433-
builder = unwrap(app.builder)
434-
env = unwrap(builder.env)
431+
env = app.env
435432
needs = SphinxNeedsData(env).get_or_create_needs()
436433

437434
# We try to avoid findall as much as possibles. so we reuse the already found need nodes in the current document.

‎sphinx_needs/directives/needbar.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from sphinx_needs.config import NeedsSphinxConfig
1111
from sphinx_needs.data import SphinxNeedsData
1212
from sphinx_needs.filter_common import FilterBase, filter_needs, prepare_need_list
13-
from sphinx_needs.utils import add_doc, save_matplotlib_figure, unwrap
13+
from sphinx_needs.utils import add_doc, save_matplotlib_figure
1414

1515
if not os.environ.get("DISPLAY"):
1616
matplotlib.use("Agg")
@@ -168,8 +168,7 @@ def run(self) -> Sequence[nodes.Node]:
168168
# 9. final storage
169169
# 10. cleanup matplotlib
170170
def process_needbar(app: Sphinx, doctree: nodes.document, fromdocname: str, found_nodes: List[nodes.Element]) -> None:
171-
builder = unwrap(app.builder)
172-
env = unwrap(builder.env)
171+
env = app.env
173172
needs_config = NeedsSphinxConfig(env.config)
174173

175174
# NEEDFLOW

‎sphinx_needs/directives/needextend.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from sphinx_needs.data import SphinxNeedsData
1616
from sphinx_needs.filter_common import filter_needs
1717
from sphinx_needs.logging import get_logger
18-
from sphinx_needs.utils import add_doc, unwrap
18+
from sphinx_needs.utils import add_doc
1919

2020
logger = get_logger(__name__)
2121

@@ -75,8 +75,7 @@ def process_needextend(app: Sphinx, doctree: nodes.document, fromdocname: str) -
7575
"""
7676
Perform all modifications on needs
7777
"""
78-
builder = unwrap(app.builder)
79-
env = unwrap(builder.env)
78+
env = app.env
8079
needs_config = NeedsSphinxConfig(env.config)
8180
data = SphinxNeedsData(env)
8281
workflow = data.get_or_create_workflow()

‎sphinx_needs/directives/needextract.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
)
2020
from sphinx_needs.filter_common import FilterBase, process_filters
2121
from sphinx_needs.layout import create_need
22-
from sphinx_needs.utils import add_doc, unwrap
22+
from sphinx_needs.utils import add_doc
2323

2424

2525
class Needextract(nodes.General, nodes.Element):
@@ -75,7 +75,7 @@ def process_needextract(
7575
"""
7676
Replace all needextract nodes with a list of the collected needs.
7777
"""
78-
env = unwrap(app.env)
78+
env = app.env
7979
needs_config = NeedsSphinxConfig(app.config)
8080

8181
for node in found_nodes:

‎sphinx_needs/directives/needfilter.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from sphinx_needs.data import SphinxNeedsData
1313
from sphinx_needs.diagrams_common import create_legend
1414
from sphinx_needs.filter_common import FilterBase, process_filters
15-
from sphinx_needs.utils import add_doc, row_col_maker, unwrap
15+
from sphinx_needs.utils import add_doc, row_col_maker
1616

1717

1818
class Needfilter(nodes.General, nodes.Element):
@@ -74,8 +74,8 @@ def process_needfilters(
7474
) -> None:
7575
# Replace all needlist nodes with a list of the collected needs.
7676
# Augment each need with a backlink to the original location.
77-
builder = unwrap(app.builder)
78-
env = unwrap(builder.env)
77+
builder = app.builder
78+
env = app.env
7979
needs_config = NeedsSphinxConfig(env.config)
8080
all_needs = SphinxNeedsData(env).get_or_create_needs()
8181

‎sphinx_needs/directives/needflow.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from sphinx_needs.diagrams_common import calculate_link, create_legend
2222
from sphinx_needs.filter_common import FilterBase, filter_single_need, process_filters
2323
from sphinx_needs.logging import get_logger
24-
from sphinx_needs.utils import add_doc, get_scale, split_link_types, unwrap
24+
from sphinx_needs.utils import add_doc, get_scale, split_link_types
2525

2626
logger = get_logger(__name__)
2727

@@ -271,7 +271,7 @@ def cal_needs_node(
271271
def process_needflow(app: Sphinx, doctree: nodes.document, fromdocname: str, found_nodes: List[nodes.Element]) -> None:
272272
# Replace all needflow nodes with a list of the collected needs.
273273
# Augment each need with a backlink to the original location.
274-
env = unwrap(app.env)
274+
env = app.env
275275
needs_config = NeedsSphinxConfig(app.config)
276276
env_data = SphinxNeedsData(env)
277277
all_needs = env_data.get_or_create_needs()

‎sphinx_needs/directives/needgantt.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ def get_link_type_option(self, name: str, default: str = "") -> List[str]:
135135

136136
def process_needgantt(app: Sphinx, doctree: nodes.document, fromdocname: str, found_nodes: List[nodes.Element]) -> None:
137137
# Replace all needgantt nodes with a list of the collected needs.
138-
env = app.builder.env
138+
env = app.env
139139
needs_config = NeedsSphinxConfig(app.config)
140140

141141
# link_types = needs_config.extra_links

0 commit comments

Comments
 (0)