Dima Tisnek
Dima Tisnek
in summary, now that we use a workspace, we can issue one command ``` uv build ``` and that builds `ops`, `ops-tracing` and `ops-scenario`.

napoleon: 'sphinx.ext.napoleon' is included, no config set. autodoc: included with following config: ```py autodoc_typehints = 'signature' autoclass_content = 'class' autodoc_member_order = 'alphabetical' autodoc_default_options = { 'members': None, # None here...
Note the `@staticmethod` decorator that effectively strips `self`.
Discussion: How about we do something like this: ```py # class ops.testing.Context def __init__(self, charm_type, meta=None, *, config=None, actions=None): if config is None and meta is not None: config =...
bike shed time: let's take lead from scneario and switch to double quotes 🙄
``` (gdb) bt #0 __GI_strcmp () at ../sysdeps/aarch64/strcmp.S:170 #1 0x00000000004e8930 in ?? () #2 0x0000fffff765a5e4 [PAC] in ?? () from /home/dima.linux/code/jhack/linux-home-env/lib/python3.13/site-packages/pydantic_core/_pydantic_core.cpython-313t-aarch64-linux-gnu.so #3 0x0000fffff77d1780 in PyInit__pydantic_core () from /home/dima.linux/code/jhack/linux-home-env/lib/python3.13/site-packages/pydantic_core/_pydantic_core.cpython-313t-aarch64-linux-gnu.so #4 0x00000000005f1f2c...
WDYT about this idiom for documenting enum values? https://github.com/canonical/operator/blob/6a17bf933114959a968fe65502f429a0dab4452c/ops/charm.py#L1815-L1822
The convention was counter-intuitive for me too. The way I force myself to remember this is: - after `def foo()` goes the function docstring - after `attr: int` goes the...
Or you could use https://typing-extensions.readthedocs.io/en/latest/index.html#typing_extensions.Doc if the tooling groks that.