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