mkdocstrings-matlab 0.3.0__py3-none-any.whl → 0.3.2__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -200,7 +200,7 @@ class PathCollection(ModulesCollection):
200
200
  return model
201
201
  return None
202
202
 
203
- def update_model(self, model: MatlabMixin, config: Mapping):
203
+ def update_model(self, model: MatlabMixin, config: Mapping) -> MatlabMixin:
204
204
  """
205
205
  Update the given model based on the provided configuration.
206
206
 
@@ -276,43 +276,55 @@ class PathCollection(ModulesCollection):
276
276
  document_parameters = not docstring_parameters and arguments_parameters
277
277
  document_returns = not docstring_returns and arguments_returns
278
278
 
279
- if document_parameters:
280
- parameters = DocstringSectionParameters(
281
- [
282
- DocstringParameter(
283
- name=param.name,
284
- value=str(param.default)
285
- if param.default is not None
286
- else None,
287
- annotation=param.annotation,
288
- description=param.docstring.value
289
- if param.docstring is not None
290
- else "",
291
- )
292
- for param in model.parameters
293
- if param.kind is not ParameterKind.keyword_only
294
- ]
279
+ standard_parameters = [
280
+ param for param in model.parameters
281
+ if param.kind is not ParameterKind.keyword_only
282
+ ]
283
+
284
+ keyword_parameters = [
285
+ param for param in model.parameters
286
+ if param.kind is ParameterKind.keyword_only
287
+ ]
288
+
289
+ if document_parameters and standard_parameters:
290
+ model.docstring._extra_sections.append(
291
+ DocstringSectionParameters(
292
+ [
293
+ DocstringParameter(
294
+ name=param.name,
295
+ value=str(param.default)
296
+ if param.default is not None
297
+ else None,
298
+ annotation=param.annotation,
299
+ description=param.docstring.value
300
+ if param.docstring is not None
301
+ else "",
302
+ )
303
+ for param in standard_parameters
304
+ ]
305
+ )
295
306
  )
296
307
 
297
- keywords = DocstringSectionParameters(
298
- [
299
- DocstringParameter(
300
- name=param.name,
301
- value=str(param.default)
302
- if param.default is not None
303
- else None,
304
- annotation=param.annotation,
305
- description=param.docstring.value
306
- if param.docstring is not None
307
- else "",
308
- )
309
- for param in model.parameters
310
- if param.kind is ParameterKind.keyword_only
311
- ],
312
- title="Keyword Arguments:",
308
+ if document_parameters and keyword_parameters:
309
+
310
+ model.docstring._extra_sections.append(
311
+ DocstringSectionParameters(
312
+ [
313
+ DocstringParameter(
314
+ name=param.name,
315
+ value=str(param.default)
316
+ if param.default is not None
317
+ else None,
318
+ annotation=param.annotation,
319
+ description=param.docstring.value
320
+ if param.docstring is not None
321
+ else "",
322
+ )
323
+ for param in keyword_parameters
324
+ ],
325
+ title="Keyword Arguments:",
326
+ )
313
327
  )
314
- model.docstring._extra_sections.append(parameters)
315
- model.docstring._extra_sections.append(keywords)
316
328
 
317
329
  if document_returns:
318
330
  returns = DocstringSectionReturns(
@@ -568,12 +580,17 @@ class LazyModel:
568
580
  if (
569
581
  member.is_file()
570
582
  and member.suffix == ".m"
571
- and member.name != "Contents.m"
572
583
  and member != classfile
573
584
  ):
574
- method = self._collect_path(member)
575
- method.parent = model
576
- model.members[method.name] = method
585
+ if member.name == "Contents.m" and model.docstring is None:
586
+ contentsfile = self._collect_path(member)
587
+ model.docstring = contentsfile.docstring
588
+ else:
589
+ method = self._collect_path(member)
590
+ method.parent = model
591
+ model.members[method.name] = method
592
+ if model.docstring is None:
593
+ model.docstring = self._collect_readme_md(path, model)
577
594
  return model
578
595
 
579
596
  def _collect_namespace(self, path: Path) -> Namespace | None:
@@ -589,9 +606,26 @@ class LazyModel:
589
606
  elif member.is_file() and member.suffix == ".m":
590
607
  if member.name == "Contents.m":
591
608
  contentsfile = self._collect_path(member)
592
- contentsfile.docstring = model.docstring
609
+ model.docstring = contentsfile.docstring
593
610
  else:
594
611
  submodel = self._path_collection._models[member].model()
595
612
  if submodel is not None:
596
613
  model.members[submodel.name] = submodel
614
+
615
+ if model.docstring is None:
616
+ model.docstring = self._collect_readme_md(path, model)
617
+
597
618
  return model
619
+
620
+ def _collect_readme_md(self, path, parent: MatlabMixin) -> Docstring | None:
621
+
622
+ if (path / "README.md").exists():
623
+ readme = path / "README.md"
624
+ elif (path / "readme.md").exists():
625
+ readme = path / "readme.md"
626
+ else:
627
+ return None
628
+
629
+ with open(readme, "r") as file:
630
+ content = file.read()
631
+ return Docstring(content, parent=parent)
@@ -21,7 +21,10 @@ class MatlabHandler(BaseHandler):
21
21
  """Whether this handler is interested in enabling the creation of the `objects.inv` Sphinx inventory file."""
22
22
  fallback_theme = "material"
23
23
  """The fallback theme."""
24
- fallback_config: ClassVar[dict] = {"fallback": True}
24
+ fallback_config: ClassVar[dict] = {
25
+ "fallback": True,
26
+ "merge_constructor_into_class": True,
27
+ }
25
28
  """The configuration used to collect item during autorefs fallback."""
26
29
  default_config: ClassVar[dict] = {
27
30
  # General options
@@ -51,7 +54,7 @@ class MatlabHandler(BaseHandler):
51
54
  "docstring_options": {},
52
55
  "docstring_section_style": "table",
53
56
  "create_from_argument_blocks": False,
54
- "merge_constructor_into_class": False,
57
+ "merge_constructor_into_class": True,
55
58
  "show_if_no_docstring": False,
56
59
  "show_docstring_attributes": True,
57
60
  "show_docstring_functions": True,
@@ -558,3 +558,7 @@ class Namespace(MatlabMixin, PathMixin, Module, MatlabObject):
558
558
 
559
559
  def __repr__(self) -> str:
560
560
  return f"Namespace({self.path!r})"
561
+
562
+ @property
563
+ def is_internal(self) -> bool:
564
+ return any(part == "+internal" for part in self.filepath.parts) if self.filepath else False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mkdocstrings-matlab
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: A MATLAB handler for mkdocstrings
5
5
  Author-email: Mark Hu <watermarkhu@gmail.com>
6
6
  License: ISC
@@ -2,14 +2,14 @@ mkdocs_material_matlab/__init__.py,sha256=9pmrwWbkIyr0T7qvADbsz3OR5bB3rWb231e6JS
2
2
  mkdocs_material_matlab/mkdocs_material_matlab.py,sha256=s7vI1lv6hD8s7kDHWBfYKgN6EcldyUstGYJ45sA-VWY,850
3
3
  mkdocs_material_matlab/css/style.css,sha256=iVTPIKljgvK899jEQylD7yu9yjKfrVE_4GLaITjhk4g,132
4
4
  mkdocstrings_handlers/matlab/__init__.py,sha256=laA2bEP5rxdIWBLmfLiKKu7ChZ_HzCe-VeRvxmUTqww,128
5
- mkdocstrings_handlers/matlab/collect.py,sha256=bPQ8e7ENzGA6b_0PGOeZSRoQozwvT7dQLZI_CoglTuk,21815
5
+ mkdocstrings_handlers/matlab/collect.py,sha256=9DKuE5Q6kXcNm6coQZnmtTNRzMNIeILlljMd1GgVEKk,23035
6
6
  mkdocstrings_handlers/matlab/enums.py,sha256=lr3wLlhPxyBym3O7Rt0cLUZYqPCz6wQ2PYBibLKLTek,982
7
- mkdocstrings_handlers/matlab/handler.py,sha256=w_k3jBaBwv3CYxGOg6cELHE1Z8p-nmxPEk-201tjLtE,15367
8
- mkdocstrings_handlers/matlab/models.py,sha256=fMDdzrANnsnkYl-Q8QYFgM3OxtnbJwKcKtVFFBKio_c,17363
7
+ mkdocstrings_handlers/matlab/handler.py,sha256=KmQuCuaoS-K8HR2peS4LfvBUaJT4a8-428-3ZiHRdYY,15427
8
+ mkdocstrings_handlers/matlab/models.py,sha256=y4ozShL4edxKKgb6jqBAfSI8Z9MEygSbEDnTDfBnRtk,17513
9
9
  mkdocstrings_handlers/matlab/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  mkdocstrings_handlers/matlab/treesitter.py,sha256=dW4RcSep4A0L505WbAE9PGL2sTqizX7nhXLwQqbJh8Y,21726
11
- mkdocstrings_matlab-0.3.0.dist-info/METADATA,sha256=qctHYlZnFKUY3j4C4_JTBO-G-qcG2foYWHpwLFtxUYA,4097
12
- mkdocstrings_matlab-0.3.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
13
- mkdocstrings_matlab-0.3.0.dist-info/entry_points.txt,sha256=qUZFuB2TKh7KPlg4dR2npfbNgNExw6O6j1vF276PtPw,92
14
- mkdocstrings_matlab-0.3.0.dist-info/licenses/LICENSE,sha256=z5Ee0lckFL6K9LhLKftDu0JDl2Uie24Po20IclVk2SI,743
15
- mkdocstrings_matlab-0.3.0.dist-info/RECORD,,
11
+ mkdocstrings_matlab-0.3.2.dist-info/METADATA,sha256=c1mVS2_ocxD-sPdaTEWYauALHXUHoF1qVtnxdLl1k0M,4097
12
+ mkdocstrings_matlab-0.3.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
13
+ mkdocstrings_matlab-0.3.2.dist-info/entry_points.txt,sha256=qUZFuB2TKh7KPlg4dR2npfbNgNExw6O6j1vF276PtPw,92
14
+ mkdocstrings_matlab-0.3.2.dist-info/licenses/LICENSE,sha256=z5Ee0lckFL6K9LhLKftDu0JDl2Uie24Po20IclVk2SI,743
15
+ mkdocstrings_matlab-0.3.2.dist-info/RECORD,,