Chris McDonough
2015-03-18 3ec480879d3ce366ef130d3ab05c32014b3d908e
commit | author | age
accd53 1 Next release
CM 2 ============
3
4 - Internal: catch unhashable discriminators early (raise an error instead of
5   allowing them to find their way into resolveConflicts).
6
e86e2f 7 - The `match_param` view predicate now accepts a string or a tuple.
MM 8   This replaces the broken behavior of accepting a dict. See
9   https://github.com/Pylons/pyramid/issues/425 for more information.
10
11 Backwards Incompatibilities
12 ---------------------------
13
14 - The `match_param` view predicate no longer accepts a dict. This will
15   have no negative affect because the implementation was broken for
16   dict-based arguments.
17
dd52ac 18 1.2.7 (2012-01-20)
CM 19 ==================
ad60ff 20
d5fc07 21 Bug Fixes
CM 22 ---------
23
ad60ff 24 - Static URL paths were URL-quoted twice.  See
CM 25   https://github.com/Pylons/pyramid/issues/407 .
26
d5fc07 27 - Views registered with an ``accept`` could not be overridden correctly with
CM 28   a different view that had the same predicate arguments.  See
29   https://github.com/Pylons/pyramid/pull/404 for more information.
30
ab32ca 31 1.2.6 (2012-01-05)
CM 32 ==================
d5fc07 33
CM 34 Bug Fixes
35 ---------
6833b5 36
CM 37 - Literal portions of route patterns were not URL-quoted when ``route_url``
38   or ``route_path`` was used to generate a URL or path.
39
40 - The result of ``route_path`` or ``route_url`` might have been ``unicode``
41   or ``str`` depending on the input.  It is now guaranteed to always be
42   ``str``.
43
44 - URL matching when the pattern contained non-ASCII characters in literal
45   parts was indeterminate.  Now the pattern supplied to ``add_route`` is
46   assumed to be either: a ``unicode`` value, or a ``str`` value that contains
47   only ASCII characters.  If you now want to match the path info from a URL
48   that contains high order characters, you can pass the Unicode
49   representation of the decoded path portion in the pattern.
50
51 - When using a ``traverse=`` route predicate, traversal would fail with a
52   URLDecodeError if there were any high-order characters in the traversal
53   pattern or in the matched dynamic segments.
54
55 - Using a dynamic segment named ``traverse`` in a route pattern like this::
56
57     config.add_route('trav_route', 'traversal/{traverse:.*}')
58
59   Would cause a ``UnicodeDecodeError`` when the route was matched and the
60   matched portion of the URL contained any high-order characters.  See
61   https://github.com/Pylons/pyramid/issues/385 .
62
63 - When using a ``*traverse`` stararg in a route pattern, a URL that matched
64   that possessed a ``@@`` in its name (signifying a view name) would be
65   inappropriately quoted by the traversal machinery during traversal,
66   resulting in the view not being found properly. See
67   https://github.com/Pylons/pyramid/issues/382 and
68   https://github.com/Pylons/pyramid/issues/375 .
69
70 Backwards Incompatibilities
71 ---------------------------
72
73 - String values passed to ``route_url`` or ``route_path`` that are meant to
74   replace "remainder" matches will now be URL-quoted except for embedded
75   slashes. For example::
76
77      config.add_route('remain', '/foo*remainder')
78      request.route_path('remain', remainder='abc / def')
79      # -> '/foo/abc%20/%20def'
80
81   Previously string values passed as remainder replacements were tacked on
82   untouched, without any URL-quoting.  But this doesn't really work logically
83   if the value passed is Unicode (raw unicode cannot be placed in a URL or in
84   a path) and it is inconsistent with the rest of the URL generation
85   machinery if the value is a string (it won't be quoted unless by the
86   caller).
87
88   Some folks will have been relying on the older behavior to tack on query
89   string elements and anchor portions of the URL; sorry, you'll need to
90   change your code to use the ``_query`` and/or ``_anchor`` arguments to
91   ``route_path`` or ``route_url`` to do this now.
92
93 - If you pass a bytestring that contains non-ASCII characters to
94   ``add_route`` as a pattern, it will now fail at startup time.  Use Unicode
95   instead.
96
02ad73 97 1.2.5 (2011-12-14)
CM 98 ==================
210f7d 99
d5fc07 100 Features
CM 101 --------
102
210f7d 103 - Backport the ``egg:pyramid#wsgiref`` and ``egg:pyramid#cherrypy`` server
CM 104   runners from the 1.3 branch.  This change is to primarily allow scaffolding
105   authors to rely on the wsgiref entry point for projects that are meant to
02ad73 106   work on both Pyramid 1.2.X and 1.3.X.
210f7d 107
b5e035 108 1.2.4 (2011-12-06)
CM 109 ==================
c5d4f0 110
MM 111 Features
112 --------
113
114 - ``bpython`` interpreter compatibility in ``pshell``. See the "Command-Line
115   Pyramid" narrative docs chapter for more information.
116
b5e035 117 Bug Fixes
CM 118 ---------
119
50a794 120 - Prevent a scaffold rendering from being named ``site`` (conflicts with
CM 121   Python internal site.py).
122
07cada 123 - Forward compatibility for ``pyramid_zcml`` >= 0.8 + ``zope.configuration``
CM 124   >= 3.8.0.
125
c5d4f0 126 Backward Incompatibilities
MM 127 --------------------------
128
129 - The ``pshell`` command (see "paster pshell") no longer accepts a
130   ``--disable-ipython`` command-line argument.  Instead, it accepts a ``-p``
131   or ``--python-shell`` argument, which can be any of the values ``python``,
132   ``ipython`` or ``bpython``.
133
4a572d 134 1.2.3 (2011-11-20)
CM 135 ==================
136
137 - 1.2.2 was a brownbag, containing a stray ``intr.py``.
138
a5175c 139 1.2.2 (2011-11-20)
CM 140 ==================
31938b 141
d28528 142 Features
CM 143 --------
144
145 - Backport from master: a ``mako.directories`` setting is no longer required
146   to use Mako templates.  Rationale: Mako template renderers can be specified
147   using an absolute asset spec.  An entire application can be written with
148   such asset specs, requiring no ordered lookup path.
149
31938b 150 Bug Fixes
CM 151 ---------
152
e61ab8 153 - Backport from master: The ``pryamid.view.view_config`` decorator did not
CM 154   accept a ``match_params`` predicate argument.  See
155   https://github.com/Pylons/pyramid/pull/308
31938b 156
7fe36a 157 - Backport fixes from master regarding URL decoding.  URL segments are
CM 158   no-longer "double-decoded" during traversal and when encountered in a route
159   subpath (or other star-arg pattern).  As a result, a new API named
160   ``pyramid.traversal.traversal_path_info`` was added to the system.  This
161   function accepts an already-URL-decoded string and returns a tuple of
162   Unicode objects.  This API is used internally by Pyramid in all places that
163   ``pyramid.traversal.traversal_path`` used to be used.  The
164   ``traversal_path`` function remains for backwards compatibility, however,
165   and can still be used when a path is encoded.  See
166   https://github.com/Pylons/pyramid/issues/349 for more information.
167
28f21c 168 - Backport fix from master: ``request.static_url`` now generates URL-quoted
CM 169   URLs when fed a ``path`` argument which contains characters that are
170   unsuitable for URLs.  See https://github.com/Pylons/pyramid/issues/349 for
171   more information.
172
173 - Backport from master: fix ``request.json_body`` to deal with alternate
174   request charsets.
175
e61ab8 176 - Backport from master: the AuthTktCookieHelper could potentially generate
4791d7 177   Unicode headers inappropriately when the ``tokens`` argument to remember
CM 178   was used.  See https://github.com/Pylons/pyramid/pull/314.
179
e61ab8 180 - Backport from master: the AuthTktAuthenticationPolicy did not use a
CM 181   timing-attack-aware string comparator.  See
182   https://github.com/Pylons/pyramid/pull/320 for more info.
183
34859d 184 - Backport from master: the DummySession in ``pyramid.testing`` now generates
CM 185   a new CSRF token if one doesn't yet exist.
186
28f21c 187 Testing
CM 188 -------
189
190 - Make tox use WebOb 1.1 for Python 2.5-based systems (WebOb 1.2 is 2.6+).
191
1e2d59 192 1.2.1 (2011-09-28)
CM 193 ==================
0dde01 194
9b9004 195 Features
CM 196 --------
197
198 - Lone instance methods can now be treated as view callables (see
199   https://github.com/Pylons/pyramid/pull/283).
0dde01 200
64b121 201 Bug Fixes
WA 202 ---------
203
204 - Update auth_tkt authentication policy to accept unicode tokens as long as
205   they only contain ASCII content. See
206   https://github.com/Pylons/pyramid/issues/293.
207
36119a 208 Documentation
CM 209 -------------
210
211 - Fix ``..note`` and ``..warning`` directives to run properly under newer
212   Sphinx.
213
63f65d 214 1.2 (2011-09-12)
CM 215 ================
dceff5 216
CM 217 Features
218 --------
219
220 - Route pattern replacement marker names can now begin with an underscore.
221   See https://github.com/Pylons/pyramid/issues/276.
222
2cf1d0 223 1.2b3 (2011-09-11)
CM 224 ==================
cda7f6 225
CM 226 Bug Fixes
227 ---------
228
229 - The route prefix was not taken into account when a static view was added in
230   an "include".  See https://github.com/Pylons/pyramid/issues/266 .
231
a66ae9 232 1.2b2 (2011-09-08)
CM 233 ==================
234
235 Bug Fixes
236 ---------
237
238 - The 1.2b1 tarball was a brownbag (particularly for Windows users) because
239   it contained filenames with stray quotation marks in inappropriate places.
240   We depend on ``setuptools-git`` to produce release tarballs, and when it
241   was run to produce the 1.2b1 tarball, it didn't yet cope well with files
242   present in git repositories with high-order characters in their filenames.
243
244 Documentation
245 -------------
246
247 - Minor tweaks to the "Introduction" narrative chapter example app and
248   wording.
249
9de21f 250 1.2b1 (2011-09-08)
CM 251 ==================
d8fc16 252
58ca44 253 Bug Fixes
CM 254 ---------
255
256 - Sometimes falling back from territory translations (``de_DE``) to language
257   translations (``de``) would not work properly when using a localizer.  See
258   https://github.com/Pylons/pyramid/issues/263
259
d5dc5d 260 - The static file serving machinery could not serve files that started with a
b44777 261   ``.`` (dot) character.
d5dc5d 262
b01e97 263 - Static files with high-order (super-ASCII) characters in their names could
b44777 264   not be served by a static view.  The static file serving machinery
CM 265   inappropriately URL-quoted path segments in filenames when asking for files
266   from the filesystem.
d5dc5d 267
83faa0 268 - Within ``pyramid.traversal.traversal_path`` , canonicalize URL segments
CM 269   from UTF-8 to Unicode before checking whether a segment matches literally
270   one of ``.``, the empty string, or ``..`` in case there's some sneaky way
271   someone might tunnel those strings via UTF-8 that don't match the literals
272   before decoded.
273
d8fc16 274 Documentation
CM 275 -------------
276
277 - Added a "What Makes Pyramid Unique" section to the Introduction narrative
278   chapter.
279
d00fa0 280 1.2a6 (2011-09-06)
CM 281 ==================
bd0c7a 282
f46d55 283 Bug Fixes
CM 284 ---------
285
286 - AuthTktAuthenticationPolicy with a ``reissue_time`` interfered with logout.
287   See https://github.com/Pylons/pyramid/issues/262.
288
bd0c7a 289 Internal
CM 290 --------
291
292 - Internalize code previously depended upon as imports from the
293   ``paste.auth`` module (futureproof).
294
d00fa0 295 - Replaced use of ``paste.urlparser.StaticURLParser`` with a derivative of
CM 296   Chris Rossi's "happy" static file serving code (futureproof).
297
20646a 298 - Fixed test suite; on some systems tests would fail due to indeterminate
CM 299   test run ordering and a double-push-single-pop of a shared test variable.
315f75 300
CM 301 Behavior Differences
302 --------------------
303
304 - An ETag header is no longer set when serving a static file.  A
305   Last-Modified header is set instead.
306
307 - Static file serving no longer supports the ``wsgi.file_wrapper`` extension.
308
309 - Instead of returning a ``403 Forbidden`` error when a static file is served
310   that cannot be accessed by the Pyramid process' user due to file
311   permissions, an IOError (or similar) will be raised.
312
d00fa0 313 Scaffolds
CM 314 ---------
315
316 - All scaffolds now send the ``cache_max_age`` parameter to the
317   ``add_static_view`` method.
318
7961af 319 1.2a5 (2011-09-04)
CM 320 ==================
7a7c8c 321
CM 322 Bug Fixes
323 ---------
324
325 - The ``route_prefix`` of a configurator was not properly taken into account
326   when registering routes in certain circumstances.  See
327   https://github.com/Pylons/pyramid/issues/260
328
061154 329 Dependencies
CM 330 ------------
331
332 - The ``zope.configuration`` package is no longer a dependency.
333
f1c6e0 334 1.2a4 (2011-09-02)
CM 335 ==================
1aeae3 336
CM 337 Features
338 --------
339
340 - Support an ``onerror`` keyword argument to
341   ``pyramid.config.Configurator.scan()``.  This onerror keyword argument is
342   passed to ``venusian.Scanner.scan()`` to influence error behavior when
343   an exception is raised during scanning.
344
49f082 345 - The ``request_method`` predicate argument to
CM 346   ``pyramid.config.Configurator.add_view`` and
347   ``pyramid.config.Configurator.add_route`` is now permitted to be a tuple of
348   HTTP method names.  Previously it was restricted to being a string
349   representing a single HTTP method name.
350
33516a 351 - Undeprecated ``pyramid.traversal.find_model``,
CM 352   ``pyramid.traversal.model_path``, ``pyramid.traversal.model_path_tuple``,
353   and ``pyramid.url.model_url``, which were all deprecated in Pyramid 1.0.
354   There's just not much cost to keeping them around forever as aliases to
355   their renamed ``resource_*`` prefixed functions.
356
357 - Undeprecated ``pyramid.view.bfg_view``, which was deprecated in Pyramid
358   1.0.  This is a low-cost alias to ``pyramid.view.view_config`` which we'll
359   just keep around forever.
360
1aeae3 361 Dependencies
CM 362 ------------
363
364 - Pyramid now requires Venusian 1.0a1 or better to support the ``onerror``
365   keyword argument to ``pyramid.config.Configurator.scan``.
366
21a4c9 367 1.2a3 (2011-08-29)
CM 368 ==================
b2c4e0 369
b5c0cb 370 Bug Fixes
CM 371 ---------
372
373 - Pyramid did not properly generate static URLs using
374   ``pyramid.url.static_url`` when passed a caller-package relative path due
0ff9d4 375   to a refactoring done in 1.2a1.
CM 376
377 - The ``settings`` object emitted a deprecation warning any time
378   ``__getattr__`` was called upon it.  However, there are legitimate
379   situations in which ``__getattr__`` is called on arbitrary objects
380   (e.g. ``hasattr``).  Now, the ``settings`` object only emits the warning
381   upon successful lookup.
b5c0cb 382
b2c4e0 383 Internal
CM 384 --------
385
386 - Use ``config.with_package`` in view_config decorator rather than
387   manufacturing a new renderer helper (cleanup).
388
5bee60 389 1.2a2 (2011-08-27)
CM 390 ==================
391
392 Bug Fixes
393 ---------
b93af9 394
CM 395 - When a ``renderers=`` argument is not specified to the Configurator
396   constructor, eagerly register and commit the default renderer set.  This
397   permits the overriding of the default renderers, which was broken in 1.2a1
398   without a commit directly after Configurator construction.
399
8b62d7 400 - Mako rendering exceptions had the wrong value for an error message.
CM 401
2a818a 402 - An include could not set a root factory successfully because the
CM 403   Configurator constructor unconditionally registered one that would be
404   treated as if it were "the word of the user".
405
5bee60 406 Features
CM 407 --------
408
637bda 409 - A session factory can now be passed in using the dotted name syntax.
CM 410
c1a179 411 1.2a1 (2011-08-24)
CM 412 ==================
9a66aa 413
CM 414 Features
415 --------
416
5ec330 417 - The ``[pshell]`` section in an ini configuration file now treats a
CM 418   ``setup`` key as a dotted name that points to a callable that is passed the
419   bootstrap environment.  It can mutate the environment as necessary for
420   great justice.
421
473697 422 - A new configuration setting named ``pyramid.includes`` is now available.
CM 423   It is described in the "Environment Variables and ``.ini`` Files Settings"
424   narrative documentation chapter.
425
83bf91 426 - Added a ``route_prefix`` argument to the
CM 427   ``pyramid.config.Configurator.include`` method.  This argument allows you
428   to compose URL dispatch applications together.  See the section entitled
429   "Using a Route Prefix to Compose Applications" in the "URL Dispatch"
430   narrative documentation chapter.
431
1e88db 432 - Added a ``pyramid.security.NO_PERMISSION_REQUIRED`` constant for use in
CM 433   ``permission=`` statements to view configuration.  This constant has a
434   value of the string ``__no_permission_required__``.  This string value was
435   previously referred to in documentation; now the documentation uses the
436   constant.
437
1f901a 438 - Added a decorator-based way to configure a response adapter:
CM 439   ``pyramid.response.response_adapter``.  This decorator has the same use as
440   ``pyramid.config.Configurator.add_response_adapter`` but it's declarative.
441
9a66aa 442 - The ``pyramid.events.BeforeRender`` event now has an attribute named
CM 443   ``rendering_val``.  This can be used to introspect the value returned by a
444   view in a BeforeRender subscriber.
445
6b2a62 446 - New configurator directive: ``pyramid.config.Configurator.add_tween``.
CM 447   This directive adds a "tween".  A "tween" is used to wrap the Pyramid
448   router's primary request handling function.  This is a feature may be used
449   by Pyramid framework extensions, to provide, for example, view timing
450   support and as a convenient place to hang bookkeeping code.
af2323 451
6b2a62 452   Tweens are further described in the narrative docs section in the Hooks
CM 453   chapter, named "Registering Tweens".
af2323 454
6b2a62 455 - New paster command ``paster ptweens``, which prints the current "tween"
CM 456   configuration for an application.  See the section entitled "Displaying
457   Tweens" in the Command-Line Pyramid chapter of the narrative documentation
458   for more info.
b72379 459
3a8054 460 - The Pyramid debug logger now uses the standard logging configuration
CM 461   (usually set up by Paste as part of startup).  This means that output from
462   e.g. ``debug_notfound``, ``debug_authorization``, etc. will go to the
463   normal logging channels.  The logger name of the debug logger will be the
464   package name of the *caller* of the Configurator's constructor.
465
95a379 466 - A new attribute is available on request objects: ``exc_info``.  Its value
CM 467   will be ``None`` until an exception is caught by the Pyramid router, after
468   which it will be the result of ``sys.exc_info()``.
6b2a62 469
274435 470 - ``pyramid.testing.DummyRequest`` now implements the
CM 471   ``add_finished_callback`` and ``add_response_callback`` methods.
472
1a42bd 473 - New methods of the ``pyramid.config.Configurator`` class:
CM 474   ``set_authentication_policy`` and ``set_authorization_policy``.  These are
475   meant to be consumed mostly by add-on authors.
476
ea824f 477 - New Configurator method: ``set_root_factory``.
CM 478
479 - Pyramid no longer eagerly commits some default configuration statements at
480   Configurator construction time, which permits values passed in as
481   constructor arguments (e.g. ``authentication_policy`` and
482   ``authorization_policy``) to override the same settings obtained via an
483   "include".
484
9f7f4f 485 - Better Mako rendering exceptions via
CM 486   ``pyramid.mako_templating.MakoRenderingException``
487
5c6963 488 - New request methods: ``current_route_url``, ``current_route_path``, and
CM 489   ``static_path``.
12cef0 490
5c6963 491 - New functions in ``pyramid.url``: ``current_route_path`` and
CM 492   ``static_path``.
12cef0 493
b8c797 494 - The ``pyramid.request.Request.static_url`` API (and its brethren
CM 495   ``pyramid.request.Request.static_path``, ``pyramid.url.static_url``, and
496   ``pyramid.url.static_path``) now accept an asbolute filename as a "path"
497   argument.  This will generate a URL to an asset as long as the filename is
498   in a directory which was previously registered as a static view.
499   Previously, trying to generate a URL to an asset using an absolute file
500   path would raise a ValueError.
501
449287 502 - The ``RemoteUserAuthenticationPolicy ``, ``AuthTktAuthenticationPolicy``,
CM 503   and ``SessionAuthenticationPolicy`` constructors now accept an additional
504   keyword argument named ``debug``.  By default, this keyword argument is
505   ``False``.  When it is ``True``, debug information will be sent to the
506   Pyramid debug logger (usually on stderr) when the ``authenticated_userid``
507   or ``effective_principals`` method is called on any of these policies.  The
508   output produced can be useful when trying to diagnose
509   authentication-related problems.
510
141f90 511 - New view predicate: ``match_param``.  Example: a view added via
CM 512   ``config.add_view(aview, match_param='action=edit')`` will be called only
513   when the ``request.matchdict`` has a value inside it named ``action`` with
514   a value of ``edit``.
515
6b2a62 516 Internal
CM 517 --------
518
519 - The Pyramid "exception view" machinery is now implemented as a "tween"
520   (``pyramid.tweens.excview_tween_factory``).
95a379 521
85093d 522 - WSGIHTTPException (HTTPFound, HTTPNotFound, etc) now has a new API named
CM 523   "prepare" which renders the body and content type when it is provided with
524   a WSGI environ.  Required for debug toolbar.
525
526 - Once ``__call__`` or ``prepare`` is called on a WSGIHTTPException, the body
527   will be set, and subsequent calls to ``__call__`` will always return the
528   same body.  Delete the body attribute to rerender the exception body.
529
5c52da 530 - Previously the ``pyramid.events.BeforeRender`` event *wrapped* a dictionary
CM 531   (it addressed it as its ``_system`` attribute).  Now it *is* a dictionary
532   (it inherits from ``dict``), and it's the value that is passed to templates
533   as a top-level dictionary.
534
fb90f0 535 - The ``route_url``, ``route_path``, ``resource_url``, ``static_url``, and
CM 536   ``current_route_url`` functions in the ``pyramid.url`` package now delegate
537   to a method on the request they've been passed, instead of the other way
538   around.  The pyramid.request.Request object now inherits from a mixin named
539   pyramid.url.URLMethodsMixin to make this possible, and all url/path
540   generation logic is embedded in this mixin.
541
5bf23f 542 - Refactor ``pyramid.config`` into a package.
CM 543
66da9b 544 - Removed the ``_set_security_policies`` method of the Configurator.
CM 545
53d9d4 546 - Moved the ``StaticURLInfo`` class from ``pyramid.static`` to
CM 547   ``pyramid.config.views``.
548
5f5a7e 549 - Move the ``Settings`` class from ``pyramid.settings`` to
CM 550   ``pyramid.config.settings``.
551
6da017 552 - Move the ``OverrideProvider``, ``PackageOverrides``, ``DirectoryOverride``,
CM 553   and ``FileOverride`` classes from ``pyramid.asset`` to
554   ``pyramid.config.assets``.
555
ef6f6b 556 Deprecations
CM 557 ------------
558
559 - All Pyramid-related deployment settings (e.g. ``debug_all``,
560   ``debug_notfound``) are now meant to be prefixed with the prefix
561   ``pyramid.``.  For example: ``debug_all`` -> ``pyramid.debug_all``.  The
562   old non-prefixed settings will continue to work indefinitely but supplying
53d9d4 563   them may eventually print a deprecation warning.  All scaffolds and
CM 564   tutorials have been changed to use prefixed settings.
ef6f6b 565
b5ffe3 566 - The ``settings`` dictionary now raises a deprecation warning when you
CM 567   attempt to access its values via ``__getattr__`` instead of
568   via ``__getitem__``.
569
3a8054 570 Backwards Incompatibilities
CM 571 ---------------------------
572
573 - If a string is passed as the ``debug_logger`` parameter to a Configurator,
574   that string is considered to be the name of a global Python logger rather
575   than a dotted name to an instance of a logger.
576
83bf91 577 - The ``pyramid.config.Configurator.include`` method now accepts only a
CM 578   single ``callable`` argument (a sequence of callables used to be
579   permitted).  If you are passing more than one ``callable`` to
580   ``pyramid.config.Configurator.include``, it will break.  You now must now
53d9d4 581   instead make a separate call to the method for each callable.  This change
CM 582   was introduced to support the ``route_prefix`` feature of include.
83bf91 583
04b7ea 584 - It may be necessary to more strictly order configuration route and view
CM 585   statements when using an "autocommitting" Configurator.  In the past, it
586   was possible to add a view which named a route name before adding a route
587   with that name when you used an autocommitting configurator.  For example::
588
589     config = Configurator(autocommit=True)
590     config.add_view('my.pkg.someview', route_name='foo')
591     config.add_route('foo', '/foo')
592
593   The above will raise an exception when the view attempts to add itself.
594   Now you must add the route before adding the view::
595
596     config = Configurator(autocommit=True)
597     config.add_route('foo', '/foo')
598     config.add_view('my.pkg.someview', route_name='foo')
599
600   This won't effect "normal" users, only people who have legacy BFG codebases
601   that used an autommitting configurator and possibly tests that use the
602   configurator API (the configurator returned by ``pyramid.testing.setUp`` is
603   an autocommitting configurator).  The right way to get around this is to
604   use a non-autocommitting configurator (the default), which does not have
605   these directive ordering requirements.
606
607 - The ``pyramid.config.Configurator.add_route`` directive no longer returns a
608   route object.  This change was required to make route vs. view
609   configuration processing work properly.
610
6b2a62 611 Documentation
CM 612 -------------
613
fb90f0 614 - Narrative and API documentation which used the ``route_url``,
CM 615   ``route_path``, ``resource_url``, ``static_url``, and ``current_route_url``
616   functions in the ``pyramid.url`` package have now been changed to use
617   eponymous methods of the request instead.
618
83bf91 619 - Added a section entitled "Using a Route Prefix to Compose Applications" to
CM 620   the "URL Dispatch" narrative documentation chapter.
621
6b2a62 622 - Added a new module to the API docs: ``pyramid.tweens``.
CM 623
624 - Added a "Registering Tweens" section to the "Hooks" narrative chapter.
625
626 - Added a "Displaying Tweens" section to the "Command-Line Pyramid" narrative
627   chapter.
628
473697 629 - Added documentation for the ``pyramid.tweens`` and ``pyramid.includes``
CM 630   configuration settings to the "Environment Variables and ``.ini`` Files
631   Settings" chapter.
632
1ae7af 633 - Added a Logging chapter to the narrative docs (based on the Pylons logging
CM 634   docs, thanks Phil).
635
53d9d4 636 - Added a Paste chapter to the narrative docs (moved content from the Project
CM 637   chapter).
638
5c52da 639 - Added the ``pyramid.interfaces.IDict`` interface representing the methods
CM 640   of a dictionary, for documentation purposes only (IMultiDict and
641   IBeforeRender inherit from it).
642
42d31c 643 - All tutorials now use - The ``route_url``, ``route_path``,
CM 644   ``resource_url``, ``static_url``, and ``current_route_url`` methods of the
645   request rather than the function variants imported from ``pyramid.url``.
646
b25335 647 - The ZODB wiki tutorial now uses the ``pyramid_zodbconn`` package rather
CM 648   than the ``repoze.zodbconn`` package to provide ZODB integration.
649
eef972 650 Dependency Changes
CM 651 ------------------
652
653 - Pyramid now relies on PasteScript >= 1.7.4.  This version contains a
654   feature important for allowing flexible logging configuration.
655
391402 656 Scaffolds
CM 657 ----------
658
659 - All scaffolds now use the ``pyramid_tm`` package rather than the
660   ``repoze.tm2`` middleware to manage transaction management.
661
b25335 662 - The ZODB scaffold now uses the ``pyramid_zodbconn`` package rather than the
CM 663   ``repoze.zodbconn`` package to provide ZODB integration.
664
391402 665 - All scaffolds now use the ``pyramid_debugtoolbar`` package rather than the
CM 666   ``WebError`` package to provide interactive debugging features.
667
668 - Projects created via a scaffold no longer depend on the ``WebError``
669   package at all; configuration in the ``production.ini`` file which used to
670   require its ``error_catcher`` middleware has been removed.  Configuring
671   error catching / email sending is now the domain of the ``pyramid_exclog``
672   package (see https://docs.pylonsproject.org/projects/pyramid_exclog/dev/).
673
1939d0 674 Bug Fixes
CM 675 ---------
676
677 - Fixed an issue with the default renderer not working at certain times.  See
678   https://github.com/Pylons/pyramid/issues/249
679