1Changelog 2========= 3 40.22.1 5------ 6 7Fixes: 8 9* #938: Fix missing dependency on typing_extensions. 10 Thanks to Dustin Rodrigues 11 120.22 13---- 14 15General information: 16 17* The #bpython channel has moved to OFTC. 18* Type annotations have been added to the bpython code base. 19* Declarative build configuration is used as much as possible. 20 21New features: 22 23* #883: Allow auto-completion to be disabled 24* #841: Respect locals when using bpython.embed 25* Use pyperclip for better clipboard handling 26 27Fixes: 28 29* #700, #884: Fix writing of b"" on fake stdout 30* #879: Iterate over all completers until a successful one is found 31* #882: Handle errors in theme configuration without crashing 32* #888: Read PYTHONSTARTUP with utf8 as encoding 33* #896: Use default sys.ps1 and sys.ps2 if user specified ones are not usable 34* #902: Do not crash when encountering unreadable files while processing modules for import completion 35* #909: Fix sys.stdin.readline 36* #917: Fix tab completion for dict keys 37* #919: Replicate python behavior when running with -i and a non-existing file 38* #932: Fix handling of __signature__ for completion. 39 Thanks to gpotter2 40 41Changes to dependencies: 42 43* pyperclip is a new optional dependency for clipboard support 44* backports.cached-property is now required for Python < 3.8 45* dataclasses is now required for Python < 3.7 46 47Support for Python 3.10 has been added. 48 490.21 50---- 51 52General information: 53 54* Support for Python 2 has been dropped. 55 56New features: 57 58* #643: Provide bpython._version if built from Github tarballs 59* #849: Make import completion skip list configurable 60* #876: Check spelling with codespell 61 Thanks to Christian Clauss 62 63Fixes: 64 65* #847: Fix import completion of modules 66* #857: Replace remaining use of deprecated imp with importlib 67* #862: Upgrade curtsies version requirements 68 Thanks to Kelsey Blair 69* #863: State correct default config file directory 70 Thanks to niloct 71* #866: Add more directories to the default import completion skip list 72* #873: Handle 'd' when mapping colors 73* #874: Avoid breakage with six's importer 74 75Changes to dependencies: 76 77* curtsies >= 0.3.5 is now required 78* pyxdg is now required 79* wcwidth has been replaced with cwcwidth 80 810.20.1 82------ 83 84Fixes: 85 86* Fix check of key code (fixes #859) 87 880.20 89---- 90 91General information: 92 93* The next release of bpython (0.20) will drop support for Python 2. 94* Support for Python 3.9 has been added. Support for Python 3.5 has been 95 dropped. 96 97New features: 98 99* #802: Provide redo. 100 Thanks to Evan. 101* #835: Add support for importing namespace packages. 102 Thanks to Thomas Babej. 103 104Fixes: 105 106* #622: Provide encoding attribute for FakeOutput. 107* #806: Prevent symbolic link loops in import completion. 108 Thanks to Etienne Richart. 109* #807: Support packages using importlib.metadata API. 110 Thanks to uriariel. 111* #809: Fix support for Python 3.9's ast module. 112* #817: Fix cursor position with full-width characters. 113 Thanks to Jack Rybarczyk. 114* #853: Fix invalid escape sequences. 115 1160.19 117---- 118 119General information: 120 121* The bpython-cli and bpython-urwid rendering backends have been deprecated and 122 will show a warning that they'll be removed in a future release when started. 123* Usage in combination with Python 2 has been deprecated. This does not mean that 124 support is dropped instantly but rather that at some point in the future we will 125 stop running our testcases against Python 2. 126* The new pinnwand API is used for the pastebin functionality. We have dropped 127 two configuration options: `pastebin_show_url` and `pastebin_removal_url`. If 128 you have your bpython configured to run against an old version of `pinnwand` 129 please update it. 130 131New features: 132 133Fixes: 134 135* #765: Display correct signature for decorated functions. 136 Thanks to Benedikt Rascher-Friesenhausen. 137* #776: Protect get_args from user code exceptions 138* Improve lock file handling on Windows 139* #791: Use importlib instead of deprecated imp when running under Python 3 140 141Support for Python 3.8 has been added. Support for Python 3.4 has been dropped. 142 1430.18 144---- 145 146New features: 147 148* #713 expose globals in bpdb debugging. 149 Thanks to toejough. 150 151Fixes: 152 153* Fix file locking on Windows. 154* Exit gracefully if config file fails to be loaded due to encoding errors. 155* #744: Fix newline handling. 156 Thanks to Attila Szöllősi. 157* #731: Fix exit code. 158 Thanks to benkrig. 159* #767: Fix crash when matching certain lines in history. 160 161Support for Python 3.3 has been dropped. 162 1630.17.1 164------ 165 166Fixes: 167 168* Reverted #670 temporarily due to performance impact 169 on large strings being output. 170 1710.17 172---- 173 174New features: 175 176* #641: Implement Ctrl+O. 177* Add default_autoreload config option. 178 Thanks to Alex Frieder. 179 180Fixes: 181 182* Fix deprecation warnings. 183* Do not call signal outside of main thread. 184 Thanks to Max Nordlund. 185* Fix option-backspace behavior. 186 Thanks to Alex Frieder. 187* #648: Fix paste helper. 188 Thanks to Jakob Bowyer. 189* #653: Handle docstrings more carefully. 190* #654: Do not modify history file during tests. 191* #658: Fix newline handling. 192 Thanks to Attila Szöllősi. 193* #670: Fix handling of ANSI escape codes. 194 Thanks to Attila Szöllősi. 195* #687: Fix encoding of jedi completions. 196 1970.16 198---- 199 200New features: 201 202* #466: Improve handling of completion box height. 203 204Fixes: 205 206* Fix various spelling mistakes. 207 Thanks to Josh Soref and Simeon Visser. 208* #601: Fix Python 2 issues on Windows. 209 Thanks to Aditya Gupta. 210* #614: Fix issues when view source. 211 Thanks to Daniel Hahler. 212* #625: Fix issues when running scripts with non-ASCII characters. 213* #639: Fix compatibility issues with pdb++. 214 Thanks to Daniel Hahler. 215 216Support for Python 2.6 has been dropped. 217 2180.15 219---- 220 221This release contains new features and plenty of bug fixes. 222 223New features: 224 225* #425: Added curtsies 0.2.x support. 226* #528: Hide private attribute from initial autocompletion suggestions. 227 Thanks to Jeppe Toustrup. 228* #538: Multi-line banners are allowed. 229* #229: inspect.getsource works on interactively defined functions. 230 Thanks to Michael Mulley. 231* Attribute completion works on literals and some expressions containing 232 builtin objects. 233* Ctrl-e can be used to autocomplete current fish-style suggestion. 234 Thanks to Amjith Ramanujam. 235 236Fixes: 237 238* #484: Switch `bpython.embed` to the curtsies frontend. 239* #548 Fix transpose character bug. 240 Thanks to Wes E. Vial. 241* #527 -q disables version banner. 242* #544 Fix Jedi completion error. 243* #536 Fix completion on old-style classes with custom __getattr__. 244* #480 Fix old-style class autocompletion. 245 Thanks to Joe Jevnik. 246* #506 In python -i mod.py sys.modules[__name__] refers to module dict. 247* #590 Fix "None" not being displayed. 248* #546 Paste detection uses events instead of bytes returned in a single 249 os.read call. 250* Exceptions in autocompletion are now logged instead of crashing bpython. 251* Fix reload in Python 3. 252 Thanks to sharow. 253* Fix keyword argument parameter name completion. 254 255Changes to dependencies: 256 257* requests[security] has been changed to pyOpenSSL, pyasn1, and ndg-httpsclient. 258 These dependencies are required before Python 2.7.7. 259 2600.14.2 261------ 262 263Fixes: 264 265* #498: Fixed is_callable 266* #509: Fixed fcntl usage. 267* #523, #524: Fix conditional dependencies for SNI support again. 268* Fix binary name of bpdb. 269 2700.14.1 271------ 272 273Fixes: 274 275* #483: Fixed jedi exceptions handling. 276* #486: Fixed Python 3.3 compatibility. 277* #489: Create history file with mode 0600. 278* #491: Fix issues with file name completion. 279* #494: Fix six version requirement. 280* Fix conditional dependencies for SNI support in Python versions before 2.7.7. 281 2820.14 283---- 284 285This release contains major changes to the frontends: 286 287* curtsies is the new default frontend. 288* The old curses frontend is available as bpython-curses. 289* The GTK+ frontend has been removed. 290 291New features: 292 293* #194: Syntax-highlighted tracebacks. Thanks to Miriam Lauter. 294* #234: Copy to system clipboard. 295* #285: Re-evaluate session and reimport modules. 296* #313: Warn when undo may take cause extended delay, and prompt to undo 297 multiple lines. 298* #322: Watch imported modules for changes and re-evaluate on changes. 299* #328: bpython history not re-evaluated to edit a previous line of a multiline 300 statement. 301* #334: readline command Meta-. for yank last argument. Thanks to Susan 302 Steinman and Steph Samson. 303* #338: bpython help with F1. 304* #354: Edit config file from within bpython. 305* #382: Partial support for pasting in text with blank lines. 306* #410: Startup banner that shows Python and bpython version 307* #426: Experimental multiline autocompletion. 308* fish style last history completion with Arrow Right. Thanks to Nicholas 309 Sweeting. 310* fish style automatic reverse history search with Arrow Up. 311 Thanks to Nicholas Sweeting. 312* Incremental forward and reverse search. 313* All readline keys which kill/cut text correctly copy text for paste 314 with Ctrl-y or Meta-y. 315* French translation. 316* Removal links for bpaste pastebins are now displayed. 317* More informative error messages when source cannot be found for an object. 318 Thanks to Liudmila Nikolaeva and Miriam Lauter. 319* Message displayed if history in scrollback buffer is inconsistent with 320 output from last re-evaluation of bpython session. Thanks to Susan Steinman. 321* Adjust logging level with -L or -LL. 322* String literal attribute completion. 323 324Fixes: 325 326* #254: Use ASCII characters if Unicode box characters are not supported by the 327 terminal. 328* #284: __file__ is in scope after module run with bpython -i. Thanks to 329 Lindsey Raymond. 330* #347: Fixed crash on unsafe autocompletion. 331* #349: Fixed writing newlines to stderr. 332* #363: Fixed banner crashing bpython-urwid. Thanks to Luca Barbato. 333* #366, #367: Fixed help() support in curtsies. 334* #369: Interactive sessions inherit compiler directives from files run with -i 335 interactive flag. 336* #370, #401, #440, #448, #468, #472: Fixed various display issues in curtsies. 337* #391: Fixed crash when using Meta-backspace. Thanks to Tony Wang. 338* #438, #450: bpython-curtsies startup behavior fixed. Errors 339 during startup are reported instead of crashing. 340* #447: Fixed behavior of duplicate keybindings. Thanks to Keyan Pishdadian. 341* #458: Fixed dictionary key completion crash in Python 2.6. Thanks to Mary 342 Mokuolu. 343* Documentation fixes from Lindsey Raymond. 344* Fixed filename completion. 345* Fixed various Unicode issues in curtsies. 346* Fixed and re-enabled dictionary key completion in curtsies. 347 348The commandline option --type / -t has been renamed to --paste / -p. 349 350Python 2.6, 2.7, 3.3 and newer are supported. Support for 2.5 has been dropped. 351Furthermore, it is no longer necessary to run 2to3 on the source code. 352 353This release brings a lot more code coverage, a new contributing guide, 354and most of the code now conforms to PEP-8. 355 356Changes to dependencies: 357 358* greenlet and curtsies are no longer optional. 359* six is a new dependency. 360* jedi is a new optional dependency required for multiline completion. 361* watchdog is a new optional dependency required for watching changes in 362 imported modules. 363 3640.13.2 365------- 366 367A bugfix release. The fixed bugs are: 368 369* #424: Use new JSON API at bpaste.net. 370* #430: Fixed SNI issues with new pastebin service on Mac OS X. 371* #432: Fixed crash in bpython-curtsies in special circumstances if history file 372 is empty. Thanks to Lisa van Gelder. 373 374Changes to dependencies: 375 376* requests is a new dependency. 377* PyOpenSSL, ndg-httpsclient and pyasn1 are new dependencies on Mac OS X. 378 3790.13.1 380------- 381 382A bugfix release. The fixed bugs are: 383 384* #287: Turned off dictionary completion in bpython-curtsies 385* #281: Fixed a crash on error-raising properties 386* #286: Fixed input in Python 3 387* #293: Added encoding attribute to stdin bpython curtsies 388* #296: Fixed warnings in import completion for Python 3 389* #290: Stop using root logger 390* #301: Specify curtsies version in requirements 391 392There's also a necessary regression: #232 (adding fileno() on stdin) 393is reintroduced because its previous fix was found to be the cause of #286 394 3950.13 396---- 397 398There are a few new features, a bunch of bugfixes, and a new frontend 399for bpython in this release. 400 401* Dictionary key completion, thanks to Maja Frydrychowicz (#226). 402 To use normal completion and ignore these key completions, type a space. 403* Edit current line in external editor: ctrl-x (#161) 404 405Fixes: 406 407* Python 2.5 compatibility, thanks to Michael Schuller (#279). Python 2.5 408 is not officially supported, but after few changes Michael introduced, he 409 says it's working fine. 410* FakeStream has flush(), so works correctly with 411 django.core.email.backends.console thanks to Marc Sibson (#259) 412* FakeStdin has fileno() (#232) 413* Changes to sys.ps1 and sys.ps2 are respected thanks to Michael Schulle (#267) 414* atexit registered functions run on exit (#258) 415* fixed an error on exit code when running a script with bpython script.py (#260) 416* setup.py extras are used to define dependencies for urwid and 417 curtsies frontends 418 419There's a new frontend for bpython: bpython-curtsies. Curtsies is a terminal 420wrapper written to making native scrolling work in bpython. (#56, #245) 421Try bpython-curtsies for the bpython experience with a vanilla python 422layout. (demo: 423http://ballingt.com/assets/bpython-curtsies-scroll-demo-large.gif) 424 425This curtsies frontend addresses some issues unfixed in bpython-cli, and has 426a few extra features: 427 428* Editing full interpreter history in external editor with F7, which is rerun 429 as in rewind 430* A new interpreter is used for rewind, unless bpython-curtsies was started 431 with custom locals or in interactive mode (#71) 432* Ctrl-c behaves more like vanilla python (#177) 433* Completion still works if cursor at the end of the line (#147) 434* Movement keys meta-b, meta-f, and meta-backspace, ctrl-left and ctrl-right 435 are all honored (#246, #201) 436* Non-ascii characters work in the file save prompt (#236) 437* New --type / -t option to run the contents of a file as though they were 438 typed into the bpython-curtsies prompt 439 440A few things about bpython-curtsies are worse than regular bpython: 441 442* Bad things can happen when using several threads (#265) 443* output prints slowly (#262) 444* bpython-curtsies can't be backgrounded and resumed correctly (via ctrl-z, 445 fg) (#274) 446 447There are two new options in the new [curtsies] section of the bpython config 448 449* list_above: whether completion window can cover text above the current line; 450 defaults to True 451* fill_terminal: whether bpython-curtsies should be fullscreen (like bpython); 452 defaults to False 453 4540.12 455---- 456 457We want to give special thanks to the Hacker School project- 458(https://www.hackerschool.com/) for choosing bpython as their pet hacking 459project. In special we would like to thank the following people for contributing 460their code to bpython: 461 462- Martha Girdler 463- Allison Kaptur 464- Ingrid Cheung 465 466We'd also like to thank Eike Hein for contributing his pastebin code which now 467makes it possible to paste using a 3rd party program unlocking a whole slew of 468pastebins for bpython users. 469 470* Added a new pastebin_helper config option to name an executable that should 471 perform pastebin upload on bpython's behalf. If set, this overrides 472 pastebin_url. Data is supplied to the helper via STDIN, and it is expected 473 to return a pastebin URL as the first word of its output. 474* Fixed a bug causing pastebin upload to fail after a previous attempt was 475 unsuccessful. A duplicate pastebin error would be displayed in this case, 476 despite the original upload having failed. 477* Added more key shortcuts to bpython.urwid 478* Smarter dedenting after certain expressions 479* #74 fixed broken completion when auto_display_list was disabled 480 481We also have done numerous cleanup actions including building the man pages from 482our documentation. Including the documentation in the source directory. Some 483minor changes to the README to have EOL 79 and changes to urwid to work better 484without twisted installed. 485 486* Fix ungetch issues with Python 3.3. See issues #230, #231. 487 4880.11 489---- 490 491A bugfix/cleanup release .The fixed bugs are: 492 493* #204: "import math" not autocompleting on python 3.2 494 495Otherwise lots of small additions to the to be replacement for our ncurses 496frontend, the urwid frontend. 497 498I'd like to specifically thank Amjith Ramanujam for his work on history search 499which was further implemented and is in working order right now. 500 5010.10.1 502------ 503 504A bugfix release. The fixed bugs are: 505 506* #197: find_modules crashes on non-readable directories 507* #198: Source tarball lacks .po files 508 5090.10 510---- 511As a highlight of the release, Michele Orrù added i18n support to bpython. 512 513Some issues have been resolved as well: 514 515* Config files are now located according to the XDG Base Directory 516 Specification. The support for the old bpythonrc files has been 517 dropped and ~/.bpython.ini as config file location is no longer supported. 518 See issue #91. 519* Fixed some issues with tuple unpacking in argspec. See issues #133 and #138. 520* Fixed a crash with non-ascii filenames in import completion. See issue #139. 521* Fixed a crash caused by inspect.findsource() raising an IndexError 522 which happens in some situations. See issue #94. 523* Non-ascii input should work now under Python 3. 524* Issue #165: C-a and C-e do the right thing now in urwid. 525* The short command-line option "-c config" was dropped as it conflicts with 526 vanilla Python's "-c command" option. See issue #186. 527 5280.9.7.1 529------- 530 531A bugfix release. The fixed bugs are: 532 533* #128: bpython-gtk is broken 534* #134: crash when using pastebin and no active internet connection 535 5360.9.7 537----- 538 539Well guys. It's been some time since the latest release, six months have passed 540We have added a whole slew of new features, and closed a number of bugs as well. 541 542We also have a new frontend for bpython. Marien Zwart contributed a urwid 543frontend as an alternative for the curses frontend. Be aware that there still 544is a lot to fix for this urwid frontend (a lot of the keyboard shortcuts do not 545yet work for example) but please give it a good spin. Urwid also optionally 546integrates with a Twisted reactor and through that with things like the GTK 547event loop. 548 549At the same time we have done a lot of work on the GTK frontend. The GTK 550frontend is now 'usable'. Please give that a spin as well by running bpython-gtk 551on you system. 552 553We also welcome a new contributor in the name of Michele Orrù who we hope will 554help us fix even more bugs and improve functionality. 555 556As always, please submit any bugs you might find to our bugtracker. 557 558* Pastebin confirmation added; we were getting a lot of people accidentally 559 pastebinning sensitive information so I think this is a good idea. 560* Don't read PYTHONSTARTUP when executed with -i. 561* BPDB was merged in. BPDB is an extension to PDB which allows you to press B 562 in a PDB session which will let you be dropped into a bpython sessions with 563 the current PDB locals(). For usage, see the documentation. 564* The clear word shortcut (default: C-w) now deletes to the buffer. 565* More tests have been added to bpython. 566* The pastebin now checks for a previous paste (during the session) with the 567 exact same content to guard against twitchy fingers pastebinning multiple 568 times. 569* Let import completion return "import " instead of "import". 570 571* GTK now has pastebin, both for full log as well as the current selection. 572* GTK now has write2file. 573* GTK now has a menu. 574* GTK now has a statusbar. 575* GTK now has show source functionality. 576* GTK saves the pastebin url to the clipboard. 577* GTK now has it's own configuration section. 578* Set focus to the GTK text widget to allow for easier embedding in PIDA and 579 others which fixes issues #121. 580 581* #87: Add a closed attribute to Repl to fix mercurial.ui.ui expecting stderr 582 to have this attribute. 583* #108: Unicode characters in docstring crash bpython 584* #118: Load_theme is not defined. 585* #99: Configurable font now documented. 586* #123: <F8> Pastebin can't handle 'ESC' key 587* #124: Unwanted input when using <arrow>/<FXX> keys in the statusbar prompt. 588 589 5900.9.6.2 591------- 592Unfortunately another bugfix release as I (Bob) broke py3 support. 593 594* #84: bpython doesn't work with Python 3 595 Thanks very much to Henry Prêcheur for both the bug report and the 596 patch. 597 5980.9.6.1 599------- 600A quick bugfix release (this should not become a habit). 601 602* #82: Crash on saving file. 603 6040.9.6 605------ 606A bugfix/feature release (and a start at gtk). Happy Christmas everyone! 607 608* #67: Make pastebin URL really configurable. 609* #68: Set a __main__ module and set interpreter's namespace to that module. 610* #70: Implement backward completion on backward tab. 611* #62: Hide matches starting with a _ unless explicitly typed. 612* #72: Auto dedentation 613* #78: Theme without a certain value raises exception 614 615- add the possibility for a banner to be shown on bpython startup (when 616 embedded or in code) written by Caio Romao. 617- add a hack to add a write() method to our fake stdin object 618- Don't use curses interface when stdout is not attached to a terminal. 619- PEP-8 conformance. 620- Only restore indentation when inside a block. 621- Do not decrease the lineno in tracebacks for Py3 622- Do not add internal code to history. 623- Make paren highlighting more accurate. 624- Catch SyntaxError in import completion. 625- Remove globals for configuration. 626- rl_history now stays the same, also after undo. 627 6280.9.5.2 629------- 630 631A bugfix release. Fixed issues: 632 633* #60: Filename expansion: Cycling completions and deleting 634* #61: Filename expansion: Directory names with '.'s get mangled 635 636Other fixes without opened issues: 637 638* Encode items in the suggestion list properly 639* Expand usernames in file completion correctly 640* future imports in startup scripts can influence interpreter's behaviour now 641* Show the correct docstring for types without a own __init__ method 642 6430.9.5.1 644-------- 645 646Added missing data files to the tarball. 647 648 6490.9.5 650----- 651Fixed issues: 652 653* #25 Problems with DEL, Backspace and C-u over multiple lines 654* #49 Sending last output to $PAGER 655* #51 Ability to embed bpython shell into an existing script 656* #52 FakeStdin.readlines() is broken 657* #53 Error on printing null character 658* #54 Parsing/introspection ncurses viewer neglects parenthesis 659 660bpython has added a view source shortcut to show the source of the current 661function. 662 663The history file is now really configurable. This issue was reported 664in Debian's bugtracker. 665 666bpython has now some basic support for Python 3 (requires Pygments >=1.1.1). 667As a result, setuptools is now optional. 668 669The pastebin URL is now configurable and the default pastebin is now 670bpaste.net 671 672Argument names are now shown as completion suggestions and one can 673tab through the completion list. 674 6750.9.4 676----- 677Bugfix release (mostly) 678 679* when typing a float literal bpython autocompletes int methods (#36) 680* Autocompletion for file names (#40) 681* Indenting doesn't reset (#27) 682* bpython configuration has moved from ~/.bpython.ini to ~/.bpython/config (currently still supporting fallback) 683* leftovers of statusbar when exiting bpython cleaned up 684* bpython now does not crash when a 'popup' goes out of window bounds 685* numerous fixes and improvements to parentheses highlighting 686* made *all* keys configurable (except for arrow keys/pgup/pgdown) 687 6880.9.3 689------ 690This release was a true whopper! 691 692* Full unicode support 693* Configurable hotkey support 694* Theming support 695* Pastemode, disables syntax highlighting during a paste for faster pasting, highlights when done 696* Parentheses matching 697* Argument highlighting 698 6990.9.2 700----- 701* help() now uses an external pager if available. 702* Fix for highlighting prefixed strings. 703* Fix to reset string highlighting after a SyntaxError. 704* bpython now uses optparse for option parsing and it supports --version now. 705* Configuration files are no longer passed by the first command line argument but by the -c command line switch. 706* Fix for problem related to editing lines in the history: http://bitbucket.org/bobf/bpython/issue/10/odd-behaviour-when-editing-commands-in-the-history 707 7080.9.1 709----- 710* Fixed a small but annoying bug with sys.argv ini file passing 711* Fix for Python 2.6 to monkeypatch they way it detects callables in rlcompleter 712* Config file conversion fix 713 7140.9.0 715----- 716* Module import completion added. 717* Changed to paste.pocoo.org due to rafb.net no longer offering a pastebin service. 718* Switched to .ini file format for config file. 719* White background-friendly colour scheme added. 720* C-l now clears the screen. 721* SyntaxError now correctly added to history to prevent it garbling up on a redraw. 722 723Probably some other things, but I hate changelogs. :) 724 7250.8.0 726------ 727 728It's been a long while since the last release and there have been numerous little 729bugfixes and extras here and there so I'm putting this out as 0.8.0. Check the 730hg commit history if you want more info: 731http://bitbucket.org/bobf/bpython/ 732 7330.7.2 734----- 735Menno sent me some patches to fix some stuff: 736 737* Socket error handled when submitting to a pastebin. 738* Resizing could crash if you resize small enough. 739 740Other stuff: 741 742* 'self' in arg list is now highlighted a different colour. 743* flush_output option added to config to control whether output is flushed to stdout or not on exit. 744* Piping something to bpython made it lock up as stdin was not the keyboard - bpython just executes stdin and exits instead of trying to do something clever. 745* Mark Florisson (eggy) gave me a patch that stops weird breakage when unicode objects get added into the output buffer - they now get encoded into the output encoding. 746* Bohdan Vlasyuk sent me a patch that fixes a problem with the above patch from Mark if sys.__stdout__.encoding didn't exist. 747* Save to file now outputs executable code (i.e. without the >>> and ... and with "# OUT: " prepended to all output lines). I never used this feature much but someone asked for this behaviour. 748 7490.7.1 750----- 751* Added support for a history file, defaults to ~/.pythonhist and 100 lines but is configurable from the rc file (see sample-rc). 752* Charles Duffy has added a yank/put thing - C-k and C-y. He also ran the code through some PEP-8 checker thing and fixed up a few old habits I manage to break but didn't manage to fix the code to reflect this - thank you! 753* Jørgen Tjernø has fixed up the autoindentation issues we encountered when bringing soft tabs in. 754* SyntaxError, ValueError and OverflowError are now caught properly (code.InteractiveInterpreter treats these as different to other exceptions as it doesn't print the whole traceback, so a different handler is called). This was discovered as I was trying to stop autoindentation from occurring on a SyntaxError, which has also been fixed. 755* '.' now in sys.path on startup. 756 7570.7.0 758----- 759C-d behaviour changed so it no longer exits if the current line isn't empty. 760 761Extra linebreak added to end of stdout flush. 762 763pygments and pyparsing are now dependencies. 764 765Jørgen Tjernø has done lots of cool things like write a manpage and .desktop 766file and improved the way tabbing works and also added home, end and del key 767handling as well as C-w for deleting words - thanks a lot! 768 769raw_input() and all its friends now work fine. 770 771PYTHONSTARTUP handled without blowing up on stupid errors (it now parses the 772file at once instead of feeding it to the repl line-by-line). 773 7740.6.4 775----- 776KeyboardInterrupt handler clears the list window properly now. 777 7780.6.3 779----- 780Forgot to switch rpartition to split for 2.4 compat. 781 7820.6.2 783----- 784The help() now works (as far as I can see) exactly the same 785as the vanilla help() in the regular interpreter. I copied some 786code from pydoc.py to make it handle the special cases, e.g. 787help('keywords') 788help('modules') 789etc. 790 7910.6.1 792----- 793Somehow it escaped my attention that the list window was never 794fully using the rightmost column, except for the first row. This 795is because me and numbers don't have the best relationship. I think 796stability is really improving with the latest spat of bugfixes, 797keep me informed of any bugs. 798 7990.6.0 800----- 801No noticeable changes except that bpython should now work with 802Python 2.4. Personally I think it's silly to make a development 803tool work with an out of date version of Python but some people 804seem to disagree. The only real downside is that I had to do a 805horrible version of all() using reduce(), otherwise there's no 806real differences in the code. 807 8080.5.3 809----- 810Now you can configure a ~/.bpythonrc file (or pass a rc file at the 811command line (bpython /foo/bar). See README for details. 812 8130.5.2 814----- 815help() actually displays the full help page, and I fixed up the 816ghetto pager a little. 817 8180.5.1 819----- 820Now you can hit tab to display the autocomplete list, rather than 821have it pop up automatically as you type which, apparently, annoys 822Brendogg. 823 8240.5.0 825----- 826A few people have commented that the help() built-in function 827doesn't work so well with bpython, since Python will try to output 828the help string to PAGER (usually "less") which obviously makes 829everything go wrong when curses is involved. With a bit of hackery 830I've written my own ghetto pager and injected my own help function 831into the interpreter when it initialises in an attempt to rectify this. 832As such, it's pretty untested but it seems to be working okay for me. 833Suggestions/bug reports/patches are welcome regarding this. 834 8350.4.2 836----- 837Well, hopefully we're one step closer to making the list sizing 838stuff work. I really hate doing code for that kind of thing as I 839never get it quite right, but with perseverance it should end up 840being completely stable; it's not the hardest thing in the world. 841 842Various cosmetic fixes have been put in at the request of a bunch 843of people who were kind enough to send me emails regarding their 844experiences. 845 846PYTHONSTARTUP is now dealt with and used properly, as per the vanilla 847interpreter. 848 8490.4.1 850----- 851It looks like the last release was actually pretty bug-free, aside 852from one tiny bug that NEVER ACTUALLY HAPPENS but someone was bugging 853me about it anyway, oh well. 854 8550.4.0 856----- 857It's been quite a long time since the last update, due to several 858uninteresting and invalid excuses, but I finally reworked the list 859drawing procedures so the crashing seems to have been taken care of 860to an extent. If it still crashes, the way I've written it will hopefully 861allow a much more robust way of fixing it, one that might actually work. 862 8630.3.2 864----- 865Thanks to Aaron Gallagher for pointing out a case where the hugely 866inefficient list generation routines were actually making a significant 867issue; they're much more efficient now and should hopefully not cause 868any more problems. 869 8700.3.1 871----- 872Thanks to Klaus Alexander Seis for the expanduser() patch. 873Auto indent works on multiple levels now. 874 8750.3.0 876----- 877Now with auto-indent. Let me know if it's annoying. 878 8790.2.4 880----- 881Thanks a lot to Angus Gibson for submitting a patch to fix a problem 882I was having with initialising the keyboard stuff in curses properly. 883 884Also a big thanks to John Beisley for providing the patch that shows 885a class __init__ method's argspec on class instantiation. 886 887I've fixed up the argspec display so it handles really long argspecs 888(e.g. subprocess.Popen()) and doesn't crash if something horrible 889happens (rather, it avoids letting something horrible happen). 890 891I decided to add a key that will get rid of the autocomplete window, 892since it can get in the way. C-l seemed like a good choice, since 893it would work well as a side-effect of redrawing the screen (at 894least that makes sense to me). In so doing I also cleaned up a lot 895of the reevaluating and resizing code so that a lot of the strange 896output seen on Rewind/resize seems to be gone. 897 8980.2.3 899----- 900The fix for the last bug broke the positioning of the autocomplete 901box, whoops. 902 9030.2.2 904----- 905That pesky bug keeps coming up. I think it's finally nailed but 906it's just a matter of testing and hoping. I hate numbers. 907 9080.2.1 909----- 910I'm having a bit of trouble with some integer division that's 911causing trouble when a certain set of circumstances arise, 912and I think I've taken care of that little bug, since it's 913a real pain in the ass and only creeps up when I'm actually 914doing something useful, so I'll test it for a bit and release 915it as hopefully a bug fixed version. 916 9170.2.0 918----- 919A little late in the day to start a changelog, but here goes... 920This version fixed another annoying little bug that was causing 921crashes given certain exact circumstances. I always find it's the 922way with curses and sizing of windows and things... 923 924I've also got bpython to try looking into pydoc if no matches 925are found for the argspec, which means the builtins have argspecs 926too now, hooray. 927 928