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