Shared publicly  - 
 
After months of testing, TurboGears 2.3.0 is finally available on PyPi! You can now easily install the framework with "pip install tg.devtools", a private index is not enforced anymore.

Version 2.3.0 enables also TurboGears to move to a faster release cycle, with the goal of releasing every 3 months to keep improving the framework and providing compatibility with never versions of third party libraries.

Have a look at http://www.turbogears.org for new documentation and tutorials

Major Changes in 2.3.0 include:
* Python 3.2 and 3.3 compatibility
* Removal of all dependencies on Pylons
* Minimal Mode, TurboGears now supports a microframework mode.
* It is now possible to install TurboGears directly from "pip install tg.devtools"
* Great speed ups, TurboGears 2.3 is significantly faster than 2.2.2
* 100% Test coverage of the entire project
* Major documentation rewrites
* Replacement of paster with gearbox
* Application Wrappers: application wrappers are much like WSGI middlewares but work with Request/Response objects and inside the TurboGears context. It is also possible to choose the order in which application wrappers are applied
* Improved streaming responses support, both database session and tg context are now available during streaming
* Transaction Manager now supports automatic retry of requests in case of transaction collisions
* Bootstrap theme for quickstart updated to 2.3.2
* Made easier to upgrade Bootstrap CSS files in quickstart: Changes to bootstrap to cope with tg.flash have been moved in style.css, bootstrap files are now vanilla
* Support for default caching strategy in Template Caching: If a beaker.cache.type option is set in configuration it is used as default when no type is explicitly set in tg_cache template value.
*@expose('json') now supports serializing paginated collections
* Refactoring of Request->Response flow introducing the TurboGears Context. This improves speed and maintainability by hiding all the WSGI things behind TGApp and using only Request/Response objects to communicate from TGApp to Dispatcher and vice versa.

Other Changes Include:
* Quickstart master.html now includes jquery.js reference aside to boostrap.js so that bootstrap javascript works out of the box
* Various middlewares in the request flow now correctly perform close() on generators.
* When available wsgi.file_wrapper is used by the Static files middleware
* Various fixes at doc and cleanups in quickstart template
* Fixed issue with add_auth_middleware not bing idempotent
* Fix for "lang" option being ignored if set inside of .ini instead of app_cfg.py
* cope with the new jinja and markupsafe releases
* Report widget key instead of widget id for TW2 form_errors, this is to cope with the case ids have been changed and don't match the value names anymore
* Add tests for json encoding of pagination Pages
* Add support for serializing to json paginated collections
* Refactor response management and WSGI app forward. now only TGApp is in charge of calling start_response, also the TGController.__call__ is guaranteed to always return a WebOb Response object that can then be changed by application wrappers
* Replacing repoze.tm2 with a custom transaction manager to avoid generator consumption issue caused by repoze.tm2 version 2.0
* repoze.tm2 now always returns contenst through a generator, so by default we must use registry manager in streaming mode
* As caching is used internaly only permit to disable sessions for now
* Make easy to enable or disable beaker usage
* remove genshi trunk install as 0.7 got released
* remove info command, it was not implemented over gearbox
* Add test to check that setting up an app with package without app_globals works
* Fix jinja test on Py3.2
* when no lib.app_globals.Globals is provided use the default Bunch based one
* app_config: Added i18n extension to Jinja2 template renderer by default
* Added Jinja i18n support tests
* app_config: Added i18n extension to Jinja2 template renderer by default
* wsgiref should be part of python
* test on py3.3 too, all tests should be passing
* do not expect parameters to be encoded in any particular order when generating links
* Fix directory not being removed after test when running on py3.3
* More tests depending on dictionary ordering
* Avoid issues with dictionary keys ordering when running tests, this is to make tests pass on py3.3
* For now keep below webtest 2 due to backward incompatible changes
* Avoid crash in jinja setup when no application package is available
* when default renderer is not between renderers choose a new default renderer
* When minimal disable dotted templates notation by default so that packages are not required
* Make possible to declare an authenticate method in TGAuthMetadata This makes possible to use authentication on Py3 by avoiding the repoze.who.plugins.sa dependency, also instead of having to use external packages to provide authenticators for ming and sqla they should simply be provided by the quickstart inside the app itself much like get_user,get_groups and get_permissions are.
* fix repositories location
* Update for 230 the setup.cfg
* fixed error_handler code in dispatch to point to controller last seen in the stack.
* Fix string compare in test on py3
* reach full coverage, add tests for ming options and fix ming options
* Add test for coerce_config utils
* Avoid registering the Session and Cache objects more than once
* Remove friendlyform dependency
* Fix issue with SQLA 0.8
* Make the Page have a length
* Expose some core parts for single file web services into the tg namespace
* Fix issue with registry compatibility when paste StackedObjectProxy are used instead of tg StackedObjectProxy
* Make possible to choose redirection type in tg.redirect and move @with_trailing_slash and @without_trailing_slash to 301 permanent redirect for SEO
* Add support for SQLAlchemy queries in pagination and test it
* Refactor auth module and provide a py3 compatible alternative to FriendlyFormPlugin
* Tune package dependencies name for private index
* Provide coverage of wsgiapp, just ignore pylons compatibility mode and routes support
* Full coverage for statics file serving
* Provide full coverage for stacked objects registry
* Bring tg.validation to 100% coverage
* fix DottedFileLocatorError on Py3
* Remove app: prefix support from template lookup and add tests for tg.util
* Full coverage tests for pagination
* fix issues with body request/response management in py3
* This requires some investigation, on travis the json date encoding is different
* Clean up request/response and provide tests
* Require WebOb >= 1.2 and provide some tests for the request
* Tests for tg.render and remove deprecated flash and flash_status vars in template
* Enable context provider for TraceErrorsMiddleware
* make call_wsgi_application an internal detail for StatusCodeRedirect
* tests don't pass on travis-ci even though they do on same python version on other systems
* fix test on py26
* Skip mongodb jsonify on py3
* Add missing tests for json encoding
* Add tests for i18n management and fix some issues in i18n
* Fix tg.predicates bool evaluation on Py3 and cover tg.predicates with tests
* Full coverage for tg.flash module
* Add globals preservation after request in case of exceptions to make them available in debuggers
* Make use of backlash.TraceErrorsMiddleware when debug mode is disabled
* dottednames.mako_lookup brought to 100% coverage
* Bring to full coverage jinja_lookup and kajiki_lookup
* Refactor StackedProxyObject and TurboGearsContextMember and start testing the registry
* tg.decorators now 100% covered
* Remove postpone_commits decorator, it was not documented and it's better suited to specific projects needs than to the framework itself
* Remove allow_only decorator which actually didn't work and test was disabled
* Increase tg.decorators module coverage
* Fix pylons_formencode_gettext on Py3
* More tests for utils
* declare tg.url used functions internal and test on Py2 and Py3
* Bring dispatcher to 100% coverage and fix issue with mount_steps with AppConfig minimal mode
* Various cleanup, brings 100% coverage on decorated controller. Moved toscawidgets.default_view in app_config and removed _configured_engines which did nothing
* Extend the minimal setup to more options
* Various Speedups
* Should provide support on PY3
* Fixx BalancedSession and provide full coverage for it
* Always update even with nonzero is not available
* Improve testing for auth and remove unused else case from _AuthenticationForgerPlugin
* This test cannot run on Py3 now
* AppConfig is now 100% coverage
* Add Test for toscawidgets setup
* Fix commit_veto currently not being used at all due to repoze.tm2.make_tm accepting a configuration dictionary, not the commit_veto callable
* Let tgming force ming version
* Skip tests for repoze.who.plugins.sa not importing on py3
* correct dependency
* tests for auth setup, bringing coverage up to 97%
* Bring app_config coverage up to 90% on Py2.x
* 84% coverage for app_config, skipping chameleon.genshi and amf
* Focus on coverage on py2.x, raise tg.configuration.app_config coverage to 80%
* Make possible for template engine setup functions to remove themselves when they fail to initialize
* Actually unbound methods don't exist anymore in py3, was a broken test
* bring tg._compat and tg.caching at 100% coverage on Py3
* minor cleanups
* Test support on travis-ci.org
* remove deprecated .exception
* All tests passing on both py2.6 and py3.2
* Avoid trying to import FormEncode again if not available
* Add repoze.lru dependency
* Cache path cleanup for statics
* All auth tests passing on Py3 (requires repoze.who git and port of friendlyform)
* make unicode_literals for test_controllers
* Fix unicode dispatch on python3, all dispatch tests passing
* solve some failing config tests and remove webob warning on Py3
* Fix tg.caching on Py3
* fix jsonify tests on py3
* Make configuration tests pass on Py3
* Validation tests passing
* Remove deprecationwarning on WebOb1.2
* Fix error_handler on Py3
* All rendering tests including inheritance now pass
* Fix @expose inherit=True on Py3
* All rendering tests passing on Python3
* Fix custom_format and override_template on Py3
* Fix pagination on Py3 due to true division
* Fix remainder in dispatchment on Py3
* pylons.app_globals replaced by tg.app_globals in config
* Fix i18n on Py3
* Fix jinja loader on Py3
* fix for tg.url on Py3
* Raise version to 2.3dev
* Use backlash module as a replacement for weberror due to weberror not supporting py3
* Fix broken test mode due to paste.registry not existing anymore
* Fix for WebOb1.2
* Avoid depending from WebOb.compat as we have our own compatibility module
* More improvements on Python3 support, now able to serve the quickstart
* Make easier to create single file TG applications
* Wasn't necessary and caused issues on Python3
* Fix test suite, all tests passing again
* Make mako templates load and render in testapp on Python3
* Tune Beaker middlewares instead of replacing them
* Says HELLO on Python3 and tests still passing on Python2
* Speed up things by applying controller wrappers only once on setup, also add application_wrappers support
* Fix crash when _call is called without thread locals
* Duplicate methods due to merge issue
* Change prefix for tw2 to make resources archiving work correctly
* Make routes optional and disable them by default
* before and after reappeared due to merge with development branch
* Add crank to dependencies
* Avoid using multiple StackedObjectProxy, register only one TurboGears Context and use TurboGearsContextMember to access its members, also fix compatibility with extensions that use _call directly by removing the need of the tgl parameters
* Crank based dispatch
* Be sure that we update decoration when controller has been changed due to validation errors
* Keep compatibility with applications that called or replcaed find_controller method
* always booleanize predicates
* Keep compatibility with old websetup quickstarted with reference to pylons.app_globals
* more performances, cache some request properties and avoid adding SCRIPT_NAME to remove it later in fast_path
* more speedboost, use private Request variables and cache more argspec. Up to 1700req/sec
* Make auto_reoad_templates editable both from .ini and app_cfg
* more speed boost, up to 1600req/sec on performance test
* more boost, got over 1300req/sec
* speedboost, got from 560req/sec to 1100req/sec on my computer
* Cleanup and bring decorated controller over 90% coverage
* tg_format is not used anywhere, probably stray piece from the past
* Remove legacy renderer and let tests test the mako compiled path
* Remove invalid comment
* Bring app_config coverage up to 85%
* Bring caching code coverage over 95%
* Fix fake XmlRpc Controller for pylons less test
* Remove dependency from repoze.what-quickstart on test_requirements
* Remove dependency from repoze.what-quickstart we actually used only 1 function
* Mark as 2.1.4
* Take languages_best_match implementation from pylons 1.0.1, it should behave like old pylons languages property
* Replace start response to check if we call a plain WSGI application during the dispatch
* More compatibility with Tg-pylons applications
* Remove last references to pylons. All the tests pass on environment without Pylons
* all tests passing
* Only one test not passing
* Fix issue with tests due to pylons_compatible option
* Tests starting to pass and performing little cleanup
* Now able to make quickstart application run in a virtualenv without pylons installed
* WebOb 1.2 compatibility
* Switch more references from pylons to tg
* Pylons less dispatch
* Avoid accessing multiple times the environ as objects are already available in request locals
* TGApp not depending from pylons anymore
* Add support for migrations autogeneration to 'gearbox migrate'
* remove url_for as routes is not installed by default
* Remove repoze.tm2 dependency also from tgtesting key
* Remove repoze.tm2 dependency as it is not used anymore
* remove link to 2.2 for quickstarted templates
* Update README for newly quickstarted apps
* Work around for sqla0.8 and sqlalchemy-migrate incompatiblity
* This is actually meaningless now
* Port test suite to gearbox from paste
* keep below webtest 2.0 to avoid backward incompatible changes
* quickstart tuning to make authentication work on Py3
* Update to reflect the gearbox package renaming
* Some quickstart options useful on Py3
* Update server due to gearbox package renamed to avoid collisions
* This is to make the versions directory exist
* Add schema initialization for migrations
* Switch from sqlalchemy-migrate to alembic for migrations to support SQLA0.8 and PY3. Keep sqla-migrate command around for backward compatibility
* Update pylons.app_globals to tg.app_globals
* Remove friendlyform dependency, not used anymore
* Add tg module to tgshell command
* Inherit from gearbox.command.Command instead of directly using cliff.command.Command
* Update dependencies
* Remove references to registry restorer which is not available
* Make command description more specific
* Make the tgshell command available only inside TurboGears projects
* Fix name collision with migrate package on python2
* Fix generated project for py3 and add --skip-tw quickstart option to disable tw
* move migrate and quickstart commands to gearbox for py3 support and add tgshell command to replace paster shell
* minor style and indentation fix
* remove reference to limited fields, in the tutorial is actually not fields limit
* Replace reference to Ticket model with Movie in CRUD tutorial
* Update migration documentation with some minor tunes on PasteScript and WebHelpers
* remove references to repoze.tm2
* updated streaming documentation to get on pair with the new behavior of 2.3
* Improve documentation on nested RestControllers
* Improve CrudRestController documentation adding references to pagination, substring filters and remember_values
* Dynamically generate private index urls from current version
* Remove references to Pylons
* Update version in README
* Fix mentions of controllers.py to controllers/root.py
* Fix mentions of controllers.py to root.py
* Mention move of paginate code in Upgrading guide
* Mention move of paginate code in Upgrading guide
* remove references to -E option of pip install which is deprecated
* Add tutorial for minimal mode
* Update tg22env references to tgenv, removing version specification
* Added doc for deploy under mozilla circus
* Port files about contribution from old book
* Warn about using cookies for session storage
* Warn about using cookies for session storage. Possible exploits using malicious pickled objects are only possible when cookies are used as storage backend. Users should be explicitly warned about that and use the filesystem storage instead - but they should also be aware of the cleanup they will then need to perform manually.
* Made colors a little bit less depressive.
* Add nose dependency for docs building
* update requirements.txt
* Merge reference into a single file for fast lookup
* Update documentation about migrations to Alembic
* Minor improvements and create the deploy section into the CookBook
* Try to improve main sections titling
* Tune minor changes and move Upgrading chapter from Doc to Cookbook
* Add GearBox documentation
* Remove some stray references to paster
* Remove some forgotten reference to the pylons namespace
* Remove references to tw.dojo
* Moving forward toward refactoring documentation
* Start documentation cleanup and rewrite for 2.3
18
5
Nathaniel Case's profile photoKonstantin Molchanov's profile photoJonathan White's profile photoSimone Marzola's profile photo
5 comments
 
Awesome! Just in time for the start of my new website! You guys are the best.
 
I can't run the sample code on your front page with Python 3. I believe you claim to support it in this version.

This fails:

python setup.py develop

because it requires sprox, which can't be installed on Python 3.

You should either update the tutorial or improve the Python 3 support.

Thanks!
 
Link to wiki tutorial on main web page doesn't work.
Add a comment...