Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 902 lines (685 sloc) 39.065 kB
0d96b77 @mcdonc version bump in setup.py conf.py CHANGES.txt, rejigger changes bugs v…
mcdonc authored
1 Next Release
2d93140 @mmerickel support acl as a callable
mmerickel authored
2 ============
3
4 Features
5 --------
6
c614ffc @witsch add ``localizer`` property to the request (refs #508)
witsch authored
7 - Add ``localizer`` property (reified) to the request.
8 See https://github.com/Pylons/pyramid/issues/508.
9
b210ce3 @mcdonc add pdistreport command
mcdonc authored
10 - Add ``pdistreport`` script, which prints the Python version in use, the
11 Pyramid version in use, and the version number and location of all Python
12 distributions currently installed.
13
32333e4 @mcdonc add not_ predicate feature
mcdonc authored
14 - Add the ability to invert the result of any view, route, or subscriber
15 predicate using the ``not_`` class. For example::
16
17 from pyramid.config import not_
18
19 @view_config(route_name='myroute', request_method=not_('POST'))
20 def myview(request): ...
21
22 The above example will ensure that the view is called if the request method
23 is not POST (at least if no other view is more specific).
24
25 The :class:`pyramid.config.not_` class can be used against any value that is
26 a predicate value passed in any of these contexts:
27
28 - ``pyramid.config.Configurator.add_view``
29
30 - ``pyramid.config.Configurator.add_route``
31
32 - ``pyramid.config.Configurator.add_subscriber``
33
34 - ``pyramid.view.view_config``
35
36 - ``pyramid.events.subscriber``
37
a178631 @mcdonc add an entry to changes about code merged from feature.prequest_login…
mcdonc authored
38 - ``scripts/prequest.py``: add support for submitting ``PUT`` and ``PATCH``
39 requests. See https://github.com/Pylons/pyramid/pull/1033. add support for
0d96b77 @mcdonc version bump in setup.py conf.py CHANGES.txt, rejigger changes bugs v…
mcdonc authored
40 submitting ``OPTIONS`` and ``PROPFIND`` requests, and allow users to specify
a178631 @mcdonc add an entry to changes about code merged from feature.prequest_login…
mcdonc authored
41 basic authentication credentials in the request via a ``--login`` argument to
42 the script. See https://github.com/Pylons/pyramid/pull/1039.
f0f92b0 @tseaver Changelog for PR #1033.
tseaver authored
43
2d93140 @mmerickel support acl as a callable
mmerickel authored
44 - ``ACLAuthorizationPolicy`` supports ``__acl__`` as a callable. This
45 removes the ambiguity between the potential ``AttributeError`` that would
46 be raised on the ``context`` when the property was not defined and the
47 ``AttributeError`` that could be raised from any user-defined code within
48 a dynamic property. It is recommended to define a dynamic ACL as a callable
49 to avoid this ambiguity. See https://github.com/Pylons/pyramid/issues/735.
50
ff41f86 @wosc Fixes #798: Allow a protocol-relative URL to be passed to add_static_…
wosc authored
51 - Allow a protocol-relative URL (e.g. ``//example.com/images``) to be passed to
52 ``pyramid.config.Configurator.add_static_view``. This allows
53 externally-hosted static URLs to be generated based on the current protocol.
54
a1f768c @wichert Allow explicit cookie domain setting.
wichert authored
55 - The ``AuthTktAuthenticationPolicy`` has two new options to configure its
56 domain usage:
58c5fef @tshepang fix some rST issues
tshepang authored
57
a1f768c @wichert Allow explicit cookie domain setting.
wichert authored
58 * ``parent_domain``: if set the authentication cookie is set on
59 the parent domain. This is useful if you have multiple sites sharing the
60 same domain.
61 * ``domain``: if provided the cookie is always set for this domain, bypassing
58c5fef @tshepang fix some rST issues
tshepang authored
62 all usual logic.
63
3ea7883 @tomster Add reference to the pull requests
tomster authored
64 See https://github.com/Pylons/pyramid/pull/1028,
65 https://github.com/Pylons/pyramid/pull/1072 and
66 https://github.com/Pylons/pyramid/pull/1078.
188aa7e @wichert Add a parent_domain option for auth_tkt policy
wichert authored
67
23a7c6d @mmerickel update CHANGES.txt
mmerickel authored
68 - The ``AuthTktAuthenticationPolicy`` now supports IPv6 addresses when using
69 the ``include_ip=True`` option. This is possibly incompatible with
70 alternative ``auth_tkt`` implementations, as the specification does not
71 define how to properly handle IPv6. See
72 https://github.com/Pylons/pyramid/issues/831.
73
38844f7 @mmerickel update CHANGES.txt
mmerickel authored
74 - Make it possible to use variable arguments via
75 ``pyramid.paster.get_appsettings``. This also allowed the generated
76 ``initialize_db`` script from the ``alchemy`` scaffold to grow support
77 for options in the form ``a=1 b=2`` so you can fill in
78 values in a parameterized ``.ini`` file, e.g.
79 ``initialize_myapp_db etc/development.ini a=1 b=2``.
80 See https://github.com/Pylons/pyramid/pull/911
81
fab8454 @mcdonc add changelog note
mcdonc authored
82 - The ``request.session.check_csrf_token()`` method and the ``check_csrf`` view
83 predicate now take into account the value of the HTTP header named
84 ``X-CSRF-Token`` (as well as the ``csrf_token`` form parameter, which they
85 always did). The header is tried when the form parameter does not exist.
86
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
87 - View lookup will now search for valid views based on the inheritance
88 hierarchy of the context. It tries to find views based on the most
89 specific context first, and upon predicate failure, will move up the
90 inheritance chain to test views found by the super-type of the context.
91 In the past, only the most specific type containing views would be checked
92 and if no matching view could be found then a PredicateMismatch would be
93 raised. Now predicate mismatches don't hide valid views registered on
0d96b77 @mcdonc version bump in setup.py conf.py CHANGES.txt, rejigger changes bugs v…
mcdonc authored
94 super-types. Here's an example that now works:
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
95
96 .. code-block:: python
9e1e6d3 @latteier Change log note.
latteier authored
97
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
98 class IResource(Interface):
07c189d @stevepiercy Fix whitespace in CHANGES.txt to permit build.
stevepiercy authored
99
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
100 ...
9e1e6d3 @latteier Change log note.
latteier authored
101
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
102 @view_config(context=IResource)
103 def get(context, request):
07c189d @stevepiercy Fix whitespace in CHANGES.txt to permit build.
stevepiercy authored
104
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
105 ...
9e1e6d3 @latteier Change log note.
latteier authored
106
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
107 @view_config(context=IResource, request_method='POST')
108 def post(context, request):
07c189d @stevepiercy Fix whitespace in CHANGES.txt to permit build.
stevepiercy authored
109
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
110 ...
9e1e6d3 @latteier Change log note.
latteier authored
111
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
112 @view_config(context=IResource, request_method='DELETE')
113 def delete(context, request):
07c189d @stevepiercy Fix whitespace in CHANGES.txt to permit build.
stevepiercy authored
114
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
115 ...
9e1e6d3 @latteier Change log note.
latteier authored
116
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
117 @implementor(IResource)
118 class MyResource:
07c189d @stevepiercy Fix whitespace in CHANGES.txt to permit build.
stevepiercy authored
119
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
120 ...
9e1e6d3 @latteier Change log note.
latteier authored
121
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
122 @view_config(context=MyResource, request_method='POST')
123 def override_post(context, request):
07c189d @stevepiercy Fix whitespace in CHANGES.txt to permit build.
stevepiercy authored
124
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
125 ...
9e1e6d3 @latteier Change log note.
latteier authored
126
127 Previously the override_post view registration would hide the get
128 and delete views in the context of MyResource -- leading to a
129 predicate mismatch error when trying to use GET or DELETE
130 methods. Now the views are found and no predicate mismatch is
131 raised.
6b97003 @mmerickel update changlog
mmerickel authored
132 See https://github.com/Pylons/pyramid/pull/786 and
75fc4ac @mmerickel update changelog
mmerickel authored
133 https://github.com/Pylons/pyramid/pull/1004 and
134 https://github.com/Pylons/pyramid/pull/1046
9e1e6d3 @latteier Change log note.
latteier authored
135
1377480 @mcdonc add change note
mcdonc authored
136 - The ``pserve`` command now takes a ``-v`` (or ``--verbose``) flag and a
137 ``-q`` (or ``--quiet``) flag. Output from running ``pserve`` can be
138 controlled using these flags. ``-v`` can be specified multiple times to
139 increase verbosity. ``-q`` sets verbosity to ``0`` unconditionally. The
140 default verbosity level is ``1``.
141
986dc5f @mcdonc add change note
mcdonc authored
142 - The ``alchemy`` scaffold tests now provide better coverage. See
143 https://github.com/Pylons/pyramid/pull/1029
144
d07d167 @mcdonc raise ValueError instead of generating just path when _app_url is pro…
mcdonc authored
145 - The ``pyramid.config.Configurator.add_route`` method now supports being
146 called with an external URL as pattern. See
147 https://github.com/Pylons/pyramid/issues/611 for more information.
8a8eff5 @tomster update changelog
tomster authored
148
0d96b77 @mcdonc version bump in setup.py conf.py CHANGES.txt, rejigger changes bugs v…
mcdonc authored
149 Bug Fixes
150 ---------
151
ece96f6 @mcdonc - Fix an obscure problem when combining a virtual root with a route w…
mcdonc authored
152 - Fix an obscure problem when combining a virtual root with a route with a
153 ``*traverse`` in its pattern. Now the traversal path generated in
154 such a configuration will be correct, instead of an element missing
155 a leading slash.
156
24c9326 @blaflamme added bug fix to changes
blaflamme authored
157 - Fixed a Mako renderer bug returning a tuple with a previous defname value
3de54e3 @blaflamme fixed line indentation
blaflamme authored
158 in some circumstances. See https://github.com/Pylons/pyramid/issues/1037
159 for more information.
24c9326 @blaflamme added bug fix to changes
blaflamme authored
160
0d96b77 @mcdonc version bump in setup.py conf.py CHANGES.txt, rejigger changes bugs v…
mcdonc authored
161 - Make the ``pyramid.config.assets.PackageOverrides`` object implement the API
162 for ``__loader__`` objects specified in PEP 302. Proxies to the
163 ``__loader__`` set by the importer, if present; otherwise, raises
164 ``NotImplementedError``. This makes Pyramid static view overrides work
165 properly under Python 3.3 (previously they would not). See
166 https://github.com/Pylons/pyramid/pull/1015 for more information.
167
168 - ``mako_templating``: added defensive workaround for non-importability of
169 ``mako`` due to upstream ``markupsafe`` dropping Python 3.2 support. Mako
170 templating will no longer work under the combination of MarkupSafe 0.17 and
171 Python 3.2 (although the combination of MarkupSafe 0.17 and Python 3.3 or any
172 supported Python 2 version will work OK).
173
ea278e1 @mmerickel update changelog
mmerickel authored
174 - Spaces and dots may now be in mako renderer template paths. This was
175 broken when support for the new makodef syntax was added in 1.4a1.
176 See https://github.com/Pylons/pyramid/issues/950
177
20c57e6 @mmerickel update changelog
mmerickel authored
178 - ``pyramid.debug_authorization=true`` will now correctly print out
179 ``Allowed`` for views registered with ``NO_PERMISSION_REQUIRED`` instead
180 of invoking the ``permits`` method of the authorization policy.
181 See https://github.com/Pylons/pyramid/issues/954
182
c35b298 @mmerickel update changes.txt
mmerickel authored
183 - Pyramid failed to install on some systems due to being packaged with
184 some test files containing higher order characters in their names. These
185 files have now been removed. See
186 https://github.com/Pylons/pyramid/issues/981
187
050b71c @mcdonc - ``pyramid.testing.DummyResource`` didn't define ``__bool__``, so co…
mcdonc authored
188 - ``pyramid.testing.DummyResource`` didn't define ``__bool__``, so code under
0d96b77 @mcdonc version bump in setup.py conf.py CHANGES.txt, rejigger changes bugs v…
mcdonc authored
189 Python 3 would use ``__len__`` to find truthiness; this usually caused an
190 instance of DummyResource to be "falsy" instead of "truthy". See
191 https://github.com/Pylons/pyramid/pull/1032
050b71c @mcdonc - ``pyramid.testing.DummyResource`` didn't define ``__bool__``, so co…
mcdonc authored
192
0a8d50f @mcdonc add change note
mcdonc authored
193 - The ``alchemy`` scaffold would break when the database was MySQL during
194 tables creation. See https://github.com/Pylons/pyramid/pull/1049
195
6a4a341 @odontomachus Fixed documentation width, signed contributors agreement and added a …
odontomachus authored
196 - The ``current_route_url`` method now attaches the query string to the URL by
197 default. See
0f1bc52 @odontomachus Updated CHANGES
odontomachus authored
198 https://github.com/Pylons/pyramid/issues/1040
199
d6e8b86 @tomster Make ``pserve.cherrypy_server_runner`` Python 3 compatible.
tomster authored
200 - Make ``pserve.cherrypy_server_runner`` Python 3 compatible. See
201 https://github.com/Pylons/pyramid/issues/718
202
33e0fe1 @odontomachus Fixes to documentation, added change to what's new.
odontomachus authored
203 Backwards Incompatibilities
204 ---------------------------
205
6a4a341 @odontomachus Fixed documentation width, signed contributors agreement and added a …
odontomachus authored
206 - Modified the ``current_route_url`` method in pyramid.Request. The method
207 previously returned the URL without the query string by default, it now does
208 attach the query string unless it is overriden.
33e0fe1 @odontomachus Fixes to documentation, added change to what's new.
odontomachus authored
209
58951c0 @mcdonc - The ``route_url`` and ``route_path`` APIs no longer quote ``/``
mcdonc authored
210 - The ``route_url`` and ``route_path`` APIs no longer quote ``/``
211 to ``%2F`` when a replacement value contains a ``/``. This was pointless,
212 as WSGI servers always unquote the slash anyway, and Pyramid never sees the
213 quoted value.
214
96ab9f2 @mcdonc prep for 1.4
mcdonc authored
215 1.4 (2012-12-18)
216 ================
758fa23 @mcdonc garden
mcdonc authored
217
218 Docs
219 ----
220
221 - Fix functional tests in the ZODB tutorial
222
e609e19 @mcdonc prep for 1.4b3
mcdonc authored
223 1.4b3 (2012-12-10)
224 ==================
225
226 - Packaging release only, no code changes. 1.4b2 was a brownbag release due to
227 missing directories in the tarball.
228
a7e0e60 @mcdonc prep for 1.4b2
mcdonc authored
229 1.4b2 (2012-12-10)
230 ==================
231
232 Docs
233 ----
234
235 - Scaffolding is now PEP-8 compliant (at least for a brief shining moment).
236
237 - Tutorial improvements.
ed14191 @mmerickel _depth argument to view_config is now relative to view_config
mmerickel authored
238
239 Backwards Incompatibilities
240 ---------------------------
241
242 - Modified the ``_depth`` argument to ``pyramid.view.view_config`` to accept
243 a value relative to the invocation of ``view_config`` itself. Thus, when it
244 was previously expecting a value of ``1`` or greater, to reflect that
245 the caller of ``view_config`` is 1 stack frame away from ``venusian.attach``,
246 this implementation detail is now hidden.
247
a078e19 @mcdonc add changenote
mcdonc authored
248 - Modified the ``_backframes`` argument to ``pyramid.util.action_method`` in a
249 similar way to the changes described to ``_depth`` above. This argument
250 remains undocumented, but might be used in the wild by some insane person.
251
1608b26 @mcdonc prep for 1.4b1
mcdonc authored
252 1.4b1 (2012-11-21)
253 ==================
0ccdc23 @mcdonc - A failure when trying to locate the attribute ``__text__`` on route…
mcdonc authored
254
71cd93b @mcdonc - Small microspeed enhancement which anticipates that a
mcdonc authored
255 Features
256 --------
257
258 - Small microspeed enhancement which anticipates that a
259 ``pyramid.response.Response`` object is likely to be returned from a view.
260 Some code is shortcut if the class of the object returned by a view is this
261 class. A similar microoptimization was done to
262 ``pyramid.request.Request.is_response``.
263
9132f65 @mcdonc garden
mcdonc authored
264 - Make it possible to use variable arguments on ``p*`` commands (``pserve``,
265 ``pshell``, ``pviews``, etc) in the form ``a=1 b=2`` so you can fill in
266 values in parameterized ``.ini`` file, e.g. ``pshell etc/development.ini
6ba0fc7 @mcdonc garden
mcdonc authored
267 http_port=8080``. See https://github.com/Pylons/pyramid/pull/714
9132f65 @mcdonc garden
mcdonc authored
268
f700d37 @mcdonc garden
mcdonc authored
269 - A somewhat advanced and obscure feature of Pyramid event handlers is their
270 ability to handle "multi-interface" notifications. These notifications have
271 traditionally presented multiple objects to the subscriber callable. For
272 instance, if an event was sent by code like this::
28fc3d5 @mcdonc - In order to normalize the relationship between event subscribers and
mcdonc authored
273
274 registry.notify(event, context)
275
276 In the past, in order to catch such an event, you were obligated to write and
277 register an event subscriber that mentioned both the event and the context in
278 its argument list::
279
280 @subscriber([SomeEvent, SomeContextType])
f700d37 @mcdonc garden
mcdonc authored
281 def asubscriber(event, context):
282 pass
283
284 In many subscriber callables registered this way, it was common for the logic
285 in the subscriber callable to completely ignore the second and following
286 arguments (e.g. ``context`` in the above example might be ignored), because
287 they usually existed as attributes of the event anyway. You could usually
a3810e7 @mcdonc garden
mcdonc authored
288 get the same value by doing ``event.context`` or similar.
f700d37 @mcdonc garden
mcdonc authored
289
290 The fact that you needed to put an extra argument which you usually ignored
291 in the subscriber callable body was only a minor annoyance until we added
a3810e7 @mcdonc garden
mcdonc authored
292 "subscriber predicates", used to narrow the set of circumstances under which
293 a subscriber will be executed, in a prior 1.4 alpha release. Once those were
294 added, the annoyance was escalated, because subscriber predicates needed to
295 accept the same argument list and arity as the subscriber callables that they
296 were configured against. So, for example, if you had these two subscriber
297 registrations in your code::
f700d37 @mcdonc garden
mcdonc authored
298
299 @subscriber([SomeEvent, SomeContextType])
300 def asubscriber(event, context):
301 pass
302
303 @subscriber(SomeOtherEvent)
304 def asubscriber(event):
305 pass
24c9326 @blaflamme added bug fix to changes
blaflamme authored
306
f700d37 @mcdonc garden
mcdonc authored
307 And you wanted to use a subscriber predicate::
308
309 @subscriber([SomeEvent, SomeContextType], mypredicate=True)
a3810e7 @mcdonc garden
mcdonc authored
310 def asubscriber1(event, context):
28fc3d5 @mcdonc - In order to normalize the relationship between event subscribers and
mcdonc authored
311 pass
312
f700d37 @mcdonc garden
mcdonc authored
313 @subscriber(SomeOtherEvent, mypredicate=True)
a3810e7 @mcdonc garden
mcdonc authored
314 def asubscriber2(event):
f700d37 @mcdonc garden
mcdonc authored
315 pass
316
a3810e7 @mcdonc garden
mcdonc authored
317 If an existing ``mypredicate`` subscriber predicate had been written in such
318 a way that it accepted only one argument in its ``__call__``, you could not
319 use it against a subscription which named more than one interface in its
320 subscriber interface list. Similarly, if you had written a subscriber
321 predicate that accepted two arguments, you couldn't use it against a
322 registration that named only a single interface type.
323
324 For example, if you created this predicate::
f700d37 @mcdonc garden
mcdonc authored
325
326 class MyPredicate(object):
327 # portions elided...
328 def __call__(self, event):
329 return self.val == event.context.foo
330
a3810e7 @mcdonc garden
mcdonc authored
331 It would not work against a multi-interface-registered subscription, so in
332 the above example, when you attempted to use it against ``asubscriber1``, it
333 would fail at runtime with a TypeError, claiming something was attempting to
334 call it with too many arguments.
f700d37 @mcdonc garden
mcdonc authored
335
a3810e7 @mcdonc garden
mcdonc authored
336 To hack around this limitation, you were obligated to design the
337 ``mypredicate`` predicate to expect to receive in its ``__call__`` either a
338 single ``event`` argument (a SomeOtherEvent object) *or* a pair of arguments
339 (a SomeEvent object and a SomeContextType object), presumably by doing
340 something like this::
f700d37 @mcdonc garden
mcdonc authored
341
342 class MyPredicate(object):
343 # portions elided...
344 def __call__(self, event, context=None):
345 return self.val == event.context.foo
346
347 This was confusing and bad.
348
349 In order to allow people to ignore unused arguments to subscriber callables
350 and to normalize the relationship between event subscribers and subscriber
351 predicates, we now allow both subscribers and subscriber predicates to accept
352 only a single ``event`` argument even if they've been subscribed for
353 notifications that involve multiple interfaces. Subscribers and subscriber
354 predicates that accept only one argument will receive the first object passed
355 to ``notify``; this is typically (but not always) the event object. The
356 other objects involved in the subscription lookup will be discarded. You can
357 now write an event subscriber that accepts only ``event`` even if it
358 subscribes to multiple interfaces::
28fc3d5 @mcdonc - In order to normalize the relationship between event subscribers and
mcdonc authored
359
360 @subscriber([SomeEvent, SomeContextType])
f700d37 @mcdonc garden
mcdonc authored
361 def asubscriber(event):
28fc3d5 @mcdonc - In order to normalize the relationship between event subscribers and
mcdonc authored
362 # this will work!
363
f700d37 @mcdonc garden
mcdonc authored
364 This prevents you from needing to match the subscriber callable parameters to
365 the subscription type unnecessarily, especially when you don't make use of
366 any argument in your subscribers except for the event object itself.
367
368 Note, however, that if the event object is not the first
369 object in the call to ``notify``, you'll run into trouble. For example, if
370 notify is called with the context argument first::
28fc3d5 @mcdonc - In order to normalize the relationship between event subscribers and
mcdonc authored
371
372 registry.notify(context, event)
373
f700d37 @mcdonc garden
mcdonc authored
374 You won't be able to take advantage of the event-only feature. It will
375 "work", but the object received by your event handler won't be the event
376 object, it will be the context object, which won't be very useful::
28fc3d5 @mcdonc - In order to normalize the relationship between event subscribers and
mcdonc authored
377
378 @subscriber([SomeContextType, SomeEvent])
f700d37 @mcdonc garden
mcdonc authored
379 def asubscriber(event):
24c9326 @blaflamme added bug fix to changes
blaflamme authored
380 # bzzt! you'll be getting the context here as ``event``, and it'll
28fc3d5 @mcdonc - In order to normalize the relationship between event subscribers and
mcdonc authored
381 # be useless
382
383 Existing multiple-argument subscribers continue to work without issue, so you
384 should continue use those if your system notifies using multiple interfaces
385 and the first interface is not the event interface. For example::
386
387 @subscriber([SomeContextType, SomeEvent])
f700d37 @mcdonc garden
mcdonc authored
388 def asubscriber(context, event):
28fc3d5 @mcdonc - In order to normalize the relationship between event subscribers and
mcdonc authored
389 # this will still work!
390
391 The event-only feature makes it possible to use a subscriber predicate that
392 accepts only a request argument within both multiple-interface subscriber
f700d37 @mcdonc garden
mcdonc authored
393 registrations and single-interface subscriber registrations. You needn't
394 make slightly different variations of predicates depending on the
395 subscription type arguments. Instead, just write all your subscriber
396 predicates so they only accept ``event`` in their ``__call__`` and they'll be
397 useful across all registrations for subscriptions that use an event as their
398 first argument, even ones which accept more than just ``event``.
399
400 However, the same caveat applies to predicates as to subscriber callables: if
401 you're subscribing to a multi-interface event, and the first interface is not
402 the event interface, the predicate won't work properly. In such a case,
403 you'll need to match the predicate ``__call__`` argument ordering and
404 composition to the ordering of the interfaces. For example, if the
405 registration for the subscription uses ``[SomeContext, SomeEvent]``, you'll
406 need to reflect that in the ordering of the parameters of the predicate's
407 ``__call__`` method::
28fc3d5 @mcdonc - In order to normalize the relationship between event subscribers and
mcdonc authored
408
409 def __call__(self, context, event):
410 return event.request.path.startswith(self.val)
411
f700d37 @mcdonc garden
mcdonc authored
412 tl;dr: 1) When using multi-interface subscriptions, always use the event type
413 as the first subscription registration argument and 2) When 1 is true, use
414 only ``event`` in your subscriber and subscriber predicate parameter lists,
415 no matter how many interfaces the subscriber is notified with. This
416 combination will result in the maximum amount of reusability of subscriber
417 predicates and the least amount of thought on your part. Drink responsibly.
28fc3d5 @mcdonc - In order to normalize the relationship between event subscribers and
mcdonc authored
418
0ccdc23 @mcdonc - A failure when trying to locate the attribute ``__text__`` on route…
mcdonc authored
419 Bug Fixes
420 ---------
421
422 - A failure when trying to locate the attribute ``__text__`` on route and view
423 predicates existed when the ``debug_routematch`` setting was true or when the
424 ``pviews`` command was used. See https://github.com/Pylons/pyramid/pull/727
425
b5e4443 @mcdonc garden
mcdonc authored
426 Documentation
427 -------------
428
429 - Sync up tutorial source files with the files that are rendered by the
430 scaffold that each uses.
431
9480686 @mcdonc prep for release
mcdonc authored
432 1.4a4 (2012-11-14)
433 ==================
c7337ba @mcdonc - Added an ``effective_principals`` route and view predicate.
mcdonc authored
434
435 Features
436 --------
437
19b8207 @mmerickel merged SHA512AuthTktAuthenticationPolicy into AuthTktAuthenticationPo…
mmerickel authored
438 - ``pyramid.authentication.AuthTktAuthenticationPolicy`` has been updated to
439 support newer hashing algorithms such as ``sha512``. Existing applications
39ef68d @mcdonc rearrange deck chairs
mcdonc authored
440 should consider updating if possible for improved security over the default
441 md5 hashing.
19b8207 @mmerickel merged SHA512AuthTktAuthenticationPolicy into AuthTktAuthenticationPo…
mmerickel authored
442
c7337ba @mcdonc - Added an ``effective_principals`` route and view predicate.
mcdonc authored
443 - Added an ``effective_principals`` route and view predicate.
444
07c9ee0 @mcdonc - Do not allow the userid returned from the ``authenticated_userid`` …
mcdonc authored
445 - Do not allow the userid returned from the ``authenticated_userid`` or the
446 userid that is one of the list of principals returned by
447 ``effective_principals`` to be either of the strings ``system.Everyone`` or
448 ``system.Authenticated`` when any of the built-in authorization policies that
449 live in ``pyramid.authentication`` are in use. These two strings are
450 reserved for internal usage by Pyramid and they will not be accepted as valid
451 userids.
452
ca46568 @mmerickel garden
mmerickel authored
453 - Slightly better debug logging from
454 ``pyramid.authentication.RepozeWho1AuthenticationPolicy``.
47146eb @mcdonc garden
mcdonc authored
455
39ef68d @mcdonc rearrange deck chairs
mcdonc authored
456 - ``pyramid.security.view_execution_permitted`` used to return ``True`` if no
926fb68 @mcdonc resolve merge conflict
mcdonc authored
457 view could be found. It now raises a ``TypeError`` exception in that case, as
458 it doesn't make sense to assert that a nonexistent view is
459 execution-permitted. See https://github.com/Pylons/pyramid/issues/299.
6099144 @mmerickel updated changes
mmerickel authored
460
a8d71ca @mcdonc - Allow a ``_depth`` argument to ``pyramid.view.view_config``, which …
mcdonc authored
461 - Allow a ``_depth`` argument to ``pyramid.view.view_config``, which will
462 permit limited composition reuse of the decorator by other software that
463 wants to provide custom decorators that are much like view_config.
464
1701243 @mmerickel update changelog, close #627
mmerickel authored
465 - Allow an iterable of decorators to be passed to
466 ``pyramid.config.Configurator.add_view``. This allows views to be wrapped
467 by more than one decorator without requiring combining the decorators
468 yourself.
469
a007a4f @mcdonc - In the past if a renderer returned ``None``, the body of the resulting
mcdonc authored
470 Bug Fixes
471 ---------
472
473 - In the past if a renderer returned ``None``, the body of the resulting
474 response would be set explicitly to the empty string. Instead, now, the body
475 is left unchanged, which allows the renderer to set a body itself by using
476 e.g. ``request.response.body = b'foo'``. The body set by the renderer will
477 be unmolested on the way out. See
478 https://github.com/Pylons/pyramid/issues/709
479
34d4cd0 @mcdonc - In uncommon cases, the ``pyramid_excview_tween_factory`` might have
mcdonc authored
480 - In uncommon cases, the ``pyramid_excview_tween_factory`` might have
481 inadvertently raised a ``KeyError`` looking for ``request_iface`` as an
482 attribute of the request. It no longer fails in this case. See
483 https://github.com/Pylons/pyramid/issues/700
484
267dbd2 @mcdonc - Be more tolerant of potential error conditions in ``match_param`` and
mcdonc authored
485 - Be more tolerant of potential error conditions in ``match_param`` and
486 ``physical_path`` predicate implementations; instead of raising an exception,
487 return False.
488
39ef68d @mcdonc rearrange deck chairs
mcdonc authored
489 - ``pyramid.view.render_view`` was not functioning properly under Python 3.x
490 due to a byte/unicode discrepancy. See
cd8ac80 @tshepang update some links and fix others
tshepang authored
491 https://github.com/Pylons/pyramid/issues/721
f89cfcd @mmerickel updated changelog
mmerickel authored
492
ca3df80 @mmerickel emit a warning if a user is using the default hashalg to AuthTkt
mmerickel authored
493 Deprecations
494 ------------
495
39ef68d @mcdonc rearrange deck chairs
mcdonc authored
496 - ``pyramid.authentication.AuthTktAuthenticationPolicy`` will emit a warning if
497 an application is using the policy without explicitly passing a ``hashalg``
498 argument. This is because the default is "md5" which is considered
499 theoretically subject to collision attacks. If you really want "md5" then you
500 must specify it explicitly to get rid of the warning.
501
502 Documentation
503 -------------
504
505 - All of the tutorials that use
506 ``pyramid.authentication.AuthTktAuthenticationPolicy`` now explicitly pass
507 ``sha512`` as a ``hashalg`` argument.
508
ca3df80 @mmerickel emit a warning if a user is using the default hashalg to AuthTkt
mmerickel authored
509
66fe1d0 @mcdonc - Move ``TopologicalSorter`` from ``pyramid.config.util`` to ``pyrami…
mcdonc authored
510 Internals
511 ---------
512
513 - Move ``TopologicalSorter`` from ``pyramid.config.util`` to ``pyramid.util``,
514 move ``CyclicDependencyError`` from ``pyramid.config.util`` to
515 ``pyramid.exceptions``, rename ``Singleton`` to ``Sentinel`` and move from
ca46568 @mmerickel garden
mmerickel authored
516 ``pyramid.config.util`` to ``pyramid.util``; this is in an effort to
0487545 @mcdonc fix docs, upgrade tutorials, add change note, deprecate using zope.de…
mcdonc authored
517 move that stuff that may be an API one day out of ``pyramid.config.util``,
66fe1d0 @mcdonc - Move ``TopologicalSorter`` from ``pyramid.config.util`` to ``pyrami…
mcdonc authored
518 because that package should never be imported from non-Pyramid code.
519 TopologicalSorter is still not an API, but may become one.
520
39ef68d @mcdonc rearrange deck chairs
mcdonc authored
521 - Get rid of shady monkeypatching of ``pyramid.request.Request`` and
522 ``pyramid.response.Response`` done within the ``__init__.py`` of Pyramid.
523 Webob no longer relies on this being done. Instead, the ResponseClass
524 attribute of the Pyramid Request class is assigned to the Pyramid response
525 class; that's enough to satisfy WebOb and behave as it did before with the
526 monkeypatching.
527
4a6cca6 @mcdonc prep for 1.4a3
mcdonc authored
528 1.4a3 (2012-10-26)
529 ==================
d6fb001 @mcdonc - 1.4a ``pyramid.scripting.prepare`` behaved differently than 1.3 series
mcdonc authored
530
531 Bug Fixes
532 ---------
533
06a904f @mcdonc add docs and changelog note
mcdonc authored
534 - The match_param predicate's text method was fixed to sort its values.
535 Part of https://github.com/Pylons/pyramid/pull/705
536
d6fb001 @mcdonc - 1.4a ``pyramid.scripting.prepare`` behaved differently than 1.3 series
mcdonc authored
537 - 1.4a ``pyramid.scripting.prepare`` behaved differently than 1.3 series
538 function of same name. In particular, if passed a request, it would not
539 set the ``registry`` attribute of the request like 1.3 did. A symptom
540 would be that passing a request to ``pyramid.paster.bootstrap`` (which uses
541 the function) that did not have a ``registry`` attribute could assume that
542 the registry would be attached to the request by Pyramid. This assumption
543 could be made in 1.3, but not in 1.4. The assumption can now be made in
544 1.4 too (a registry is attached to a request passed to bootstrap or
545 prepare).
546
66d277a @mcdonc garden
mcdonc authored
547 - When registering a view configuration that named a Chameleon ZPT renderer
548 with a macro name in it (e.g. ``renderer='some/template#somemacro.pt``) as
043ccdd @tshepang eliminate other repeated words
tshepang authored
549 well as a view configuration without a macro name in it that pointed to the
9937a4e @chrisrossi Fix rst syntax error which prevented Sphinx docs from building.
chrisrossi authored
550 same template (e.g. ``renderer='some/template.pt'``), internal caching could
66d277a @mcdonc garden
mcdonc authored
551 confuse the two, and your code might have rendered one instead of the
552 other.
553
1273d56 @mcdonc - The Configurator ``testing_securitypolicy`` method now returns the …
mcdonc authored
554 Features
555 --------
556
c25a8fd @mcdonc - New ``physical_path`` view predicate. If specified, this value sho…
mcdonc authored
557 - Allow multiple values to be specified to the ``request_param`` view/route
558 predicate as a sequence. Previously only a single string value was allowed.
559 See https://github.com/Pylons/pyramid/pull/705
560
561 - Comments with references to documentation sections placed in scaffold
562 ``.ini`` files.
563
564 - Added an HTTP Basic authentication policy
565 at ``pyramid.authentication.BasicAuthAuthenticationPolicy``.
566
1273d56 @mcdonc - The Configurator ``testing_securitypolicy`` method now returns the …
mcdonc authored
567 - The Configurator ``testing_securitypolicy`` method now returns the policy
568 object it creates.
569
570 - The Configurator ``testing_securitypolicy`` method accepts two new
571 arguments: ``remember_result`` and ``forget_result``. If supplied, these
572 values influence the result of the policy's ``remember`` and ``forget``
573 methods, respectively.
574
575 - The DummySecurityPolicy created by ``testing_securitypolicy`` now sets a
576 ``forgotten`` value on the policy (the value ``True``) when its ``forget``
577 method is called.
578
579 - The DummySecurityPolicy created by ``testing_securitypolicy`` now sets a
580 ``remembered`` value on the policy, which is the value of the ``principal``
581 argument it's called with when its ``remember`` method is called.
582
c25a8fd @mcdonc - New ``physical_path`` view predicate. If specified, this value sho…
mcdonc authored
583 - New ``physical_path`` view predicate. If specified, this value should be a
584 string or a tuple representing the physical traversal path of the context
585 found via traversal for this predicate to match as true. For example:
586 ``physical_path='/'`` or ``physical_path='/a/b/c'`` or ``physical_path=('',
587 'a', 'b', 'c')``. This is not a path prefix match or a regex, it's a
588 whole-path match. It's useful when you want to always potentially show a
589 view when some object is traversed to, but you can't be sure about what kind
590 of object it will be, so you can't use the ``context`` predicate. The
591 individual path elements inbetween slash characters or in tuple elements
592 should be the Unicode representation of the name of the resource and should
593 not be encoded in any way.
594
072cbf7 @mcdonc prep for 1.4a2
mcdonc authored
595 1.4a2 (2012-09-27)
596 ==================
68c25d3 @mcdonc garden
mcdonc authored
597
d27bc79 @mcdonc garden
mcdonc authored
598 Bug Fixes
599 ---------
600
4388d31 @mcdonc mirror john's change for chameleon, better changelog message
mcdonc authored
601 - When trying to determine Mako defnames and Chameleon macro names in asset
602 specifications, take into account that the filename may have a hyphen in
603 it. See https://github.com/Pylons/pyramid/pull/692
d27bc79 @mcdonc garden
mcdonc authored
604
68c25d3 @mcdonc garden
mcdonc authored
605 Features
606 --------
607
608 - A new ``pyramid.session.check_csrf_token`` convenience function was added.
609
80cd0b1 @mcdonc garden
mcdonc authored
610 - A ``check_csrf`` view predicate was added. For example, you can now do
611 ``config.add_view(someview, check_csrf=True)``. When the predicate is
612 checked, if the ``csrf_token`` value in ``request.params`` matches the CSRF
613 token in the request's session, the view will be permitted to execute.
614 Otherwise, it will not be permitted to execute.
68c25d3 @mcdonc garden
mcdonc authored
615
098599b @mcdonc - Add ``Base.metadata.bind = engine`` to alchemy template, so that ta…
mcdonc authored
616 - Add ``Base.metadata.bind = engine`` to alchemy template, so that tables
617 defined imperatively will work.
618
619 Documentation
620 -------------
621
622 - update wiki2 SQLA tutorial with the changes required after inserting
623 ``Base.metadata.bind = engine`` into the alchemy scaffold.
624
ce1e86c @mcdonc prep for 1.4a1
mcdonc authored
625 1.4a1 (2012-09-16)
626 ==================
f6bd88e @mcdonc trivial change to poke jenkins (im in on an untrusted network and can…
mcdonc authored
627
a39dd2f @mcdonc - Add ``REMOTE_ADDR`` to the ``prequest`` WSGI environ dict for benef…
mcdonc authored
628 Bug Fixes
629 ---------
630
1794b4b @mcdonc note that this is a forward port
mcdonc authored
631 - Forward port from 1.3 branch: When no authentication policy was configured,
632 a call to ``pyramid.security.effective_principals`` would unconditionally
633 return the empty list. This was incorrect, it should have unconditionally
634 returned ``[Everyone]``, and now does.
8782def @mcdonc - When no authentication policy was configured, a call to
mcdonc authored
635
3074e78 @mcdonc garden
mcdonc authored
636 - Explicit url dispatch regexes can now contain colons.
637 https://github.com/Pylons/pyramid/issues/629
638
e652518 @mcdonc - On at least one 64-bit Ubuntu system under Python 3.2, using the
mcdonc authored
639 - On at least one 64-bit Ubuntu system under Python 3.2, using the
640 ``view_config`` decorator caused a ``RuntimeError: dictionary changed size
641 during iteration`` exception. It no longer does. See
642 https://github.com/Pylons/pyramid/issues/635 for more information.
643
8b26752 @blaflamme added entry to changes.txt for mako fix
blaflamme authored
644 - In Mako Templates lookup, check if the uri is already adjusted and bring
645 it back to an asset spec. Normally occurs with inherited templates or
646 included components.
647 https://github.com/Pylons/pyramid/issues/606
648 https://github.com/Pylons/pyramid/issues/607
649
24c9326 @blaflamme added bug fix to changes
blaflamme authored
650 - In Mako Templates lookup, check for absolute uri (using mako directories)
7853bc0 @blaflamme garden
blaflamme authored
651 when mixing up inheritance with asset specs.
652 https://github.com/Pylons/pyramid/issues/662
653
75a8ff4 @mmerickel updated CHANGES with accept-header bug fix
mmerickel authored
654 - HTTP Accept headers were not being normalized causing potentially
655 conflicting view registrations to go unnoticed. Two views that only
656 differ in the case ('text/html' vs. 'text/HTML') will now raise an error.
657 https://github.com/Pylons/pyramid/pull/620
658
a9289d9 @mcdonc - Forward-port from 1.3 branch: when registering multiple views with an
mcdonc authored
659 - Forward-port from 1.3 branch: when registering multiple views with an
660 ``accept`` predicate in a Pyramid application runing under Python 3, you
661 might have received a ``TypeError: unorderable types: function() <
662 function()`` exception.
663
de797c4 @mcdonc - Coverage and docs updates for custom JSON class.
mcdonc authored
664 Features
665 --------
a39dd2f @mcdonc - Add ``REMOTE_ADDR`` to the ``prequest`` WSGI environ dict for benef…
mcdonc authored
666
d246597 @mcdonc reclassify bug as feature
mcdonc authored
667 - Configurator.add_directive now accepts arbitrary callables like partials or
668 objects implementing ``__call__`` which dont have ``__name__`` and
669 ``__doc__`` attributes. See https://github.com/Pylons/pyramid/issues/621
670 and https://github.com/Pylons/pyramid/pull/647.
671
95f766b @mcdonc Subscriber predicates:
mcdonc authored
672 - Third-party custom view, route, and subscriber predicates can now be added
673 for use by view authors via
674 ``pyramid.config.Configurator.add_view_predicate``,
675 ``pyramid.config.Configurator.add_route_predicate`` and
676 ``pyramid.config.Configurator.add_subscriber_predicate``. So, for example,
0196b2a @mcdonc add docs for third-party view predicates
mcdonc authored
677 doing this::
678
679 config.add_view_predicate('abc', my.package.ABCPredicate)
680
681 Might allow a view author to do this in an application that configured that
682 predicate::
683
684 @view_config(abc=1)
685
95f766b @mcdonc Subscriber predicates:
mcdonc authored
686 Similar features exist for ``add_route``, and ``add_subscriber``. See
687 "Adding A Third Party View, Route, or Subscriber Predicate" in the Hooks
688 chapter for more information.
0196b2a @mcdonc add docs for third-party view predicates
mcdonc authored
689
735abf4 @mcdonc note conflict behavior change
mcdonc authored
690 Note that changes made to support the above feature now means that only
691 actions registered using the same "order" can conflict with one another.
692 It used to be the case that actions registered at different orders could
693 potentially conflict, but to my knowledge nothing ever depended on this
694 behavior (it was a bit silly).
695
de797c4 @mcdonc - Coverage and docs updates for custom JSON class.
mcdonc authored
696 - Custom objects can be made easily JSON-serializable in Pyramid by defining
697 a ``__json__`` method on the object's class. This method should return
698 values natively serializable by ``json.dumps`` (such as ints, lists,
699 dictionaries, strings, and so forth).
077fa3a @mcdonc add change note
mcdonc authored
700
e012aa1 @mcdonc allow __json__ and custom adapters to accept request arg
mcdonc authored
701 - The JSON renderer now allows for the definition of custom type adapters to
702 convert unknown objects to JSON serializations.
703
360f251 @mcdonc - As of this release, the ``request_method`` predicate, when used, wi…
mcdonc authored
704 - As of this release, the ``request_method`` predicate, when used, will also
705 imply that ``HEAD`` is implied when you use ``GET``. For example, using
706 ``@view_config(request_method='GET')`` is equivalent to using
561a443 @mcdonc fix example
mcdonc authored
707 ``@view_config(request_method=('GET', 'HEAD'))``. Using
360f251 @mcdonc - As of this release, the ``request_method`` predicate, when used, wi…
mcdonc authored
708 ``@view_config(request_method=('GET', 'POST')`` is equivalent to using
709 ``@view_config(request_method=('GET', 'HEAD', 'POST')``. This is because
710 HEAD is a variant of GET that omits the body, and WebOb has special support
711 to return an empty body when a HEAD is used.
15c40a1 @mcdonc readme
mcdonc authored
712
023c88b @mcdonc rename set_request_method to add_request_method. closes #683
mcdonc authored
713 - ``config.add_request_method`` has been introduced to support extending
2c25342 @mmerickel docs-deprecated set_request_property
mmerickel authored
714 request objects with arbitrary callables. This method expands on the
715 previous ``config.set_request_property`` by supporting methods as well as
716 properties. This method now causes less code to be executed at
717 request construction time than ``config.set_request_property`` in
718 version 1.3.
719
720 - Don't add a ``?`` to URLs generated by ``request.resource_url`` if the
fcb2095 @mcdonc garden
mcdonc authored
721 ``query`` argument is provided but empty.
722
2c25342 @mmerickel docs-deprecated set_request_property
mmerickel authored
723 - Don't add a ``?`` to URLs generated by ``request.route_url`` if the
fcb2095 @mcdonc garden
mcdonc authored
724 ``_query`` argument is provided but empty.
988035a @mcdonc add a change note
mcdonc authored
725
726 - The static view machinery now raises (rather than returns) ``HTTPNotFound``
727 and ``HTTPMovedPermanently`` exceptions, so these can be caught by the
cec2b05 @tshepang consistency
tshepang authored
728 Not Found View (and other exception views).
ea009a6 @blaflamme added docs and changes for using defs in mako renderer
blaflamme authored
729
54d3e3e @mcdonc add a whatsnew-1.4 document
mcdonc authored
730 - The Mako renderer now supports a def name in an asset spec. When the def
8b55a68 @mcdonc garden
mcdonc authored
731 name is present in the asset spec, the system will render the template def
732 within the template and will return the result. An example asset spec is
733 ``package:path/to/template#defname.mako``. This will render the def named
54d3e3e @mcdonc add a whatsnew-1.4 document
mcdonc authored
734 ``defname`` inside the ``template.mako`` template instead of rendering the
735 entire template. The old way of returning a tuple in the form
736 ``('defname', {})`` from the view is supported for backward compatibility,
8b55a68 @mcdonc garden
mcdonc authored
737
738 - The Chameleon ZPT renderer now accepts a macro name in an asset spec. When
739 the macro name is present in the asset spec, the system will render the
740 macro listed as a ``define-macro`` and return the result instead of
741 rendering the entire template. An example asset spec:
742 ``package:path/to/template#macroname.pt``. This will render the macro
743 defined as ``macroname`` within the ``template.pt`` template instead of the
744 entire templae.
61a57ea @mcdonc - When there is a predicate mismatch exception (seen when no view mat…
mcdonc authored
745
746 - When there is a predicate mismatch exception (seen when no view matches for
747 a given request due to predicates not working), the exception now contains
748 a textual description of the predicate which didn't match.
6b180cb @mcdonc - An ``add_permission`` directive method was added to the Configurato…
mcdonc authored
749
750 - An ``add_permission`` directive method was added to the Configurator. This
751 directive registers a free-standing permission introspectable into the
752 Pyramid introspection system. Frameworks built atop Pyramid can thus use
08c2217 @tshepang eliminate repeated "the" words
tshepang authored
753 the ``permissions`` introspectable category data to build a
6b180cb @mcdonc - An ``add_permission`` directive method was added to the Configurato…
mcdonc authored
754 comprehensive list of permissions supported by a running system. Before
755 this method was added, permissions were already registered in this
756 introspectable category as a side effect of naming them in an ``add_view``
757 call, this method just makes it possible to arrange for a permission to be
758 put into the ``permissions`` introspectable category without naming it
759 along with an associated view. Here's an example of usage of
760 ``add_permission``::
761
762 config = Configurator()
763 config.add_permission('view')
2c25342 @mmerickel docs-deprecated set_request_property
mmerickel authored
764
45b6e19 @mmerickel added cookie session changes to CHANGES.txt
mmerickel authored
765 - The ``UnencryptedCookieSessionFactoryConfig`` now accepts
766 ``signed_serialize`` and ``signed_deserialize`` hooks which may be used
767 to influence how the sessions are marshalled (by default this is done
768 with HMAC+pickle).
769
28dba04 @mcdonc - ``pyramid.testing.DummyRequest`` now supports methods supplied by the
mcdonc authored
770 - ``pyramid.testing.DummyRequest`` now supports methods supplied by the
771 ``pyramid.util.InstancePropertyMixin`` class such as ``set_property``.
772
7359873 @mcdonc - Request properties and methods added via ``config.set_request_prope…
mcdonc authored
773 - Request properties and methods added via ``config.set_request_property`` or
774 ``config.add_request_method`` are now available to tweens.
775
776 - Request properties and methods added via ``config.set_request_property`` or
777 ``config.add_request_method`` are now available in the request object
778 returned from ``pyramid.paster.bootstrap``.
779
dc8b49f @mcdonc garden
mcdonc authored
780 - ``request.context`` of environment request during ``bootstrap`` is now the
781 root object if a context isn't already set on a provided request.
782
07cb8f0 @mcdonc add pyramid.decorator.reify as an API. Closes #682
mcdonc authored
783 - The ``pyramid.decorator.reify`` function is now an API, and was added to
784 the API documentation.
785
97150cc @mcdonc merge jinty's testConfig code
mcdonc authored
786 - Added the ``pyramid.testing.testConfig`` context manager, which can be used
787 to generate a configurator in a test, e.g. ``with testing.testConfig(...):``.
788
64452ed @mcdonc rename subrequest to invoke_subrequest
mcdonc authored
789 - Users can now invoke a subrequest from within view code using a new
790 ``request.invoke_subrequest`` API.
37d2c22 @mcdonc docs and test
mcdonc authored
791
2c25342 @mmerickel docs-deprecated set_request_property
mmerickel authored
792 Deprecations
793 ------------
794
9cdb286 @mcdonc readd set_request_property to docs (just so when people run across it…
mcdonc authored
795 - The ``pyramid.config.Configurator.set_request_property`` has been
796 documentation-deprecated. The method remains usable but the more
023c88b @mcdonc rename set_request_method to add_request_method. closes #683
mcdonc authored
797 featureful ``pyramid.config.Configurator.add_request_method`` should be
9cdb286 @mcdonc readd set_request_property to docs (just so when people run across it…
mcdonc authored
798 used in its place (it has all of the same capabilities but can also extend
799 the request object with methods).
ebcdc7c @mcdonc - It is no longer possible to pass an environ dictionary directly to
mcdonc authored
800
801 Backwards Incompatibilities
802 ---------------------------
803
25d3ddf @mcdonc garden
mcdonc authored
804 - The Pyramid router no longer adds the values ``bfg.routes.route`` or
ebcdc7c @mcdonc - It is no longer possible to pass an environ dictionary directly to
mcdonc authored
805 ``bfg.routes.matchdict`` to the request's WSGI environment dictionary.
806 These values were docs-deprecated in ``repoze.bfg`` 1.0 (effectively seven
807 minor releases ago). If your code depended on these values, use
808 request.matched_route and request.matchdict instead.
809
810 - It is no longer possible to pass an environ dictionary directly to
811 ``pyramid.traversal.ResourceTreeTraverser.__call__`` (aka
812 ``ModelGraphTraverser.__call__``). Instead, you must pass a request
813 object. Passing an environment instead of a request has generated a
814 deprecation warning since Pyramid 1.1.
815
816 - Pyramid will no longer work properly if you use the
817 ``webob.request.LegacyRequest`` as a request factory. Instances of the
818 LegacyRequest class have a ``request.path_info`` which return a string.
819 This Pyramid release assumes that ``request.path_info`` will
820 unconditionally be Unicode.
821
3d42722 @mcdonc - The functions from ``pyramid.chameleon_zpt`` and ``pyramid.chameleo…
mcdonc authored
822 - The functions from ``pyramid.chameleon_zpt`` and ``pyramid.chameleon_text``
823 named ``get_renderer``, ``get_template``, ``render_template``, and
824 ``render_template_to_response`` have been removed. These have issued a
825 deprecation warning upon import since Pyramid 1.0. Use
826 ``pyramid.renderers.get_renderer()``,
827 ``pyramid.renderers.get_renderer().implementation()``,
828 ``pyramid.renderers.render()`` or ``pyramid.renderers.render_to_response``
829 respectively instead of these functions.
830
94a6f35 @mcdonc - The ``pyramid.configuration`` module was removed. It had been depr…
mcdonc authored
831 - The ``pyramid.configuration`` module was removed. It had been deprecated
832 since Pyramid 1.0 and printed a deprecation warning upon its use. Use
833 ``pyramid.config`` instead.
834
b274d05 @mcdonc - The ``pyramid.paster.PyramidTemplate`` API was removed. It had been
mcdonc authored
835 - The ``pyramid.paster.PyramidTemplate`` API was removed. It had been
836 deprecated since Pyramid 1.1 and issued a warning on import. If your code
837 depended on this, adjust your code to import
838 ``pyramid.scaffolds.PyramidTemplate`` instead.
839
ef2e517 @mcdonc - The ``pyramid.settings.get_settings()`` API was removed. It had been
mcdonc authored
840 - The ``pyramid.settings.get_settings()`` API was removed. It had been
841 printing a deprecation warning since Pyramid 1.0. If your code depended on
842 this API, use ``pyramid.threadlocal.get_current_registry().settings``
843 instead or use the ``settings`` attribute of the registry available from
844 the request (``request.registry.settings``).
845
69e0aad @mcdonc - These APIs from the ``pyramid.testing`` module were removed. They …
mcdonc authored
846 - These APIs from the ``pyramid.testing`` module were removed. They have
847 been printing deprecation warnings since Pyramid 1.0:
848
849 * ``registerDummySecurityPolicy``, use
850 ``pyramid.config.Configurator.testing_securitypolicy`` instead.
851
852 * ``registerResources`` (aka ``registerModels``, use
853 ``pyramid.config.Configurator.testing_resources`` instead.
854
855 * ``registerEventListener``, use
856 ``pyramid.config.Configurator.testing_add_subscriber`` instead.
857
858 * ``registerTemplateRenderer`` (aka `registerDummyRenderer``), use
859 ``pyramid.config.Configurator.testing_add_template`` instead.
860
861 * ``registerView``, use ``pyramid.config.Configurator.add_view`` instead.
862
863 * ``registerUtility``, use
864 ``pyramid.config.Configurator.registry.registerUtility`` instead.
865
866 * ``registerAdapter``, use
867 ``pyramid.config.Configurator.registry.registerAdapter`` instead.
868
24c9326 @blaflamme added bug fix to changes
blaflamme authored
869 * ``registerSubscriber``, use
69e0aad @mcdonc - These APIs from the ``pyramid.testing`` module were removed. They …
mcdonc authored
870 ``pyramid.config.Configurator.add_subscriber`` instead.
871
24c9326 @blaflamme added bug fix to changes
blaflamme authored
872 * ``registerRoute``, use
69e0aad @mcdonc - These APIs from the ``pyramid.testing`` module were removed. They …
mcdonc authored
873 ``pyramid.config.Configurator.add_route`` instead.
874
24c9326 @blaflamme added bug fix to changes
blaflamme authored
875 * ``registerSettings``, use
69e0aad @mcdonc - These APIs from the ``pyramid.testing`` module were removed. They …
mcdonc authored
876 ``pyramid.config.Configurator.add_settings`` instead.
877
64452ed @mcdonc rename subrequest to invoke_subrequest
mcdonc authored
878 - In Pyramid 1.3 and previous, the ``__call__`` method of a Response object
879 was invoked before any finished callbacks were executed. As of this
880 release, the ``__call__`` method of a Response object is invoked *after*
881 finished callbacks are executed. This is in support of the
882 ``request.invoke_subrequest`` feature.
883
b72ba1a @mcdonc add upgrading chapter, make docs render again
mcdonc authored
884 Documentation
885 -------------
886
887 - Added an "Upgrading Pyramid" chapter to the narrative documentation. It
07cb8f0 @mcdonc add pyramid.decorator.reify as an API. Closes #682
mcdonc authored
888 describes how to cope with deprecations and removals of Pyramid APIs and
889 how to show Pyramid-generated deprecation warnings while running tests and
890 while running a server.
b72ba1a @mcdonc add upgrading chapter, make docs render again
mcdonc authored
891
37d2c22 @mcdonc docs and test
mcdonc authored
892 - Added a "Invoking a Subrequest" chapter to the documentation. It describes
64452ed @mcdonc rename subrequest to invoke_subrequest
mcdonc authored
893 how to use the new ``request.invoke_subrequest`` API.
37d2c22 @mcdonc docs and test
mcdonc authored
894
ebcdc7c @mcdonc - It is no longer possible to pass an environ dictionary directly to
mcdonc authored
895 Dependencies
896 ------------
897
898 - Pyramid now requires WebOb 1.2b3+ (the prior Pyramid release only relied on
899 1.2dev+). This is to ensure that we obtain a version of WebOb that returns
900 ``request.path_info`` as text.
901
Something went wrong with that request. Please try again.