<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>bottlepy-dev</title><link>http://blog.bottlepy.org/</link><description>Techtalk and stuff.</description><lastBuildDate>Fri, 19 Jul 2013 18:00:00 +0200</lastBuildDate><item><title>Preview: Bottle 0.12</title><link>http://blog.bottlepy.org/2013/07/19/preview-bottle-012.html</link><description>&lt;p&gt;Some time has passed and some really nice features have found their way into the bottle core framework. As we are now preparing for the new release, let me show you the most important changes and &lt;a class="reference external" href="mailto:bottlepy&amp;#64;googlegroups.com"&gt;let us know&lt;/a&gt; what you think about it!&lt;/p&gt;
&lt;p&gt;As promised: All changes are &lt;strong&gt;fully …&lt;/strong&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Fri, 19 Jul 2013 18:00:00 +0200</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2013-07-19:/2013/07/19/preview-bottle-012.html</guid><category>preview</category></item><item><title>Bottle 0.11 released!</title><link>http://blog.bottlepy.org/2012/10/09/bottle-011-released.html</link><description>&lt;p&gt;The bottle-0.11-rc1 development branch is stable for some time now, widely used and excessively tested. There is no reason to not release it. So, here it is:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;PyPi: &lt;a class="reference external" href="http://pypi.python.org/pypi/bottle"&gt;bottle-0.11 (stable)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Changelog: &lt;a class="reference external" href="http://bottlepy.org/docs/0.11/changelog.html#release-0-11"&gt;http://bottlepy.org/docs/0.11/changelog.html#release-0-11&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="section" id="changelog-summary"&gt;
&lt;h2&gt;Changelog (summary)&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;strong&gt;Native support for Python 2.x …&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Tue, 09 Oct 2012 00:00:00 +0200</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2012-10-09:/2012/10/09/bottle-011-released.html</guid></item><item><title>Template Search-Path Workaround</title><link>http://blog.bottlepy.org/2012/07/20/template-search-path-workaround.html</link><description>&lt;p&gt;One of the most annoying limitations you may encounter in bottle when building bigger applications is the way templates are searched on the file system. At the time the
template system was designed, nobody thought about multi-app projects, third-party apps, &lt;tt class="docutils literal"&gt;Bottle.mount()&lt;/tt&gt; and the complexities these features introduce. The typical …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Fri, 20 Jul 2012 17:00:00 +0200</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2012-07-20:/2012/07/20/template-search-path-workaround.html</guid><category>workaround templates</category></item><item><title>Virtualenv and Makefiles</title><link>http://blog.bottlepy.org/2012/07/16/virtualenv-and-makefiles.html</link><description>&lt;p&gt;Whenever I start a new project that is likely to have dependencies, I set up &lt;a class="reference external" href="http://www.virtualenv.org/"&gt;virtualenv&lt;/a&gt; and create a &lt;a class="reference external" href="http://www.pip-installer.org/en/latest/requirements.html"&gt;requirememnts.txt&lt;/a&gt;. I am also a big fan of &lt;a class="reference external" href="http://www.gnu.org/software/make/manual/make.html"&gt;Makefiles&lt;/a&gt;. Here is a small snippet that combines these tools:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c"&gt;# Makefile&lt;/span&gt;
&lt;span class="nf"&gt;venv&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;venv&lt;/span&gt;/&lt;span class="n"&gt;bin&lt;/span&gt;/&lt;span class="n"&gt;activate&lt;/span&gt;
&lt;span class="nf"&gt;venv/bin/activate&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;requirements&lt;/span&gt;.&lt;span class="n"&gt;txt&lt;/span&gt;
    &lt;span class="nb"&gt;test&lt;/span&gt; -d …&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Mon, 16 Jul 2012 00:00:00 +0200</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2012-07-16:/2012/07/16/virtualenv-and-makefiles.html</guid></item><item><title>Thread-locals and Generators</title><link>http://blog.bottlepy.org/2012/07/13/thread-locals-and-generators.html</link><description>&lt;p&gt;Looks like the next release (0.11) will break backwards compatibility in some edge cases. I am working on a patch that affects routes that stream content (yield) and access request/response after the first chunk of data is returned.&lt;/p&gt;
&lt;div class="section" id="details"&gt;
&lt;h2&gt;Details&lt;/h2&gt;
&lt;p&gt;Accessing the thread-local request/response objects after yielding a …&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Fri, 13 Jul 2012 00:00:00 +0200</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2012-07-13:/2012/07/13/thread-locals-and-generators.html</guid></item><item><title>Bugfix Release 0.10.10</title><link>http://blog.bottlepy.org/2012/06/26/bugfix-release-01010.html</link><description>&lt;p&gt;Python 3.2+ cgi.FieldStorage() defaults to utf8 when decoding form values. That confused bottle.FormsDict() because WSGI strings &amp;quot;must contain only code points representable in ISO-8859-1 encoding&amp;quot;. Now bottle forces cgi.FieldStorage() to use ISO-8859-1 instead and re-encodes form-values on-demand with the user-specified input encoding a intended.&lt;/p&gt;
&lt;p&gt;If you …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Tue, 26 Jun 2012 00:00:00 +0200</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2012-06-26:/2012/06/26/bugfix-release-01010.html</guid></item><item><title>Bugfix Release 0.10.11</title><link>http://blog.bottlepy.org/2012/06/26/bugfix-release-01011.html</link><description>&lt;p&gt;The Python 3.x unicode problem was more complex than I thought. I had to re-implement urllib.parse_qsl to work around an encoding problem in 3.1 and change the way bottle handles query-strings in subtle ways. Again, please read this before upgrading: &lt;a class="reference external" href="http://bottlepy.org/docs/dev/tutorial.html#unicode-issues"&gt;http://bottlepy.org/docs/dev/tutorial.html …&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Tue, 26 Jun 2012 00:00:00 +0200</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2012-06-26:/2012/06/26/bugfix-release-01011.html</guid></item><item><title>TAL Templates deprecated</title><link>http://blog.bottlepy.org/2012/05/14/tal-templates-deprecated.html</link><description>&lt;p&gt;Andrea Belvedere found a bug in SimpleTALTemplates that went unnoticed for months. Conclusion: Nobody actually uses Bottle+TAL.&lt;/p&gt;
&lt;p&gt;Perhaps it is a good time to remove SimpleTALTemplate support instead of fixing it. Or move it to a plugin.&lt;/p&gt;
&lt;p&gt;Here is the deal: The TAL template adapter needs a maintainer or …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Mon, 14 May 2012 00:00:00 +0200</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2012-05-14:/2012/05/14/tal-templates-deprecated.html</guid></item><item><title>Custom Request Attributes</title><link>http://blog.bottlepy.org/2012/04/04/custom-request-attributes.html</link><description>&lt;p&gt;This might be useful for Plugin developers:
&lt;a class="reference external" href="https://github.com/bottlepy/bottle/commit/a21d71694fdea222844dba5076efad3726ccdb68"&gt;https://github.com/bottlepy/bottle/commit/a21d71694fdea222844dba5076efad3726ccdb68&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To sum it up: You can now add custom attributes or properties to the bottle.request object. These are stored in the environ dictionary ('bottle.request.ext.*' namespace) which has some advantages over traditional instance attributes …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Wed, 04 Apr 2012 00:00:00 +0200</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2012-04-04:/2012/04/04/custom-request-attributes.html</guid></item><item><title>Bottlepy.org offline</title><link>http://blog.bottlepy.org/2012/02/17/bottlepyorg-offline.html</link><description>&lt;p&gt;My server harddisk died today. Until I get a new one installed, you can use the mirror at &lt;a class="reference external" href="http://readthedocs.org/docs/bottle/en/latest/"&gt;http://readthedocs.org/docs/bottle/en/latest/&lt;/a&gt;&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Fri, 17 Feb 2012 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2012-02-17:/2012/02/17/bottlepyorg-offline.html</guid></item><item><title>Bugfix Release 0.10.7</title><link>http://blog.bottlepy.org/2011/12/28/bugfix-release-0107.html</link><description>&lt;p&gt;I just released 0.10.7 (security release). It fixes a possible DoS vulnerability that is caused by hash collisions in CPython dicts.&lt;/p&gt;
&lt;p&gt;This bug is not specific to bottle. I you are using other frameworks, check for updates there too.&lt;/p&gt;
&lt;p&gt;Details: &lt;a class="reference external" href="https://cryptanalysis.eu/blog/2011/12/28/effective-dos-attacks-against-web-application-plattforms-hashdos/"&gt;https://cryptanalysis.eu/blog/2011/12/28/effective-dos-attacks-against-web-application-plattforms-hashdos …&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Wed, 28 Dec 2011 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2011-12-28:/2011/12/28/bugfix-release-0107.html</guid></item><item><title>Bugfix Release 0.9.8 and 0.10.5</title><link>http://blog.bottlepy.org/2011/12/22/bugfix-release-098-and-0105.html</link><description>&lt;p&gt;I just released 0.10.5 and 0.9.8. Both are security bugfix releases and recommended for everyone. Here is a brief summary of the changes:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Critical errors (errors within the framework code) resulted in an error page that was not protected against XSS attacks (because the template engine …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Thu, 22 Dec 2011 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2011-12-22:/2011/12/22/bugfix-release-098-and-0105.html</guid></item><item><title>Native Py3k support merged</title><link>http://blog.bottlepy.org/2011/12/20/native-py3k-support-merged.html</link><description>&lt;p&gt;It was a lot of work, but I could finally drop the 2to3 requirement! The Bottle sources now support Python 2.5, 2.6, 2.7, 3,1 and 3.2 natively. All tests pass. No measurable performance drawback. Full backwards compatible. Its pure win :)&lt;/p&gt;
&lt;p&gt;You can test it directly …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Tue, 20 Dec 2011 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2011-12-20:/2011/12/20/native-py3k-support-merged.html</guid></item><item><title>Bottle 0.10 released!</title><link>http://blog.bottlepy.org/2011/11/26/bottle-010-released.html</link><description>&lt;p&gt;There is a lot of new stuff this time: A CLI interface, new routing syntax and lots of convenient helpers for request/response objects and templates. The change-log will tell you more.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Changelog: &lt;a class="reference external" href="http://bottlepy.org/docs/0.10/changelog.html#release-0-10"&gt;http://bottlepy.org/docs/0.10/changelog.html#release-0-10&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PyPi link: &lt;a class="reference external" href="http://pypi.python.org/pypi/bottle/0.10.1"&gt;http://pypi.python.org/pypi/bottle …&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Sat, 26 Nov 2011 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2011-11-26:/2011/11/26/bottle-010-released.html</guid></item><item><title>Native Python 2.x-3.x support</title><link>http://blog.bottlepy.org/2011/11/25/native-python-2x-3x-support.html</link><description>&lt;p&gt;A few days ago, Ralf showed us &lt;a class="reference external" href="http://thread.gmane.org/gmane.comp.python.bottle.general/1038"&gt;his version of Bottle 0.9&lt;/a&gt; that supports python 2.x and 3.x from a single source. No need to run 2to3 anymore, it runs natively with both major versions of Python.&lt;/p&gt;
&lt;p&gt;I want that!&lt;/p&gt;
&lt;p&gt;So I created a &lt;a class="reference external" href="https://github.com/bottlepy/bottle/commits/no2to3"&gt;new branch&lt;/a&gt; and …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Fri, 25 Nov 2011 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2011-11-25:/2011/11/25/native-python-2x-3x-support.html</guid></item><item><title>Bugfix release 0.9.7</title><link>http://blog.bottlepy.org/2011/11/15/bugfix-release-097.html</link><description>&lt;p&gt;Bottle 0.9.7 (bugfix release) is available. The bug: Loading a template encoded with a codec other than the system default in a Python 3.x environment raised an unicode error under certain circumstances. So, this release is optional. Ignore it if you want :)&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Tue, 15 Nov 2011 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2011-11-15:/2011/11/15/bugfix-release-097.html</guid></item><item><title>More robust Auto-reload</title><link>http://blog.bottlepy.org/2011/11/15/more-robust-auto-reload.html</link><description>&lt;p&gt;The Bottle auto-reload feature got an upgrade today: It is now able to handle syntax and import errors in your application or imported modules. Just start the server with the new command-line interface and give it a try:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;bottle.py --debug --reload package.module:app
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I had to change a …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Tue, 15 Nov 2011 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2011-11-15:/2011/11/15/more-robust-auto-reload.html</guid></item><item><title>Feature freeze for 0.10</title><link>http://blog.bottlepy.org/2011/11/10/feature-freeze-for-010.html</link><description>&lt;p&gt;Feature freeze, lets fix some bugs :)&lt;/p&gt;
&lt;p&gt;What is in:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="http://bottlepy.org/docs/dev/changelog.html#release-0-10"&gt;http://bottlepy.org/docs/dev/changelog.html#release-0-10&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;plus the new route (filter) syntax&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Notable stuff that has to wait for 0.11:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;New TemplateAdapter API&lt;/li&gt;
&lt;li&gt;SimpeTemplate v2&lt;/li&gt;
&lt;li&gt;Comamnd-line reloader that can handle syntax errors.&lt;/li&gt;
&lt;li&gt;Testing API for bottle apps (needs …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Thu, 10 Nov 2011 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2011-11-10:/2011/11/10/feature-freeze-for-010.html</guid></item><item><title>Routing Overhaul</title><link>http://blog.bottlepy.org/2011/11/09/routing-overhaul.html</link><description>&lt;p&gt;It took some time, but the new routing code is finished.&lt;/p&gt;
&lt;p&gt;Highlights:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;New wildcard syntax: &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;/object/&amp;lt;id:int&amp;gt;&lt;/span&gt;&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;Wildcard filtering/validation as part of the route syntax&lt;/li&gt;
&lt;li&gt;Support for custom wildcard filters&lt;/li&gt;
&lt;li&gt;Faster url() building&lt;/li&gt;
&lt;li&gt;Better error messages&lt;/li&gt;
&lt;li&gt;Much simpler code (I dropped CGI optimization)&lt;/li&gt;
&lt;li&gt;Lots of documentation&lt;/li&gt;
&lt;li&gt;(the old …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marcel Hellkamp</dc:creator><pubDate>Wed, 09 Nov 2011 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:blog.bottlepy.org,2011-11-09:/2011/11/09/routing-overhaul.html</guid></item></channel></rss>