Skip to content

Commit 6a0c7e2

Browse files
committed
hotfix: fixed issue where aliases could be None in group
1 parent a83f6fd commit 6a0c7e2

File tree

3 files changed

+35
-6
lines changed

3 files changed

+35
-6
lines changed

click_with_aliasing/_aliased_group.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,16 @@ def add_command(
2626
Raises:
2727
ValueError: If the command name is already taken.
2828
"""
29-
aliases = getattr(cmd, "aliases", [])
29+
aliases = getattr(cmd, "aliases", None)
30+
if aliases is None:
31+
aliases = []
32+
elif not isinstance(aliases, (list, tuple)):
33+
aliases = [aliases] if isinstance(aliases, str) else []
34+
3035
super().add_command(cmd, name)
3136
for alias in aliases:
32-
super().add_command(cmd, alias)
37+
if isinstance(alias, str) and alias.strip():
38+
super().add_command(cmd, alias)
3339

3440
def format_commands(
3541
self, ctx: click.Context, formatter: click.HelpFormatter
@@ -48,9 +54,18 @@ def format_commands(
4854
commands = {}
4955
for name, cmd in self.commands.items():
5056
if name == cmd.name:
51-
aliases = getattr(cmd, "aliases", [])
52-
if aliases:
53-
name = f"{name} ({', '.join(aliases)})"
57+
aliases = getattr(cmd, "aliases", None)
58+
if aliases is None:
59+
aliases = []
60+
elif not isinstance(aliases, (list, tuple)):
61+
aliases = [aliases] if isinstance(aliases, str) else []
62+
63+
valid_aliases = [
64+
a for a in aliases if isinstance(a, str) and a.strip()
65+
]
66+
67+
if valid_aliases:
68+
name = f"{name} ({', '.join(valid_aliases)})"
5469
commands[name] = cmd
5570

5671
rows = [

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "click_with_aliasing"
3-
version = "1.1.0"
3+
version = "1.1.1"
44
description = "A library that allows you to add aliases to your Click group and commands."
55
authors = [
66
{ name = "Marcus Fredriksson", email = "marcus@marcusfredriksson.com" },

tests/test_group.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,17 @@ def test_async_group_help(self, runner: CliRunner):
6363
result = runner.invoke(async_group, ["--help"])
6464
assert result.exit_code == 0
6565
assert "async_cmd" in result.output
66+
67+
68+
def test_add_regular_click_command_to_aliased_group():
69+
"""Test that regular Click commands can be added to AliasedGroup."""
70+
71+
@group(name="test_group")
72+
def test_grp():
73+
pass
74+
75+
@click.command()
76+
def regular_cmd():
77+
"""A regular Click command."""
78+
79+
test_grp.add_command(regular_cmd)

0 commit comments

Comments
 (0)