Skip to content

Commit 25bbf31

Browse files
committed
Various documentation improvements
- Hide special members - Use intersphinx to link Python and Pydantic docs - Fix documentation of type aliases (mostly)
1 parent 660f5fe commit 25bbf31

File tree

13 files changed

+48
-25
lines changed

13 files changed

+48
-25
lines changed

docs/conf.py

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,14 @@
3737
"sphinx.ext.autodoc",
3838
"sphinx.ext.viewcode",
3939
"sphinx.ext.napoleon",
40+
"sphinx.ext.intersphinx",
4041
"sphinx_autodoc_typehints"
4142
]
4243

44+
intersphinx_mapping = {
45+
"python": ("https://docs.python.org/3", None)
46+
}
47+
4348
# Add any paths that contain templates here, relative to this directory.
4449
templates_path = [ "_templates" ]
4550

@@ -61,29 +66,36 @@
6166

6267
# -- Autodoc Configuration ---------------------------------------------------------------
6368

64-
# The following two options seem to be ignored...
69+
nitpicky = True
70+
6571
autodoc_typehints = "description"
66-
autodoc_type_aliases = { type_alias: f"{type_alias}" for type_alias in {
67-
"Priv",
68-
"Seed",
72+
autodoc_type_aliases = { k: k for k in {
73+
"JSONType",
6974
"Ed25519Pub",
70-
"JSONType"
75+
"Priv",
76+
"Seed"
7177
} }
7278

79+
# https://github.com/sphinx-doc/sphinx/issues/10785
80+
def resolve_type_aliases(app, env, node, contnode):
81+
"""Resolve :class: references to our type aliases as :attr: instead."""
82+
if (
83+
node["refdomain"] == "py"
84+
and node["reftype"] == "class"
85+
and node["reftarget"] in autodoc_type_aliases
86+
):
87+
return app.env.get_domain("py").resolve_xref(
88+
env, node["refdoc"], app.builder, "attr", node["reftarget"], node, contnode
89+
)
90+
7391
def autodoc_skip_member_handler(app, what, name, obj, skip, options):
7492
# Skip private members, i.e. those that start with double underscores but do not end in underscores
7593
if name.startswith("__") and not name.endswith("_"):
7694
return True
7795

78-
# Could be achieved using exclude-members, but this is more comfy
79-
if name in {
80-
"__abstractmethods__",
81-
"__dict__",
82-
"__module__",
83-
"__new__",
84-
"__weakref__",
85-
"_abc_impl"
86-
}: return True
96+
# Other fixed names to always skip
97+
if name in { "_abc_impl" }:
98+
return True
8799

88100
# Skip __init__s without documentation. Those are just used for type hints.
89101
if name == "__init__" and obj.__doc__ is None:
@@ -93,3 +105,4 @@ def autodoc_skip_member_handler(app, what, name, obj, skip, options):
93105

94106
def setup(app):
95107
app.connect("autodoc-skip-member", autodoc_skip_member_handler)
108+
app.connect("missing-reference", resolve_type_aliases)

docs/omemo/backend.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Module: backend
33

44
.. automodule:: omemo.backend
55
:members:
6-
:special-members:
6+
:special-members: __init__
77
:private-members:
88
:undoc-members:
99
:member-order: bysource

docs/omemo/bundle.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Module: bundle
33

44
.. automodule:: omemo.bundle
55
:members:
6-
:special-members:
6+
:special-members: __eq__, __hash__
77
:private-members:
88
:undoc-members:
99
:member-order: bysource

docs/omemo/identity_key_pair.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Module: identity_key_pair
33

44
.. automodule:: omemo.identity_key_pair
55
:members:
6-
:special-members:
6+
:special-members: __init__
77
:private-members:
88
:undoc-members:
99
:member-order: bysource

docs/omemo/session_manager.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Module: session_manager
33

44
.. automodule:: omemo.session_manager
55
:members:
6-
:special-members:
6+
:special-members: __init__
77
:private-members:
88
:undoc-members:
99
:member-order: bysource

docs/omemo/storage.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,5 @@ Module: storage
88
:undoc-members:
99
:member-order: bysource
1010
:show-inheritance:
11+
12+
.. autoclass:: omemo.storage.ValueTypeT

docs/omemo/types.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,8 @@ Module: types
66
:undoc-members:
77
:member-order: bysource
88
:show-inheritance:
9+
10+
Type Aliases
11+
============
12+
13+
.. autoclass:: omemo.types.JSONType

omemo/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
DeviceListDownloadFailed as DeviceListDownloadFailed,
4242
MessageSendingFailed as MessageSendingFailed,
4343

44+
EncryptionError as EncryptionError,
4445
SessionManager as SessionManager
4546
)
4647

omemo/backend.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,8 @@ async def decrypt_plaintext(self, content: Content, plain_key_material: PlainKey
296296
Decrypt some symmetrically encrypted plaintext.
297297
298298
Args:
299-
content: The content to decrypt. Not empty, i.e. :attr:`Content.empty` will return ``False``.
299+
content: The content to decrypt. Not empty, i.e. :attr:`~omemo.message.Content.empty` will return
300+
``False``.
300301
plain_key_material: The key material to decrypt with.
301302
302303
Returns:

omemo/identity_key_pair.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
1-
# This import from future (theoretically) enables sphinx_autodoc_typehints to handle type aliases better
21
from __future__ import annotations
32

43
from abc import ABC, abstractmethod
54
import logging
65
import secrets
76

8-
import xeddsa.bindings as xeddsa
9-
from xeddsa.bindings import Ed25519Pub, Priv, Seed
7+
import xeddsa
8+
from xeddsa import Ed25519Pub, Priv, Seed
109

1110
from .storage import NothingException, Storage
1211

1312

1413
__all__ = [
1514
"IdentityKeyPair",
1615
"IdentityKeyPairPriv",
17-
"IdentityKeyPairSeed"
16+
"IdentityKeyPairSeed",
17+
"Ed25519Pub",
18+
"Priv",
19+
"Seed"
1820
]
1921

2022

0 commit comments

Comments
 (0)