py2docfx 0.1.1.dev1621229__py3-none-any.whl → 0.1.1.dev1621518__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -93,14 +93,6 @@ def build_finished(app, exception):
93
93
  app.builder.outdir, # Output Directory for Builder
94
94
  API_ROOT
95
95
  ))
96
-
97
- def add_isrequired_if_needed(obj, key: str):
98
- if key in obj['syntax'] and obj['type'] in ['class', 'function', 'method']:
99
- for args in obj['syntax'][key]:
100
- if 'isRequired' not in args and 'defaultValue' not in args:
101
- args['isRequired'] = True
102
-
103
-
104
96
  ensuredir(normalized_outdir)
105
97
 
106
98
  toc_yaml = []
@@ -139,7 +131,6 @@ def build_finished(app, exception):
139
131
  if 'syntax' not in obj:
140
132
  obj['syntax'] = {}
141
133
  merged_params = []
142
- merged_kwargs = []
143
134
  if 'parameters' in app.env.docfx_info_field_data[obj['uid']]:
144
135
  doc_params = app.env.docfx_info_field_data[obj['uid']].get(
145
136
  'parameters', [])
@@ -148,29 +139,16 @@ def build_finished(app, exception):
148
139
  print("Documented params don't match size of params:"" {}".format(obj['uid'])) # lgtm [py/clear-text-logging-sensitive-data]
149
140
  doc_params = remove_params_without_id(doc_params)
150
141
  merged_params = merge_params(arg_params, doc_params)
151
- else:
152
- merged_params = arg_params
153
-
154
- if 'keywordOnlyArguments' in app.env.docfx_info_field_data[obj['uid']]:
155
- kwargs_from_inspect = obj.get('syntax', {}).get('keywordOnlyArguments', [])
156
- kwargs_from_doc = app.env.docfx_info_field_data[obj['uid']].get('keywordOnlyArguments', [])
157
- if kwargs_from_inspect and kwargs_from_doc:
158
- merged_kwargs = merge_params(kwargs_from_inspect, kwargs_from_doc)
159
142
 
160
143
  obj['syntax'].update(
161
144
  app.env.docfx_info_field_data[obj['uid']])
162
-
163
- # Merging parameters and keywordOnlyArguments is required,
164
- # becasue parameters and keywordOnlyArguments can be in both signature and docstring
165
- # For positionalOnlyArguments, it's not required, because it's only in signature so far
166
145
  if merged_params:
167
146
  obj['syntax']['parameters'] = merged_params
168
- if merged_kwargs:
169
- obj['syntax']['keywordOnlyArguments'] = merged_kwargs
170
147
 
171
- add_isrequired_if_needed(obj, 'parameters')
172
- add_isrequired_if_needed(obj, 'keywordOnlyArguments')
173
- add_isrequired_if_needed(obj, 'positionalOnlyArguments')
148
+ if 'parameters' in obj['syntax'] and obj['type'] == 'method':
149
+ for args in obj['syntax']['parameters']:
150
+ if 'isRequired' not in args and 'defaultValue' not in args:
151
+ args['isRequired'] = True
174
152
 
175
153
  # Raise up summary
176
154
  if 'summary' in obj['syntax'] and obj['syntax']['summary']:
@@ -97,9 +97,7 @@ def convert_member(obj, reference_mapping):
97
97
  'name': obj.get('fullName', '').split('.')[-1],
98
98
  'summary': obj.get('summary', None),
99
99
  'signature': obj.get('syntax', {}).get('content', None),
100
- 'positionalOnlyArguments': list(map(convert_parameter_partial, obj.get('syntax', {}).get('positionalOnlyArguments', []))),
101
100
  'parameters': list(map(convert_parameter_partial, obj.get('syntax', {}).get('parameters', []))),
102
- 'keywordOnlyArguments': list(map(convert_parameter_partial, obj.get('syntax', {}).get('keywordOnlyArguments', []))),
103
101
  'return': convert_return(obj.get('syntax', {}).get('return', {}), reference_mapping),
104
102
  'exceptions': obj.get('exceptions', None),
105
103
  'examples': obj.get('example', None),
@@ -169,9 +167,7 @@ def get_constructor_and_variables(syntax_object, reference_mapping):
169
167
  if syntax_object:
170
168
  constructor_object = {
171
169
  'syntax': syntax_object.get('content', None),
172
- 'positionalOnlyArguments': list(map(convert_parameter_partial, syntax_object.get('positionalOnlyArguments', []))),
173
- 'parameters': list(map(convert_parameter_partial, syntax_object.get('parameters', []))),
174
- 'keywordOnlyArguments': list(map(convert_parameter_partial, syntax_object.get('keywordOnlyArguments', []))),
170
+ 'parameters': list(map(convert_parameter_partial, syntax_object.get('parameters', [])))
175
171
  }
176
172
 
177
173
  return remove_empty_values(constructor_object), list(map(convert_variable_partial, syntax_object.get('variables', [])))
@@ -110,72 +110,6 @@ def _resolve_reference_in_module_summary(lines):
110
110
  new_lines.append(new_line)
111
111
  return new_lines
112
112
 
113
- def getParameterArgs(argspec):
114
- args = []
115
- for arg in argspec.args:
116
- args.append({'id': arg})
117
- if argspec.defaults:
118
- for count, default in enumerate(argspec.defaults):
119
- cut_count = len(argspec.defaults)
120
- # Only add defaultValue when str(default) doesn't contain object address string
121
- # (object at 0x)(lambda at 0x)(function *** at 0x)
122
- # inspect.getargspec method will return wrong defaults which contain object address for some default values, like sys.stdout
123
- # Match the defaults with the count
124
- if ' at 0x' not in str(default):
125
- args[len(args) - cut_count +
126
- count]['defaultValue'] = str(default)
127
- else:
128
- args[len(args) - cut_count +
129
- count]['isRequired'] = False
130
- return args
131
-
132
- def getkeywordOnlyArguments(argspec):
133
- keyword_only_args = []
134
- # check if there is keyword only args
135
- if argspec.kwonlyargs:
136
- count = 0
137
- for arg in argspec.kwonlyargs:
138
- keyword_only_args.append({'id': arg})
139
- # try get the default value for keyword only args
140
- if argspec.kwonlydefaults:
141
- kwarg_default = argspec.kwonlydefaults.get(arg, None)
142
- if kwarg_default:
143
- keyword_only_args[count]['defaultValue'] = str(kwarg_default)
144
- count += 1
145
- return keyword_only_args
146
-
147
- def getpositionalOnlyArguments(signature):
148
- positional_only_args = []
149
- # check if there is positional only args
150
- positional_only_arg_list = [param
151
- for param in signature.parameters.values()
152
- if param.kind == param.POSITIONAL_ONLY]
153
- if positional_only_arg_list:
154
- count = 0
155
- for po_arg in positional_only_arg_list:
156
- if po_arg.name != 'self':
157
- positional_only_args.append({'id': po_arg.name})
158
-
159
- try:
160
- default_value = str(po_arg.default)
161
- except KeyError:
162
- # if the default value is not available, set it to inspect._empty
163
- default_value = "<class 'inspect._empty'>"
164
-
165
- if default_value != "<class 'inspect._empty'>":
166
- positional_only_args[count]['defaultValue'] = default_value
167
-
168
- count += 1
169
- return positional_only_args
170
-
171
- def removePositonalOnlyArgsFromArgs(args, positional_only_args):
172
- # Create a set of ids from positional_only_args for efficient lookup
173
- positional_only_args_ids = set(obj['id'] for obj in positional_only_args)
174
-
175
- # Filter out objects from args array whose id is in the set of positional_only_args_ids
176
- filtered_a = [obj for obj in args if obj['id'] not in positional_only_args_ids]
177
-
178
- return filtered_a
179
113
 
180
114
  def _create_datam(app, cls, module, name, _type, obj, lines=None):
181
115
  """
@@ -186,23 +120,26 @@ def _create_datam(app, cls, module, name, _type, obj, lines=None):
186
120
  lines = []
187
121
  short_name = name.split('.')[-1]
188
122
  args = []
189
- keyword_only_args = []
190
- positional_only_args = []
123
+
191
124
  try:
192
125
  if _type in [CLASS, METHOD, FUNCTION]:
193
- if not (_type == CLASS and isinstance(type(obj).__call__, type(EnumMeta.__call__))):
194
- signature = inspect.signature(obj)
195
- argspec = inspect.getfullargspec(obj)
196
-
197
- args = getParameterArgs(argspec)
198
- keyword_only_args = getkeywordOnlyArguments(argspec)
199
- positional_only_args = getpositionalOnlyArguments(signature)
200
-
201
- # The args will contian both regular args and positional only args
202
- # so we need to remove the positional only args from args
203
- if positional_only_args:
204
- args = removePositonalOnlyArgsFromArgs(args, positional_only_args)
205
-
126
+ if not (_type == CLASS and isinstance(type(obj).__call__, type(EnumMeta.__call__))):
127
+ argspec = inspect.getfullargspec(obj) # noqa
128
+ for arg in argspec.args:
129
+ args.append({'id': arg})
130
+ if argspec.defaults:
131
+ for count, default in enumerate(argspec.defaults):
132
+ cut_count = len(argspec.defaults)
133
+ # Only add defaultValue when str(default) doesn't contain object address string
134
+ # (object at 0x)(lambda at 0x)(function *** at 0x)
135
+ # inspect.getargspec method will return wrong defaults which contain object address for some default values, like sys.stdout
136
+ # Match the defaults with the count
137
+ if ' at 0x' not in str(default):
138
+ args[len(args) - cut_count +
139
+ count]['defaultValue'] = str(default)
140
+ else:
141
+ args[len(args) - cut_count +
142
+ count]['isRequired'] = False
206
143
  except Exception as e:
207
144
  print("Can't get argspec for {}: {}. Exception: {}".format(type(obj), name, e))
208
145
 
@@ -223,14 +160,9 @@ def _create_datam(app, cls, module, name, _type, obj, lines=None):
223
160
  if summary:
224
161
  datam['summary'] = summary.strip(" \n\r\r")
225
162
 
226
- if args or keyword_only_args or positional_only_args:
163
+ if args:
227
164
  datam['syntax'] = {}
228
- if args:
229
- datam['syntax']['parameters'] = args
230
- if keyword_only_args:
231
- datam['syntax']['keywordOnlyArguments'] = keyword_only_args
232
- if positional_only_args:
233
- datam['syntax']['positionalOnlyArguments'] = positional_only_args
165
+ datam['syntax']['parameters'] = args
234
166
  if cls:
235
167
  datam[CLASS] = cls
236
168
  if _type in [CLASS, MODULE, PACKAGE]:
@@ -123,7 +123,6 @@ def translator(app, docname, doctree):
123
123
  def _get_full_data(node, module_name):
124
124
  data = {
125
125
  'parameters': [],
126
- 'keywordOnlyArguments': [],
127
126
  'variables': [],
128
127
  'exceptions': [],
129
128
  'return': {},
@@ -166,20 +165,16 @@ def translator(app, docname, doctree):
166
165
  if _is_single_paragraph(fieldbody):
167
166
  #_data = parse_parameter(ret_data, fieldtype)
168
167
  _data = parameter_utils.parse_parameter(content[0], fieldtype, app)
169
- if fieldtype == 'Parameters':
168
+ if fieldtype in ['Parameters', 'Keyword']:
170
169
  data['parameters'].append(_data)
171
- elif fieldtype == 'Keyword':
172
- data['keywordOnlyArguments'].append(_data)
173
170
  else:
174
171
  _data['id'] = _parse_variable_id(content[0].astext())
175
172
  data['variables'].append(_data)
176
173
  else:
177
174
  for child in content[0]:
178
175
  _data = parameter_utils.parse_parameter(child[0], fieldtype, app)
179
- if fieldtype in ['Parameters']:
176
+ if fieldtype in ['Parameters', 'Keyword']:
180
177
  data['parameters'].append(_data)
181
- elif fieldtype == 'Keyword':
182
- data['keywordOnlyArguments'].append(_data)
183
178
  else:
184
179
  _data['id'] = _parse_variable_id(child.astext())
185
180
  data['variables'].append(_data)
@@ -376,9 +371,6 @@ def translator(app, docname, doctree):
376
371
  if 'parameters' in current_data and 'parameters' in field_list_data:
377
372
  current_data['parameters'].extend(field_list_data['parameters'])
378
373
  field_list_data.pop('parameters')
379
- if 'keywordOnlyArguments' in current_data and 'keywordOnlyArguments' in field_list_data:
380
- current_data['keywordOnlyArguments'].extend(field_list_data['keywordOnlyArguments'])
381
- field_list_data.pop('keywordOnlyArguments')
382
374
  if 'variables' in current_data and 'variables' in field_list_data:
383
375
  current_data['variables'].extend(field_list_data['variables'])
384
376
  field_list_data.pop('variables')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: py2docfx
3
- Version: 0.1.1.dev1621229
3
+ Version: 0.1.1.dev1621518
4
4
  Summary: A package built based on Sphinx which download source code package and generate yaml files supported by docfx.
5
5
  Author: Microsoft Corporation
6
6
  License: MIT License
@@ -52,9 +52,9 @@ py2docfx/convert_prepare/tests/data/subpackage/azure-mgmt-containerservice/azure
52
52
  py2docfx/convert_prepare/tests/data/subpackage/azure-mgmt-containerservice/azure/mgmt/containerservice/v2018_03_31/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
53
  py2docfx/convert_prepare/tests/data/subpackage/azure-mgmt-containerservice/azure/mgmt/containerservice/v2018_03_31/models.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
54
  py2docfx/docfx_yaml/__init__.py,sha256=KCEizAXv-SXtrYhvFfLHdBWDhz51AA9uagaeTL-Itpo,100
55
- py2docfx/docfx_yaml/build_finished.py,sha256=qgkKrewCoHltR0Cb05ybsHTNkXL832d0G-IqSqnoKRY,15243
55
+ py2docfx/docfx_yaml/build_finished.py,sha256=jf8--IvekegnTs6Qx9H31TlDNZA6E5yPWaInmHH9QbA,13996
56
56
  py2docfx/docfx_yaml/build_init.py,sha256=lAw-fnBVQbySfZ7Sut_NpFQUjnqLOmnGQrTBBH2RXcg,1860
57
- py2docfx/docfx_yaml/common.py,sha256=tk2dVLtj1v0HKI_vDXaB_1_2_PTNblHPM1_M8-lIfGQ,6833
57
+ py2docfx/docfx_yaml/common.py,sha256=Tl6OPSIcvPjFw1AvWt5Mun8pQr9NtUGQnk4zh474Py0,6316
58
58
  py2docfx/docfx_yaml/convert_class.py,sha256=boKDaxnXbnLxja62UFXi3eChGDB_WBW6ouUUJgOhdpE,2098
59
59
  py2docfx/docfx_yaml/convert_enum.py,sha256=Kyx48WRl-48O7uv4s-Np1oD9uAd3AXL5uHb7jUsnfFg,2022
60
60
  py2docfx/docfx_yaml/convert_module.py,sha256=8UVjPn4krVfu7CgETAEBesYZyLdPthVXg7MXknni6aQ,2088
@@ -63,16 +63,15 @@ py2docfx/docfx_yaml/directives.py,sha256=zVVuNM_6AU9G6sbqL1UAyHHgPe7bkBWbthXI-PO
63
63
  py2docfx/docfx_yaml/miss_reference.py,sha256=Btoj9wAvA4u_wU7JHH0Cei3910N8a7MS34OUqJvXAd4,2443
64
64
  py2docfx/docfx_yaml/nodes.py,sha256=tBDi35jLJArlobl07DKOkmH2qz7dudXLp_kTUfR_r2w,412
65
65
  py2docfx/docfx_yaml/parameter_utils.py,sha256=vCol5q2SJd1ymuyJdE_-62Tau9RP7PewQdKSimcfQuo,8700
66
- py2docfx/docfx_yaml/process_doctree.py,sha256=cOI_viU46LqDDgy32D_-r1HF1KBnQW10cbbh3O4CMgk,17615
66
+ py2docfx/docfx_yaml/process_doctree.py,sha256=iKs1fsyo-1_P3RzpZBzD8G9hcOTGO78esWNZLXvSx2g,14866
67
67
  py2docfx/docfx_yaml/return_type_utils.py,sha256=nmdCUOvwdYk2jF6RqmOvU6gjXmXUTPUeCqyHPdKZNUQ,7483
68
68
  py2docfx/docfx_yaml/settings.py,sha256=JQZNwFebczl-zn8Yk2taAGANRi-Hw8hywtDWxqXXFyQ,373
69
- py2docfx/docfx_yaml/translator.py,sha256=XJJ8MuGMyqUia4tRwMONP0KY7oE5E2cH9YNP4r2ox2M,25904
69
+ py2docfx/docfx_yaml/translator.py,sha256=kJwGiXkiJgK3HPcVNX4qmt2Xwd77_DXS9Vd7LyGCFZo,25366
70
70
  py2docfx/docfx_yaml/utils.py,sha256=m5jC_qP2NKqzUx_z0zgZ-HAmxQdNTpJYKkL_F9vGeII,1555
71
71
  py2docfx/docfx_yaml/writer.py,sha256=0ZqyVGDHa4Cr3NsuOPRf4pGUStl6g6IBxpSgIZeDT9I,34683
72
72
  py2docfx/docfx_yaml/yaml_builder.py,sha256=qSxXVS4iFCc1ZdL5QzLrv8hy3LHIQCrhO4WcTp01vag,2575
73
73
  py2docfx/docfx_yaml/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
74
  py2docfx/docfx_yaml/tests/conftest.py,sha256=CykkZxaDZ-3a1EIQdGBieSmHL9FdyTE2xTJZe9QgKcg,1214
75
- py2docfx/docfx_yaml/tests/test_method_arguments.py,sha256=BWqRNmebchH_XHDhSPPUc5Gn-TIJlQ3w_vuavXAziUY,1566
76
75
  py2docfx/docfx_yaml/tests/test_numpy_syntax.py,sha256=ssb3J_-Jzjybhh4eycCA_LkXbGflyZyIUAiTjlEYLiw,863
77
76
  py2docfx/docfx_yaml/tests/test_translator_attributes.py,sha256=qZCsQGffq31k3UzpXkJpycplOXIq9gi2SxY6vu0DTfw,5224
78
77
  py2docfx/docfx_yaml/tests/test_translator_contents.py,sha256=lVCWbBIQk2oPFqsKK9gIb-b5DixutMabWjP7x03oj4s,1746
@@ -84,8 +83,6 @@ py2docfx/docfx_yaml/tests/test_translator_rst_returns.py,sha256=BL3nOMMTPzNPJk-P
84
83
  py2docfx/docfx_yaml/tests/test_translator_signatures.py,sha256=DM51EOb4UXLkrO1-4cQQQvvX210goAsnxKJH-4A2U2Q,1537
85
84
  py2docfx/docfx_yaml/tests/test_writer_table.py,sha256=UnGYXQ-QVxin_e-HGZAHdg1LSFV0qc480ZNsqPN9OYc,1444
86
85
  py2docfx/docfx_yaml/tests/test_writer_uri.py,sha256=L9eFHZndD6H7nkznJ9Bw0v8xh9IegDlhhGFHBz9EHmM,1745
87
- py2docfx/docfx_yaml/tests/roots/test-method-arguments/code_with_all_arg_types.py,sha256=o-ijRie5aHcBGWXW8HP92-457IOjnkl8IZAO_xuMn14,320
88
- py2docfx/docfx_yaml/tests/roots/test-method-arguments/conf.py,sha256=L8vIFmO546PCQks50Gif_uTBwC3cppohXrQaogfyRF8,410
89
86
  py2docfx/docfx_yaml/tests/roots/test-numpy-syntax/code_with_numpy.py,sha256=-7ZN5VPVQfj0-jwPZW_jkIe78B17j5cbXA4f2ZgQIFc,219
90
87
  py2docfx/docfx_yaml/tests/roots/test-numpy-syntax/conf.py,sha256=SczEhbCZ_zuTYW1ZyrB2VJ4FRh6B-q58SN7ZZ5INCeM,394
91
88
  py2docfx/docfx_yaml/tests/roots/test-translator-attributes/code_with_docstring.py,sha256=5JDlpC9Pm-8Bob2Qvqq58Nudk4n26nhHdOiNULrSXeY,326
@@ -115,7 +112,7 @@ py2docfx/docfx_yaml/tests/roots/test-writer-table/conf.py,sha256=avcbnIOV2mlGQwh
115
112
  py2docfx/docfx_yaml/tests/roots/test-writer-uri/code_with_uri.py,sha256=bzWTZpY2yf_By2bOSl1GFaY3BsZpkAvwQuGztlcHKkQ,537
116
113
  py2docfx/docfx_yaml/tests/roots/test-writer-uri/conf.py,sha256=avcbnIOV2mlGQwhMQJZC4W6UGRBRhnq1QBxjPWlySxQ,260
117
114
  py2docfx/docfx_yaml/tests/utils/test_utils.py,sha256=d0OYSUQ6NyoZx5mlLdNGGNhiNmmQhjVT4hQ6jY3VE_M,3383
118
- py2docfx-0.1.1.dev1621229.dist-info/METADATA,sha256=w73TIXU0po8mXnpsmDFoT-h91D8YbtwLhr2lLUDupzY,601
119
- py2docfx-0.1.1.dev1621229.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
120
- py2docfx-0.1.1.dev1621229.dist-info/top_level.txt,sha256=5dH2uP81dczt_qQJ38wiZ-gzoVWasfiJALWRSjdbnYU,9
121
- py2docfx-0.1.1.dev1621229.dist-info/RECORD,,
115
+ py2docfx-0.1.1.dev1621518.dist-info/METADATA,sha256=ZI1UYOi4HcUthiEJQtLgnY9kLvTngJ_uO68Ca0xsy08,601
116
+ py2docfx-0.1.1.dev1621518.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
117
+ py2docfx-0.1.1.dev1621518.dist-info/top_level.txt,sha256=5dH2uP81dczt_qQJ38wiZ-gzoVWasfiJALWRSjdbnYU,9
118
+ py2docfx-0.1.1.dev1621518.dist-info/RECORD,,
@@ -1,10 +0,0 @@
1
- class TestClass:
2
- def test_method(self,
3
- positional_only_arg = 10,
4
- /,
5
- parameter_with_default_value=True,
6
- *,
7
- keyword_only_arg = "keyword_only_arg_default_value",
8
- **kwargs):
9
- pass
10
-
@@ -1,24 +0,0 @@
1
- import os
2
- import sys
3
-
4
- sys.path.insert(0, os.path.abspath('.'))
5
-
6
- extensions = ["sphinx.ext.autodoc","sphinx.ext.napoleon", "yaml_builder"]
7
-
8
- class includeTest:
9
- pass
10
-
11
- # The suffix of source filenames.
12
- source_suffix = '.rst'
13
-
14
- autodoc_mock_imports = [
15
- 'dummy'
16
- ]
17
-
18
- pygments_style = 'sphinx'
19
-
20
- napoleon_use_admonition_for_examples = True
21
-
22
- nitpicky = True
23
-
24
- napoleon_preprocess_types=True
@@ -1,35 +0,0 @@
1
- import pytest
2
-
3
- from sphinx.testing import restructuredtext
4
- from sphinx.io import SphinxStandaloneReader
5
- from sphinx import addnodes
6
- from translator import translator
7
-
8
- from .utils.test_utils import prepare_app_envs,prepare_refered_objects,load_rst_transform_to_doctree, do_autodoc
9
- @pytest.mark.sphinx('dummy', testroot='method-arguments')
10
- def test_method_with_three_type_of_arguments(app):
11
- # Test data definition
12
- objectToGenXml = 'code_with_all_arg_types.TestClass'
13
- objectToGenXmlType = 'class'
14
-
15
- # Arrange
16
- prepare_app_envs(app, objectToGenXml)
17
- doctree = load_rst_transform_to_doctree(app, objectToGenXmlType, objectToGenXml)
18
-
19
- # Act
20
- translator(app, '', doctree)
21
-
22
- # Assert
23
- argumentsDetail = app.env.docfx_yaml_classes[objectToGenXml][1]['syntax']
24
- parameters = argumentsDetail.get('parameters', None)
25
- keywordOnlyArguments = argumentsDetail.get('keywordOnlyArguments', None)
26
- positionalOnlyArguments = argumentsDetail.get('positionalOnlyArguments', None)
27
- assert (parameters != None)
28
- assert (keywordOnlyArguments != None)
29
- assert (positionalOnlyArguments != None)
30
- assert (parameters[1]['id'] == 'parameter_with_default_value')
31
- assert (parameters[1]['defaultValue'] == 'True')
32
- assert (keywordOnlyArguments[0]['id'] == 'keyword_only_arg')
33
- assert (keywordOnlyArguments[0]['defaultValue'] == 'keyword_only_arg_default_value')
34
- assert (positionalOnlyArguments[0]['id'] == 'positional_only_arg')
35
- assert (positionalOnlyArguments[0]['defaultValue'] == '10')