forked from Pylons/pyramid
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGES.txt
87 lines (66 loc) · 3.72 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
Next release
============
Bug Fixes
---------
- Forward port from 1.3 branch: When no authentication policy was configured,
a call to ``pyramid.security.effective_principals`` would unconditionally
return the empty list. This was incorrect, it should have unconditionally
returned ``[Everyone]``, and now does.
- Explicit url dispatch regexes can now contain colons.
https://github.com/Pylons/pyramid/issues/629
- On at least one 64-bit Ubuntu system under Python 3.2, using the
``view_config`` decorator caused a ``RuntimeError: dictionary changed size
during iteration`` exception. It no longer does. See
https://github.com/Pylons/pyramid/issues/635 for more information.
- In Mako Templates lookup, check if the uri is already adjusted and bring
it back to an asset spec. Normally occurs with inherited templates or
included components.
https://github.com/Pylons/pyramid/issues/606
https://github.com/Pylons/pyramid/issues/607
Features
--------
- Third-party custom view and route predicates can now be added for use by
view authors via ``pyramid.config.Configurator.add_view_predicate`` and
``pyramid.config.Configurator.add_route_predicate``. So, for example,
doing this::
config.add_view_predicate('abc', my.package.ABCPredicate)
Might allow a view author to do this in an application that configured that
predicate::
@view_config(abc=1)
See "Adding A Third Party View or Route Predicate" in the Hooks chapter for
more information.
Note that changes made to support the above feature now means that only
actions registered using the same "order" can conflict with one another.
It used to be the case that actions registered at different orders could
potentially conflict, but to my knowledge nothing ever depended on this
behavior (it was a bit silly).
- Custom objects can be made easily JSON-serializable in Pyramid by defining
a ``__json__`` method on the object's class. This method should return
values natively serializable by ``json.dumps`` (such as ints, lists,
dictionaries, strings, and so forth).
- The JSON renderer now allows for the definition of custom type adapters to
convert unknown objects to JSON serializations.
- As of this release, the ``request_method`` predicate, when used, will also
imply that ``HEAD`` is implied when you use ``GET``. For example, using
``@view_config(request_method='GET')`` is equivalent to using
``@view_config(request_method=('GET', 'HEAD'))``. Using
``@view_config(request_method=('GET', 'POST')`` is equivalent to using
``@view_config(request_method=('GET', 'HEAD', 'POST')``. This is because
HEAD is a variant of GET that omits the body, and WebOb has special support
to return an empty body when a HEAD is used.
- ``config.set_request_property`` now causes less code to be executed at
request construction time.
- Don't add a ``?`` to URLs generated by request.resource_url if the
``query`` argument is provided but empty.
- Don't add a ``?`` to URLs generated by request.route_url if the
``_query`` argument is provided but empty.
- The static view machinery now raises (rather than returns) ``HTTPNotFound``
and ``HTTPMovedPermanently`` exceptions, so these can be caught by the
NotFound view (and other exception views).
- The mako renderer now accepts a def name and returns the template def
result for the view being called. The uri format using an asset spec is
package:path/to/template#defname.mako. The old way of returning a tuple
from the view is supported for backward compatibility, ('defname', {}).
- When there is a predicate mismatch exception (seen when no view matches for
a given request due to predicates not working), the exception now contains
a textual description of the predicate which didn't match.