.. _changelog: Changelog ========= All notable changes to stubpy are recorded here. The format follows `Keep a Changelog `_. ---- 0.1.1 — 2026-03-15 ------------------ **Fixed** - ``*args`` ordering bug in ``_resolve_via_mro``: when a child class had both typed ``*args`` and ``**kwargs``, ``*args`` was incorrectly placed *after* any already-appended ``**kwargs``, producing invalid Python syntax (e.g. ``def f(label, **kwargs, *items)``). Fixed by inserting ``*args`` before the first keyword-only parameter **and** before any trailing ``**kwargs``, then appending ``**kwargs`` afterward. - ``__qualname__`` replaced with ``__name__`` in ``annotation_to_str`` (``_handle_plain_type``) and ``generate_class_stub``. Using ``__qualname__`` caused test-local classes to emit their full nested scope path (e.g. ``TestFoo.test_bar..MyClass``) instead of the simple name ``MyClass``. - Fixed duplicate autodoc warnings in Sphinx build caused by ``api/public.rst`` re-declaring symbols already documented in their own module pages. ``public.rst`` now uses cross-references only. - Fixed ``resolver.rst`` reStructuredText ``*args`` emphasis warning by escaping the leading ``*``. **Added** - New edge-case tests in ``tests/test_integration.py``: ``TestStaticMethods`` (5 tests) and ``TestArgsAndKwargsTogether`` (6 tests) covering ``*args`` + ``**kwargs`` in all inheritance combinations. - Updated ``docs/examples/kwargs_backtracing.rst`` with all new ``*args`` / ``**kwargs`` edge cases documented with worked examples. **Changed** - Private symbols (``_is_type_alias``, ``_register``, ``_detect_cls_call``, ``_resolve_via_cls_call``, ``_resolve_via_mro``, ``_get_raw_params``, ``_KW_SEP_NAME``, ``_PUBLIC_DUNDERS``, ``_TYPING_CANDIDATES``, ``_SKIP_IMPORT_PREFIXES``) removed from the public-facing API reference docs. Docstrings are retained in source for contributors. ---- 0.1.0 — 2026-03-15 ------------------ Initial release. **Added** - ``generate_stub(filepath, output_path)`` — main public API. - ``stubpy`` CLI with ``-o / --output`` and ``--print`` flags. - ``**kwargs`` backtracing via full MRO walk. - ``*args`` backtracing with explicit-annotation preservation. - ``@classmethod cls(**kwargs)`` detection via AST; resolves against ``cls.__init__`` rather than MRO siblings. - Type-alias preservation for imported type sub-modules (``from pkg import types`` pattern). - Cross-file import re-emission in ``.pyi`` headers. - Keyword-only ``*`` separator inserted automatically. - Inline formatting for ≤ 2 params; multi-line with trailing commas for larger signatures. - ``StubContext`` dataclass replacing module-level globals — fully re-entrant. - Dispatch-table ``annotation_to_str`` — extensible without editing a chain. - Support for: plain types, PEP 604 unions, ``Optional``, ``Union``, ``Callable``, ``Literal``, ``Tuple``, ``List``, ``Dict``, ``Sequence``, ``Set``, ``FrozenSet``, ``Type``, ``ClassVar``, forward references, ``@property`` (with setter), ``@classmethod``, ``@staticmethod``. - Complete pytest test suite (224 tests across 6 modules). - Sphinx documentation with Furo theme.