Chris McDonough
2012-01-20 a41c8ca521ba983594364b1eb1f6c6025149fbe7
commit | author | age
a41c8c 1 1.3a6 (2012-01-20)
CM 2 ==================
6c2e8f 3
MM 4 Features
5 --------
6
7 - New API: ``pyramid.config.Configurator.set_request_property``. Add lazy
8   property descriptors to a request without changing the request factory.
9   This method provides conflict detection and is the suggested way to add
10   properties to a request.
11
830864 12 - Responses generated by Pyramid's ``static_view`` now use
CM 13   a ``wsgi.file_wrapper`` (see
14   http://www.python.org/dev/peps/pep-0333/#optional-platform-specific-file-handling)
15   when one is provided by the web server.
16
87233a 17 Bug Fixes
CM 18 ---------
19
20 - Views registered with an ``accept`` could not be overridden correctly with
21   a different view that had the same predicate arguments.  See
22   https://github.com/Pylons/pyramid/pull/404 for more information.
23
134388 24 - When using a dotted name for a ``view`` argument to
CM 25   ``Configurator.add_view`` that pointed to a class with a ``view_defaults``
26   decorator, the view defaults would not be applied.  See
27   https://github.com/Pylons/pyramid/issues/396 .
28
05f462 29 - Static URL paths were URL-quoted twice.  See
CM 30   https://github.com/Pylons/pyramid/issues/407 .
31
cf3a11 32 1.3a5 (2012-01-09)
CM 33 ==================
4c29ef 34
CM 35 Bug Fixes
36 ---------
37
38 - The ``pyramid.view.view_defaults`` decorator did not work properly when
39   more than one view relied on the defaults being different for configuration
40   conflict resolution.  See https://github.com/Pylons/pyramid/issues/394.
41
a5d994 42 Backwards Incompatibilities
CM 43 ---------------------------
44
45 - The ``path_info`` route and view predicates now match against
46   ``request.upath_info`` (Unicode) rather than ``request.path_info``
47   (indeterminate value based on Python 3 vs. Python 2).  This has to be done
48   to normalize matching on Python 2 and Python 3.
49
683941 50 1.3a4 (2012-01-05)
CM 51 ==================
b73edc 52
MM 53 Features
54 --------
55
56 - New API: ``pyramid.request.Request.set_property``. Add lazy property
57   descriptors to a request without changing the request factory. New
58   properties may be reified, effectively caching the value for the lifetime
6c2e8f 59   of the instance. Common use-cases for this would be to get a database
b73edc 60   connection for the request or identify the current user.
MM 61
030d10 62 - Use the ``waitress`` WSGI server instead of ``wsgiref`` in scaffolding.
CM 63
52a948 64 Bug Fixes
CM 65 ---------
66
67 - The documentation of ``pyramid.events.subscriber`` indicated that using it
68   as a decorator with no arguments like this::
69
70     @subscriber()
71     def somefunc(event):
72         pass
73
74   Would register ``somefunc`` to receive all events sent via the registry,
75   but this was untrue.  Instead, it would receive no events at all.  This has
76   now been fixed and the code matches the documentation.  See also
77   https://github.com/Pylons/pyramid/issues/386
78
ad9807 79 - Literal portions of route patterns were not URL-quoted when ``route_url``
c52c92 80   or ``route_path`` was used to generate a URL or path.
ad9807 81
CM 82 - The result of ``route_path`` or ``route_url`` might have been ``unicode``
83   or ``str`` depending on the input.  It is now guaranteed to always be
84   ``str``.
85
86 - URL matching when the pattern contained non-ASCII characters in literal
87   parts was indeterminate.  Now the pattern supplied to ``add_route`` is
88   assumed to be either: a ``unicode`` value, or a ``str`` value that contains
89   only ASCII characters.  If you now want to match the path info from a URL
90   that contains high order characters, you can pass the Unicode
91   representation of the decoded path portion in the pattern.
92
93 - When using a ``traverse=`` route predicate, traversal would fail with a
94   URLDecodeError if there were any high-order characters in the traversal
95   pattern or in the matched dynamic segments.
96
92dcb5 97 - Using a dynamic segment named ``traverse`` in a route pattern like this::
CM 98
99     config.add_route('trav_route', 'traversal/{traverse:.*}')
100
101   Would cause a ``UnicodeDecodeError`` when the route was matched and the
c52c92 102   matched portion of the URL contained any high-order characters.  See
92dcb5 103   https://github.com/Pylons/pyramid/issues/385 .
CM 104
c52c92 105 - When using a ``*traverse`` stararg in a route pattern, a URL that matched
CM 106   that possessed a ``@@`` in its name (signifying a view name) would be
107   inappropriately quoted by the traversal machinery during traversal,
108   resulting in the view not being found properly. See
109   https://github.com/Pylons/pyramid/issues/382 and
110   https://github.com/Pylons/pyramid/issues/375 .
111
ad9807 112 Backwards Incompatibilities
CM 113 ---------------------------
114
115 - String values passed to ``route_url`` or ``route_path`` that are meant to
116   replace "remainder" matches will now be URL-quoted except for embedded
117   slashes. For example::
118
119      config.add_route('remain', '/foo*remainder')
120      request.route_path('remain', remainder='abc / def')
121      # -> '/foo/abc%20/%20def'
122
123   Previously string values passed as remainder replacements were tacked on
124   untouched, without any URL-quoting.  But this doesn't really work logically
125   if the value passed is Unicode (raw unicode cannot be placed in a URL or in
126   a path) and it is inconsistent with the rest of the URL generation
127   machinery if the value is a string (it won't be quoted unless by the
128   caller).
129
130   Some folks will have been relying on the older behavior to tack on query
131   string elements and anchor portions of the URL; sorry, you'll need to
132   change your code to use the ``_query`` and/or ``_anchor`` arguments to
133   ``route_path`` or ``route_url`` to do this now.
134
135 - If you pass a bytestring that contains non-ASCII characters to
136   ``add_route`` as a pattern, it will now fail at startup time.  Use Unicode
137   instead.
138
d394da 139 1.3a3 (2011-12-21)
CM 140 ==================
c8061e 141
CM 142 Features
143 --------
144
145 - Added a ``prequest`` script (along the lines of ``paster request``).  It is
146   documented in the "Command-Line Pyramid" chapter in the section entitled
147   "Invoking a Request".
148
ba2a3f 149 - Add undocumented ``__discriminator__`` API to derived view callables.
CM 150   e.g. ``adapters.lookup(...).__discriminator__(context, request)``.  It will
151   be used by superdynamic systems that require the discriminator to be used
152   for introspection after manual view lookup.
153
d58614 154 Bug Fixes
CM 155 ---------
156
157 - Normalized exit values and ``-h`` output for all ``p*`` scripts
158   (``pviews``, ``proutes``, etc).
159
61838b 160 Documentation
CM 161 -------------
162
163 - Added a section named "Making Your Script into a Console Script" in the
164   "Command-Line Pyramid" chapter.
165
9003a8 166 - Removed the "Running Pyramid on Google App Engine" tutorial from the main
CM 167   docs.  It survives on in the Cookbook
168   (http://docs.pylonsproject.org/projects/pyramid_cookbook/en/latest/gae.html).
169   Rationale: it provides the correct info for the Python 2.5 version of GAE
170   only, and this version of Pyramid does not support Python 2.5.
171
9dce50 172 1.3a2 (2011-12-14)
CM 173 ==================
4375cf 174
CM 175 Features
176 --------
177
178 - New API: ``pyramid.view.view_defaults``. If you use a class as a view, you
179   can use the new ``view_defaults`` class decorator on the class to provide
180   defaults to the view configuration information used by every
181   ``@view_config`` decorator that decorates a method of that class.  It also
182   works against view configurations involving a class made imperatively.
183
78d1e4 184 - Added a backwards compatibility knob to ``pcreate`` to emulate ``paster
CM 185   create`` handling for the ``--list-templates`` option.
186
bfd4b3 187 - Changed scaffolding machinery around a bit to make it easier for people who
CM 188   want to have extension scaffolds that can work across Pyramid 1.0.X, 1.1.X,
189   1.2.X and 1.3.X.  See the new "Creating Pyramid Scaffolds" chapter in the
190   narrative documentation for more info.
191
4375cf 192 Documentation
CM 193 -------------
194
195 - Added documentation to "View Configuration" narrative documentation chapter
196   about ``view_defaults`` class decorator.
197
198 - Added API docs for ``view_defaults`` class decorator.
199
bfd4b3 200 - Added an API docs chapter for ``pyramid.scaffolds``.
CM 201
202 - Added a narrative docs chapter named "Creating Pyramid Scaffolds".
203
204 Backwards Incompatibilities
205 ---------------------------
206
207 - The ``template_renderer`` method of ``pyramid.scaffolds.PyramidScaffold``
208   was renamed to ``render_template``.  If you were overriding it, you're a
209   bad person, because it wasn't an API before now.  But we're nice so we're
210   letting you know.
211
5f1cf3 212 1.3a1 (2011-12-09)
CM 213 ==================
0dde01 214
9b9004 215 Features
CM 216 --------
217
a1bf6a 218 - Python 3.2 compatibility.
e04cbb 219
5cf9fc 220 - New ``pyramid.compat`` module and API documentation which provides Python
CM 221   2/3 straddling support for Pyramid add-ons and development environments.
222
63fced 223 - A ``mako.directories`` setting is no longer required to use Mako templates
CM 224   Rationale: Mako template renderers can be specified using an absolute asset
225   spec.  An entire application can be written with such asset specs,
226   requiring no ordered lookup path.
227
8a5db4 228 - ``bpython`` interpreter compatibility in ``pshell``.  See the "Command-Line
CM 229   Pyramid" narrative docs chapter for more information.
230
596495 231 - Added ``get_appsettings`` API function to the ``pyramid.paster`` module.
CM 232   This function returns the settings defined within an ``[app:...]`` section
233   in a PasteDeploy ini file.
234
235 - Added ``setup_logging`` API function to the ``pyramid.paster`` module.
236   This function sets up Python logging according to the logging configuration
237   in a PasteDeploy ini file.
38e4c7 238
35ad08 239 - Configuration conflict reporting is reported in a more understandable way
CM 240   ("Line 11 in file..." vs. a repr of a tuple of similar info).
241
d83b39 242 - A configuration introspection system was added; see the narrative
9d97b6 243   documentation chapter entitled "Pyramid Configuration Introspection" for
7d109d 244   more information.  New APIs: ``pyramid.registry.Introspectable``,
57a0d7 245   ``pyramid.config.Configurator.introspector``,
CM 246   ``pyramid.config.Configurator.introspectable``,
7d109d 247   ``pyramid.registry.Registry.introspector``.
CM 248
249 - Allow extra keyword arguments to be passed to the
250   ``pyramid.config.Configurator.action`` method.
57a0d7 251
56df90 252 - New APIs: ``pyramid.path.AssetResolver`` and
CM 253   ``pyramid.path.DottedNameResolver``.  The former can be used to resolve
254   asset specifications, the latter can be used to resolve dotted names to
255   modules or packages.
256
b54b2c 257 Bug Fixes
CM 258 ---------
259
a4b82c 260 - Make test suite pass on 32-bit systems; closes #286.  closes #306.
b54b2c 261   See also https://github.com/Pylons/pyramid/issues/286
CM 262
206a7f 263 - The ``pryamid.view.view_config`` decorator did not accept a ``match_params``
CM 264   predicate argument.  See https://github.com/Pylons/pyramid/pull/308
265
876fb6 266 - The AuthTktCookieHelper could potentially generate Unicode headers
CM 267   inappropriately when the ``tokens`` argument to remember was used.  See 
268   https://github.com/Pylons/pyramid/pull/314.
269
6e4c2d 270 - The AuthTktAuthenticationPolicy did not use a timing-attack-aware string
CM 271   comparator.  See https://github.com/Pylons/pyramid/pull/320 for more info.
272
9e7c11 273 - The DummySession in ``pyramid.testing`` now generates a new CSRF token if
CM 274   one doesn't yet exist.
275
1c39ae 276 - ``request.static_url`` now generates URL-quoted URLs when fed a ``path``
a5512e 277   argument which contains characters that are unsuitable for URLs.  See
CM 278   https://github.com/Pylons/pyramid/issues/349 for more info.
1c39ae 279
ea814b 280 - Prevent a scaffold rendering from being named ``site`` (conflicts with
CM 281   Python internal site.py).
282
c753fc 283 - Support for using instances as targets of the ``pyramid.wsgi.wsgiapp`` and
CM 284   ``pryramid.wsgi.wsgiapp2`` functions.
285   See https://github.com/Pylons/pyramid/pull/370 for more info.
286
e04cbb 287 Backwards Incompatibilities
CM 288 ---------------------------
289
290 - Pyramid no longer runs on Python 2.5 (which includes the most recent
9ffa36 291   release of Jython and the Python 2.5 version of GAE as of this writing).
9b9004 292
75f05a 293 - The ``paster`` command is no longer the documented way to create projects,
CM 294   start the server, or run debugging commands.  To create projects from
295   scaffolds, ``paster create`` is replaced by the ``pcreate`` console script.
296   To serve up a project, ``paster serve`` is replaced by the ``pserve``
297   console script.  New console scripts named ``pshell``, ``pviews``,
298   ``proutes``, and ``ptweens`` do what their ``paster <commandname>``
299   equivalents used to do.  Rationale: the Paste and PasteScript packages do
300   not run under Python 3.
301
302 - The default WSGI server run as the result of ``pserve`` from newly rendered
303   scaffolding is now the ``wsgiref`` WSGI server instead of the
304   ``paste.httpserver`` server.  Rationale: Rationale: the Paste and
305   PasteScript packages do not run under Python 3.
306
4c6fa2 307 - The ``pshell`` command (see "paster pshell") no longer accepts a
8a5db4 308   ``--disable-ipython`` command-line argument.  Instead, it accepts a ``-p``
CM 309   or ``--python-shell`` argument, which can be any of the values ``python``,
310   ``ipython`` or ``bpython``.
311
e307fc 312 - Removed the ``pyramid.renderers.renderer_from_name`` function.  It has been
CM 313   deprecated since Pyramid 1.0, and was never an API.
314
b74abe 315 - To use ZCML with versions of Pyramid >= 1.3, you will need ``pyramid_zcml``
CM 316   version >= 0.8 and ``zope.configuration`` version >= 3.8.0.  The
317   ``pyramid_zcml`` package version 0.8 is backwards compatible all the way to
318   Pyramid 1.0, so you won't be warned if you have older versions installed
319   and upgrade Pyramid "in-place"; it may simply break instead.
320
0dde01 321 Dependencies
CM 322 ------------
323
8fe021 324 - Pyramid no longer depends on the ``zope.component`` package, except as a
0dde01 325   testing dependency.
CM 326
e04cbb 327 - Pyramid now depends on a zope.interface>=3.8.0, WebOb>=1.2dev,
CM 328   repoze.lru>=0.4, zope.deprecation>=3.5.0, translationstring>=0.4 (for
329   Python 3 compatibility purposes).  It also, as a testing dependency,
330   depends on WebTest>=1.3.1 for the same reason.
1939d0 331
75f05a 332 - Pyramid no longer depends on the Paste or PasteScript packages.
CM 333
5edd54 334 Documentation
CM 335 -------------
336
337 - The SQLAlchemy Wiki tutorial has been updated.  It now uses
338   ``@view_config`` decorators and an explicit database population script.
75f05a 339
14e5fa 340 - Minor updates to the ZODB Wiki tutorial.
CM 341
9d97b6 342 - A narrative documentation chapter named "Extending Pyramid Configuration"
CM 343   was added; it describes how to add a new directive, and how use the
344   ``pyramid.config.Configurator.action`` method within custom directives.  It
345   also describes how to add introspectable objects.
346
8fe021 347 - A narrative documentation chapter named "Pyramid Configuration
CM 348   Introspection" was added.  It describes how to query the introspection
349   system.
350
818f8c 351 Scaffolds
CM 352 ---------
353
354 - Rendered scaffolds have now been changed to be more relocatable (fewer
355   mentions of the package name within files in the package).
356
8a5db4 357 - The ``routesalchemy`` scaffold has been renamed ``alchemy``, replacing the
CM 358   older (traversal-based) ``alchemy`` scaffold (which has been retired).
818f8c 359
8fe021 360 - The ``starter`` scaffold now uses URL dispatch by default.
CM 361