Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

fix #519 #522

Merged
merged 4 commits into from
Mar 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

- Add additional Jinja2 blocks to allow a more fine-grained customization of the menu.
([#521](https://github.com/mitmproxy/pdoc/pull/521), @mikkelakromann)
- Fix a crash in pdoc 13.0.0 when `__init__.py` is passed as a file to pdoc.
([#522](https://github.com/mitmproxy/pdoc/pull/522), @mhils)

## 2023-02-19: pdoc 13.0.0

Expand Down
2 changes: 2 additions & 0 deletions pdoc/extract.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,8 @@ def parse_spec(spec: Path | str) -> str:
)

if isinstance(spec, Path):
if spec.name == "__init__.py":
spec = spec.parent
if (spec.parent / "__init__.py").exists():
return parse_spec(spec.resolve().parent) + f".{spec.stem}"
parent_dir = str(spec.parent)
Expand Down
2 changes: 1 addition & 1 deletion pdoc/templates/default/module.html.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ See https://pdoc.dev/docs/pdoc/render_helpers.html#DefaultMacroExtension for an
Implementing this as a macro makes it very easy to override with a custom template, see
https://github.com/mitmproxy/pdoc/tree/main/examples/custom-template.
#}
{% if doc.name == "__init__" and (doc.signature_without_self.parameters or doc.docstring) %}
{% if doc.name == "__init__" and (doc.docstring or (doc.kind == "function" and doc.signature_without_self.parameters)) %}
{# show constructors that have a docstring or at least one extra argument #}
true
{% elif doc.name == "__doc__" %}
Expand Down
6 changes: 6 additions & 0 deletions test/test_extract.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,12 @@ def test_parse_spec(monkeypatch):
assert str(here / "testdata") in sys.path
sys.path = p

assert (
parse_spec(here / "testdata" / "demopackage" / "__init__.py") == "demopackage"
)
assert str(here / "testdata") in sys.path
sys.path = p


def test_parse_spec_mod_and_dir(tmp_path, monkeypatch):
"""Test that we display a warning when both a module and a local directory exist with the provided name."""
Expand Down
102 changes: 67 additions & 35 deletions test/testdata/misc.html
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,12 @@ <h2>API Documentation</h2>
</ul>

</li>
<li>
<a class="class" href="#__init__">__init__</a>
<ul class="memberlist">
</ul>

</li>
</ul>


Expand Down Expand Up @@ -681,41 +687,46 @@ <h1 class="modulename">
</span><span id="L-398"><a href="#L-398"><span class="linenos">398</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Test for broken links for inherited methods, https://github.com/mitmproxy/pdoc/issues/490&quot;&quot;&quot;</span>
</span><span id="L-399"><a href="#L-399"><span class="linenos">399</span></a>
</span><span id="L-400"><a href="#L-400"><span class="linenos">400</span></a>
</span><span id="L-401"><a href="#L-401"><span class="linenos">401</span></a><span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span>
</span><span id="L-402"><a href="#L-402"><span class="linenos">402</span></a> <span class="s2">&quot;Issue226&quot;</span><span class="p">,</span>
</span><span id="L-403"><a href="#L-403"><span class="linenos">403</span></a> <span class="s2">&quot;var_with_default_obj&quot;</span><span class="p">,</span>
</span><span id="L-404"><a href="#L-404"><span class="linenos">404</span></a> <span class="s2">&quot;var_with_default_func&quot;</span><span class="p">,</span>
</span><span id="L-405"><a href="#L-405"><span class="linenos">405</span></a> <span class="s2">&quot;func_with_defaults&quot;</span><span class="p">,</span>
</span><span id="L-406"><a href="#L-406"><span class="linenos">406</span></a> <span class="s2">&quot;ClassmethodLink&quot;</span><span class="p">,</span>
</span><span id="L-407"><a href="#L-407"><span class="linenos">407</span></a> <span class="s2">&quot;GenericParent&quot;</span><span class="p">,</span>
</span><span id="L-408"><a href="#L-408"><span class="linenos">408</span></a> <span class="s2">&quot;NonGenericChild&quot;</span><span class="p">,</span>
</span><span id="L-409"><a href="#L-409"><span class="linenos">409</span></a> <span class="s2">&quot;Child&quot;</span><span class="p">,</span>
</span><span id="L-410"><a href="#L-410"><span class="linenos">410</span></a> <span class="s2">&quot;only_annotated&quot;</span><span class="p">,</span>
</span><span id="L-411"><a href="#L-411"><span class="linenos">411</span></a> <span class="s2">&quot;_Private&quot;</span><span class="p">,</span>
</span><span id="L-412"><a href="#L-412"><span class="linenos">412</span></a> <span class="s2">&quot;LambdaAttr&quot;</span><span class="p">,</span>
</span><span id="L-413"><a href="#L-413"><span class="linenos">413</span></a> <span class="s2">&quot;foo&quot;</span><span class="p">,</span>
</span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a> <span class="s2">&quot;bar&quot;</span><span class="p">,</span>
</span><span id="L-415"><a href="#L-415"><span class="linenos">415</span></a> <span class="s2">&quot;baz&quot;</span><span class="p">,</span>
</span><span id="L-416"><a href="#L-416"><span class="linenos">416</span></a> <span class="s2">&quot;qux&quot;</span><span class="p">,</span>
</span><span id="L-417"><a href="#L-417"><span class="linenos">417</span></a> <span class="s2">&quot;Indented&quot;</span><span class="p">,</span>
</span><span id="L-418"><a href="#L-418"><span class="linenos">418</span></a> <span class="s2">&quot;fun_with_protected_decorator&quot;</span><span class="p">,</span>
</span><span id="L-419"><a href="#L-419"><span class="linenos">419</span></a> <span class="s2">&quot;unhashable&quot;</span><span class="p">,</span>
</span><span id="L-420"><a href="#L-420"><span class="linenos">420</span></a> <span class="s2">&quot;AbstractClass&quot;</span><span class="p">,</span>
</span><span id="L-421"><a href="#L-421"><span class="linenos">421</span></a> <span class="s2">&quot;add_four&quot;</span><span class="p">,</span>
</span><span id="L-422"><a href="#L-422"><span class="linenos">422</span></a> <span class="s2">&quot;add_five&quot;</span><span class="p">,</span>
</span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a> <span class="s2">&quot;add_six&quot;</span><span class="p">,</span>
</span><span id="L-424"><a href="#L-424"><span class="linenos">424</span></a> <span class="s2">&quot;linkify_links&quot;</span><span class="p">,</span>
</span><span id="L-425"><a href="#L-425"><span class="linenos">425</span></a> <span class="s2">&quot;Issue352a&quot;</span><span class="p">,</span>
</span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a> <span class="s2">&quot;Issue352b&quot;</span><span class="p">,</span>
</span><span id="L-427"><a href="#L-427"><span class="linenos">427</span></a> <span class="s2">&quot;CustomCall&quot;</span><span class="p">,</span>
</span><span id="L-428"><a href="#L-428"><span class="linenos">428</span></a> <span class="s2">&quot;Headings&quot;</span><span class="p">,</span>
</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a> <span class="s2">&quot;repr_not_syntax_highlightable&quot;</span><span class="p">,</span>
</span><span id="L-430"><a href="#L-430"><span class="linenos">430</span></a> <span class="s2">&quot;ClassDecorator&quot;</span><span class="p">,</span>
</span><span id="L-431"><a href="#L-431"><span class="linenos">431</span></a> <span class="s2">&quot;another_decorated_function&quot;</span><span class="p">,</span>
</span><span id="L-432"><a href="#L-432"><span class="linenos">432</span></a> <span class="s2">&quot;SubclassRef&quot;</span><span class="p">,</span>
</span><span id="L-433"><a href="#L-433"><span class="linenos">433</span></a> <span class="s2">&quot;ClassAsAttribute&quot;</span><span class="p">,</span>
</span><span id="L-434"><a href="#L-434"><span class="linenos">434</span></a> <span class="s2">&quot;scheduler&quot;</span><span class="p">,</span>
</span><span id="L-435"><a href="#L-435"><span class="linenos">435</span></a><span class="p">]</span>
</span><span id="L-401"><a href="#L-401"><span class="linenos">401</span></a><span class="k">class</span> <span class="nc">__init__</span><span class="p">:</span>
</span><span id="L-402"><a href="#L-402"><span class="linenos">402</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;https://github.com/mitmproxy/pdoc/issues/519&quot;&quot;&quot;</span>
</span><span id="L-403"><a href="#L-403"><span class="linenos">403</span></a>
</span><span id="L-404"><a href="#L-404"><span class="linenos">404</span></a>
</span><span id="L-405"><a href="#L-405"><span class="linenos">405</span></a><span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span>
</span><span id="L-406"><a href="#L-406"><span class="linenos">406</span></a> <span class="s2">&quot;Issue226&quot;</span><span class="p">,</span>
</span><span id="L-407"><a href="#L-407"><span class="linenos">407</span></a> <span class="s2">&quot;var_with_default_obj&quot;</span><span class="p">,</span>
</span><span id="L-408"><a href="#L-408"><span class="linenos">408</span></a> <span class="s2">&quot;var_with_default_func&quot;</span><span class="p">,</span>
</span><span id="L-409"><a href="#L-409"><span class="linenos">409</span></a> <span class="s2">&quot;func_with_defaults&quot;</span><span class="p">,</span>
</span><span id="L-410"><a href="#L-410"><span class="linenos">410</span></a> <span class="s2">&quot;ClassmethodLink&quot;</span><span class="p">,</span>
</span><span id="L-411"><a href="#L-411"><span class="linenos">411</span></a> <span class="s2">&quot;GenericParent&quot;</span><span class="p">,</span>
</span><span id="L-412"><a href="#L-412"><span class="linenos">412</span></a> <span class="s2">&quot;NonGenericChild&quot;</span><span class="p">,</span>
</span><span id="L-413"><a href="#L-413"><span class="linenos">413</span></a> <span class="s2">&quot;Child&quot;</span><span class="p">,</span>
</span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a> <span class="s2">&quot;only_annotated&quot;</span><span class="p">,</span>
</span><span id="L-415"><a href="#L-415"><span class="linenos">415</span></a> <span class="s2">&quot;_Private&quot;</span><span class="p">,</span>
</span><span id="L-416"><a href="#L-416"><span class="linenos">416</span></a> <span class="s2">&quot;LambdaAttr&quot;</span><span class="p">,</span>
</span><span id="L-417"><a href="#L-417"><span class="linenos">417</span></a> <span class="s2">&quot;foo&quot;</span><span class="p">,</span>
</span><span id="L-418"><a href="#L-418"><span class="linenos">418</span></a> <span class="s2">&quot;bar&quot;</span><span class="p">,</span>
</span><span id="L-419"><a href="#L-419"><span class="linenos">419</span></a> <span class="s2">&quot;baz&quot;</span><span class="p">,</span>
</span><span id="L-420"><a href="#L-420"><span class="linenos">420</span></a> <span class="s2">&quot;qux&quot;</span><span class="p">,</span>
</span><span id="L-421"><a href="#L-421"><span class="linenos">421</span></a> <span class="s2">&quot;Indented&quot;</span><span class="p">,</span>
</span><span id="L-422"><a href="#L-422"><span class="linenos">422</span></a> <span class="s2">&quot;fun_with_protected_decorator&quot;</span><span class="p">,</span>
</span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a> <span class="s2">&quot;unhashable&quot;</span><span class="p">,</span>
</span><span id="L-424"><a href="#L-424"><span class="linenos">424</span></a> <span class="s2">&quot;AbstractClass&quot;</span><span class="p">,</span>
</span><span id="L-425"><a href="#L-425"><span class="linenos">425</span></a> <span class="s2">&quot;add_four&quot;</span><span class="p">,</span>
</span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a> <span class="s2">&quot;add_five&quot;</span><span class="p">,</span>
</span><span id="L-427"><a href="#L-427"><span class="linenos">427</span></a> <span class="s2">&quot;add_six&quot;</span><span class="p">,</span>
</span><span id="L-428"><a href="#L-428"><span class="linenos">428</span></a> <span class="s2">&quot;linkify_links&quot;</span><span class="p">,</span>
</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a> <span class="s2">&quot;Issue352a&quot;</span><span class="p">,</span>
</span><span id="L-430"><a href="#L-430"><span class="linenos">430</span></a> <span class="s2">&quot;Issue352b&quot;</span><span class="p">,</span>
</span><span id="L-431"><a href="#L-431"><span class="linenos">431</span></a> <span class="s2">&quot;CustomCall&quot;</span><span class="p">,</span>
</span><span id="L-432"><a href="#L-432"><span class="linenos">432</span></a> <span class="s2">&quot;Headings&quot;</span><span class="p">,</span>
</span><span id="L-433"><a href="#L-433"><span class="linenos">433</span></a> <span class="s2">&quot;repr_not_syntax_highlightable&quot;</span><span class="p">,</span>
</span><span id="L-434"><a href="#L-434"><span class="linenos">434</span></a> <span class="s2">&quot;ClassDecorator&quot;</span><span class="p">,</span>
</span><span id="L-435"><a href="#L-435"><span class="linenos">435</span></a> <span class="s2">&quot;another_decorated_function&quot;</span><span class="p">,</span>
</span><span id="L-436"><a href="#L-436"><span class="linenos">436</span></a> <span class="s2">&quot;SubclassRef&quot;</span><span class="p">,</span>
</span><span id="L-437"><a href="#L-437"><span class="linenos">437</span></a> <span class="s2">&quot;ClassAsAttribute&quot;</span><span class="p">,</span>
</span><span id="L-438"><a href="#L-438"><span class="linenos">438</span></a> <span class="s2">&quot;scheduler&quot;</span><span class="p">,</span>
</span><span id="L-439"><a href="#L-439"><span class="linenos">439</span></a> <span class="s2">&quot;__init__&quot;</span><span class="p">,</span>
</span><span id="L-440"><a href="#L-440"><span class="linenos">440</span></a><span class="p">]</span>
</span></pre></div>


Expand Down Expand Up @@ -2181,6 +2192,27 @@ <h5>Inherited Members</h5>
</dl>
</div>
</section>
<section id="__init__">
<input id="__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr class">

<span class="def">class</span>
<span class="name">__init__</span>:

<label class="view-source-button" for="__init__-view-source"><span>View Source</span></label>

</div>
<a class="headerlink" href="#__init__"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="__init__-402"><a href="#__init__-402"><span class="linenos">402</span></a><span class="k">class</span> <span class="nc">__init__</span><span class="p">:</span>
</span><span id="__init__-403"><a href="#__init__-403"><span class="linenos">403</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;https://github.com/mitmproxy/pdoc/issues/519&quot;&quot;&quot;</span>
</span></pre></div>


<div class="docstring"><p><a href="https://github.com/mitmproxy/pdoc/issues/519">https://github.com/mitmproxy/pdoc/issues/519</a></p>
</div>


</section>
</main>
</body>
</html>
5 changes: 5 additions & 0 deletions test/testdata/misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -398,6 +398,10 @@ class scheduler(sched.scheduler):
"""Test for broken links for inherited methods, https://github.com/mitmproxy/pdoc/issues/490"""


class __init__:
"""https://github.com/mitmproxy/pdoc/issues/519"""


__all__ = [
"Issue226",
"var_with_default_obj",
Expand Down Expand Up @@ -432,4 +436,5 @@ class scheduler(sched.scheduler):
"SubclassRef",
"ClassAsAttribute",
"scheduler",
"__init__",
]
3 changes: 3 additions & 0 deletions test/testdata/misc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -114,4 +114,7 @@
<method def run(self, blocking=True): ... # inherited from sched.scheduler.run, Execute events until…>
<var queue # inherited from sched.scheduler.queue, An ordered list of u…>
>
<class misc.__init__ # https://github.com/m…
<method def __init__(): ...>
>
>