- Fix the
pyramid.testing.DummyRequest
to support the newrequest.accept
API so thatacceptable_offers
is available even when code sets the value to a string. See #3396 - Fix deprecated escape sequences in preparation for Python 3.8. See #3400
- Add a
_depth
and_category
arguments to all of the venusian decorators. The_category
argument can be used to affect which actions are registered when performing aconfig.scan(..., category=...)
with a specific category. The_depth
argument should be used when wrapping the decorator in your own. This change affectspyramid.view.view_config
,pyramid.view.exception_view_config
,pyramid.view.forbidden_view_config
,pyramid.view.notfound_view_config
,pyramid.events.subscriber
andpyramid.response.response_adapter
decorators. See #3105 and #3122 - Fix the
pyramid.request.Request
class name after usingset_property
orconfig.add_request_method
such that thestr(request.__class__)
would appear aspyramid.request.Request
instead ofpyramid.util.Request
. See #3129 - In
cherrypy_server_runner
, prefer imports from thecheroot
package over the legacy imports from cherrypy.wsgiserver. See #3235 - Add a context manager
route_prefix_context
to thepyramid.config.Configurator
to allow for convenient setting of the route_prefix forinclude
andadd_route
calls inside the context. See #3279 - Modify the builtin session implementations to support
SameSite
options on cookies and set the default to'Lax'
. This affectspyramid.session.BaseCookieSessionFactory
,pyramid.session.SignedCookieSessionFactory
, andpyramid.session.UnencryptedCookieSessionFactoryConfig
. See #3300 - Modify
pyramid.authentication.AuthTktAuthenticationPolicy
andpyramid.csrf.CookieCSRFStoragePolicy
to support theSameSite
option on cookies and set the default to'Lax'
. See #3319 - Added new
pyramid.httpexceptions.HTTPPermanentRedirect
exception/response object for a HTTP 308 redirect. See #3302 - Within
pshell
, allow the user-definedsetup
function to be a generator, in which case it may wrap the command's lifecycle. See #3318 - Within
pshell
, variables defined by the[pshell]
settings are available within the user-definedsetup
function. See #3318 - Add support for Python 3.7. Add testing on Python 3.8 with allowed failures. See #3333
- Added the
pyramid.config.Configurator.add_accept_view_order
directive, allowing users to specify media type preferences in ambiguous situations such as when several views match. A default ordering is defined for media types that prefers human-readable html/text responses over JSON. See #3326 - Support a list of media types in the
accept
predicate used inpyramid.config.Configurator.add_route
. See #3326 - Added
pyramid.session.JSONSerializer
. See "Upcoming Changes to ISession in Pyramid 2.0" in the "Sessions" chapter of the documentation for more information about this feature. See #3353 - Add a
registry
argument topyramid.renderers.get_renderer
to allow users to avoid threadlocals during renderer lookup. See #3358 - Pyramid's test suite is no longer distributed with the universal wheel. See #3387
- All Python code is now formatted automatically using
black
. See #3388
- Set appropriate
code
andtitle
attributes on theHTTPClientError
andHTTPServerError
exception classes. This prevents inadvertently returning a 520 error code. See #3280 - Replace
webob.acceptparse.MIMEAccept
from WebOb withwebob.acceptparse.create_accept_header
in the HTTP exception handling code. The oldMIMEAccept
has been deprecated. The new methods follow the RFC's more closely. See #3251 - Catch extra errors like
AttributeError
when unpickling "trusted" session cookies with bad pickle data in them. This would occur when sharing a secret between projects that shouldn't actually share session cookies, like when reusing secrets between projects in development. See #3325
- The
pyramid.intefaces.ISession
interface will move to require JSON-serializable objects in Pyramid 2.0. See "Upcoming Changes to ISession in Pyramid 2.0" in the "Sessions" chapter of the documentation for more information about this change. See #3353 - The
pyramid.session.signed_serialize
andpyramid.session.signed_deserialize
functions will be removed in Pyramid 2.0, along with the removal ofpyramid.session.UnencryptedCookieSessionFactoryConfig
which was deprecated in Pyramid 1.5. Please switch to using theSignedCookieSessionFactory
, copying the code, or another session implementation if you're still using these features. See #3353 - Media ranges are deprecated in the
accept
argument ofpyramid.config.Configurator.add_route
. Use a list of explicit media types toadd_route
to support multiple types. - Media ranges are deprecated in the
accept
argument ofpyramid.config.Configurator.add_view
. There is no replacement for ranges toadd_view
, but after much discussion the workflow is fundamentally ambiguous in the face of various client-supplied values for theAccept
header. See #3326
- On Python 3.4+ the
repoze.lru
dependency is dropped. If you were using this package directly in your apps you should make sure that you are depending on it directly within your project. See #3140 - Remove the
permission
argument frompyramid.config.Configurator.add_route
. This was an argument left over from a feature removed in Pyramid 1.5 and has had no effect since then. See #3299 - Modify the builtin session implementations to set
SameSite='Lax'
on cookies. This affectspyramid.session.BaseCookieSessionFactory
,pyramid.session.SignedCookieSessionFactory
, andpyramid.session.UnencryptedCookieSessionFactoryConfig
. See #3300 - Variables defined in the
[pshell]
section of the settings will no longer override those set by thesetup
function. See #3318 pyramid.config.Configurator.add_notfound_view
uses default redirect class exceptionpyramid.httpexceptions.HTTPTemporaryRedirect
instead of previouspyramid.httpexceptions.HTTPFound
. See #3328- Removed
pyramid.config.Configurator.set_request_property
which had been deprecated since Pyramid 1.5. Instead usepyramid.config.Configurator.add_request_method
withreify=True
orproperty=True
. See #3368 - Removed the
principal
keyword argument frompyramid.security.remember
which had been deprecated since Pyramid 1.6 and replaced by theuserid
argument. See #3369 - Removed the
pyramid.tests
subpackage that used to contain the Pyramid test suite. These changes also changed the format of the repository to move the code into asrc
folder. See #3387
- Ad support for Read The Docs Ethical Ads. See #3360 and https://docs.readthedocs.io/en/latest/advertising/ethical-advertising.html
- Add support for alembic to the pyramid-cookiecutter-alchemy cookiecutter and update the wiki2 tutorial to explain how it works. See #3307 and Pylons/pyramid-cookiecutter-alchemy#7
- Bump Sphinx to >= 1.7.4 in setup.py to support
emphasize-lines
in PDFs and to pave the way for xelatex support. See #3271, #667, and #2572 - Added extra tests to the quick tutorial. See #3375