py2docfx 0.1.11.dev1918939__py3-none-any.whl → 0.1.11.dev1921859__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.
@@ -26,9 +26,4 @@ class ClassWithCodeSummary:
26
26
  }
27
27
  ]
28
28
  }
29
- """
30
-
31
- class ClassWithAngleBracketSummary:
32
- """
33
- Test Method with param docstring containing angle bracket: link https://<variable>.foo.net/boo
34
29
  """
@@ -3,7 +3,7 @@ import sys
3
3
 
4
4
  sys.path.insert(0, os.path.abspath('.'))
5
5
 
6
- extensions = ['sphinx.ext.autodoc', 'yaml_builder']
6
+ extensions = ['sphinx.ext.autodoc']
7
7
 
8
8
  class includeTest:
9
9
  pass
@@ -17,5 +17,12 @@ class SampleClass():
17
17
  """
18
18
  pass
19
19
 
20
+ def dummy_summary3(self):
21
+ """
22
+ This is a bare URL that shouldn't be transformed into a link
23
+ because it's in the exclusion list: https://management.azure.com
24
+ """
25
+ pass
26
+
20
27
  pass
21
28
 
@@ -42,21 +42,3 @@ def test_classWithCodeSummary_checkLastLineBracket(app):
42
42
  summary = app.env.docfx_info_field_data[objectToGenXml]['summary']
43
43
  summaryList = [line for line in summary.splitlines() if line]
44
44
  assert (summaryList[-1] == '}') # Translator shouldn't skip last line of bracket (even there's no alphabet =or digit in this line)
45
-
46
-
47
- @pytest.mark.sphinx('yaml', testroot='translator-contents')
48
- def test_classWithAngleBracketSummary_checkSummary(app):
49
- # Test data definition
50
- objectToGenXml = 'code_with_docstring.ClassWithAngleBracketSummary'
51
- objectToGenXmlType = 'class'
52
-
53
- # Arrange
54
- prepare_app_envs(app, objectToGenXml)
55
- doctree = load_rst_transform_to_doctree(app, objectToGenXmlType, objectToGenXml)
56
-
57
- # Act
58
- translator(app, '', doctree)
59
-
60
- # Assert
61
- summary = app.env.docfx_info_field_data[objectToGenXml]['summary']
62
- assert summary == 'Test Method with param docstring containing angle bracket: link [https:/](https:/)/&lt;variable&gt;.foo.net/boo'
@@ -20,6 +20,7 @@ def test_http_link_in_summary_should_not_nest_parenthesis(app):
20
20
  class_summary_result = transform_node(app, doctree[1][1][0])
21
21
  method1_summary_result = transform_node(app, doctree[1][1][2][1])
22
22
  method2_summary_result = transform_node(app, doctree[1][1][4][1])
23
+ method3_summary_result = transform_node(app, doctree[1][1][6][1])
23
24
 
24
25
  # Assert
25
26
  # Shouldn't see something like [title]((link))
@@ -28,7 +29,10 @@ def test_http_link_in_summary_should_not_nest_parenthesis(app):
28
29
  "We should not generate nested parenthesis causing docs validation warnings\n")
29
30
  method2_summary_expected = ("\n\n This isn't a content issue link ([https://www.microsoft.com](https://www.microsoft.com))\n "
30
31
  "Should expect a transformed Markdown link.\n")
32
+ method3_summary_expected = ("\n\n This is a bare URL that shouldn't be transformed into a link\n "
33
+ "because it's in the exclusion list: `https://management.azure.com`\n")
31
34
  assert(class_summary_expected == class_summary_result)
32
35
  assert(method1_summary_expected == method1_summary_result)
33
36
  assert(method2_summary_expected == method2_summary_result)
37
+ assert(method3_summary_expected == method3_summary_result)
34
38
 
@@ -3,15 +3,4 @@ def is_inline_text_children_of_versionmodified(node):
3
3
  if hasattr(node.parent, 'parent') and node.parent.parent is not None:
4
4
  if node.parent.parent.tagname == 'versionmodified':
5
5
  return True
6
- return False
7
-
8
- def replace_special_unicode(text):
9
- text = text.replace('\u201c', '"')
10
- text = text.replace('\u201d', '"')
11
- text = text.replace('\u2018', "'")
12
- text = text.replace('\u2019', "'")
13
- text = text.replace('\u2026', "...")
14
- return text
15
-
16
- def replace_angle_brackets_with_html_entities(text):
17
- return text.replace('<', '&lt;').replace('>', '&gt;')
6
+ return False
@@ -183,6 +183,15 @@ class MarkdownTranslator(nodes.NodeVisitor):
183
183
  sectionchars = '*=-~"+`'
184
184
  xref_template = "<xref:{0}>"
185
185
 
186
+ # URLs that shouldn't be automatically rendered as hyperlinks if found bare. Included because they appear
187
+ # frequently, get flagged by the broken link validator and/or there's no value to the user in
188
+ # making them clickable links.
189
+ urls_that_shouldnt_be_rendered_as_links = {
190
+ "https://management.azure.com",
191
+ "https://management.chinacloudapi.cn",
192
+ "https://management.usgovcloudapi.net"
193
+ }
194
+
186
195
  def __init__(self, document, builder):
187
196
  self.invdata = []
188
197
  nodes.NodeVisitor.__init__(self, document)
@@ -925,7 +934,10 @@ class MarkdownTranslator(nodes.NodeVisitor):
925
934
  match_content_issue_pattern = True
926
935
  ref_string = node.attributes["refuri"]
927
936
  if not match_content_issue_pattern:
928
- ref_string = '[{}]({})'.format(node.astext(), node.attributes['refuri'])
937
+ if inner_text == node.attributes['refuri'] and inner_text in cls.urls_that_shouldnt_be_rendered_as_links:
938
+ ref_string = f'`{inner_text}`'
939
+ else:
940
+ ref_string = '[{}]({})'.format(node.astext(), node.attributes['refuri'])
929
941
  else:
930
942
  # only use id in class and func refuri if its id exists
931
943
  # otherwise, remove '.html#' in refuri
@@ -1044,8 +1056,7 @@ class MarkdownTranslator(nodes.NodeVisitor):
1044
1056
  return text
1045
1057
 
1046
1058
  def visit_Text(self, node):
1047
- text = write_utils.replace_special_unicode(node.astext())
1048
- text = write_utils.replace_angle_brackets_with_html_entities(text)
1059
+ text = self.replace_special_unicode(node.astext())
1049
1060
  if write_utils.is_inline_text_children_of_versionmodified(node.parent):
1050
1061
  text = text.strip(' ')
1051
1062
  self.add_text(text)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: py2docfx
3
- Version: 0.1.11.dev1918939
3
+ Version: 0.1.11.dev1921859
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
@@ -69,8 +69,8 @@ py2docfx/docfx_yaml/return_type_utils.py,sha256=nmdCUOvwdYk2jF6RqmOvU6gjXmXUTPUe
69
69
  py2docfx/docfx_yaml/settings.py,sha256=JQZNwFebczl-zn8Yk2taAGANRi-Hw8hywtDWxqXXFyQ,373
70
70
  py2docfx/docfx_yaml/translator.py,sha256=IXxrOEF2L1gZjGciimyrNHRHQUf1Xy3vr2UUR5i2vyM,25961
71
71
  py2docfx/docfx_yaml/utils.py,sha256=m5jC_qP2NKqzUx_z0zgZ-HAmxQdNTpJYKkL_F9vGeII,1555
72
- py2docfx/docfx_yaml/write_utils.py,sha256=dmE6Jrb8IEkfJ6kv2j0vBHS5qMVi7jbDINPzLurhGZk,677
73
- py2docfx/docfx_yaml/writer.py,sha256=pIeYdXrU_xGnv6OjEyGYrgDCHt6dBrprYux-YZaaY_4,35120
72
+ py2docfx/docfx_yaml/write_utils.py,sha256=q5qoYWw6GVDV8a3E8IxcSLWnN9sAer42VFRgadHBkgk,305
73
+ py2docfx/docfx_yaml/writer.py,sha256=Df7dRv9EMArqTBzoDHIDj8pqCeBH8X0fzYm9P2x0v9o,35696
74
74
  py2docfx/docfx_yaml/yaml_builder.py,sha256=qSxXVS4iFCc1ZdL5QzLrv8hy3LHIQCrhO4WcTp01vag,2575
75
75
  py2docfx/docfx_yaml/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
76
  py2docfx/docfx_yaml/tests/conftest.py,sha256=CykkZxaDZ-3a1EIQdGBieSmHL9FdyTE2xTJZe9QgKcg,1214
@@ -78,16 +78,15 @@ py2docfx/docfx_yaml/tests/test_build_finished.py,sha256=PSyWuY_XWmNeSjQl4kBwHUWp
78
78
  py2docfx/docfx_yaml/tests/test_method_arguments.py,sha256=Cvj9aoADtacKciVN8nempXW-KQL8nujSa9GNVuk6l_8,1578
79
79
  py2docfx/docfx_yaml/tests/test_numpy_syntax.py,sha256=ssb3J_-Jzjybhh4eycCA_LkXbGflyZyIUAiTjlEYLiw,863
80
80
  py2docfx/docfx_yaml/tests/test_translator_attributes.py,sha256=qZCsQGffq31k3UzpXkJpycplOXIq9gi2SxY6vu0DTfw,5224
81
- py2docfx/docfx_yaml/tests/test_translator_contents.py,sha256=6Nb0nftqi8YXbmyTMsEKYWVmWc-HWqkiKz7gWNHsxQE,2432
81
+ py2docfx/docfx_yaml/tests/test_translator_contents.py,sha256=lVCWbBIQk2oPFqsKK9gIb-b5DixutMabWjP7x03oj4s,1746
82
82
  py2docfx/docfx_yaml/tests/test_translator_data.py,sha256=zSVs3AT_TeAx1mrEYNTpy3Xy-FPrwwi93ly2EFclw5U,984
83
83
  py2docfx/docfx_yaml/tests/test_translator_exceptions.py,sha256=A2zAcJOBGchDBNIDr15uD3lzLfVldJKYSAl0e1CD5Ds,10481
84
84
  py2docfx/docfx_yaml/tests/test_translator_fieldlists.py,sha256=tDJ1l0c16oYfAlEIcidqEMwaXcX83Fg-rajpLtb2Wnk,1198
85
- py2docfx/docfx_yaml/tests/test_translator_method.py,sha256=VQFAUX__WWLmJA6AQPLH8dUnXzeQirdvONZUIwwym-Q,1674
86
85
  py2docfx/docfx_yaml/tests/test_translator_numpy_returns.py,sha256=nmC70WUqCRcB1tkRG9iq8mBuIcZKwGhK09StEvq0zf8,2970
87
86
  py2docfx/docfx_yaml/tests/test_translator_rst_returns.py,sha256=BL3nOMMTPzNPJk-P9oMANiXnJ7ocuiecbFHH4DU1n40,2942
88
87
  py2docfx/docfx_yaml/tests/test_translator_signatures.py,sha256=DM51EOb4UXLkrO1-4cQQQvvX210goAsnxKJH-4A2U2Q,1537
89
88
  py2docfx/docfx_yaml/tests/test_writer_table.py,sha256=UnGYXQ-QVxin_e-HGZAHdg1LSFV0qc480ZNsqPN9OYc,1444
90
- py2docfx/docfx_yaml/tests/test_writer_uri.py,sha256=L9eFHZndD6H7nkznJ9Bw0v8xh9IegDlhhGFHBz9EHmM,1745
89
+ py2docfx/docfx_yaml/tests/test_writer_uri.py,sha256=wwdxraB5wP88OIJzuLGviit44Kesb8dvU9ajb5Ra0qA,2093
91
90
  py2docfx/docfx_yaml/tests/test_writer_versions.py,sha256=0-0VTMhbZ4ml9ryu1gYnu0mM2yIEKsBuFYb2F6grzTE,2995
92
91
  py2docfx/docfx_yaml/tests/roots/test-build-finished/code_with_signature_and_docstring.py,sha256=qvcKWL68C2aDTP8JT022nMV4EdZ50vhxVshMrHVO2sY,449
93
92
  py2docfx/docfx_yaml/tests/roots/test-build-finished/conf.py,sha256=L8vIFmO546PCQks50Gif_uTBwC3cppohXrQaogfyRF8,410
@@ -101,8 +100,8 @@ py2docfx/docfx_yaml/tests/roots/test-translator-attributes/code_with_docstring3.
101
100
  py2docfx/docfx_yaml/tests/roots/test-translator-attributes/code_with_import.py,sha256=VySauK2eitQYigPZUsrlK8l4ab2SJPOYPQnBoKHgLTo,297
102
101
  py2docfx/docfx_yaml/tests/roots/test-translator-attributes/conf.py,sha256=rFV8j1gOtlc2ubfcNf-qi6F1904_G4jMd_5e2fLzip0,358
103
102
  py2docfx/docfx_yaml/tests/roots/test-translator-attributes/refered_objects.py,sha256=DJaX52mnHw9W3GSqKh75CYK87g4CczXNNjFO496Ai2U,79
104
- py2docfx/docfx_yaml/tests/roots/test-translator-contents/code_with_docstring.py,sha256=ffSheCUinQydQqt1Vm4VBaCtf5ECZFUkBG4APCz5xp8,869
105
- py2docfx/docfx_yaml/tests/roots/test-translator-contents/conf.py,sha256=qnFx2JWf3soFQYBAG1S5jSLNoAjMbeRjsthOIcAenx0,276
103
+ py2docfx/docfx_yaml/tests/roots/test-translator-contents/code_with_docstring.py,sha256=yPH0kaYzmroxuCO3ZRq5KLb10IqxqROY4io0B58Welc,712
104
+ py2docfx/docfx_yaml/tests/roots/test-translator-contents/conf.py,sha256=avcbnIOV2mlGQwhMQJZC4W6UGRBRhnq1QBxjPWlySxQ,260
106
105
  py2docfx/docfx_yaml/tests/roots/test-translator-data/code_with_data.py,sha256=F5-o_cBTjLGzUmk2PEEY60zQz7B0YLe4-yDbEZrvwac,372
107
106
  py2docfx/docfx_yaml/tests/roots/test-translator-data/conf.py,sha256=avcbnIOV2mlGQwhMQJZC4W6UGRBRhnq1QBxjPWlySxQ,260
108
107
  py2docfx/docfx_yaml/tests/roots/test-translator-exceptions/code_with_docstring.py,sha256=vRbnBpO9YFCz7ZlNvUNh7l-ILBiwhzpN2mPm-rtKNQs,3543
@@ -110,8 +109,6 @@ py2docfx/docfx_yaml/tests/roots/test-translator-exceptions/conf.py,sha256=avcbnI
110
109
  py2docfx/docfx_yaml/tests/roots/test-translator-exceptions/refered_objects.py,sha256=zTnP-R7nxTxZr2yHurKKQSPFSY9gz3_vmFI0OotI3_U,124
111
110
  py2docfx/docfx_yaml/tests/roots/test-translator-fieldlists/code_with_multiple_fieldlists.py,sha256=llu95FRqwjtwrMdR1enMB1Lso59CYJBmUPQy6LvGGAA,502
112
111
  py2docfx/docfx_yaml/tests/roots/test-translator-fieldlists/conf.py,sha256=KrvMHOj1LCdodwNwUsdCI_OMM-Bf_lpiUREk4egQWms,388
113
- py2docfx/docfx_yaml/tests/roots/test-translator-method/code_with_docstring.py,sha256=6V40cvO6Dj85R-bfKDkKlF8FDkfY1p_EAtB6Nh4OKKE,640
114
- py2docfx/docfx_yaml/tests/roots/test-translator-method/conf.py,sha256=A-QZx8-7Zg3_6X42F3LSyG5Nx0AoYkbKB2QbnM33PB0,402
115
112
  py2docfx/docfx_yaml/tests/roots/test-translator-returns/code_with_returns_numpy.py,sha256=OGHOCBmRENAp4_MLYgyUsU2z7cm_hQx6Jtb8PSIs1Uo,748
116
113
  py2docfx/docfx_yaml/tests/roots/test-translator-returns/code_with_returns_rst.py,sha256=sQ1gV9lN33NjXFetGrUNLD6qCJF9v7BMYBQnDLa2Kdo,644
117
114
  py2docfx/docfx_yaml/tests/roots/test-translator-returns/conf.py,sha256=A-QZx8-7Zg3_6X42F3LSyG5Nx0AoYkbKB2QbnM33PB0,402
@@ -121,12 +118,12 @@ py2docfx/docfx_yaml/tests/roots/test-translator-signatures/conf.py,sha256=avcbnI
121
118
  py2docfx/docfx_yaml/tests/roots/test-translator-signatures/refered_objects.py,sha256=DJaX52mnHw9W3GSqKh75CYK87g4CczXNNjFO496Ai2U,79
122
119
  py2docfx/docfx_yaml/tests/roots/test-writer-table/code_with_table_desc.py,sha256=J4eFvXsymgFvjnwVUY0APtUGwuxvt-AFJjTaEaQ7zMQ,574
123
120
  py2docfx/docfx_yaml/tests/roots/test-writer-table/conf.py,sha256=avcbnIOV2mlGQwhMQJZC4W6UGRBRhnq1QBxjPWlySxQ,260
124
- py2docfx/docfx_yaml/tests/roots/test-writer-uri/code_with_uri.py,sha256=bzWTZpY2yf_By2bOSl1GFaY3BsZpkAvwQuGztlcHKkQ,537
121
+ py2docfx/docfx_yaml/tests/roots/test-writer-uri/code_with_uri.py,sha256=GSz1B0xiXSaddkrniVBXzW7R4jDuPq1sWU7ByBH6MxA,754
125
122
  py2docfx/docfx_yaml/tests/roots/test-writer-uri/conf.py,sha256=avcbnIOV2mlGQwhMQJZC4W6UGRBRhnq1QBxjPWlySxQ,260
126
123
  py2docfx/docfx_yaml/tests/roots/test-writer-versions/code_with_version_directives.py,sha256=UuizbrJPaG_PcaH18BvbI9KQevOaLd4SslpnzMSqcrE,1030
127
124
  py2docfx/docfx_yaml/tests/roots/test-writer-versions/conf.py,sha256=SCEKrm9VigArfdgf-GAieJD-40d0ctT6urmGIjFOZLM,404
128
125
  py2docfx/docfx_yaml/tests/utils/test_utils.py,sha256=d0OYSUQ6NyoZx5mlLdNGGNhiNmmQhjVT4hQ6jY3VE_M,3383
129
- py2docfx-0.1.11.dev1918939.dist-info/METADATA,sha256=qFhCrxON7bey8n63n6HttEng-Z34WZCrlTYqpRxuNWk,601
130
- py2docfx-0.1.11.dev1918939.dist-info/WHEEL,sha256=bFJAMchF8aTQGUgMZzHJyDDMPTO3ToJ7x23SLJa1SVo,92
131
- py2docfx-0.1.11.dev1918939.dist-info/top_level.txt,sha256=5dH2uP81dczt_qQJ38wiZ-gzoVWasfiJALWRSjdbnYU,9
132
- py2docfx-0.1.11.dev1918939.dist-info/RECORD,,
126
+ py2docfx-0.1.11.dev1921859.dist-info/METADATA,sha256=3RxTzjsY7eDJQweuM-riijMusNjAnqbqnKeO25wLwnU,601
127
+ py2docfx-0.1.11.dev1921859.dist-info/WHEEL,sha256=bFJAMchF8aTQGUgMZzHJyDDMPTO3ToJ7x23SLJa1SVo,92
128
+ py2docfx-0.1.11.dev1921859.dist-info/top_level.txt,sha256=5dH2uP81dczt_qQJ38wiZ-gzoVWasfiJALWRSjdbnYU,9
129
+ py2docfx-0.1.11.dev1921859.dist-info/RECORD,,
@@ -1,19 +0,0 @@
1
- class TestClassA():
2
- """Test Class A
3
- some summary to ensure class parameters and constructor parametes are put in two field lists
4
-
5
- """
6
- def __init__(self) -> None:
7
- pass
8
-
9
- def method_param_docstring_contain_angle_bracket(self):
10
- """Test Method with param docstring containing angle bracket
11
-
12
- :param str paramE: Test Param E, link https://<variable>.foo.net/boo
13
- """
14
- pass
15
-
16
- def method_docstring_contain_angle_bracket(self):
17
- """Test Method with param docstring containing angle bracket: link https://<variable>.foo.net/boo
18
- """
19
- pass
@@ -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
- nitpicky = True
19
-
20
- autodoc_default_options = {
21
- 'inherited-members': True
22
- }
23
-
24
- napoleon_preprocess_types = True
@@ -1,42 +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,load_rst_transform_to_doctree
9
-
10
- @pytest.mark.sphinx('yaml', testroot='translator-method')
11
- def test_paramDocstringContainingAngleBrackets_checkEncoded(app):
12
- # Test data definition
13
- objectToGenXml = 'code_with_docstring.TestClassA.method_param_docstring_contain_angle_bracket'
14
- objectToGenXmlType = 'function'
15
-
16
- # Arrange
17
- prepare_app_envs(app, objectToGenXml)
18
- doctree = load_rst_transform_to_doctree(app, objectToGenXmlType, objectToGenXml)
19
-
20
- # Act
21
- translator(app, '', doctree)
22
-
23
- # Assert
24
- summary = app.env.docfx_info_field_data[objectToGenXml]['parameters'][0]['description']
25
- assert (summary == '**paramE** (<xref:str>) -- Test Param E, link [https:/](https:/)/&lt;variable&gt;.foo.net/boo')
26
-
27
- @pytest.mark.sphinx('yaml', testroot='translator-method')
28
- def test_docstringContainingAngleBrackets_checkEncoded(app):
29
- # Test data definition
30
- objectToGenXml = 'code_with_docstring.TestClassA.method_docstring_contain_angle_bracket'
31
- objectToGenXmlType = 'function'
32
-
33
- # Arrange
34
- prepare_app_envs(app, objectToGenXml)
35
- doctree = load_rst_transform_to_doctree(app, objectToGenXmlType, objectToGenXml)
36
-
37
- # Act
38
- translator(app, '', doctree)
39
-
40
- # Assert
41
- summary = app.env.docfx_info_field_data[objectToGenXml]['summary']
42
- assert summary == 'Test Method with param docstring containing angle bracket: link [https:/](https:/)/&lt;variable&gt;.foo.net/boo'