Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

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