Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 368 lines (279 sloc) 16.277 kb
f6f1d16 @mmerickel remove the deprecated request.response_* attributes
mmerickel authored
1 Next Release
2 ============
3
c390f4b @bertjwregeer Add feature update to CHANGES.txt
bertjwregeer authored
4 Features
5 --------
6
cbcd4d2 @mcdonc wording
mcdonc authored
7 - Users can now provide dotted Python names to as the ``factory`` argument
8 the Configurator methods named ``add_{view,route,subscriber}_predicate``
9 (instead of passing the predicate factory directly, you can pass a
10 dotted name which refers to the factory).
c390f4b @bertjwregeer Add feature update to CHANGES.txt
bertjwregeer authored
11
c062d5a @dhellmann Update package_name() to work with namespace pkgs
dhellmann authored
12 Bug Fixes
13 ---------
14
f504ccc @mcdonc add change notes
mcdonc authored
15 - Fix an exception in ``pyramid.path.package_name`` when resolving the package
16 name for namespace packages that had no ``__file__`` attribute.
c062d5a @dhellmann Update package_name() to work with namespace pkgs
dhellmann authored
17
f6f1d16 @mmerickel remove the deprecated request.response_* attributes
mmerickel authored
18 Backwards Incompatibilities
19 ---------------------------
20
82f9702 @mmerickel update changelog
mmerickel authored
21 - Pyramid has dropped native support for the Mako and Chameleon renderers. To
22 re-add support for these renderers into existing projects there are 3 steps:
23
24 - Add `pyramid_mako` and/or `pyramid_chameleon` as dependencies by
ce138c8 @mmerickel add install_requires example as well
mmerickel authored
25 adding them to the `install_requires` section of the package's `setup.py`::
26
27 setup(
28 #...
29 install_requires=[
30 'pyramid_mako', # new dependency
31 'pyramid_chameleon', # new dependency
32 'pyramid',
33 #...
34 ],
35 )
82f9702 @mmerickel update changelog
mmerickel authored
36
4315c0d @mmerickel fix markup
mmerickel authored
37 - Update instances of the ``pyramid.config.Configurator`` to include the
ce138c8 @mmerickel add install_requires example as well
mmerickel authored
38 required addons::
82f9702 @mmerickel update changelog
mmerickel authored
39
40 config.include('pyramid_chameleon')
41 config.include('pyramid_mako')
42
4315c0d @mmerickel fix markup
mmerickel authored
43 - If any unit tests are invoking either ``pyramid.renderers.render()`` or
9ed074e @mmerickel add example of rendering to the changelog
mmerickel authored
44 ``pyramid.renderers.render_to_response()`` with either Mako or Chameleon
45 templates then the ``pyramid.config.Configurator`` instance at the root of
46 the unit test should be also be updated to include the addons, as shown
ce138c8 @mmerickel add install_requires example as well
mmerickel authored
47 above. For example::
9ed074e @mmerickel add example of rendering to the changelog
mmerickel authored
48
49 config = pyramid.testing.setUp()
50 config.include('pyramid_mako')
51
52 result = pyramid.renderers.render('mypkg:templates/home.mako', {})
82f9702 @mmerickel update changelog
mmerickel authored
53
f6f1d16 @mmerickel remove the deprecated request.response_* attributes
mmerickel authored
54 - Removed the ``request.response_*`` varying attributes. These attributes
55 have been deprecated since Pyramid 1.1, and as per the deprecation policy,
56 have now been removed.
57
027c980 @mcdonc resolve conflicts, reword change entry a bit
mcdonc authored
58 - ``request.response`` will no longer be mutated when using the
59 ``pyramid.renderers.render()`` API. Almost all renderers mutate the
fbdc3a0 @mmerickel s/view execution machinery/generating a response/
mmerickel authored
60 ``request.response`` response object (for example, the JSON renderer sets
61 ``request.response.content_type`` to ``application/json``), but this is
62 only necessary when the renderer is generating a response; it was a bug
63 when it was done as a side effect of calling ``pyramid.renderers.render()``.
3803d92 @mmerickel update render() to preserve the original response object
mmerickel authored
64
f504ccc @mcdonc add change notes
mcdonc authored
65 - The Mako and Chameleon renderers have been removed from Pyramid. Their
66 functionality has been moved to the ``pyramid_mako`` and
67 ``pyramid_chameleon`` distributions respectively.
68
69 - Removed the ``bfg2pyramid`` fixer script.
70
fc477b2 @mcdonc - The ``pyramid.events.NewResponse`` event is now sent **after** resp…
mcdonc authored
71 - The ``pyramid.events.NewResponse`` event is now sent **after** response
72 callbacks are executed. It previously executed before response callbacks
73 were executed. Rationale: it's more useful to be able to inspect the response
74 after response callbacks have done their jobs instead of before.
75
2c4f4e3 @mcdonc - Removed the class named ``pyramid.view.static`` that had been depre…
mcdonc authored
76 - Removed the class named ``pyramid.view.static`` that had been deprecated
77 since Pyramid 1.1. Instead use ``pyramid.static.static_view`` with
78 ``use_subpath=True`` argument.
79
780bbf9 @mcdonc - Removed the ``pyramid.view.is_response`` function that had been dep…
mcdonc authored
80 - Removed the ``pyramid.view.is_response`` function that had been deprecated
81 since Pyramid 1.1. Use the ``pyramid.request.Request.is_response`` method
82 instead.
83
fdf30b3 @mcdonc - Removed the ability to pass the following arguments to
mcdonc authored
84 - Removed the ability to pass the following arguments to
85 ``pyramid.config.Configurator.add_route``: `view``, ``view_context``.
86 ``view_for``, ``view_permission``, ``view_renderer``, and ``view_attr``.
87 Using these arguments had been deprecated since Pyramid 1.1. Instead of
88 passing view-related arguments to ``add_route``, use a separate call to
89 ``pyramid.config.Configurator.add_view`` to associate a view with a route
90 using its ``route_name`` argument. Note that this impacts the
91 ``pyramid.config.Configurator.add_static_view`` function too, because it
92 delegates to ``add_route``.
93
8fe57d8 @mcdonc - Removed the ability to influence and query a ``pyramid.request.Requ…
mcdonc authored
94 - Removed the ability to influence and query a ``pyramid.request.Request``
95 object as if it were a dictionary. Previously it was possible to use methods
96 like ``__getitem__``, ``get``, ``items``, and other dictlike methods to
97 access values in the WSGI environment. This behavior had been deprecated
98 since Pyramid 1.1. Use methods of ``request.environ`` (a real dictionary)
99 instead.
100
95e9711 @mcdonc - Removed ancient backwards compatibily hack in
mcdonc authored
101 - Removed ancient backwards compatibily hack in
102 ``pyramid.traversal.DefaultRootFactory`` which populated the ``__dict__`` of
103 the factory with the matchdict values for compatibility with BFG 0.9.
104
00bb95f @mcdonc prep for 1.5a1
mcdonc authored
105 1.5a1 (2013-08-30)
106 ==================
2d93140 @mmerickel support acl as a callable
mmerickel authored
107
108 Features
109 --------
110
c5ed549 @mcdonc add HTTPSuccessful base class, allowing HTTPOk to be caught independe…
mcdonc authored
111 - A new http exception subclass named ``pyramid.httpexceptions.HTTPSuccessful``
112 was added. You can use this class as the ``context`` of an exception
113 view to catch all 200-series "exceptions" (e.g. "raise HTTPOk"). This
114 also allows you to catch *only* the ``HTTPOk`` exception itself; previously
115 this was impossible because a number of other exceptions
116 (such as ``HTTPNoContent``) inherited from ``HTTPOk``, but now they do not.
117
0a4aed1 @mcdonc documentation for hybrid url generation
mcdonc authored
118 - You can now generate "hybrid" urldispatch/traversal URLs more easily
c29603e @mcdonc get rid of remainder_name on route, and just default to passing trave…
mcdonc authored
119 by using the new ``route_name``, ``route_kw`` and ``route_remainder_name``
120 arguments to ``request.resource_url`` and ``request.resource_path``. See
121 the new section of the "Combining Traversal and URL Dispatch" documentation
122 chapter entitled "Hybrid URL Generation".
0a4aed1 @mcdonc documentation for hybrid url generation
mcdonc authored
123
1930ebf @mcdonc Permit escaping of double braces in scaffolds, see #862
mcdonc authored
124 - It is now possible to escape double braces in Pyramid scaffolds (unescaped,
125 these represent replacement values). You can use ``\{\{a\}\}`` to
126 represent a "bare" ``{{a}}``. See
127 https://github.com/Pylons/pyramid/pull/862
128
330164c @mcdonc make local_name an attribute of Request, move logic from get_localize…
mcdonc authored
129 - Add ``localizer`` and ``locale_name`` properties (reified) to the request.
130 See https://github.com/Pylons/pyramid/issues/508. Note that the
131 ``pyramid.i18n.get_localizer`` and ``pyramid.i18n.get_locale_name`` functions
132 now simply look up these properties on the request.
c614ffc @witsch add ``localizer`` property to the request (refs #508)
witsch authored
133
b210ce3 @mcdonc add pdistreport command
mcdonc authored
134 - Add ``pdistreport`` script, which prints the Python version in use, the
135 Pyramid version in use, and the version number and location of all Python
136 distributions currently installed.
137
32333e4 @mcdonc add not_ predicate feature
mcdonc authored
138 - Add the ability to invert the result of any view, route, or subscriber
139 predicate using the ``not_`` class. For example::
140
141 from pyramid.config import not_
142
143 @view_config(route_name='myroute', request_method=not_('POST'))
144 def myview(request): ...
145
146 The above example will ensure that the view is called if the request method
147 is not POST (at least if no other view is more specific).
148
149 The :class:`pyramid.config.not_` class can be used against any value that is
150 a predicate value passed in any of these contexts:
151
152 - ``pyramid.config.Configurator.add_view``
153
154 - ``pyramid.config.Configurator.add_route``
155
156 - ``pyramid.config.Configurator.add_subscriber``
157
158 - ``pyramid.view.view_config``
159
160 - ``pyramid.events.subscriber``
161
a178631 @mcdonc add an entry to changes about code merged from feature.prequest_login…
mcdonc authored
162 - ``scripts/prequest.py``: add support for submitting ``PUT`` and ``PATCH``
163 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
164 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
165 basic authentication credentials in the request via a ``--login`` argument to
166 the script. See https://github.com/Pylons/pyramid/pull/1039.
f0f92b0 @tseaver Changelog for PR #1033.
tseaver authored
167
2d93140 @mmerickel support acl as a callable
mmerickel authored
168 - ``ACLAuthorizationPolicy`` supports ``__acl__`` as a callable. This
169 removes the ambiguity between the potential ``AttributeError`` that would
170 be raised on the ``context`` when the property was not defined and the
171 ``AttributeError`` that could be raised from any user-defined code within
172 a dynamic property. It is recommended to define a dynamic ACL as a callable
173 to avoid this ambiguity. See https://github.com/Pylons/pyramid/issues/735.
174
ff41f86 @wosc Fixes #798: Allow a protocol-relative URL to be passed to add_static_…
wosc authored
175 - Allow a protocol-relative URL (e.g. ``//example.com/images``) to be passed to
176 ``pyramid.config.Configurator.add_static_view``. This allows
177 externally-hosted static URLs to be generated based on the current protocol.
178
a1f768c @wichert Allow explicit cookie domain setting.
wichert authored
179 - The ``AuthTktAuthenticationPolicy`` has two new options to configure its
180 domain usage:
58c5fef @tshepang fix some rST issues
tshepang authored
181
a1f768c @wichert Allow explicit cookie domain setting.
wichert authored
182 * ``parent_domain``: if set the authentication cookie is set on
183 the parent domain. This is useful if you have multiple sites sharing the
184 same domain.
185 * ``domain``: if provided the cookie is always set for this domain, bypassing
58c5fef @tshepang fix some rST issues
tshepang authored
186 all usual logic.
187
3ea7883 @tomster Add reference to the pull requests
tomster authored
188 See https://github.com/Pylons/pyramid/pull/1028,
189 https://github.com/Pylons/pyramid/pull/1072 and
190 https://github.com/Pylons/pyramid/pull/1078.
188aa7e @wichert Add a parent_domain option for auth_tkt policy
wichert authored
191
23a7c6d @mmerickel update CHANGES.txt
mmerickel authored
192 - The ``AuthTktAuthenticationPolicy`` now supports IPv6 addresses when using
193 the ``include_ip=True`` option. This is possibly incompatible with
194 alternative ``auth_tkt`` implementations, as the specification does not
195 define how to properly handle IPv6. See
196 https://github.com/Pylons/pyramid/issues/831.
197
38844f7 @mmerickel update CHANGES.txt
mmerickel authored
198 - Make it possible to use variable arguments via
199 ``pyramid.paster.get_appsettings``. This also allowed the generated
200 ``initialize_db`` script from the ``alchemy`` scaffold to grow support
201 for options in the form ``a=1 b=2`` so you can fill in
202 values in a parameterized ``.ini`` file, e.g.
203 ``initialize_myapp_db etc/development.ini a=1 b=2``.
204 See https://github.com/Pylons/pyramid/pull/911
205
fab8454 @mcdonc add changelog note
mcdonc authored
206 - The ``request.session.check_csrf_token()`` method and the ``check_csrf`` view
207 predicate now take into account the value of the HTTP header named
208 ``X-CSRF-Token`` (as well as the ``csrf_token`` form parameter, which they
209 always did). The header is tried when the form parameter does not exist.
210
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
211 - View lookup will now search for valid views based on the inheritance
212 hierarchy of the context. It tries to find views based on the most
213 specific context first, and upon predicate failure, will move up the
214 inheritance chain to test views found by the super-type of the context.
215 In the past, only the most specific type containing views would be checked
216 and if no matching view could be found then a PredicateMismatch would be
217 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
218 super-types. Here's an example that now works:
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
219
220 .. code-block:: python
9e1e6d3 @latteier Change log note.
latteier authored
221
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
222 class IResource(Interface):
07c189d @stevepiercy Fix whitespace in CHANGES.txt to permit build.
stevepiercy authored
223
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
224 ...
9e1e6d3 @latteier Change log note.
latteier authored
225
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
226 @view_config(context=IResource)
227 def get(context, request):
07c189d @stevepiercy Fix whitespace in CHANGES.txt to permit build.
stevepiercy authored
228
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
229 ...
9e1e6d3 @latteier Change log note.
latteier authored
230
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
231 @view_config(context=IResource, request_method='POST')
232 def post(context, request):
07c189d @stevepiercy Fix whitespace in CHANGES.txt to permit build.
stevepiercy authored
233
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
234 ...
9e1e6d3 @latteier Change log note.
latteier authored
235
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
236 @view_config(context=IResource, request_method='DELETE')
237 def delete(context, request):
07c189d @stevepiercy Fix whitespace in CHANGES.txt to permit build.
stevepiercy authored
238
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
239 ...
9e1e6d3 @latteier Change log note.
latteier authored
240
e01b1ca @mcdonc update whatsnew
mcdonc authored
241 @implementer(IResource)
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
242 class MyResource:
07c189d @stevepiercy Fix whitespace in CHANGES.txt to permit build.
stevepiercy authored
243
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
244 ...
9e1e6d3 @latteier Change log note.
latteier authored
245
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
246 @view_config(context=MyResource, request_method='POST')
247 def override_post(context, request):
07c189d @stevepiercy Fix whitespace in CHANGES.txt to permit build.
stevepiercy authored
248
b6a4d40 @mmerickel Merge branch 'master' of latteier/pyramid into pull.786
mmerickel authored
249 ...
9e1e6d3 @latteier Change log note.
latteier authored
250
251 Previously the override_post view registration would hide the get
252 and delete views in the context of MyResource -- leading to a
253 predicate mismatch error when trying to use GET or DELETE
254 methods. Now the views are found and no predicate mismatch is
255 raised.
6b97003 @mmerickel update changlog
mmerickel authored
256 See https://github.com/Pylons/pyramid/pull/786 and
75fc4ac @mmerickel update changelog
mmerickel authored
257 https://github.com/Pylons/pyramid/pull/1004 and
258 https://github.com/Pylons/pyramid/pull/1046
9e1e6d3 @latteier Change log note.
latteier authored
259
1377480 @mcdonc add change note
mcdonc authored
260 - The ``pserve`` command now takes a ``-v`` (or ``--verbose``) flag and a
261 ``-q`` (or ``--quiet``) flag. Output from running ``pserve`` can be
262 controlled using these flags. ``-v`` can be specified multiple times to
263 increase verbosity. ``-q`` sets verbosity to ``0`` unconditionally. The
264 default verbosity level is ``1``.
265
986dc5f @mcdonc add change note
mcdonc authored
266 - The ``alchemy`` scaffold tests now provide better coverage. See
267 https://github.com/Pylons/pyramid/pull/1029
268
d07d167 @mcdonc raise ValueError instead of generating just path when _app_url is pro…
mcdonc authored
269 - The ``pyramid.config.Configurator.add_route`` method now supports being
270 called with an external URL as pattern. See
67674f9 @mcdonc point at docs section
mcdonc authored
271 https://github.com/Pylons/pyramid/issues/611 and the documentation section
272 in the "URL Dispatch" chapter entitled "External Routes" for more information.
8a8eff5 @tomster update changelog
tomster authored
273
0d96b77 @mcdonc version bump in setup.py conf.py CHANGES.txt, rejigger changes bugs v…
mcdonc authored
274 Bug Fixes
275 ---------
276
97ed56d @mcdonc allow exception view registrations for HTTPException to override defa…
mcdonc authored
277 - It was not possible to use ``pyramid.httpexceptions.HTTPException`` as
278 the ``context`` of an exception view as very general catchall for
279 http-related exceptions when you wanted that exception view to override the
280 default exception view. See https://github.com/Pylons/pyramid/issues/985
281
8a7e80d @mcdonc - When the ``pyramid.reload_templates`` setting was true, and a Chame…
mcdonc authored
282 - When the ``pyramid.reload_templates`` setting was true, and a Chameleon
283 template was reloaded, and the renderer specification named a macro
284 (e.g. ``foo#macroname.pt``), renderings of the template after the template
285 was reloaded due to a file change would produce the entire template body
286 instead of just a rendering of the macro. See
287 https://github.com/Pylons/pyramid/issues/1013.
288
ece96f6 @mcdonc - Fix an obscure problem when combining a virtual root with a route w…
mcdonc authored
289 - Fix an obscure problem when combining a virtual root with a route with a
290 ``*traverse`` in its pattern. Now the traversal path generated in
291 such a configuration will be correct, instead of an element missing
292 a leading slash.
293
24c9326 @blaflamme added bug fix to changes
blaflamme authored
294 - Fixed a Mako renderer bug returning a tuple with a previous defname value
3de54e3 @blaflamme fixed line indentation
blaflamme authored
295 in some circumstances. See https://github.com/Pylons/pyramid/issues/1037
296 for more information.
24c9326 @blaflamme added bug fix to changes
blaflamme authored
297
0d96b77 @mcdonc version bump in setup.py conf.py CHANGES.txt, rejigger changes bugs v…
mcdonc authored
298 - Make the ``pyramid.config.assets.PackageOverrides`` object implement the API
299 for ``__loader__`` objects specified in PEP 302. Proxies to the
300 ``__loader__`` set by the importer, if present; otherwise, raises
301 ``NotImplementedError``. This makes Pyramid static view overrides work
302 properly under Python 3.3 (previously they would not). See
303 https://github.com/Pylons/pyramid/pull/1015 for more information.
304
305 - ``mako_templating``: added defensive workaround for non-importability of
306 ``mako`` due to upstream ``markupsafe`` dropping Python 3.2 support. Mako
307 templating will no longer work under the combination of MarkupSafe 0.17 and
308 Python 3.2 (although the combination of MarkupSafe 0.17 and Python 3.3 or any
309 supported Python 2 version will work OK).
310
ea278e1 @mmerickel update changelog
mmerickel authored
311 - Spaces and dots may now be in mako renderer template paths. This was
312 broken when support for the new makodef syntax was added in 1.4a1.
313 See https://github.com/Pylons/pyramid/issues/950
314
20c57e6 @mmerickel update changelog
mmerickel authored
315 - ``pyramid.debug_authorization=true`` will now correctly print out
316 ``Allowed`` for views registered with ``NO_PERMISSION_REQUIRED`` instead
317 of invoking the ``permits`` method of the authorization policy.
318 See https://github.com/Pylons/pyramid/issues/954
319
c35b298 @mmerickel update changes.txt
mmerickel authored
320 - Pyramid failed to install on some systems due to being packaged with
321 some test files containing higher order characters in their names. These
322 files have now been removed. See
323 https://github.com/Pylons/pyramid/issues/981
324
050b71c @mcdonc - ``pyramid.testing.DummyResource`` didn't define ``__bool__``, so co…
mcdonc authored
325 - ``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
326 Python 3 would use ``__len__`` to find truthiness; this usually caused an
327 instance of DummyResource to be "falsy" instead of "truthy". See
328 https://github.com/Pylons/pyramid/pull/1032
050b71c @mcdonc - ``pyramid.testing.DummyResource`` didn't define ``__bool__``, so co…
mcdonc authored
329
0a8d50f @mcdonc add change note
mcdonc authored
330 - The ``alchemy`` scaffold would break when the database was MySQL during
331 tables creation. See https://github.com/Pylons/pyramid/pull/1049
332
6a4a341 @odontomachus Fixed documentation width, signed contributors agreement and added a …
odontomachus authored
333 - The ``current_route_url`` method now attaches the query string to the URL by
334 default. See
0f1bc52 @odontomachus Updated CHANGES
odontomachus authored
335 https://github.com/Pylons/pyramid/issues/1040
336
d6e8b86 @tomster Make ``pserve.cherrypy_server_runner`` Python 3 compatible.
tomster authored
337 - Make ``pserve.cherrypy_server_runner`` Python 3 compatible. See
338 https://github.com/Pylons/pyramid/issues/718
339
33e0fe1 @odontomachus Fixes to documentation, added change to what's new.
odontomachus authored
340 Backwards Incompatibilities
341 ---------------------------
342
6a4a341 @odontomachus Fixed documentation width, signed contributors agreement and added a …
odontomachus authored
343 - Modified the ``current_route_url`` method in pyramid.Request. The method
344 previously returned the URL without the query string by default, it now does
345 attach the query string unless it is overriden.
33e0fe1 @odontomachus Fixes to documentation, added change to what's new.
odontomachus authored
346
58951c0 @mcdonc - The ``route_url`` and ``route_path`` APIs no longer quote ``/``
mcdonc authored
347 - The ``route_url`` and ``route_path`` APIs no longer quote ``/``
348 to ``%2F`` when a replacement value contains a ``/``. This was pointless,
349 as WSGI servers always unquote the slash anyway, and Pyramid never sees the
350 quoted value.
351
330164c @mcdonc make local_name an attribute of Request, move logic from get_localize…
mcdonc authored
352 - It is no longer possible to set a ``locale_name`` attribute of the request,
353 nor is it possible to set a ``localizer`` attribute of the request. These
354 are now "reified" properties that look up a locale name and localizer
355 respectively using the machinery described in the "Internationalization"
356 chapter of the documentation.
357
db0185f @mcdonc first cut at hybrid url generation; still needs tests for resource_ur…
mcdonc authored
358 - If you send an ``X-Vhm-Root`` header with a value that ends with a slash (or
359 any number of slashes), the trailing slash(es) will be removed before a URL
360 is generated when you use use ``request.resource_url`` or
361 ``request.resource_path``. Previously the virtual root path would not have
362 trailing slashes stripped, which would influence URL generation.
363
364 - The ``pyramid.interfaces.IResourceURL`` interface has now grown two new
365 attributes: ``virtual_path_tuple`` and ``physical_path_tuple``. These should
366 be the tuple form of the resource's path (physical and virtual).
367
Something went wrong with that request. Please try again.