.. Ross Patterson's Blog imported post, created by `$ ./bin/rfc822-to-post` on Mar 15, 2021. .. meta:: :description: Sprinting after PyCon and my first time working with and contributing to Pyramid. :keywords: virtualenv, tox, Pyramid, buildout, Plone, Zope, repoze, pycon2012 .. post:: Mar 15, 2012 :tags: virtualenv, tox, Pyramid, buildout, Plone, Zope, repoze, pycon2012 :author: Ross Patterson :redirect: @@redirect-to-uuid/c8de583d3c534b4f9ca6075f2df4cb31 ################## PyCon 2012 Sprints ################## Sprinting after PyCon and my first time working with and contributing to Pyramid. Sprinting on Pyramid ==================== Really my conference review should be taken worth a grain of salt, because I never go for the talks, it's all about `the sprints `_. Having so thoroughly enjoyed sprinting since I came out of my shell and joined the `Plone `_ community in earnest, it's always the only thing I'm really focused on. What can I say? In this wonderful age where, through open-source communities and the recognition of the ambiguous stuff that helps them thrive, we all recognize that things like docs and diversity are as important as the quality of code or the power of features, I'm still a code monkey at heart. Since there were no Plone sprints that I heard of or saw on the boards, I took the chance to sprint on `Pyramid `_, part of the `Pylons `_ project and love child of `repoze `_. I've been wanting to learn Pyramid for quite some time now since I noticed how many of my favorite `Zope `_ people have moved to Pyramid. So I went to the Pyramid room, sat down and asked what someone with plenty of zope experience could do. The `Pyramid sprinters `_ were a great group, very welcoming and friendly. They remind me a lot of the things I most love about the Plone community. It also gave me the chance to work closely with `Chris McDonough `_. `Chris `_ is very smart, builds great software, and is just very kind-hearted. Here's some of the stuff I worked on: * `add IP range/network restriction `_ to `pyramid_debugtoolbar `_ I used this simple feature task to cut my teeth on the Pyramid development environment and tool-chain. It was the first time in a long time I worked outside a `buildout `_ environment and it made for some interesting comparisons. They keep things really simple relying only on `distribute's setuptools `_ and `virtualenv `_. I have to say, I still prefer working with buildout. Buildout's caching is much better than `easy_install's `_ and virtualenv so updating the environment after changes is smoother and faster. For testing against multiple `Python `_ versions and implementations, such as `Jython `_ and `PyPy `_, Pyramid uses `tox `_ which is pretty slick and very useful. I'd love to see something like this for deploying the same buildout with different versions of Python. * `support Python 3 `_ in `repoze.sendmail `_ This was my first time tackling Python 2 and 3 compatibility issues. I have to say it's just not as hard as I feared. * `improve and centralize email message serializing `_ in `repoze.sendmail `_ The one place where there was a lot of Python 2 and 3 compatibility pain was in the encoding of email messages. In this case, as in others I suspect, the problem was that encoding was being done all over the place in a not-very-well-architected way and the real solution was to clean things up and put in more clearly defined boundaries and interfaces. That task would have been *impossible* without `R. David Murray `_. I pestered `him `_ endlessly and `he `_ helped me learn all the deep, dark corners of the email protocols and the Python `email `_ package, both of which have considerable quirks which some would call bugs. At the end of it, I had a clear sense of all the quirks of encoding emails and all the things that the `email` package doesn't already do. I baked those into `repoze.sendmail.encoding `_ and added that support as a part sending mail through repoze.sendmail. Once that was in place, finishing Python 2 and 3 compatibility was a snap. * `add Python 3 support `_ to `pyramid_mailer `_ Again, once `repoze.sendmail.encoding` was in-place, I just ripped all the email encoding support out of `pyramid_mailer` and Python 2 and 3 compatibility was a cinch. * `fix Cc/Bcc witout To handling `_ in `pyramid_mailer `_ While I had my hands in `pyramid_mailer`, I fixed a bug reported by `Michael Merickel `_. * `add support for multiple request parameters `_ when registering `Pyramid views `_ I'm not even sure what this stuff does, but Pyramid has such great test coverage, I was able to get started. I'm still waiting for feeback to see what I'm not yet understanding. * updating `warnings `_ handling in `Pyramid tests `_ Just a simple test fixture update to cleanup output. .. update:: Mar 16, 2012 Imported from Plone on Mar 15, 2021. The date for this update is the last modified date in Plone.