Yes, this is a lame posting, and I know it. But, I am in the thick of writing the second in a series of posts on implementing a tagging solution in Django, and specifically, I am exploring how to implement RESTful controllers. This has turned out to be much more involved than I thought, at times both fun and frustrating, and I finally realized that I wasn’t going to have an intelligable and complete version of that post ready this week.
But I also want to stay committed to posting to the blog every week, so I came up with this weasely post. A while back, I wanted to introduce my pair programming partner to the joys of programming in Python. He and I primarily program in Java, and he also has an extensive Perl background.
When learning a new language, especially if we only know one or two other languages already, we tend to look for ways to program in the new language the way we do in our current language(s). Its only after spending some time in the new language that we begin to understand its philosophy, its community’s culture, its idioms for solving tasks. But until then, we are more apt to look for and use tools and techniques already familiar to us.
So, this post is meant to orient the agile Java developer to Python. It’s not meant to be either representative or exhaustive of Python’s offerings in any of these areas, and its very much based on my own experience coming to Python from Java.
useful books and web resources
- Python Home Page
- Python Documentation
- Dive Into Python
- Python Cookbook
- PyZine
- Python Essential Reference, Third Edition By David M Beazley. A great general reference.
- Python Cookbook By Alex Martelli, David Ascher. Book inspired by the site, but presented in a way that is not only a good reference but teaches intermediate and advanced Python idioms.
- Text Processing in Python By David Mertz.
- Python & XML by Christopher A Jones, Fred L Drake, Christopher A. Jones
coding tools
- PyDev and PyDev Extensions. To use the Eclipse IDE with Python. (Also see http://pydev.blogspot.com/ for newest developments.) Bicycle Repair Man, Pylint, PyUnit and test coverage are included.
- Python Multiple IDE Collaboration. “…aims to connect open source projects concerning an IDE core library and framework written in Python to avoid the ongoing duplicating efforts.”
other ide’s
- Complete list of editors/ide’s
- jEdit. With Jython Plugin, and a good general editor.
- Pymacs. Python extension for Emacs.
- SPE – Stani’s Python Editor. Also very promising
- IDLE. Pretty good, bundled with Python distribution.
- WingIDE. Commercial, but interesting features.
- Komodo. Commercial, nice featureset, “The open source IDE”.
testing
- Python Testing Tools Taxonomy
- Agile Testing with Python Test Frameworks
- PyUnit. Python port of JUnit testing framework, bundled with Python. The unittest module also has a basic coverage tool. Also see this for function level code coverage analysis.
- Testoob. Advanced testing tool built on top of PyUnit.
- Pester. PyUnit test tester (port of Jester).
- pyUnitPerf. Port of JUnitPerf, “It is a collection of pyUnit test decorators used to measure the performance and scalability of functionality contained within existing pyUnit tests.”
- pMock. Python port of jMock. This appears to be the most active and widely used/written about mock objects module for Python, but a quick search on Sourceforge shows other, like this.
- PyFit: Python FitNesse Testing: There is no real home page for this, but here are some references: [1] [2]
performance and code analysis
- PyLint. Syntax checker, incorporated into PyDev, but must be activated.
- PyChecker. Another syntax checker used by some Python IDE’s.
- Bicycle Repair Man. Refactoring browser for Python, also bundled with PyDev.
- PySizer. Python memory usage profiler.
- Heapy/Guppy. “…a programming environment providing object and heap memory sizing, profiling and analysis.”
- Pythius. “…a set of tools to assess the quality of Python code.”
frameworks, libraries, and applications
web frameworks
- Up-to-date listing of Python based frameworks, applications and tools
- Survey of leading Python frameworks, including Twisted.
- Zope Home Page. Web application framework, particular good for content management systems.
- Plone. Best known CMS/Portal built on top of Zope. (See also, Silva.)
- Django. After Zope, probably the best known Python framework, followed closely by TurboGears.
- PEAK: Python Enterprise Application Kit
- Spyce Python Server Pages. There are other implementations of this idea, but this appears to be the most mature.
gui tools
- TkInter. Python’s standard GUI library. Many other GUI frameworks are built on top of TkInter to make it easier to use.
- wxPython. Cross-platform. See this article for an introduction.
- PythonCard. Cross-platform, built on top of wxPython but intended to make it easier to use.
- Pygame. Python game development that is a wrapper of SDL and good for any application with heavy user interaction.
general
- A Logging System for Python. Based on Log4J. Also, as of 2.3, there is built-in logging in Python http://docs.python.org/lib/module-logging.html
- PyGoogle
- BeautifulSoup. HTML/XML parsing.
- PyXML. Standard Python/XML libraries. Much of this is now part of the Python Standard Library and does not need to be installed separately.
- 4Suite. More advanced XMl libraries and database.
- Spread module. Message oriented middleware for Python.
- Python Eggs. Appears to be Python’s answer to JAR files, with a package management slant.
java integration
- Jepp: Java Embedded Python
- JPype