Skip to content

Commit f32d92f

Browse files
authored
⬆️ Fix astroid v3 integration (#39)
1 parent 2e48730 commit f32d92f

16 files changed

+85
-36
lines changed

docs/apidocs/aiida/aiida.common.rst

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -179,13 +179,17 @@ API
179179

180180
.. autodoc2-docstring:: aiida.common.datastructures.CalcInfo._default_fields
181181

182-
.. py:class:: CalcJobState
182+
.. py:class:: CalcJobState(*args, **kwds)
183183
:canonical: aiida.common.datastructures.CalcJobState
184184

185185
Bases: :py:obj:`enum.Enum`
186186

187187
.. autodoc2-docstring:: aiida.common.datastructures.CalcJobState
188188

189+
.. rubric:: Initialization
190+
191+
.. autodoc2-docstring:: aiida.common.datastructures.CalcJobState.__init__
192+
189193
.. py:attribute:: UPLOADING
190194
:canonical: aiida.common.datastructures.CalcJobState.UPLOADING
191195
:value: 'uploading'
@@ -462,13 +466,17 @@ API
462466

463467
.. autodoc2-docstring:: aiida.common.links.GraphTraversalRule
464468

465-
.. py:class:: GraphTraversalRules
469+
.. py:class:: GraphTraversalRules(*args, **kwds)
466470
:canonical: aiida.common.links.GraphTraversalRules
467471

468472
Bases: :py:obj:`enum.Enum`
469473

470474
.. autodoc2-docstring:: aiida.common.links.GraphTraversalRules
471475

476+
.. rubric:: Initialization
477+
478+
.. autodoc2-docstring:: aiida.common.links.GraphTraversalRules.__init__
479+
472480
.. py:attribute:: DEFAULT
473481
:canonical: aiida.common.links.GraphTraversalRules.DEFAULT
474482
:value: None
@@ -575,13 +583,17 @@ API
575583

576584
.. autodoc2-docstring:: aiida.common.exceptions.LicensingException.__init__
577585

578-
.. py:class:: LinkType
586+
.. py:class:: LinkType(*args, **kwds)
579587
:canonical: aiida.common.links.LinkType
580588

581589
Bases: :py:obj:`enum.Enum`
582590

583591
.. autodoc2-docstring:: aiida.common.links.LinkType
584592

593+
.. rubric:: Initialization
594+
595+
.. autodoc2-docstring:: aiida.common.links.LinkType.__init__
596+
585597
.. py:attribute:: CREATE
586598
:canonical: aiida.common.links.LinkType.CREATE
587599
:value: 'create'
@@ -846,13 +858,17 @@ API
846858

847859
.. autodoc2-docstring:: aiida.common.exceptions.RemoteOperationError.__init__
848860

849-
.. py:class:: StashMode
861+
.. py:class:: StashMode(*args, **kwds)
850862
:canonical: aiida.common.datastructures.StashMode
851863

852864
Bases: :py:obj:`enum.Enum`
853865

854866
.. autodoc2-docstring:: aiida.common.datastructures.StashMode
855867

868+
.. rubric:: Initialization
869+
870+
.. autodoc2-docstring:: aiida.common.datastructures.StashMode.__init__
871+
856872
.. py:attribute:: COPY
857873
:canonical: aiida.common.datastructures.StashMode.COPY
858874
:value: 'copy'

docs/apidocs/aiida/aiida.engine.rst

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,13 +235,17 @@ API
235235

236236
.. autodoc2-docstring:: aiida.engine.processes.workchains.awaitable.Awaitable
237237

238-
.. py:class:: AwaitableAction
238+
.. py:class:: AwaitableAction(*args, **kwds)
239239
:canonical: aiida.engine.processes.workchains.awaitable.AwaitableAction
240240

241241
Bases: :py:obj:`enum.Enum`
242242

243243
.. autodoc2-docstring:: aiida.engine.processes.workchains.awaitable.AwaitableAction
244244

245+
.. rubric:: Initialization
246+
247+
.. autodoc2-docstring:: aiida.engine.processes.workchains.awaitable.AwaitableAction.__init__
248+
245249
.. py:attribute:: ASSIGN
246250
:canonical: aiida.engine.processes.workchains.awaitable.AwaitableAction.ASSIGN
247251
:value: 'assign'
@@ -254,13 +258,17 @@ API
254258

255259
.. autodoc2-docstring:: aiida.engine.processes.workchains.awaitable.AwaitableAction.APPEND
256260

257-
.. py:class:: AwaitableTarget
261+
.. py:class:: AwaitableTarget(*args, **kwds)
258262
:canonical: aiida.engine.processes.workchains.awaitable.AwaitableTarget
259263

260264
Bases: :py:obj:`enum.Enum`
261265

262266
.. autodoc2-docstring:: aiida.engine.processes.workchains.awaitable.AwaitableTarget
263267

268+
.. rubric:: Initialization
269+
270+
.. autodoc2-docstring:: aiida.engine.processes.workchains.awaitable.AwaitableTarget.__init__
271+
264272
.. py:attribute:: PROCESS
265273
:canonical: aiida.engine.processes.workchains.awaitable.AwaitableTarget.PROCESS
266274
:value: 'process'
@@ -1126,13 +1134,17 @@ API
11261134

11271135
.. autodoc2-docstring:: aiida.engine.processes.process.Process.SINGLE_OUTPUT_LINKNAME
11281136

1129-
.. py:class:: SaveKeys
1137+
.. py:class:: SaveKeys(*args, **kwds)
11301138
:canonical: aiida.engine.processes.process.Process.SaveKeys
11311139

11321140
Bases: :py:obj:`enum.Enum`
11331141

11341142
.. autodoc2-docstring:: aiida.engine.processes.process.Process.SaveKeys
11351143

1144+
.. rubric:: Initialization
1145+
1146+
.. autodoc2-docstring:: aiida.engine.processes.process.Process.SaveKeys.__init__
1147+
11361148
.. py:attribute:: CALC_ID
11371149
:canonical: aiida.engine.processes.process.Process.SaveKeys.CALC_ID
11381150
:type: str

docs/apidocs/aiida/aiida.orm.rst

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2495,13 +2495,17 @@ API
24952495

24962496
.. autodoc2-docstring:: aiida.orm.extras.EntityExtras.keys
24972497

2498-
.. py:class:: EntityTypes
2498+
.. py:class:: EntityTypes(*args, **kwds)
24992499
:canonical: aiida.orm.entities.EntityTypes
25002500

25012501
Bases: :py:obj:`enum.Enum`
25022502

25032503
.. autodoc2-docstring:: aiida.orm.entities.EntityTypes
25042504

2505+
.. rubric:: Initialization
2506+
2507+
.. autodoc2-docstring:: aiida.orm.entities.EntityTypes.__init__
2508+
25052509
.. py:attribute:: AUTHINFO
25062510
:canonical: aiida.orm.entities.EntityTypes.AUTHINFO
25072511
:value: 'authinfo'

docs/apidocs/aiida/aiida.repository.rst

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,13 +300,17 @@ API
300300
.. py:method:: __repr__()
301301
:canonical: aiida.repository.common.File.__repr__
302302

303-
.. py:class:: FileType
303+
.. py:class:: FileType(*args, **kwds)
304304
:canonical: aiida.repository.common.FileType
305305

306306
Bases: :py:obj:`enum.Enum`
307307

308308
.. autodoc2-docstring:: aiida.repository.common.FileType
309309

310+
.. rubric:: Initialization
311+
312+
.. autodoc2-docstring:: aiida.repository.common.FileType.__init__
313+
310314
.. py:attribute:: DIRECTORY
311315
:canonical: aiida.repository.common.FileType.DIRECTORY
312316
:value: 0

docs/apidocs/aiida/aiida.schedulers.rst

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,13 +180,17 @@ API
180180

181181
.. autodoc2-docstring:: aiida.schedulers.datastructures.JobResource.get_tot_num_mpiprocs
182182

183-
.. py:class:: JobState
183+
.. py:class:: JobState(*args, **kwds)
184184
:canonical: aiida.schedulers.datastructures.JobState
185185

186186
Bases: :py:obj:`enum.Enum`
187187

188188
.. autodoc2-docstring:: aiida.schedulers.datastructures.JobState
189189

190+
.. rubric:: Initialization
191+
192+
.. autodoc2-docstring:: aiida.schedulers.datastructures.JobState.__init__
193+
190194
.. py:attribute:: UNDETERMINED
191195
:canonical: aiida.schedulers.datastructures.JobState.UNDETERMINED
192196
:value: 'undetermined'

docs/apidocs/autodoc2/autodoc2.astroid_utils.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ API
170170

171171
.. autodoc2-docstring:: autodoc2.astroid_utils.is_decorated_with_property_setter
172172

173-
.. py:function:: get_class_docstring(node: astroid.nodes.ClassDef) -> tuple[str, None | str]
173+
.. py:function:: get_class_docstring(node: astroid.nodes.ClassDef) -> tuple[str, str | None]
174174
:canonical: autodoc2.astroid_utils.get_class_docstring
175175

176176
.. autodoc2-docstring:: autodoc2.astroid_utils.get_class_docstring
@@ -205,7 +205,7 @@ API
205205

206206
.. autodoc2-docstring:: autodoc2.astroid_utils.get_args_info
207207

208-
.. py:function:: _iter_args(args: list[astroid.nodes.NodeNG], annotations: list[astroid.nodes.NodeNG], defaults: list[astroid.nodes.NodeNG]) -> typing.Iterable[typing.Tuple[str, None | str, str | None]]
208+
.. py:function:: _iter_args(args: list[astroid.nodes.NodeNG], annotations: list[astroid.nodes.NodeNG], defaults: list[astroid.nodes.NodeNG]) -> typing.Iterable[tuple[str, None | str, str | None]]
209209
:canonical: autodoc2.astroid_utils._iter_args
210210

211211
.. autodoc2-docstring:: autodoc2.astroid_utils._iter_args

docs/apidocs/autodoc2/autodoc2.config.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ API
140140

141141
.. autodoc2-docstring:: autodoc2.config._coerce_packages
142142

143-
.. py:function:: _validate_replace_list(name: str, item: typing.Any) -> list[typing.Tuple[str, str]]
143+
.. py:function:: _validate_replace_list(name: str, item: typing.Any) -> list[tuple[str, str]]
144144
:canonical: autodoc2.config._validate_replace_list
145145

146146
.. autodoc2-docstring:: autodoc2.config._validate_replace_list

docs/apidocs/autodoc2/autodoc2.db.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ Bases: {py:obj}`typing.Protocol`
8787
8888
````
8989
90-
````{py:method} get_item(full_name: str) -> typing.Optional[autodoc2.utils.ItemData]
90+
````{py:method} get_item(full_name: str) -> autodoc2.utils.ItemData | None
9191
:canonical: autodoc2.db.Database.get_item
9292
9393
```{autodoc2-docstring} autodoc2.db.Database.get_item
@@ -192,7 +192,7 @@ Bases: {py:obj}`autodoc2.db.Database`
192192
193193
````
194194
195-
````{py:method} get_item(full_name: str) -> typing.Optional[autodoc2.utils.ItemData]
195+
````{py:method} get_item(full_name: str) -> autodoc2.utils.ItemData | None
196196
:canonical: autodoc2.db.InMemoryDb.get_item
197197
198198
````

docs/apidocs/autodoc2/autodoc2.render.base.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ API
6565

6666
.. autodoc2-docstring:: autodoc2.render.base.RendererBase.warn
6767

68-
.. py:method:: get_item(full_name: str) -> typing.Optional[autodoc2.utils.ItemData]
68+
.. py:method:: get_item(full_name: str) -> autodoc2.utils.ItemData | None
6969
:canonical: autodoc2.render.base.RendererBase.get_item
7070

7171
.. autodoc2-docstring:: autodoc2.render.base.RendererBase.get_item

docs/apidocs/autodoc2/autodoc2.sphinx.autodoc.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ API
6565

6666
.. py:attribute:: option_spec
6767
:canonical: autodoc2.sphinx.autodoc.AutodocObject.option_spec
68+
:type: typing.ClassVar[dict[str, typing.Any]]
6869
:value: None
6970

7071
.. autodoc2-docstring:: autodoc2.sphinx.autodoc.AutodocObject.option_spec

docs/apidocs/autodoc2/autodoc2.sphinx.docstring.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ API
9494

9595
.. py:attribute:: option_spec
9696
:canonical: autodoc2.sphinx.docstring.DocstringRenderer.option_spec
97+
:type: typing.ClassVar[dict[str, typing.Any]]
9798
:value: None
9899

99100
.. autodoc2-docstring:: autodoc2.sphinx.docstring.DocstringRenderer.option_spec

docs/apidocs/autodoc2/autodoc2.sphinx.summary.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ API
6060

6161
.. py:attribute:: option_spec
6262
:canonical: autodoc2.sphinx.summary.AutodocSummary.option_spec
63+
:type: typing.ClassVar[dict[str, typing.Any]]
6364
:value: None
6465

6566
.. autodoc2-docstring:: autodoc2.sphinx.summary.AutodocSummary.option_spec

docs/apidocs/autodoc2/autodoc2.utils.rst

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,13 +186,17 @@ API
186186

187187
.. autodoc2-docstring:: autodoc2.utils.ItemData.inherited
188188

189-
.. py:class:: WarningSubtypes
189+
.. py:class:: WarningSubtypes(*args, **kwds)
190190
:canonical: autodoc2.utils.WarningSubtypes
191191

192192
Bases: :py:obj:`enum.Enum`
193193

194194
.. autodoc2-docstring:: autodoc2.utils.WarningSubtypes
195195

196+
.. rubric:: Initialization
197+
198+
.. autodoc2-docstring:: autodoc2.utils.WarningSubtypes.__init__
199+
196200
.. py:attribute:: CONFIG_ERROR
197201
:canonical: autodoc2.utils.WarningSubtypes.CONFIG_ERROR
198202
:value: 'config_error'

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ keywords = ["sphinx", "autodoc", "extension", "documentation"]
1919
urls = {Home = "https://github.com/chrisjsewell/sphinx-autodoc2"}
2020
requires-python = ">=3.8"
2121
dependencies = [
22-
"astroid>=2.7,<3",
22+
"astroid>=2.7,<4",
2323
"tomli; python_version<'3.11'",
2424
"typing-extensions"
2525
]

src/autodoc2/analysis.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,9 @@ def yield_module(node: nodes.Module, state: State) -> t.Iterable[ItemData]:
113113
parent: ItemData = {
114114
"type": "package" if node.package else "module",
115115
"full_name": node.name,
116-
"doc": fix_docstring_indent(node.doc),
116+
"doc": fix_docstring_indent(
117+
node.doc_node.value if node.doc_node is not None else None
118+
),
117119
"file_path": path,
118120
"encoding": node.file_encoding,
119121
"all": astroid_utils.get_module_all(node),

src/autodoc2/astroid_utils.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,11 @@ def resolve_annotation(annotation: nodes.NodeNG) -> str:
142142
elif isinstance(annotation, nodes.Subscript):
143143
value = resolve_annotation(annotation.value)
144144
slice_node = annotation.slice
145-
if isinstance(slice_node, nodes.Index):
146-
slice_node = slice_node.value
145+
try:
146+
if isinstance(slice_node, nodes.Index):
147+
slice_node = slice_node.value
148+
except AttributeError:
149+
pass # removed in astroid 3
147150
if isinstance(slice_node, nodes.Tuple):
148151
slice_ = ", ".join(resolve_annotation(elt) for elt in slice_node.elts)
149152
else:
@@ -206,10 +209,7 @@ def resolve_qualname(node: nodes.NodeNG, basename: str) -> str:
206209
full_basename = basename
207210

208211
top_level_name = re.sub(r"\(.*\)", "", basename).split(".", 1)[0]
209-
# Disable until pylint uses astroid 2.7
210-
lookup_node = (
211-
node if isinstance(node, nodes.node_classes.LookupMixIn) else node.scope()
212-
)
212+
lookup_node = node if isinstance(node, nodes.LocalsDictNodeNG) else node.scope()
213213

214214
assigns = lookup_node.lookup(top_level_name)[1]
215215

@@ -386,22 +386,22 @@ def is_decorated_with_property_setter(
386386
return False
387387

388388

389-
def get_class_docstring(node: nodes.ClassDef) -> tuple[str, None | str]:
389+
def get_class_docstring(node: nodes.ClassDef) -> tuple[str, str | None]:
390390
"""Get the docstring of a node, using a parent docstring if needed."""
391-
doc = node.doc
391+
doc_node = node.doc_node
392392

393-
if doc is None:
393+
if doc_node is None:
394394
for base in node.ancestors():
395395
if base.qname() in (
396396
"__builtins__.object",
397397
"builtins.object",
398398
"builtins.type",
399399
):
400400
continue
401-
if base.doc is not None:
402-
return str(base.doc), base.qname()
401+
if base.doc_node is not None:
402+
return base.doc_node.value, base.qname()
403403

404-
return doc or "", None
404+
return doc_node.value if doc_node is not None else "", None
405405

406406

407407
def is_exception(node: nodes.ClassDef) -> bool:
@@ -446,9 +446,9 @@ def is_overload_decorator(decorator: astroid.Name | astroid.Attribute) -> bool:
446446

447447
def get_func_docstring(node: nodes.FunctionDef) -> tuple[str, None | str]:
448448
"""Get the docstring of a node, using a parent docstring if needed."""
449-
doc = node.doc
449+
doc_node = node.doc_node
450450

451-
if doc is None and isinstance(node.parent, nodes.ClassDef):
451+
if doc_node is None and isinstance(node.parent, nodes.ClassDef):
452452
for base in node.parent.ancestors():
453453
if node.name in ("__init__", "__new__") and base.qname() in (
454454
"__builtins__.object",
@@ -460,11 +460,11 @@ def get_func_docstring(node: nodes.FunctionDef) -> tuple[str, None | str]:
460460
if (
461461
isinstance(child, node.__class__)
462462
and child.name == node.name
463-
and child.doc is not None
463+
and child.doc_node is not None
464464
):
465-
return str(child.doc), child.qname()
465+
return str(child.doc_node.value), child.qname()
466466

467-
return doc or "", None
467+
return doc_node.value if doc_node is not None else "", None
468468

469469

470470
def get_return_annotation(node: nodes.FunctionDef) -> None | str:

0 commit comments

Comments
 (0)