Skip to content

Commit d36b634

Browse files
committed
Fix docstring leading space.
Since python/cpython#106411, it look like cpython is removing leading space and indent. We therefore need conditional check, until we decide Wether this is a problem we want to deal with or not.
1 parent 90276e8 commit d36b634

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

IPython/core/tests/test_magic_arguments.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
from IPython.core.magic_arguments import (argument, argument_group, kwds,
1313
magic_arguments, parse_argstring, real_name)
1414

15+
LEADING_SPACE = '' if sys.version_info > (3, 13) else ' '
16+
1517

1618
@magic_arguments()
1719
@argument('-f', '--foo', help="an argument")
@@ -81,22 +83,22 @@ def test_magic_arguments():
8183

8284
assert (
8385
magic_foo1.__doc__
84-
== f"::\n\n %foo1 [-f FOO]\n\n A docstring.\n\n{options}:\n -f FOO, --foo FOO an argument\n"
86+
== f"::\n\n %foo1 [-f FOO]\n\n{LEADING_SPACE}A docstring.\n\n{options}:\n -f FOO, --foo FOO an argument\n"
8587
)
8688
assert getattr(magic_foo1, "argcmd_name", None) == None
8789
assert real_name(magic_foo1) == "foo1"
8890
assert magic_foo1(None, "") == argparse.Namespace(foo=None)
8991
assert hasattr(magic_foo1, "has_arguments")
9092

91-
assert magic_foo2.__doc__ == "::\n\n %foo2\n\n A docstring.\n"
93+
assert magic_foo2.__doc__ == f"::\n\n %foo2\n\n{LEADING_SPACE}A docstring.\n"
9294
assert getattr(magic_foo2, "argcmd_name", None) == None
9395
assert real_name(magic_foo2) == "foo2"
9496
assert magic_foo2(None, "") == argparse.Namespace()
9597
assert hasattr(magic_foo2, "has_arguments")
9698

9799
assert (
98100
magic_foo3.__doc__
99-
== f"::\n\n %foo3 [-f FOO] [-b BAR] [-z BAZ]\n\n A docstring.\n\n{options}:\n -f FOO, --foo FOO an argument\n\nGroup:\n -b BAR, --bar BAR a grouped argument\n\nSecond Group:\n -z BAZ, --baz BAZ another grouped argument\n"
101+
== f"::\n\n %foo3 [-f FOO] [-b BAR] [-z BAZ]\n\n{LEADING_SPACE}A docstring.\n\n{options}:\n -f FOO, --foo FOO an argument\n\nGroup:\n -b BAR, --bar BAR a grouped argument\n\nSecond Group:\n -z BAZ, --baz BAZ another grouped argument\n"
100102
)
101103
assert getattr(magic_foo3, "argcmd_name", None) == None
102104
assert real_name(magic_foo3) == "foo3"
@@ -105,7 +107,7 @@ def test_magic_arguments():
105107

106108
assert (
107109
magic_foo4.__doc__
108-
== f"::\n\n %foo4 [-f FOO]\n\n A docstring.\n\n{options}:\n -f FOO, --foo FOO an argument\n"
110+
== f"::\n\n %foo4 [-f FOO]\n\n{LEADING_SPACE}A docstring.\n\n{options}:\n -f FOO, --foo FOO an argument\n"
109111
)
110112
assert getattr(magic_foo4, "argcmd_name", None) == None
111113
assert real_name(magic_foo4) == "foo4"
@@ -114,7 +116,7 @@ def test_magic_arguments():
114116

115117
assert (
116118
magic_foo5.__doc__
117-
== f"::\n\n %frobnicate [-f FOO]\n\n A docstring.\n\n{options}:\n -f FOO, --foo FOO an argument\n"
119+
== f"::\n\n %frobnicate [-f FOO]\n\n{LEADING_SPACE}A docstring.\n\n{options}:\n -f FOO, --foo FOO an argument\n"
118120
)
119121
assert getattr(magic_foo5, "argcmd_name", None) == "frobnicate"
120122
assert real_name(magic_foo5) == "frobnicate"
@@ -123,7 +125,7 @@ def test_magic_arguments():
123125

124126
assert (
125127
magic_magic_foo.__doc__
126-
== f"::\n\n %magic_foo [-f FOO]\n\n A docstring.\n\n{options}:\n -f FOO, --foo FOO an argument\n"
128+
== f"::\n\n %magic_foo [-f FOO]\n\n{LEADING_SPACE}A docstring.\n\n{options}:\n -f FOO, --foo FOO an argument\n"
127129
)
128130
assert getattr(magic_magic_foo, "argcmd_name", None) == None
129131
assert real_name(magic_magic_foo) == "magic_foo"
@@ -132,7 +134,7 @@ def test_magic_arguments():
132134

133135
assert (
134136
foo.__doc__
135-
== f"::\n\n %foo [-f FOO]\n\n A docstring.\n\n{options}:\n -f FOO, --foo FOO an argument\n"
137+
== f"::\n\n %foo [-f FOO]\n\n{LEADING_SPACE}A docstring.\n\n{options}:\n -f FOO, --foo FOO an argument\n"
136138
)
137139
assert getattr(foo, "argcmd_name", None) == None
138140
assert real_name(foo) == "foo"

IPython/utils/text.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from string import Formatter
1818
from pathlib import Path
1919

20-
from typing import List, Union, Optional, Dict, Tuple
20+
from typing import List, Dict, Tuple
2121

2222

2323
class LSString(str):
@@ -357,7 +357,7 @@ def format_screen(strng):
357357
return strng
358358

359359

360-
def dedent(text):
360+
def dedent(text: str) -> str:
361361
"""Equivalent of textwrap.dedent that ignores unindented first line.
362362
363363
This means it will still dedent strings like:

0 commit comments

Comments
 (0)