From c69f9c3b3ddde915619eded6620f7ddada977b00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Mazzucotelli?= Date: Thu, 20 Jul 2023 15:05:29 +0200 Subject: [PATCH 1/2] fix: Fix members ordering when members are specified with a boolean Issue #89: https://github.com/mkdocstrings/python/issues/89 --- src/mkdocstrings_handlers/python/rendering.py | 4 +-- tests/test_rendering.py | 32 +++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/mkdocstrings_handlers/python/rendering.py b/src/mkdocstrings_handlers/python/rendering.py index 81538212..ce6cf9cb 100644 --- a/src/mkdocstrings_handlers/python/rendering.py +++ b/src/mkdocstrings_handlers/python/rendering.py @@ -109,7 +109,7 @@ def do_format_signature( def do_order_members( members: Sequence[Object | Alias], order: Order, - members_list: list[str] | None, + members_list: bool | list[str] | None, ) -> Sequence[Object | Alias]: """Order members given an ordering method. @@ -121,7 +121,7 @@ def do_order_members( Returns: The same members, ordered. """ - if members_list: + if isinstance(members_list, list) and members_list: sorted_members = [] members_dict = {member.name: member for member in members} for name in members_list: diff --git a/tests/test_rendering.py b/tests/test_rendering.py index 5d35c121..b7b7af82 100644 --- a/tests/test_rendering.py +++ b/tests/test_rendering.py @@ -131,3 +131,35 @@ def main(self): ... filtered = rendering.do_filter_objects(objects, members_list=members, inherited_members=inherited_members) names = {obj.name for obj in filtered} assert names == expected_names + + +@pytest.mark.parametrize( + ("order", "members_list", "expected_names"), + [ + (rendering.Order.alphabetical, None, ["a", "b", "c"]), + (rendering.Order.source, None, ["c", "b", "a"]), + (rendering.Order.alphabetical, ["c", "b"], ["c", "b"]), + (rendering.Order.source, ["a", "c"], ["a", "c"]), + (rendering.Order.alphabetical, [], ["a", "b", "c"]), + (rendering.Order.source, [], ["c", "b", "a"]), + (rendering.Order.alphabetical, True, ["a", "b", "c"]), + (rendering.Order.source, False, ["c", "b", "a"]), + ], +) +def test_ordering_members(order: rendering.Order, members_list: list[str | None], expected_names: list[str]) -> None: + """Assert the objects are correctly ordered. + + Parameters: + order: The order to use (alphabetical or source). + members_list: The user specified members list. + expected_names: The expected ordered list of object names. + """ + + class Obj: + def __init__(self, name: str, lineno: int | None = None) -> None: + self.name = name + self.lineno = lineno + + members = [Obj("a", 10), Obj("b", 9), Obj("c", 8)] + ordered = rendering.do_order_members(members, order, members_list) # type: ignore[arg-type] + assert [obj.name for obj in ordered] == expected_names From 3204014ea18e777b7ac96b2d9e562798911f36d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Mazzucotelli?= Date: Thu, 20 Jul 2023 15:07:52 +0200 Subject: [PATCH 2/2] chore: Prepare release 1.2.1 --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8a46c10..ad7209c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,14 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [1.2.1](https://github.com/mkdocstrings/python/releases/tag/1.2.1) - 2023-07-20 + +[Compare with 1.2.0](https://github.com/mkdocstrings/python/compare/1.2.0...1.2.1) + +### Bug Fixes + +- Fix members ordering when members are specified with a boolean ([c69f9c3](https://github.com/mkdocstrings/python/commit/c69f9c3b3ddde915619eded6620f7ddada977b00) by Timothée Mazzucotelli). [Issue #89](https://github.com/mkdocstrings/python/issues/89) + ## [1.2.0](https://github.com/mkdocstrings/python/releases/tag/1.2.0) - 2023-07-14 [Compare with 1.1.2](https://github.com/mkdocstrings/python/compare/1.1.2...1.2.0)