Appendix E. Revision history
2003-10-08 (4.4)
2003-09-28 (4.3)
2003-09-17 (4.2.1)
- Fixed links on index page.
- Fixed syntax highlighting.
2003-09-12 (4.2)
2002-07-28 (4.1)
- Added Caching node lookups.
- Added Finding direct children of a node.
- Added Creating separate handlers by node type.
- Added Handling command line arguments.
- Added Putting it all together.
- Added Summary.
- Fixed typo in The os module. It's os.getcwd(), not os.path.getcwd(). Thanks, Abhishek.
- Fixed typo in Joining lists and splitting strings. When evaluated (instead of printed), the Python IDE will display single quotes around the output.
- Changed str example in Putting it all together to use a user-defined function, since Python 2.2 obsoleted the old example by defining a doc string for the built-in dictionary methods. Thanks Eric.
- Fixed typo in Unicode, "anyway" to "anywhere". Thanks Frank.
- Fixed typo in Testing for sanity, doubled word "accept". Thanks Ralph.
- Fixed typo in Refactoring, C?C?C? matches 0 to 3 C characters, not 4. Thanks Ralph.
- Clarified and expanded explanation of implied slice indices in Example 2.18, “Slicing shorthand”. Thanks Petr.
- Added historical note in UserDict: a wrapper class now that Python 2.2 supports subclassing built-in datatypes directly.
- Added explanation of update dictionary method in Example 4.11, “Defining the UserDict class”. Thanks Petr.
- Clarified Python's lack of overloading in UserDict: a wrapper class. Thanks Petr.
- Fixed typo in Example 5.8, “Introducing BaseHTMLProcessor”. HTML comments end with two dashes and a bracket, not one. Thanks Petr.
- Changed tense of note about nested scopes in locals and globals now that Python 2.2 is out. Thanks Petr.
- Fixed typo in Example 5.14, “Dictionary-based string formatting in BaseHTMLProcessor.py”; a space should have been a non-breaking space. Thanks Petr.
- Added title to note on derived classes in UserDict: a wrapper class. Thanks Petr.
- Added title to note on downloading unittest in Refactoring. Thanks Petr.
- Fixed typesetting problem in Example 8.6, “Running scripts in the current directory”; tabs should have been spaces, and the line numbers were misaligned. Thanks Petr.
- Fixed capitalization typo in the tip on truth values in Introducing lists. It's True and False, not true and false. Thanks to everyone who pointed this out.
- Changed section titles of Introducing dictionaries, Introducing lists, and Introducing tuples. "Dictionaries 101" was a cute way of saying that this section was an beginner's introduction to dictionaries. American
colleges tend to use this numbering scheme to indicate introductory courses with no prerequisites, but apparently this is
a distinctly American tradition, and it was unnecessarily confusing my international readers. In my defense, when I initially
wrote these sections a year and a half ago, it never occurred to me that I would have international readers.
- Upgraded to version 1.52 of the DocBook XSL stylesheets.
- Upgraded to version 6.52 of the SAXON XSLT processor from Michael Kay.
- Various accessibility-related stylesheet tweaks.
- Somewhere between this revision and the last one, she said yes. The wedding will be next spring.
2002-04-26 (4.0-2)
2002-04-19 (4.0)
2002-01-01 (3.9)
- Added Unicode.
- Added Searching for elements.
- Added Accessing element attributes.
- Added Abstracting input sources.
- Added Standard input, output, and error.
- Added simple counter for loop examples (good usage and bad usage) in for loops. Thanks to Kevin for the idea.
- Fixed typo in Example 2.33, “keys, values, and items” (two elements of params.values() were reversed).
- Fixed mistake in type, str, dir, and other built-in functions with regards to the name of the __builtin__ module. Thanks to Denis for the correction.
- Added additional example in Finding the path to show how to run unit tests in the current working directory, instead of the directory where regression.py is located.
- Modified explanation of how to derive a negative list index from a positive list index in Example 2.16, “Negative list indices”. Thanks to Renauld for the suggestion.
- Updated links on home page for downloading latest version of Python.
- Added link on home page to Bruce Eckel's preliminary draft of Thinking in Python, a marvelous (and advanced) book on design patterns and how to implement them in Python.
2001-11-18 (3.8)
2001-09-30 (3.7)
- Added Packages.
- Added Parsing XML.
- Cleaned up introductory paragraph in Diving in. Thanks to Matt for this suggestion.
- Added Java tip in Importing modules using from module import. Thanks to Ori for this suggestion.
- Fixed mistake in Putting it all together where I implied that you could not use is None to compare to a null value in Python. In fact, you can, and it's faster than == None. Thanks to Ori pointing this out.
- Clarified in Introducing lists where I said that li = li + other was equivalent to li.extend(other). The result is the same, but extend is faster because it doesn't create a new list. Thanks to Denis pointing this out.
- Fixed mistake in Introducing lists where I said that li += other was equivalent to li = li + other. In fact, it's equivalent to li.extend(other), since it doesn't create a new list. Thanks to Denis pointing this out.
- Fixed typographical laziness in Getting To Know Python; when I was writing it, I had not yet standardized on putting string literals in single quotes within the text. They were
set off by typography, but this is lost in some renditions of the book (like plain text), making it difficult to read. Thanks
to Denis for this suggestion.
- Fixed mistake in Declaring functions where I said that statically typed languages always use explicit variable + datatype declarations to enforce static typing.
Most do, but there are some statically typed languages where the compiler figures out what type the variable is based on
usage within the code. Thanks to Tony for pointing this out.
- Added link to Spanish translation.
2001-09-06 (3.6.4)
2001-09-04 (3.6.3)
2001-08-31 (3.6.2)
2001-08-31 (3.6)
- Finished HTML Processing with Putting it all together and Summary.
- Added Postscript.
- Started XML Processing with Diving in.
- Started Regression Testing with Diving in.
- Fixed long-standing bug in colorizing script that improperly colorized the examples in HTML Processing.
- Added link to French translation. They did the right thing and translated the source XML, so they can re-use all my build scripts and make their work available in six different formats.
- Upgraded to version 1.43 of the DocBook XSL stylesheets.
- Upgraded to version 6.43 of the SAXON XSLT processor from Michael Kay.
- Massive stylesheet changes, moving away from a table-based layout and towards more appropriate use of cascading style sheets.
Unfortunately, CSS has as many compatibility problems as anything else, so there are still some tables used in the header and footer. The resulting
HTML version looks worse in Netscape 4, but better in modern browsers, including Netscape 6, Mozilla, Internet Explorer 5, Opera 5, Konqueror, and iCab. And it's still completely readable in Lynx. I love Lynx. It was my first web browser. You never forget your first.
- Moved to Ant to have better control over the build process, which is especially important now that I'm juggling six output formats and
two languages.
- Consolidated the available downloadable archives; previously, I had different files for each platform, because the .zip files
that Python's zipfile module creates are non-standard and can't be opened by Aladdin Expander on Mac OS. But the .zip files that Ant creates are completely standard and cross-platform. Go Ant!
- Now hosting the complete XML source, XSL stylesheets, and associated scripts and libraries on SourceForge. There's also CVS access for the really adventurous.
- Re-licensed the example code under the new-and-improved GPL-compatible Python 2.1.1 license. Thanks, Guido; people really do care, and it really does matter.
2001-06-26 (3.5)
2001-05-31 (3.4)
2001-05-24 (3.3)
2001-05-03 (3.2)
2001-04-18 (3.1)
- Added code in BaseHTMLProcessor.py to handle declarations, now that Python 2.1 supports them.
- Added note about nested scopes in locals and globals.
- Fixed obscure bug in Example 5.1, “BaseHTMLProcessor.py” where attribute values with character entities would not be properly escaped.
- Now recommending (but not requiring) Python 2.1, due to its support of declarations in sgmllib.py.
- Updated download links on the home page to point to Python 2.1, where available.
- Moved to versioned filenames, to help people who redistribute the book.
2001-04-16 (3.0)
2001-04-13 (2.9)
- Added locals and globals.
- Added Dictionary-based string formatting.
- Tightened code in HTML Processing, specifically ChefDialectizer, to use fewer and simpler regular expressions.
- Fixed a stylesheet bug that was inserting blank pages between chapters in the PDF version.
- Fixed a script bug that was stripping the DOCTYPE from the home page.
- Added link to Python Cookbook, and added a few links to individual recipes in Further reading.
- Switched to Google for searching on http://diveintopython.org/.
- Upgraded to version 1.36 of the DocBook XSL stylesheets, which was much more difficult than it sounds. There may still be lingering bugs.
2001-03-26 (2.8)
2001-03-16 (2.7)
2001-02-28 (2.6)
- The PDF and Word versions now have colorized examples, an improved table of contents, and properly indented tips and notes.
- The Word version is now in native Word format, compatible with Word 97.
- The PDF and text versions now have fewer problems with improperly converted special characters (like trademark symbols and curly
quotes).
- Added link to download Word version for UNIX, in case some twisted soul wants to import it into StarOffice or something.
- Fixed several notes which were missing titles.
- Fixed stylesheets to work around bug in Internet Explorer 5 for Mac OS which caused colorized words in the examples to be displayed in the wrong font. (Hello?!? Microsoft? Which part of <pre> don't you understand?)
- Fixed archive corruption in Mac OS downloads.
- In first section of each chapter, added link to download examples. (My access logs show that people skim or skip the two
pages where they could have downloaded them (the home page and preface), then scramble to find a download link once they actually start reading.)
- Tightened the home page and preface even more, in the hopes that someday someone will read them.
- Soon I hope to get back to actually writing this book instead of debugging it.
2001-02-23 (2.5)
2001-02-12 (2.4.1)
- Changed newsgroup links to use “news:” protocol, now that deja.com is defunct.
- Added file sizes to download links.
2001-02-12 (2.4)
- Added “further reading” links in most sections, and collated them in Further reading.
- Added URLs in parentheses next to external links in text version.
2001-02-09 (2.3)
2001-02-02 (2.2)
- Edited Getting object references with getattr.
- Added titles to xref tags, so they can have their cute little tooltips too.
- Changed the look of the revision history page.
- Fixed problem I introduced yesterday in my HTML post-processing script that was causing invalid HTML character references and breaking some browsers.
- Upgraded to version 1.29 of the DocBook XSL stylesheets.
2001-02-01 (2.1)
- Rewrote the example code of The Power Of Introspection to use getattr instead of exec and eval, and rewrote explanatory text to match.
- Added example of list operators in Introducing lists.
- Added links to relevant sections in the summary lists at the end of each chapter (Summary and Summary).
2001-01-31 (2.0)
2001-01-15 (1.9)
2001-01-12 (1.8)
2001-01-03 (1.71)
- Made several modifications to stylesheets to improve browser compatibility.
2001-01-02 (1.7)
- Added introduction to Getting To Know Python.
- Added introduction to The Power Of Introspection.
- Added review section to An Object-Oriented Framework [later removed]
- Added Private functions.
- Added for loops.
- Added Assigning multiple values at once.
- Wrote scripts to convert book to new output formats: one single HTML file, PDF, Microsoft Word 97, and plain text.
- Registered the diveintopython.org domain and moved the book there, along with links to download the book in all available output formats for offline reading.
- Modified the XSL stylesheets to change the header and footer navigation that displays on each page. The top of each page is branded with
the domain name and book version, followed by a breadcrumb trail to jump back to the chapter table of contents, the main table
of contents, or the site home page.
2000-12-11 (1.6)
2000-11-22 (1.5)
2000-11-14 (1.4)
- Added Filtering lists.
- Added dir documentation to type, str, dir, and other built-in functions.
- Added in example in Introducing tuples.
- Added additional note about if __name__ trick under MacPython.
- Switched to the SAXON XSLT processor from Michael Kay.
- Upgraded to version 1.24 of the DocBook XSL stylesheets.
- Added db-html processing instructions with explicit filenames of each chapter and section, to allow deep links to content
even if I add or re-arrange sections later.
- Made several common phrases into entities for easier reuse.
- Changed several literal tags to constant.
2000-11-09 (1.3)
- Added section on dynamic code execution.
- Added links to relevant section/example wherever I refer to previously covered concepts.
- Expanded introduction of chapter 2 to explain what the function actually does.
- Explicitly placed example code under the GNU General Public License and added appendix to display license. [Note 8/16/2001: code has been re-licensed under GPL-compatible Python license]
- Changed links to licenses to use xref tags, now that I know how to use them.
2000-11-06 (1.2)
- Added first four sections of chapter 2.
- Tightened up preface even more, and added link to Mac OS version of Python.
- Filled out examples in "Mapping lists" and "Joining strings" to show logical progression.
- Added output in chapter 1 summary.
2000-10-31 (1.1)
- Finished chapter 1 with sections on mapping and joining, and a chapter summary.
- Toned down the preface, added links to introductions for non-programmers.
- Fixed several typos.
2000-10-30 (1.0)