You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<p>A few people asked for stuff like syntax highlighting and autocomplete for the Python interactive interpreter. IPython seems to offer this (plus you can get readline behaviour in the vanilla interpreter) but I tried IPython a couple of times. Perhaps I didn't really get it, but I get the feeling that the ideas behind IPython are pretty different to bpython. I didn't want to create a whole development environment; I simply wanted to provide a couple of neat features that already exist and turn them into something a little more interactive.</p>
41
+
<p>The idea is to provide the user with all the features in-line, much like modern IDEs, but in a simple, lightweight package that can be run in a terminal window, so curses seemed like the best choice. Sorry if you use Windows.</p>
42
+
<p>bpython doesn't attempt to create anything new or groundbreaking, it simply brings together a few neat ideas and focuses on practicality and usefulness. For this reason, the "Rewind" function should be taken with a pinch of salt, but personally I have found it to be very useful. I use bpython now whenever I would normally use the vanilla interpreter, e.g. for testing out solutions to people's problems on IRC, quickly testing a method of doing something without creating a temporary file, etc..</p>
43
+
<p>I hope you find it useful and please feel free to submit any bugs/patches (yeah right)/suggestions to the <aclass="reference external" href="/community.html">mailing list</a>. Money is also accepted.</p>
<p>This uses Pygments for lexing the code as you type, and colours appropriately. Pygments does a great job of doing all of the tricky stuff and really leaving me with very little to do except format the tokens in all my favourite colours.</p>
<h3>Readline-like autocomplete with suggestions displayed as you type.</h3>
53
+
<p>Thanks to Python's readline interface to libreadline and a ready-made class for using a Python interpreter's scope as the dataset, the only work here was displaying the readline matches as you type in a separate curses window below/above the cursor.</p>
54
+
</div>
55
+
<divclass="section" id="expected-parameter-list">
56
+
<h3>Expected parameter list.</h3>
57
+
<p>As in a lot of modern IDEs, bpython will attempt to display a list of parameters for any function you call. The inspect module is tried first, which works with any Python function, and then pydoc if that fails, which seems to be pretty adequate, but obviously in some cases it's simply not possible. I used pyparsing to cure my nested parentheses woes; again, it was nice and easy.</p>
58
+
</div>
59
+
<divclass="section" id="rewind">
60
+
<h3>Rewind.</h3>
61
+
<p>I didn't call this "Undo" because I thought that would be misleading, but "Rewind" is probably as bad. The idea is that the code entered is kept in memory and when the Rewind function is called, the last line is popped and the entire code is re-evaluated. As you can imagine, this has a lot of potential problems, but for defining classes and functions, I've found it to be nothing but useful.</p>
<p>I don't really use the save thing much, but the pastebin thing's great. Hit a key and what you see on the screen will be sent to a pastebin and a URL is returned for you to do what you like with. bpaste.net is used by default, but you can configure bpython to use a different pastebin.</p>
<p>A featurette, perhaps, but I thought it was worth noting. I can't personally recall a curses app that does this, perhaps it's often not useful, but when you quit bpython, the screen data will be flushed to stdout, so it basically looks the same as if you had quit the vanilla interpreter.</p>
70
+
</div>
71
+
<divclass="section" id="python-3-support">
72
+
<h3>Python 3 support</h3>
73
+
<p>bpython supports Python 3. It's as simple as running setup.py with Python 3.</p>
74
+
</div>
75
+
<divclass="section" id="configuration">
76
+
<h3>Configuration</h3>
77
+
<p>See the sample-config file for a list of available options. You should save your
78
+
ini file as <ttclass="docutils literal">$XDG_CONFIG_HOME/bpython/config</tt><aclass="footnote-reference" href="#f1" id="footnote-reference-1">[1]</a> or specify at the command
<tr><tdclass="label"><aclass="fn-backref" href="#footnote-reference-1">[1]</a></td><td><ttclass="docutils literal">$XDG_CONFIG_HOME</tt> defaults to <ttclass="docutils literal"><spanclass="pre">~/.config</span></tt> if not set.</td></tr>
<p>bpython isn't the only alternative Python shell. Each project has its own goals and values, so you may find bpython isn't the right tool for your needs. We know for sure that some people prefer IPython to bpython, so we think it's a good idea to make sure you're aware of other tools available.</p>
39
+
<p>If you know of any others please let us know. And if you're the author of any of the listed projects and would like to add a brief description to the page feel free to get in touch.</p>
<p>bpython has a small and friendly community surrounding it! Read this page to
39
+
know how to find us.</p>
40
+
<divclass="section" id="issue-tracker">
41
+
<h2>Issue Tracker</h2>
42
+
<p>If you find a bug in bpython or have a suggestion for a new feature, please
43
+
make sure you're using the latest development release (see <aclass="reference external" href="/downloads.html">download</a> page)
44
+
and if it hasn't been fixed/added, go <aclass="reference external" href="https://github.com/bpython/bpython/issues">here</a> and open a new issue.</p>
45
+
</div>
46
+
<divclass="section" id="irc">
47
+
<h2>IRC</h2>
48
+
<p>Join us in #bpython on irc.freenode.net.</p>
49
+
</div>
50
+
<divclass="section" id="mailing-list">
51
+
<h2>Mailing List</h2>
52
+
<p>You can ask a question at our <aclass="reference external" href="https://groups.google.com/forum/#!forum/bpython">mailing list</a> if you prefer.</p>
53
+
</div>
54
+
<divclass="section" id="twitter">
55
+
<h2>Twitter</h2>
56
+
<p>bpython has its own account: <aclass="reference external" href="http://twitter.com/bpythonrepl">bpythonrepl</a>. You can also follow Bob at
57
+
<aclass="reference external" href="http://twitter.com/bob_farrell">bob_farrell</a> or you can follow <aclass="reference external" href="http://twitter.com/supakeen">supakeen</a> for bpython news.</p>
58
+
</div>
59
+
<divclass="section" id="email">
60
+
<h2>Email</h2>
61
+
<p>If you have issues that prevent you from using IRC or signing up to a mailing
62
+
list you can email Bob:</p>
63
+
<p><cite>bob at bpython-interpreter dot org</cite></p>
64
+
<p>(That's <aclass="reference external" href="mailto:bob@bpython-interpreter.org">bob@bpython-interpreter.org</a>, except it stops spam bots from finding
0 commit comments