Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions sphinxarg/ext.py
Original file line number Diff line number Diff line change
Expand Up @@ -540,15 +540,11 @@ def run(self):
if 'prog' in self.options:
parser.prog = self.options['prog']

# Argparse in Python 3.14 uses ANSI color codes by default (#72)
if hasattr(parser, 'color'):
parser.color = 'color' in self.options
# Disable colors, unless a flag is present in the user-settings

result = parse_parser(
parser,
skip_default_values='nodefault' in self.options,
skip_default_const_values='nodefaultconst' in self.options,
color='color' in self.options,
)
result = parser_navigate(result, path)
if 'manpage' in self.options:
Expand Down
17 changes: 17 additions & 0 deletions sphinxarg/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,18 @@ def _format_usage_without_prefix(parser):


def parse_parser(parser, data=None, **kwargs):
"""Take data from argparse argument parser.

Keyword arguments:
- skip_default_values
- skip_default_const_values
- color
"""
# Argparse in Python 3.14 uses ANSI color codes by default (#72)
if hasattr(parser, 'color'):
parser.color = kwargs.get('color', False)
# Disable colors, unless a flag is presented through user-settings

if data is None:
data = {
'name': '',
Expand Down Expand Up @@ -85,6 +97,11 @@ def parse_parser(parser, data=None, **kwargs):
for name, subaction in action._name_parser_map.items():
if name in subsection_alias_names:
continue

if hasattr(subaction, 'color'):
subaction.color = parser.color
# Color is not inherited, must be set again

subalias = subsection_alias[subaction]
subaction.prog = f'{parser.prog} {name}'
subdata = {
Expand Down
Loading