##// END OF EJS Templates
tidy space
Adam Hackbarth -
Show More
@@ -1,68 +1,66 b''
1
2 from pathlib import Path
1 from pathlib import Path
3 from IPython.core.alias import Alias
2 from IPython.core.alias import Alias
4 from IPython.core.interactiveshell import InteractiveShell
3 from IPython.core.interactiveshell import InteractiveShell
5 from IPython.core.magic import MagicAlias
4 from IPython.core.magic import MagicAlias
6 from IPython.utils.text import dedent, indent
5 from IPython.utils.text import dedent, indent
7
6
8 shell = InteractiveShell.instance()
7 shell = InteractiveShell.instance()
9 magics = shell.magics_manager.magics
8 magics = shell.magics_manager.magics
10
9
11 def _strip_underline(line):
10 def _strip_underline(line):
12 chars = set(line.strip())
11 chars = set(line.strip())
13 if len(chars) == 1 and ("-" in chars or "=" in chars):
12 if len(chars) == 1 and ("-" in chars or "=" in chars):
14 return ""
13 return ""
15 else:
14 else:
16 return line
15 return line
17
16
18 def format_docstring(func):
17 def format_docstring(func):
19 docstring = (func.__doc__ or "Undocumented").rstrip()
18 docstring = (func.__doc__ or "Undocumented").rstrip()
20 docstring = indent(dedent(docstring))
19 docstring = indent(dedent(docstring))
21 # Sphinx complains if indented bits have rst headings in, so strip out
20 # Sphinx complains if indented bits have rst headings in, so strip out
22 # any underlines in the docstring.
21 # any underlines in the docstring.
23 lines = [_strip_underline(l) for l in docstring.splitlines()]
22 lines = [_strip_underline(l) for l in docstring.splitlines()]
24 return "\n".join(lines)
23 return "\n".join(lines)
25
24
26 output = [
25 output = [
27 "Line magics",
26 "Line magics",
28 "===========",
27 "===========",
29 "",
28 "",
30 ]
29 ]
31
30
32 # Case insensitive sort by name
31 # Case insensitive sort by name
33 def sortkey(s): return s[0].lower()
32 def sortkey(s): return s[0].lower()
34
33
35 for name, func in sorted(magics["line"].items(), key=sortkey):
34 for name, func in sorted(magics["line"].items(), key=sortkey):
36 if isinstance(func, Alias) or isinstance(func, MagicAlias):
35 if isinstance(func, Alias) or isinstance(func, MagicAlias):
37 # Aliases are magics, but shouldn't be documented here
36 # Aliases are magics, but shouldn't be documented here
38 # Also skip aliases to other magics
37 # Also skip aliases to other magics
39 continue
38 continue
40 output.extend([".. magic:: {}".format(name),
39 output.extend([".. magic:: {}".format(name),
41 "",
40 "",
42 format_docstring(func),
41 format_docstring(func),
43 ""])
42 ""])
44
43
45 output.extend([
44 output.extend([
46 "Cell magics",
45 "Cell magics",
47 "===========",
46 "===========",
48 "",
47 "",
49 ])
48 ])
50
49
51 for name, func in sorted(magics["cell"].items(), key=sortkey):
50 for name, func in sorted(magics["cell"].items(), key=sortkey):
52 if name == "!":
51 if name == "!":
53 # Special case - don't encourage people to use %%!
52 # Special case - don't encourage people to use %%!
54 continue
53 continue
55 if func == magics["line"].get(name, "QQQP"):
54 if func == magics["line"].get(name, "QQQP"):
56 # Don't redocument line magics that double as cell magics
55 # Don't redocument line magics that double as cell magics
57 continue
56 continue
58 if isinstance(func, MagicAlias):
57 if isinstance(func, MagicAlias):
59 continue
58 continue
60 output.extend([".. cellmagic:: {}".format(name),
59 output.extend([".. cellmagic:: {}".format(name),
61 "",
60 "",
62 format_docstring(func),
61 format_docstring(func),
63 ""])
62 ""])
64
63
65
66 src_path = Path(__file__).parent
64 src_path = Path(__file__).parent
67 dest = src_path.joinpath("source", "interactive", "magics-generated.txt")
65 dest = src_path.joinpath("source", "interactive", "magics-generated.txt")
68 dest.write_text("\n".join(output))
66 dest.write_text("\n".join(output))
General Comments 0
You need to be logged in to leave comments. Login now