Skip to content

HTTPS clone URL

Subversion checkout URL

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