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