{
    "file_diffs": [
        {
            "old_file_content": " Pylons Project Contributor Agreement\n====================================\n\nThe submitter agrees by adding his or her name within the section below named\n\"Contributors\" and submitting the resulting modified document to the\ncanonical shared repository location for this software project (whether\ndirectly, as a user with \"direct commit access\", or via a \"pull request\"), he\nor she is signing a contract electronically.  The submitter becomes a\nContributor after a) he or she signs this document by adding their name\nbeneath the \"Contributors\" section below, and b) the resulting document is\naccepted into the canonical version control repository.\n\nTreatment of Account\n---------------------\n\nContributor will not allow anyone other than the Contributor to use his or\nher username or source repository login to submit code to a Pylons Project\nsource repository. Should Contributor become aware of any such use,\nContributor will immediately notify Agendaless Consulting.\nNotification must be performed by sending an email to\nwebmaster@agendaless.com.  Until such notice is received, Contributor will be\npresumed to have taken all actions made through Contributor's account. If the\nContributor has direct commit access, Agendaless Consulting will have\ncomplete control and discretion over capabilities assigned to Contributor's\naccount, and may disable Contributor's account for any reason at any time.\n\nLegal Effect of Contribution\n----------------------------\n\nUpon submitting a change or new work to a Pylons Project source Repository (a\n\"Contribution\"), you agree to assign, and hereby do assign, a one-half\ninterest of all right, title and interest in and to copyright and other\nintellectual property rights with respect to your new and original portions\nof the Contribution to Agendaless Consulting. You and Agendaless Consulting\neach agree that the other shall be free to exercise any and all exclusive\nrights in and to the Contribution, without accounting to one another,\nincluding without limitation, the right to license the Contribution to others\nunder the Repoze Public License. This agreement shall run with title to the\nContribution. Agendaless Consulting does not convey to you any right, title\nor interest in or to the Program or such portions of the Contribution that\nwere taken from the Program. Your transmission of a submission to the Pylons\nProject source Repository and marks of identification concerning the\nContribution itself constitute your intent to contribute and your assignment\nof the work in accordance with the provisions of this Agreement.\n\nLicense Terms\n-------------\n\nCode committed to the Pylons Project source repository (Committed Code) must\nbe governed by the Repoze Public License (http://repoze.org/LICENSE.txt, aka\n\"the RPL\") or another license acceptable to Agendaless Consulting.  Until\nAgendaless Consulting declares in writing an acceptable license other than\nthe RPL, only the RPL shall be used.  A list of exceptions is detailed within\nthe \"Licensing Exceptions\" section of this document, if one exists.\n\nRepresentations, Warranty, and Indemnification\n----------------------------------------------\n\nContributor represents and warrants that the Committed Code does not violate\nthe rights of any person or entity, and that the Contributor has legal\nauthority to enter into this Agreement and legal authority over Contributed\nCode. Further, Contributor indemnifies Agendaless Consulting against\nviolations.\n\nCryptography\n------------\n\nContributor understands that cryptographic code may be subject to government\nregulations with which Agendaless Consulting and/or entities using Committed\nCode must comply. Any code which contains any of the items listed below must\nnot be checked-in until Agendaless Consulting staff has been notified and has\napproved such contribution in writing.\n\n- Cryptographic capabilities or features\n\n- Calls to cryptographic features\n\n- User interface elements which provide context relating to cryptography\n\n- Code which may, under casual inspection, appear to be cryptographic.\n\nNotices\n-------\n\nContributor confirms that any notices required will be included in any\nCommitted Code.\n\nLicensing Exceptions\n====================\n\nCode committed within the ``docs/`` subdirectory of the Pyramid source\ncontrol repository and \"docstrings\" which appear in the documentation\ngenerated by running \"make\" within this directory is licensed under the\nCreative Commons Attribution-Noncommercial-Share Alike 3.0 United States\nLicense (http://creativecommons.org/licenses/by-nc-sa/3.0/us/).\n\nList of Contributors\n====================\n\nThe below-signed are contributors to a code repository that is part of the\nproject named \"Pyramid\".  Each below-signed contributor has read, understand\nand agrees to the terms above in the section within this document entitled\n\"Pylons Project Contributor Agreement\" as of the date beside his or her name.\n\nContributors\n------------\n\n- Chris McDonough, 2010/11/08\n\n- Tres Seaver, 2010/11/09\n\n- Ben Bangert, 2010/11/09\n\n- Blaise Laflamme, 2010/11/09\n\n- Chris Rossi, 2010/11/10\n\n- Casey Duncan, 2010/12/27\n\n- Rob Miller, 2010/12/28\n\n- Marius Gedminas, 2010/12/31\n\n- Marcin Lulek, 2011/01/02\n\n- John Shipman, 2011/01/15\n\n- Wichert Akkerman, 2011/01/19\n\n- Christopher Lambacher, 2011/02/12\n\n- Malthe Borch, 2011/02/28\n\n- Carlos de la Guardia, 2011/03/29\n\n- Joel Bohman, 2011/04/16\n\n- Juliusz Gonera, 2011/04/17\n\n- Philip Jenvey, 2011/04/24\n\n- Michael Merickel, 2011/5/25\n\n- Christoph Zwerschke, 2011/06/07\n\n- Atsushi Odagiri, 2011/07/02\n\n- Shane Hathaway, 2011/07/22\n\n- Manuel Hermann, 2011/07/11\n\n- Richard Barrell, 2011/11/07\n\n- Chris Shenton, 2011/11/07\n\n- Ken Manheimer, 2011/11/07\n\n- Reed O'Brien, 2011/11/07\n\n- Klee Dienes, 2011/10/30\n\n- Michael Ryabushin, 2011/12/14\n\n- Mike Orr, 2012/02/14\n\n- Paul M. Winkler, 2012/02/22\n\n- Martijn Pieters, 2012/03/02\n\n- Steve Piercy, 2012/03/27\n\n- Wayne Witzel III, 2012/03/27\n\n- Marin Rukavina, 2012/05/03\n\n- Marc Abramowitz, 2012/06/13\n\n- Jeff Cook, 2012/06/16\n\n- Roman Kozlovskyi, 2012/08/11\n",
            "new_file_content": " Pylons Project Contributor Agreement\n====================================\n\nThe submitter agrees by adding his or her name within the section below named\n\"Contributors\" and submitting the resulting modified document to the\ncanonical shared repository location for this software project (whether\ndirectly, as a user with \"direct commit access\", or via a \"pull request\"), he\nor she is signing a contract electronically.  The submitter becomes a\nContributor after a) he or she signs this document by adding their name\nbeneath the \"Contributors\" section below, and b) the resulting document is\naccepted into the canonical version control repository.\n\nTreatment of Account\n---------------------\n\nContributor will not allow anyone other than the Contributor to use his or\nher username or source repository login to submit code to a Pylons Project\nsource repository. Should Contributor become aware of any such use,\nContributor will immediately notify Agendaless Consulting.\nNotification must be performed by sending an email to\nwebmaster@agendaless.com.  Until such notice is received, Contributor will be\npresumed to have taken all actions made through Contributor's account. If the\nContributor has direct commit access, Agendaless Consulting will have\ncomplete control and discretion over capabilities assigned to Contributor's\naccount, and may disable Contributor's account for any reason at any time.\n\nLegal Effect of Contribution\n----------------------------\n\nUpon submitting a change or new work to a Pylons Project source Repository (a\n\"Contribution\"), you agree to assign, and hereby do assign, a one-half\ninterest of all right, title and interest in and to copyright and other\nintellectual property rights with respect to your new and original portions\nof the Contribution to Agendaless Consulting. You and Agendaless Consulting\neach agree that the other shall be free to exercise any and all exclusive\nrights in and to the Contribution, without accounting to one another,\nincluding without limitation, the right to license the Contribution to others\nunder the Repoze Public License. This agreement shall run with title to the\nContribution. Agendaless Consulting does not convey to you any right, title\nor interest in or to the Program or such portions of the Contribution that\nwere taken from the Program. Your transmission of a submission to the Pylons\nProject source Repository and marks of identification concerning the\nContribution itself constitute your intent to contribute and your assignment\nof the work in accordance with the provisions of this Agreement.\n\nLicense Terms\n-------------\n\nCode committed to the Pylons Project source repository (Committed Code) must\nbe governed by the Repoze Public License (http://repoze.org/LICENSE.txt, aka\n\"the RPL\") or another license acceptable to Agendaless Consulting.  Until\nAgendaless Consulting declares in writing an acceptable license other than\nthe RPL, only the RPL shall be used.  A list of exceptions is detailed within\nthe \"Licensing Exceptions\" section of this document, if one exists.\n\nRepresentations, Warranty, and Indemnification\n----------------------------------------------\n\nContributor represents and warrants that the Committed Code does not violate\nthe rights of any person or entity, and that the Contributor has legal\nauthority to enter into this Agreement and legal authority over Contributed\nCode. Further, Contributor indemnifies Agendaless Consulting against\nviolations.\n\nCryptography\n------------\n\nContributor understands that cryptographic code may be subject to government\nregulations with which Agendaless Consulting and/or entities using Committed\nCode must comply. Any code which contains any of the items listed below must\nnot be checked-in until Agendaless Consulting staff has been notified and has\napproved such contribution in writing.\n\n- Cryptographic capabilities or features\n\n- Calls to cryptographic features\n\n- User interface elements which provide context relating to cryptography\n\n- Code which may, under casual inspection, appear to be cryptographic.\n\nNotices\n-------\n\nContributor confirms that any notices required will be included in any\nCommitted Code.\n\nLicensing Exceptions\n====================\n\nCode committed within the ``docs/`` subdirectory of the Pyramid source\ncontrol repository and \"docstrings\" which appear in the documentation\ngenerated by running \"make\" within this directory is licensed under the\nCreative Commons Attribution-Noncommercial-Share Alike 3.0 United States\nLicense (http://creativecommons.org/licenses/by-nc-sa/3.0/us/).\n\nList of Contributors\n====================\n\nThe below-signed are contributors to a code repository that is part of the\nproject named \"Pyramid\".  Each below-signed contributor has read, understand\nand agrees to the terms above in the section within this document entitled\n\"Pylons Project Contributor Agreement\" as of the date beside his or her name.\n\nContributors\n------------\n\n- Chris McDonough, 2010/11/08\n\n- Tres Seaver, 2010/11/09\n\n- Ben Bangert, 2010/11/09\n\n- Blaise Laflamme, 2010/11/09\n\n- Chris Rossi, 2010/11/10\n\n- Casey Duncan, 2010/12/27\n\n- Rob Miller, 2010/12/28\n\n- Marius Gedminas, 2010/12/31\n\n- Marcin Lulek, 2011/01/02\n\n- John Shipman, 2011/01/15\n\n- Wichert Akkerman, 2011/01/19\n\n- Christopher Lambacher, 2011/02/12\n\n- Malthe Borch, 2011/02/28\n\n- Carlos de la Guardia, 2011/03/29\n\n- Joel Bohman, 2011/04/16\n\n- Juliusz Gonera, 2011/04/17\n\n- Philip Jenvey, 2011/04/24\n\n- Michael Merickel, 2011/5/25\n\n- Christoph Zwerschke, 2011/06/07\n\n- Atsushi Odagiri, 2011/07/02\n\n- Shane Hathaway, 2011/07/22\n\n- Manuel Hermann, 2011/07/11\n\n- Richard Barrell, 2011/11/07\n\n- Chris Shenton, 2011/11/07\n\n- Ken Manheimer, 2011/11/07\n\n- Reed O'Brien, 2011/11/07\n\n- Klee Dienes, 2011/10/30\n\n- Michael Ryabushin, 2011/12/14\n\n- Mike Orr, 2012/02/14\n\n- Paul M. Winkler, 2012/02/22\n\n- Martijn Pieters, 2012/03/02\n\n- Steve Piercy, 2012/03/27\n\n- Wayne Witzel III, 2012/03/27\n\n- Marin Rukavina, 2012/05/03\n\n- Marc Abramowitz, 2012/06/13\n\n- Jeff Cook, 2012/06/16\n\n- Ian Wilson, 2012/06/17\n\n- Roman Kozlovskyi, 2012/08/11\n",
            "header": {
                "file": {
                    "path": "CONTRIBUTORS.txt"
                },
                "misc_line": null
            },
            "index_line": {
                "old_commit_hash": "a2da7fbfd",
                "new_commit_hash": "e44117af3",
                "mode": "100644"
            },
            "is_binary_file": false,
            "binary_line": null,
            "minus_file": {
                "path": "a/CONTRIBUTORS.txt"
            },
            "plus_file": {
                "path": "b/CONTRIBUTORS.txt"
            },
            "hunks": [
                {
                    "descriptor": {
                        "old_range": {
                            "start": 177,
                            "length": 4
                        },
                        "new_range": {
                            "start": 177,
                            "length": 6
                        },
                        "section": "Contributors"
                    },
                    "line_group": {
                        "all_lines": [
                            {
                                "content": "",
                                "type": "context"
                            },
                            {
                                "content": "- Jeff Cook, 2012/06/16",
                                "type": "context"
                            },
                            {
                                "content": "",
                                "type": "context"
                            },
                            {
                                "content": "- Ian Wilson, 2012/06/17",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "- Roman Kozlovskyi, 2012/08/11",
                                "type": "context"
                            }
                        ]
                    },
                    "modified_entities": [],
                    "added_entities": [],
                    "deleted_entities": []
                }
            ]
        },
        {
            "old_file_content": "from hashlib import sha1\nimport base64\nimport binascii\nimport hmac\nimport time\nimport os\n\nfrom zope.interface import implementer\n\nfrom pyramid.compat import (\n    pickle,\n    PY3,\n    text_,\n    bytes_,\n    native_,\n    )\n\nfrom pyramid.interfaces import ISession\nfrom pyramid.util import strings_differ\n\ndef manage_accessed(wrapped):\n    \"\"\" Decorator which causes a cookie to be set when a wrapped\n    method is called\"\"\"\n    def accessed(session, *arg, **kw):\n        session.accessed = int(time.time())\n        if not session._dirty:\n            session._dirty = True\n            def set_cookie_callback(request, response):\n                session._set_cookie(response)\n                session.request = None # explicitly break cycle for gc\n            session.request.add_response_callback(set_cookie_callback)\n        return wrapped(session, *arg, **kw)\n    accessed.__doc__ = wrapped.__doc__\n    return accessed\n\ndef UnencryptedCookieSessionFactoryConfig(\n    secret,\n    timeout=1200,\n    cookie_name='session',\n    cookie_max_age=None,\n    cookie_path='/',\n    cookie_domain=None,\n    cookie_secure=False, \n    cookie_httponly=False,\n    cookie_on_exception=True,\n    ):\n    \"\"\"\n    Configure a :term:`session factory` which will provide unencrypted\n    (but signed) cookie-based sessions.  The return value of this\n    function is a :term:`session factory`, which may be provided as\n    the ``session_factory`` argument of a\n    :class:`pyramid.config.Configurator` constructor, or used\n    as the ``session_factory`` argument of the\n    :meth:`pyramid.config.Configurator.set_session_factory`\n    method.\n\n    The session factory returned by this function will create sessions\n    which are limited to storing fewer than 4000 bytes of data (as the\n    payload must fit into a single cookie).\n\n    Parameters:\n\n    ``secret``\n      A string which is used to sign the cookie.\n\n    ``timeout``\n      A number of seconds of inactivity before a session times out.\n\n    ``cookie_name``\n      The name of the cookie used for sessioning.  Default: ``session``.\n\n    ``cookie_max_age``\n      The maximum age of the cookie used for sessioning (in seconds).\n      Default: ``None`` (browser scope).\n\n    ``cookie_path``\n      The path used for the session cookie.  Default: ``/``.\n\n    ``cookie_domain``\n      The domain used for the session cookie.  Default: ``None`` (no domain).\n\n    ``cookie_secure``\n      The 'secure' flag of the session cookie.  Default: ``False``.\n\n    ``cookie_httponly``\n      The 'httpOnly' flag of the session cookie.  Default: ``False``.\n\n    ``cookie_on_exception``\n      If ``True``, set a session cookie even if an exception occurs\n      while rendering a view.  Default: ``True``.\n\n    \"\"\"\n\n    @implementer(ISession)\n    class UnencryptedCookieSessionFactory(dict):\n        \"\"\" Dictionary-like session object \"\"\"\n\n        # configuration parameters\n        _cookie_name = cookie_name\n        _cookie_max_age = cookie_max_age\n        _cookie_path = cookie_path\n        _cookie_domain = cookie_domain\n        _cookie_secure = cookie_secure\n        _cookie_httponly = cookie_httponly\n        _cookie_on_exception = cookie_on_exception\n        _secret = secret\n        _timeout = timeout\n\n        # dirty flag\n        _dirty = False\n\n        def __init__(self, request):\n            self.request = request\n            now = time.time()\n            created = accessed = now\n            new = True\n            value = None\n            state = {}\n            cookieval = request.cookies.get(self._cookie_name)\n            if cookieval is not None:\n                try:\n                    value = signed_deserialize(cookieval, self._secret)\n                except ValueError:\n                    value = None\n\n            if value is not None:\n                accessed, created, state = value\n                new = False\n                if now - accessed > self._timeout:\n                    state = {}\n\n            self.created = created\n            self.accessed = accessed\n            self.new = new\n            dict.__init__(self, state)\n\n        # ISession methods\n        def changed(self):\n            \"\"\" This is intentionally a noop; the session is\n            serialized on every access, so unnecessary\"\"\"\n            pass\n\n        def invalidate(self):\n            self.clear() # XXX probably needs to unset cookie\n\n        # non-modifying dictionary methods\n        get = manage_accessed(dict.get)\n        __getitem__ = manage_accessed(dict.__getitem__)\n        items = manage_accessed(dict.items)\n        values = manage_accessed(dict.values)\n        keys = manage_accessed(dict.keys)\n        __contains__ = manage_accessed(dict.__contains__)\n        __len__ = manage_accessed(dict.__len__)\n        __iter__ = manage_accessed(dict.__iter__)\n\n        if not PY3:\n            iteritems = manage_accessed(dict.iteritems)\n            itervalues = manage_accessed(dict.itervalues)\n            iterkeys = manage_accessed(dict.iterkeys)\n            has_key = manage_accessed(dict.has_key)\n\n        # modifying dictionary methods\n        clear = manage_accessed(dict.clear)\n        update = manage_accessed(dict.update)\n        setdefault = manage_accessed(dict.setdefault)\n        pop = manage_accessed(dict.pop)\n        popitem = manage_accessed(dict.popitem)\n        __setitem__ = manage_accessed(dict.__setitem__)\n        __delitem__ = manage_accessed(dict.__delitem__)\n\n        # flash API methods\n        @manage_accessed\n        def flash(self, msg, queue='', allow_duplicate=True):\n            storage = self.setdefault('_f_' + queue, [])\n            if allow_duplicate or (msg not in storage):\n                storage.append(msg)\n\n        @manage_accessed\n        def pop_flash(self, queue=''):\n            storage = self.pop('_f_' + queue, [])\n            return storage\n\n        @manage_accessed\n        def peek_flash(self, queue=''):\n            storage = self.get('_f_' + queue, [])\n            return storage\n\n        # CSRF API methods\n        @manage_accessed\n        def new_csrf_token(self):\n            token = text_(binascii.hexlify(os.urandom(20)))\n            self['_csrft_'] = token\n            return token\n\n        @manage_accessed\n        def get_csrf_token(self):\n            token = self.get('_csrft_', None)\n            if token is None:\n                token = self.new_csrf_token()\n            return token\n\n        # non-API methods\n        def _set_cookie(self, response):\n            if not self._cookie_on_exception:\n                exception = getattr(self.request, 'exception', None)\n                if exception is not None: # dont set a cookie during exceptions\n                    return False\n            cookieval = signed_serialize(\n                (self.accessed, self.created, dict(self)), self._secret\n                )\n            if len(cookieval) > 4064:\n                raise ValueError(\n                    'Cookie value is too long to store (%s bytes)' %\n                    len(cookieval)\n                    )\n            response.set_cookie(\n                self._cookie_name,\n                value=cookieval,\n                max_age = self._cookie_max_age,\n                path = self._cookie_path,\n                domain = self._cookie_domain,\n                secure = self._cookie_secure,\n                httponly = self._cookie_httponly,\n                )\n            return True\n\n    return UnencryptedCookieSessionFactory\n\ndef signed_serialize(data, secret):\n    \"\"\" Serialize any pickleable structure (``data``) and sign it\n    using the ``secret`` (must be a string).  Return the\n    serialization, which includes the signature as its first 40 bytes.\n    The ``signed_deserialize`` method will deserialize such a value.\n\n    This function is useful for creating signed cookies.  For example:\n\n    .. code-block:: python\n\n       cookieval = signed_serialize({'a':1}, 'secret')\n       response.set_cookie('signed_cookie', cookieval)\n    \"\"\"\n    pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)\n    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()\n    return sig + native_(base64.b64encode(pickled))\n\ndef signed_deserialize(serialized, secret, hmac=hmac):\n    \"\"\" Deserialize the value returned from ``signed_serialize``.  If\n    the value cannot be deserialized for any reason, a\n    :exc:`ValueError` exception will be raised.\n\n    This function is useful for deserializing a signed cookie value\n    created by ``signed_serialize``.  For example:\n\n    .. code-block:: python\n\n       cookieval = request.cookies['signed_cookie']\n       data = signed_deserialize(cookieval, 'secret')\n    \"\"\"\n    # hmac parameterized only for unit tests\n    try:\n        input_sig, pickled = (serialized[:40],\n                              base64.b64decode(bytes_(serialized[40:])))\n    except (binascii.Error, TypeError) as e:\n        # Badly formed data can make base64 die\n        raise ValueError('Badly formed base64 data: %s' % e)\n\n    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()\n\n    # Avoid timing attacks (see\n    # http://seb.dbzteam.org/crypto/python-oauth-timing-hmac.pdf)\n    if strings_differ(sig, input_sig):\n        raise ValueError('Invalid signature')\n\n    return pickle.loads(pickled)\n\n",
            "new_file_content": "from hashlib import sha1\nimport base64\nimport binascii\nimport hmac\nimport time\nimport os\n\nfrom zope.interface import implementer\n\nfrom pyramid.compat import (\n    pickle,\n    PY3,\n    text_,\n    bytes_,\n    native_,\n    )\n\nfrom pyramid.interfaces import ISession\nfrom pyramid.util import strings_differ\n\ndef manage_accessed(wrapped):\n    \"\"\" Decorator which causes a cookie to be set when a wrapped\n    method is called\"\"\"\n    def accessed(session, *arg, **kw):\n        session.accessed = int(time.time())\n        if not session._dirty:\n            session._dirty = True\n            def set_cookie_callback(request, response):\n                session._set_cookie(response)\n                session.request = None # explicitly break cycle for gc\n            session.request.add_response_callback(set_cookie_callback)\n        return wrapped(session, *arg, **kw)\n    accessed.__doc__ = wrapped.__doc__\n    return accessed\n\ndef signed_serialize(data, secret):\n    \"\"\" Serialize any pickleable structure (``data``) and sign it\n    using the ``secret`` (must be a string).  Return the\n    serialization, which includes the signature as its first 40 bytes.\n    The ``signed_deserialize`` method will deserialize such a value.\n\n    This function is useful for creating signed cookies.  For example:\n\n    .. code-block:: python\n\n       cookieval = signed_serialize({'a':1}, 'secret')\n       response.set_cookie('signed_cookie', cookieval)\n    \"\"\"\n    pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)\n    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()\n    return sig + native_(base64.b64encode(pickled))\n\ndef signed_deserialize(serialized, secret, hmac=hmac):\n    \"\"\" Deserialize the value returned from ``signed_serialize``.  If\n    the value cannot be deserialized for any reason, a\n    :exc:`ValueError` exception will be raised.\n\n    This function is useful for deserializing a signed cookie value\n    created by ``signed_serialize``.  For example:\n\n    .. code-block:: python\n\n       cookieval = request.cookies['signed_cookie']\n       data = signed_deserialize(cookieval, 'secret')\n    \"\"\"\n    # hmac parameterized only for unit tests\n    try:\n        input_sig, pickled = (serialized[:40],\n                              base64.b64decode(bytes_(serialized[40:])))\n    except (binascii.Error, TypeError) as e:\n        # Badly formed data can make base64 die\n        raise ValueError('Badly formed base64 data: %s' % e)\n\n    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()\n\n    # Avoid timing attacks (see\n    # http://seb.dbzteam.org/crypto/python-oauth-timing-hmac.pdf)\n    if strings_differ(sig, input_sig):\n        raise ValueError('Invalid signature')\n\n    return pickle.loads(pickled)\n\ndef UnencryptedCookieSessionFactoryConfig(\n    secret,\n    timeout=1200,\n    cookie_name='session',\n    cookie_max_age=None,\n    cookie_path='/',\n    cookie_domain=None,\n    cookie_secure=False, \n    cookie_httponly=False,\n    cookie_on_exception=True,\n    signed_serialize=signed_serialize,\n    signed_deserialize=signed_deserialize,\n    ):\n    \"\"\"\n    Configure a :term:`session factory` which will provide unencrypted\n    (but signed) cookie-based sessions.  The return value of this\n    function is a :term:`session factory`, which may be provided as\n    the ``session_factory`` argument of a\n    :class:`pyramid.config.Configurator` constructor, or used\n    as the ``session_factory`` argument of the\n    :meth:`pyramid.config.Configurator.set_session_factory`\n    method.\n\n    The session factory returned by this function will create sessions\n    which are limited to storing fewer than 4000 bytes of data (as the\n    payload must fit into a single cookie).\n\n    Parameters:\n\n    ``secret``\n      A string which is used to sign the cookie.\n\n    ``timeout``\n      A number of seconds of inactivity before a session times out.\n\n    ``cookie_name``\n      The name of the cookie used for sessioning.  Default: ``session``.\n\n    ``cookie_max_age``\n      The maximum age of the cookie used for sessioning (in seconds).\n      Default: ``None`` (browser scope).\n\n    ``cookie_path``\n      The path used for the session cookie.  Default: ``/``.\n\n    ``cookie_domain``\n      The domain used for the session cookie.  Default: ``None`` (no domain).\n\n    ``cookie_secure``\n      The 'secure' flag of the session cookie.  Default: ``False``.\n\n    ``cookie_httponly``\n      The 'httpOnly' flag of the session cookie.  Default: ``False``.\n\n    ``cookie_on_exception``\n      If ``True``, set a session cookie even if an exception occurs\n      while rendering a view.  Default: ``True``.\n\n    ``signed_serialize``\n      A callable which takes more or less arbitrary python data structure and\n      a secret and returns a signed serialization in bytes.\n      Default: ``signed_serialize`` (using pickle).\n\n    ``signed_deserialize``\n      A callable which takes a signed and serialized data structure in bytes\n      and a secret and returns the original data structure if the signature\n      is valid. Default: ``signed_deserialize`` (using pickle).\n    \"\"\"\n\n    @implementer(ISession)\n    class UnencryptedCookieSessionFactory(dict):\n        \"\"\" Dictionary-like session object \"\"\"\n\n        # configuration parameters\n        _cookie_name = cookie_name\n        _cookie_max_age = cookie_max_age\n        _cookie_path = cookie_path\n        _cookie_domain = cookie_domain\n        _cookie_secure = cookie_secure\n        _cookie_httponly = cookie_httponly\n        _cookie_on_exception = cookie_on_exception\n        _secret = secret\n        _timeout = timeout\n\n        # dirty flag\n        _dirty = False\n\n        def __init__(self, request):\n            self.request = request\n            now = time.time()\n            created = accessed = now\n            new = True\n            value = None\n            state = {}\n            cookieval = request.cookies.get(self._cookie_name)\n            if cookieval is not None:\n                try:\n                    value = signed_deserialize(cookieval, self._secret)\n                except ValueError:\n                    value = None\n\n            if value is not None:\n                accessed, created, state = value\n                new = False\n                if now - accessed > self._timeout:\n                    state = {}\n\n            self.created = created\n            self.accessed = accessed\n            self.new = new\n            dict.__init__(self, state)\n\n        # ISession methods\n        def changed(self):\n            \"\"\" This is intentionally a noop; the session is\n            serialized on every access, so unnecessary\"\"\"\n            pass\n\n        def invalidate(self):\n            self.clear() # XXX probably needs to unset cookie\n\n        # non-modifying dictionary methods\n        get = manage_accessed(dict.get)\n        __getitem__ = manage_accessed(dict.__getitem__)\n        items = manage_accessed(dict.items)\n        values = manage_accessed(dict.values)\n        keys = manage_accessed(dict.keys)\n        __contains__ = manage_accessed(dict.__contains__)\n        __len__ = manage_accessed(dict.__len__)\n        __iter__ = manage_accessed(dict.__iter__)\n\n        if not PY3:\n            iteritems = manage_accessed(dict.iteritems)\n            itervalues = manage_accessed(dict.itervalues)\n            iterkeys = manage_accessed(dict.iterkeys)\n            has_key = manage_accessed(dict.has_key)\n\n        # modifying dictionary methods\n        clear = manage_accessed(dict.clear)\n        update = manage_accessed(dict.update)\n        setdefault = manage_accessed(dict.setdefault)\n        pop = manage_accessed(dict.pop)\n        popitem = manage_accessed(dict.popitem)\n        __setitem__ = manage_accessed(dict.__setitem__)\n        __delitem__ = manage_accessed(dict.__delitem__)\n\n        # flash API methods\n        @manage_accessed\n        def flash(self, msg, queue='', allow_duplicate=True):\n            storage = self.setdefault('_f_' + queue, [])\n            if allow_duplicate or (msg not in storage):\n                storage.append(msg)\n\n        @manage_accessed\n        def pop_flash(self, queue=''):\n            storage = self.pop('_f_' + queue, [])\n            return storage\n\n        @manage_accessed\n        def peek_flash(self, queue=''):\n            storage = self.get('_f_' + queue, [])\n            return storage\n\n        # CSRF API methods\n        @manage_accessed\n        def new_csrf_token(self):\n            token = text_(binascii.hexlify(os.urandom(20)))\n            self['_csrft_'] = token\n            return token\n\n        @manage_accessed\n        def get_csrf_token(self):\n            token = self.get('_csrft_', None)\n            if token is None:\n                token = self.new_csrf_token()\n            return token\n\n        # non-API methods\n        def _set_cookie(self, response):\n            if not self._cookie_on_exception:\n                exception = getattr(self.request, 'exception', None)\n                if exception is not None: # dont set a cookie during exceptions\n                    return False\n            cookieval = signed_serialize(\n                (self.accessed, self.created, dict(self)), self._secret\n                )\n            if len(cookieval) > 4064:\n                raise ValueError(\n                    'Cookie value is too long to store (%s bytes)' %\n                    len(cookieval)\n                    )\n            response.set_cookie(\n                self._cookie_name,\n                value=cookieval,\n                max_age = self._cookie_max_age,\n                path = self._cookie_path,\n                domain = self._cookie_domain,\n                secure = self._cookie_secure,\n                httponly = self._cookie_httponly,\n                )\n            return True\n\n    return UnencryptedCookieSessionFactory\n",
            "header": {
                "file": {
                    "path": "pyramid/session.py"
                },
                "misc_line": null
            },
            "index_line": {
                "old_commit_hash": "76b2b30b1",
                "new_commit_hash": "40e21ddbc",
                "mode": "100644"
            },
            "is_binary_file": false,
            "binary_line": null,
            "minus_file": {
                "path": "a/pyramid/session.py"
            },
            "plus_file": {
                "path": "b/pyramid/session.py"
            },
            "hunks": [
                {
                    "descriptor": {
                        "old_range": {
                            "start": 33,
                            "length": 6
                        },
                        "new_range": {
                            "start": 33,
                            "length": 53
                        },
                        "section": "def manage_accessed(wrapped):"
                    },
                    "line_group": {
                        "all_lines": [
                            {
                                "content": "    accessed.__doc__ = wrapped.__doc__",
                                "type": "context"
                            },
                            {
                                "content": "    return accessed",
                                "type": "context"
                            },
                            {
                                "content": "",
                                "type": "context"
                            },
                            {
                                "content": "def signed_serialize(data, secret):",
                                "type": "added"
                            },
                            {
                                "content": "    \"\"\" Serialize any pickleable structure (``data``) and sign it",
                                "type": "added"
                            },
                            {
                                "content": "    using the ``secret`` (must be a string).  Return the",
                                "type": "added"
                            },
                            {
                                "content": "    serialization, which includes the signature as its first 40 bytes.",
                                "type": "added"
                            },
                            {
                                "content": "    The ``signed_deserialize`` method will deserialize such a value.",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "    This function is useful for creating signed cookies.  For example:",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "    .. code-block:: python",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "       cookieval = signed_serialize({'a':1}, 'secret')",
                                "type": "added"
                            },
                            {
                                "content": "       response.set_cookie('signed_cookie', cookieval)",
                                "type": "added"
                            },
                            {
                                "content": "    \"\"\"",
                                "type": "added"
                            },
                            {
                                "content": "    pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)",
                                "type": "added"
                            },
                            {
                                "content": "    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()",
                                "type": "added"
                            },
                            {
                                "content": "    return sig + native_(base64.b64encode(pickled))",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "def signed_deserialize(serialized, secret, hmac=hmac):",
                                "type": "added"
                            },
                            {
                                "content": "    \"\"\" Deserialize the value returned from ``signed_serialize``.  If",
                                "type": "added"
                            },
                            {
                                "content": "    the value cannot be deserialized for any reason, a",
                                "type": "added"
                            },
                            {
                                "content": "    :exc:`ValueError` exception will be raised.",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "    This function is useful for deserializing a signed cookie value",
                                "type": "added"
                            },
                            {
                                "content": "    created by ``signed_serialize``.  For example:",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "    .. code-block:: python",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "       cookieval = request.cookies['signed_cookie']",
                                "type": "added"
                            },
                            {
                                "content": "       data = signed_deserialize(cookieval, 'secret')",
                                "type": "added"
                            },
                            {
                                "content": "    \"\"\"",
                                "type": "added"
                            },
                            {
                                "content": "    # hmac parameterized only for unit tests",
                                "type": "added"
                            },
                            {
                                "content": "    try:",
                                "type": "added"
                            },
                            {
                                "content": "        input_sig, pickled = (serialized[:40],",
                                "type": "added"
                            },
                            {
                                "content": "                              base64.b64decode(bytes_(serialized[40:])))",
                                "type": "added"
                            },
                            {
                                "content": "    except (binascii.Error, TypeError) as e:",
                                "type": "added"
                            },
                            {
                                "content": "        # Badly formed data can make base64 die",
                                "type": "added"
                            },
                            {
                                "content": "        raise ValueError('Badly formed base64 data: %s' % e)",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "    # Avoid timing attacks (see",
                                "type": "added"
                            },
                            {
                                "content": "    # http://seb.dbzteam.org/crypto/python-oauth-timing-hmac.pdf)",
                                "type": "added"
                            },
                            {
                                "content": "    if strings_differ(sig, input_sig):",
                                "type": "added"
                            },
                            {
                                "content": "        raise ValueError('Invalid signature')",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "    return pickle.loads(pickled)",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "def UnencryptedCookieSessionFactoryConfig(",
                                "type": "context"
                            },
                            {
                                "content": "    secret,",
                                "type": "context"
                            },
                            {
                                "content": "    timeout=1200,",
                                "type": "context"
                            }
                        ]
                    },
                    "modified_entities": [
                        {
                            "file_name": "pyramid/session.py",
                            "type": "function",
                            "name": "signed_deserialize",
                            "content": "def signed_deserialize(serialized, secret, hmac=hmac):\n    \"\"\" Deserialize the value returned from ``signed_serialize``.  If\n    the value cannot be deserialized for any reason, a\n    :exc:`ValueError` exception will be raised.\n\n    This function is useful for deserializing a signed cookie value\n    created by ``signed_serialize``.  For example:\n\n    .. code-block:: python\n\n       cookieval = request.cookies['signed_cookie']\n       data = signed_deserialize(cookieval, 'secret')\n    \"\"\"\n    # hmac parameterized only for unit tests\n    try:\n        input_sig, pickled = (serialized[:40],\n                              base64.b64decode(bytes_(serialized[40:])))\n    except (binascii.Error, TypeError) as e:\n        # Badly formed data can make base64 die\n        raise ValueError('Badly formed base64 data: %s' % e)\n\n    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()\n\n    # Avoid timing attacks (see\n    # http://seb.dbzteam.org/crypto/python-oauth-timing-hmac.pdf)\n    if strings_differ(sig, input_sig):\n        raise ValueError('Invalid signature')\n\n    return pickle.loads(pickled)",
                            "ast_type_str": "FunctionDef",
                            "start_lineno": 53,
                            "end_lineno": 81,
                            "parent": null
                        },
                        {
                            "file_name": "pyramid/session.py",
                            "type": "function",
                            "name": "signed_serialize",
                            "content": "def signed_serialize(data, secret):\n    \"\"\" Serialize any pickleable structure (``data``) and sign it\n    using the ``secret`` (must be a string).  Return the\n    serialization, which includes the signature as its first 40 bytes.\n    The ``signed_deserialize`` method will deserialize such a value.\n\n    This function is useful for creating signed cookies.  For example:\n\n    .. code-block:: python\n\n       cookieval = signed_serialize({'a':1}, 'secret')\n       response.set_cookie('signed_cookie', cookieval)\n    \"\"\"\n    pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)\n    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()\n    return sig + native_(base64.b64encode(pickled))",
                            "ast_type_str": "FunctionDef",
                            "start_lineno": 36,
                            "end_lineno": 51,
                            "parent": null
                        }
                    ],
                    "added_entities": [],
                    "deleted_entities": []
                },
                {
                    "descriptor": {
                        "old_range": {
                            "start": 43,
                            "length": 6
                        },
                        "new_range": {
                            "start": 90,
                            "length": 8
                        },
                        "section": "def UnencryptedCookieSessionFactoryConfig("
                    },
                    "line_group": {
                        "all_lines": [
                            {
                                "content": "    cookie_secure=False, ",
                                "type": "context"
                            },
                            {
                                "content": "    cookie_httponly=False,",
                                "type": "context"
                            },
                            {
                                "content": "    cookie_on_exception=True,",
                                "type": "context"
                            },
                            {
                                "content": "    signed_serialize=signed_serialize,",
                                "type": "added"
                            },
                            {
                                "content": "    signed_deserialize=signed_deserialize,",
                                "type": "added"
                            },
                            {
                                "content": "    ):",
                                "type": "context"
                            },
                            {
                                "content": "    \"\"\"",
                                "type": "context"
                            },
                            {
                                "content": "    Configure a :term:`session factory` which will provide unencrypted",
                                "type": "context"
                            }
                        ]
                    },
                    "modified_entities": [
                        {
                            "file_name": "pyramid/session.py",
                            "type": "function",
                            "name": "UnencryptedCookieSessionFactoryConfig",
                            "content": "def UnencryptedCookieSessionFactoryConfig(\n    secret,\n    timeout=1200,\n    cookie_name='session',\n    cookie_max_age=None,\n    cookie_path='/',\n    cookie_domain=None,\n    cookie_secure=False, \n    cookie_httponly=False,\n    cookie_on_exception=True,\n    signed_serialize=signed_serialize,\n    signed_deserialize=signed_deserialize,\n    ):\n    \"\"\"\n    Configure a :term:`session factory` which will provide unencrypted\n    (but signed) cookie-based sessions.  The return value of this\n    function is a :term:`session factory`, which may be provided as\n    the ``session_factory`` argument of a\n    :class:`pyramid.config.Configurator` constructor, or used\n    as the ``session_factory`` argument of the\n    :meth:`pyramid.config.Configurator.set_session_factory`\n    method.\n\n    The session factory returned by this function will create sessions\n    which are limited to storing fewer than 4000 bytes of data (as the\n    payload must fit into a single cookie).\n\n    Parameters:\n\n    ``secret``\n      A string which is used to sign the cookie.\n\n    ``timeout``\n      A number of seconds of inactivity before a session times out.\n\n    ``cookie_name``\n      The name of the cookie used for sessioning.  Default: ``session``.\n\n    ``cookie_max_age``\n      The maximum age of the cookie used for sessioning (in seconds).\n      Default: ``None`` (browser scope).\n\n    ``cookie_path``\n      The path used for the session cookie.  Default: ``/``.\n\n    ``cookie_domain``\n      The domain used for the session cookie.  Default: ``None`` (no domain).\n\n    ``cookie_secure``\n      The 'secure' flag of the session cookie.  Default: ``False``.\n\n    ``cookie_httponly``\n      The 'httpOnly' flag of the session cookie.  Default: ``False``.\n\n    ``cookie_on_exception``\n      If ``True``, set a session cookie even if an exception occurs\n      while rendering a view.  Default: ``True``.\n\n    ``signed_serialize``\n      A callable which takes more or less arbitrary python data structure and\n      a secret and returns a signed serialization in bytes.\n      Default: ``signed_serialize`` (using pickle).\n\n    ``signed_deserialize``\n      A callable which takes a signed and serialized data structure in bytes\n      and a secret and returns the original data structure if the signature\n      is valid. Default: ``signed_deserialize`` (using pickle).\n    \"\"\"\n\n    @implementer(ISession)\n    class UnencryptedCookieSessionFactory(dict):\n        \"\"\" Dictionary-like session object \"\"\"\n\n        # configuration parameters\n        _cookie_name = cookie_name\n        _cookie_max_age = cookie_max_age\n        _cookie_path = cookie_path\n        _cookie_domain = cookie_domain\n        _cookie_secure = cookie_secure\n        _cookie_httponly = cookie_httponly\n        _cookie_on_exception = cookie_on_exception\n        _secret = secret\n        _timeout = timeout\n\n        # dirty flag\n        _dirty = False\n\n        def __init__(self, request):\n            self.request = request\n            now = time.time()\n            created = accessed = now\n            new = True\n            value = None\n            state = {}\n            cookieval = request.cookies.get(self._cookie_name)\n            if cookieval is not None:\n                try:\n                    value = signed_deserialize(cookieval, self._secret)\n                except ValueError:\n                    value = None\n\n            if value is not None:\n                accessed, created, state = value\n                new = False\n                if now - accessed > self._timeout:\n                    state = {}\n\n            self.created = created\n            self.accessed = accessed\n            self.new = new\n            dict.__init__(self, state)\n\n        # ISession methods\n        def changed(self):\n            \"\"\" This is intentionally a noop; the session is\n            serialized on every access, so unnecessary\"\"\"\n            pass\n\n        def invalidate(self):\n            self.clear() # XXX probably needs to unset cookie\n\n        # non-modifying dictionary methods\n        get = manage_accessed(dict.get)\n        __getitem__ = manage_accessed(dict.__getitem__)\n        items = manage_accessed(dict.items)\n        values = manage_accessed(dict.values)\n        keys = manage_accessed(dict.keys)\n        __contains__ = manage_accessed(dict.__contains__)\n        __len__ = manage_accessed(dict.__len__)\n        __iter__ = manage_accessed(dict.__iter__)\n\n        if not PY3:\n            iteritems = manage_accessed(dict.iteritems)\n            itervalues = manage_accessed(dict.itervalues)\n            iterkeys = manage_accessed(dict.iterkeys)\n            has_key = manage_accessed(dict.has_key)\n\n        # modifying dictionary methods\n        clear = manage_accessed(dict.clear)\n        update = manage_accessed(dict.update)\n        setdefault = manage_accessed(dict.setdefault)\n        pop = manage_accessed(dict.pop)\n        popitem = manage_accessed(dict.popitem)\n        __setitem__ = manage_accessed(dict.__setitem__)\n        __delitem__ = manage_accessed(dict.__delitem__)\n\n        # flash API methods\n        @manage_accessed\n        def flash(self, msg, queue='', allow_duplicate=True):\n            storage = self.setdefault('_f_' + queue, [])\n            if allow_duplicate or (msg not in storage):\n                storage.append(msg)\n\n        @manage_accessed\n        def pop_flash(self, queue=''):\n            storage = self.pop('_f_' + queue, [])\n            return storage\n\n        @manage_accessed\n        def peek_flash(self, queue=''):\n            storage = self.get('_f_' + queue, [])\n            return storage\n\n        # CSRF API methods\n        @manage_accessed\n        def new_csrf_token(self):\n            token = text_(binascii.hexlify(os.urandom(20)))\n            self['_csrft_'] = token\n            return token\n\n        @manage_accessed\n        def get_csrf_token(self):\n            token = self.get('_csrft_', None)\n            if token is None:\n                token = self.new_csrf_token()\n            return token\n\n        # non-API methods\n        def _set_cookie(self, response):\n            if not self._cookie_on_exception:\n                exception = getattr(self.request, 'exception', None)\n                if exception is not None: # dont set a cookie during exceptions\n                    return False\n            cookieval = signed_serialize(\n                (self.accessed, self.created, dict(self)), self._secret\n                )\n            if len(cookieval) > 4064:\n                raise ValueError(\n                    'Cookie value is too long to store (%s bytes)' %\n                    len(cookieval)\n                    )\n            response.set_cookie(\n                self._cookie_name,\n                value=cookieval,\n                max_age = self._cookie_max_age,\n                path = self._cookie_path,\n                domain = self._cookie_domain,\n                secure = self._cookie_secure,\n                httponly = self._cookie_httponly,\n                )\n            return True\n\n    return UnencryptedCookieSessionFactory",
                            "ast_type_str": "FunctionDef",
                            "start_lineno": 83,
                            "end_lineno": 285,
                            "parent": null
                        }
                    ],
                    "added_entities": [],
                    "deleted_entities": []
                },
                {
                    "descriptor": {
                        "old_range": {
                            "start": 89,
                            "length": 6
                        },
                        "new_range": {
                            "start": 138,
                            "length": 15
                        },
                        "section": "def UnencryptedCookieSessionFactoryConfig("
                    },
                    "line_group": {
                        "all_lines": [
                            {
                                "content": "      If ``True``, set a session cookie even if an exception occurs",
                                "type": "context"
                            },
                            {
                                "content": "      while rendering a view.  Default: ``True``.",
                                "type": "context"
                            },
                            {
                                "content": "",
                                "type": "context"
                            },
                            {
                                "content": "    ``signed_serialize``",
                                "type": "added"
                            },
                            {
                                "content": "      A callable which takes more or less arbitrary python data structure and",
                                "type": "added"
                            },
                            {
                                "content": "      a secret and returns a signed serialization in bytes.",
                                "type": "added"
                            },
                            {
                                "content": "      Default: ``signed_serialize`` (using pickle).",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "    ``signed_deserialize``",
                                "type": "added"
                            },
                            {
                                "content": "      A callable which takes a signed and serialized data structure in bytes",
                                "type": "added"
                            },
                            {
                                "content": "      and a secret and returns the original data structure if the signature",
                                "type": "added"
                            },
                            {
                                "content": "      is valid. Default: ``signed_deserialize`` (using pickle).",
                                "type": "added"
                            },
                            {
                                "content": "    \"\"\"",
                                "type": "context"
                            },
                            {
                                "content": "",
                                "type": "context"
                            },
                            {
                                "content": "    @implementer(ISession)",
                                "type": "context"
                            }
                        ]
                    },
                    "modified_entities": [
                        {
                            "file_name": "pyramid/session.py",
                            "type": "function",
                            "name": "UnencryptedCookieSessionFactoryConfig",
                            "content": "def UnencryptedCookieSessionFactoryConfig(\n    secret,\n    timeout=1200,\n    cookie_name='session',\n    cookie_max_age=None,\n    cookie_path='/',\n    cookie_domain=None,\n    cookie_secure=False, \n    cookie_httponly=False,\n    cookie_on_exception=True,\n    signed_serialize=signed_serialize,\n    signed_deserialize=signed_deserialize,\n    ):\n    \"\"\"\n    Configure a :term:`session factory` which will provide unencrypted\n    (but signed) cookie-based sessions.  The return value of this\n    function is a :term:`session factory`, which may be provided as\n    the ``session_factory`` argument of a\n    :class:`pyramid.config.Configurator` constructor, or used\n    as the ``session_factory`` argument of the\n    :meth:`pyramid.config.Configurator.set_session_factory`\n    method.\n\n    The session factory returned by this function will create sessions\n    which are limited to storing fewer than 4000 bytes of data (as the\n    payload must fit into a single cookie).\n\n    Parameters:\n\n    ``secret``\n      A string which is used to sign the cookie.\n\n    ``timeout``\n      A number of seconds of inactivity before a session times out.\n\n    ``cookie_name``\n      The name of the cookie used for sessioning.  Default: ``session``.\n\n    ``cookie_max_age``\n      The maximum age of the cookie used for sessioning (in seconds).\n      Default: ``None`` (browser scope).\n\n    ``cookie_path``\n      The path used for the session cookie.  Default: ``/``.\n\n    ``cookie_domain``\n      The domain used for the session cookie.  Default: ``None`` (no domain).\n\n    ``cookie_secure``\n      The 'secure' flag of the session cookie.  Default: ``False``.\n\n    ``cookie_httponly``\n      The 'httpOnly' flag of the session cookie.  Default: ``False``.\n\n    ``cookie_on_exception``\n      If ``True``, set a session cookie even if an exception occurs\n      while rendering a view.  Default: ``True``.\n\n    ``signed_serialize``\n      A callable which takes more or less arbitrary python data structure and\n      a secret and returns a signed serialization in bytes.\n      Default: ``signed_serialize`` (using pickle).\n\n    ``signed_deserialize``\n      A callable which takes a signed and serialized data structure in bytes\n      and a secret and returns the original data structure if the signature\n      is valid. Default: ``signed_deserialize`` (using pickle).\n    \"\"\"\n\n    @implementer(ISession)\n    class UnencryptedCookieSessionFactory(dict):\n        \"\"\" Dictionary-like session object \"\"\"\n\n        # configuration parameters\n        _cookie_name = cookie_name\n        _cookie_max_age = cookie_max_age\n        _cookie_path = cookie_path\n        _cookie_domain = cookie_domain\n        _cookie_secure = cookie_secure\n        _cookie_httponly = cookie_httponly\n        _cookie_on_exception = cookie_on_exception\n        _secret = secret\n        _timeout = timeout\n\n        # dirty flag\n        _dirty = False\n\n        def __init__(self, request):\n            self.request = request\n            now = time.time()\n            created = accessed = now\n            new = True\n            value = None\n            state = {}\n            cookieval = request.cookies.get(self._cookie_name)\n            if cookieval is not None:\n                try:\n                    value = signed_deserialize(cookieval, self._secret)\n                except ValueError:\n                    value = None\n\n            if value is not None:\n                accessed, created, state = value\n                new = False\n                if now - accessed > self._timeout:\n                    state = {}\n\n            self.created = created\n            self.accessed = accessed\n            self.new = new\n            dict.__init__(self, state)\n\n        # ISession methods\n        def changed(self):\n            \"\"\" This is intentionally a noop; the session is\n            serialized on every access, so unnecessary\"\"\"\n            pass\n\n        def invalidate(self):\n            self.clear() # XXX probably needs to unset cookie\n\n        # non-modifying dictionary methods\n        get = manage_accessed(dict.get)\n        __getitem__ = manage_accessed(dict.__getitem__)\n        items = manage_accessed(dict.items)\n        values = manage_accessed(dict.values)\n        keys = manage_accessed(dict.keys)\n        __contains__ = manage_accessed(dict.__contains__)\n        __len__ = manage_accessed(dict.__len__)\n        __iter__ = manage_accessed(dict.__iter__)\n\n        if not PY3:\n            iteritems = manage_accessed(dict.iteritems)\n            itervalues = manage_accessed(dict.itervalues)\n            iterkeys = manage_accessed(dict.iterkeys)\n            has_key = manage_accessed(dict.has_key)\n\n        # modifying dictionary methods\n        clear = manage_accessed(dict.clear)\n        update = manage_accessed(dict.update)\n        setdefault = manage_accessed(dict.setdefault)\n        pop = manage_accessed(dict.pop)\n        popitem = manage_accessed(dict.popitem)\n        __setitem__ = manage_accessed(dict.__setitem__)\n        __delitem__ = manage_accessed(dict.__delitem__)\n\n        # flash API methods\n        @manage_accessed\n        def flash(self, msg, queue='', allow_duplicate=True):\n            storage = self.setdefault('_f_' + queue, [])\n            if allow_duplicate or (msg not in storage):\n                storage.append(msg)\n\n        @manage_accessed\n        def pop_flash(self, queue=''):\n            storage = self.pop('_f_' + queue, [])\n            return storage\n\n        @manage_accessed\n        def peek_flash(self, queue=''):\n            storage = self.get('_f_' + queue, [])\n            return storage\n\n        # CSRF API methods\n        @manage_accessed\n        def new_csrf_token(self):\n            token = text_(binascii.hexlify(os.urandom(20)))\n            self['_csrft_'] = token\n            return token\n\n        @manage_accessed\n        def get_csrf_token(self):\n            token = self.get('_csrft_', None)\n            if token is None:\n                token = self.new_csrf_token()\n            return token\n\n        # non-API methods\n        def _set_cookie(self, response):\n            if not self._cookie_on_exception:\n                exception = getattr(self.request, 'exception', None)\n                if exception is not None: # dont set a cookie during exceptions\n                    return False\n            cookieval = signed_serialize(\n                (self.accessed, self.created, dict(self)), self._secret\n                )\n            if len(cookieval) > 4064:\n                raise ValueError(\n                    'Cookie value is too long to store (%s bytes)' %\n                    len(cookieval)\n                    )\n            response.set_cookie(\n                self._cookie_name,\n                value=cookieval,\n                max_age = self._cookie_max_age,\n                path = self._cookie_path,\n                domain = self._cookie_domain,\n                secure = self._cookie_secure,\n                httponly = self._cookie_httponly,\n                )\n            return True\n\n    return UnencryptedCookieSessionFactory",
                            "ast_type_str": "FunctionDef",
                            "start_lineno": 83,
                            "end_lineno": 285,
                            "parent": null
                        }
                    ],
                    "added_entities": [],
                    "deleted_entities": []
                },
                {
                    "descriptor": {
                        "old_range": {
                            "start": 225,
                            "length": 51
                        },
                        "new_range": {
                            "start": 283,
                            "length": 3
                        },
                        "section": "def UnencryptedCookieSessionFactoryConfig("
                    },
                    "line_group": {
                        "all_lines": [
                            {
                                "content": "            return True",
                                "type": "context"
                            },
                            {
                                "content": "",
                                "type": "context"
                            },
                            {
                                "content": "    return UnencryptedCookieSessionFactory",
                                "type": "context"
                            },
                            {
                                "content": "",
                                "type": "deleted"
                            },
                            {
                                "content": "def signed_serialize(data, secret):",
                                "type": "deleted"
                            },
                            {
                                "content": "    \"\"\" Serialize any pickleable structure (``data``) and sign it",
                                "type": "deleted"
                            },
                            {
                                "content": "    using the ``secret`` (must be a string).  Return the",
                                "type": "deleted"
                            },
                            {
                                "content": "    serialization, which includes the signature as its first 40 bytes.",
                                "type": "deleted"
                            },
                            {
                                "content": "    The ``signed_deserialize`` method will deserialize such a value.",
                                "type": "deleted"
                            },
                            {
                                "content": "",
                                "type": "deleted"
                            },
                            {
                                "content": "    This function is useful for creating signed cookies.  For example:",
                                "type": "deleted"
                            },
                            {
                                "content": "",
                                "type": "deleted"
                            },
                            {
                                "content": "    .. code-block:: python",
                                "type": "deleted"
                            },
                            {
                                "content": "",
                                "type": "deleted"
                            },
                            {
                                "content": "       cookieval = signed_serialize({'a':1}, 'secret')",
                                "type": "deleted"
                            },
                            {
                                "content": "       response.set_cookie('signed_cookie', cookieval)",
                                "type": "deleted"
                            },
                            {
                                "content": "    \"\"\"",
                                "type": "deleted"
                            },
                            {
                                "content": "    pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)",
                                "type": "deleted"
                            },
                            {
                                "content": "    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()",
                                "type": "deleted"
                            },
                            {
                                "content": "    return sig + native_(base64.b64encode(pickled))",
                                "type": "deleted"
                            },
                            {
                                "content": "",
                                "type": "deleted"
                            },
                            {
                                "content": "def signed_deserialize(serialized, secret, hmac=hmac):",
                                "type": "deleted"
                            },
                            {
                                "content": "    \"\"\" Deserialize the value returned from ``signed_serialize``.  If",
                                "type": "deleted"
                            },
                            {
                                "content": "    the value cannot be deserialized for any reason, a",
                                "type": "deleted"
                            },
                            {
                                "content": "    :exc:`ValueError` exception will be raised.",
                                "type": "deleted"
                            },
                            {
                                "content": "",
                                "type": "deleted"
                            },
                            {
                                "content": "    This function is useful for deserializing a signed cookie value",
                                "type": "deleted"
                            },
                            {
                                "content": "    created by ``signed_serialize``.  For example:",
                                "type": "deleted"
                            },
                            {
                                "content": "",
                                "type": "deleted"
                            },
                            {
                                "content": "    .. code-block:: python",
                                "type": "deleted"
                            },
                            {
                                "content": "",
                                "type": "deleted"
                            },
                            {
                                "content": "       cookieval = request.cookies['signed_cookie']",
                                "type": "deleted"
                            },
                            {
                                "content": "       data = signed_deserialize(cookieval, 'secret')",
                                "type": "deleted"
                            },
                            {
                                "content": "    \"\"\"",
                                "type": "deleted"
                            },
                            {
                                "content": "    # hmac parameterized only for unit tests",
                                "type": "deleted"
                            },
                            {
                                "content": "    try:",
                                "type": "deleted"
                            },
                            {
                                "content": "        input_sig, pickled = (serialized[:40],",
                                "type": "deleted"
                            },
                            {
                                "content": "                              base64.b64decode(bytes_(serialized[40:])))",
                                "type": "deleted"
                            },
                            {
                                "content": "    except (binascii.Error, TypeError) as e:",
                                "type": "deleted"
                            },
                            {
                                "content": "        # Badly formed data can make base64 die",
                                "type": "deleted"
                            },
                            {
                                "content": "        raise ValueError('Badly formed base64 data: %s' % e)",
                                "type": "deleted"
                            },
                            {
                                "content": "",
                                "type": "deleted"
                            },
                            {
                                "content": "    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()",
                                "type": "deleted"
                            },
                            {
                                "content": "",
                                "type": "deleted"
                            },
                            {
                                "content": "    # Avoid timing attacks (see",
                                "type": "deleted"
                            },
                            {
                                "content": "    # http://seb.dbzteam.org/crypto/python-oauth-timing-hmac.pdf)",
                                "type": "deleted"
                            },
                            {
                                "content": "    if strings_differ(sig, input_sig):",
                                "type": "deleted"
                            },
                            {
                                "content": "        raise ValueError('Invalid signature')",
                                "type": "deleted"
                            },
                            {
                                "content": "",
                                "type": "deleted"
                            },
                            {
                                "content": "    return pickle.loads(pickled)",
                                "type": "deleted"
                            },
                            {
                                "content": "",
                                "type": "deleted"
                            }
                        ]
                    },
                    "modified_entities": [
                        {
                            "file_name": "pyramid/session.py",
                            "type": "function",
                            "name": "signed_deserialize",
                            "content": "def signed_deserialize(serialized, secret, hmac=hmac):\n    \"\"\" Deserialize the value returned from ``signed_serialize``.  If\n    the value cannot be deserialized for any reason, a\n    :exc:`ValueError` exception will be raised.\n\n    This function is useful for deserializing a signed cookie value\n    created by ``signed_serialize``.  For example:\n\n    .. code-block:: python\n\n       cookieval = request.cookies['signed_cookie']\n       data = signed_deserialize(cookieval, 'secret')\n    \"\"\"\n    # hmac parameterized only for unit tests\n    try:\n        input_sig, pickled = (serialized[:40],\n                              base64.b64decode(bytes_(serialized[40:])))\n    except (binascii.Error, TypeError) as e:\n        # Badly formed data can make base64 die\n        raise ValueError('Badly formed base64 data: %s' % e)\n\n    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()\n\n    # Avoid timing attacks (see\n    # http://seb.dbzteam.org/crypto/python-oauth-timing-hmac.pdf)\n    if strings_differ(sig, input_sig):\n        raise ValueError('Invalid signature')\n\n    return pickle.loads(pickled)",
                            "ast_type_str": "FunctionDef",
                            "start_lineno": 246,
                            "end_lineno": 274,
                            "parent": null
                        },
                        {
                            "file_name": "pyramid/session.py",
                            "type": "function",
                            "name": "signed_serialize",
                            "content": "def signed_serialize(data, secret):\n    \"\"\" Serialize any pickleable structure (``data``) and sign it\n    using the ``secret`` (must be a string).  Return the\n    serialization, which includes the signature as its first 40 bytes.\n    The ``signed_deserialize`` method will deserialize such a value.\n\n    This function is useful for creating signed cookies.  For example:\n\n    .. code-block:: python\n\n       cookieval = signed_serialize({'a':1}, 'secret')\n       response.set_cookie('signed_cookie', cookieval)\n    \"\"\"\n    pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)\n    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()\n    return sig + native_(base64.b64encode(pickled))",
                            "ast_type_str": "FunctionDef",
                            "start_lineno": 229,
                            "end_lineno": 244,
                            "parent": null
                        }
                    ],
                    "added_entities": [],
                    "deleted_entities": []
                }
            ]
        },
        {
            "old_file_content": "import unittest\nfrom pyramid import testing\n\nclass TestUnencryptedCookieSession(unittest.TestCase):\n    def _makeOne(self, request, **kw):\n        from pyramid.session import UnencryptedCookieSessionFactoryConfig\n        return UnencryptedCookieSessionFactoryConfig('secret', **kw)(request)\n\n    def test_ctor_no_cookie(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_instance_conforms(self):\n        from zope.interface.verify import verifyObject\n        from pyramid.interfaces import ISession\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        verifyObject(ISession, session)\n\n    def _serialize(self, accessed, state, secret='secret'):\n        from pyramid.session import signed_serialize\n        return signed_serialize((accessed, accessed, state), secret)\n        \n    def test_ctor_with_cookie_still_valid(self):\n        import time\n        request = testing.DummyRequest()\n        cookieval = self._serialize(time.time(), {'state':1})\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {'state':1})\n        \n    def test_ctor_with_cookie_expired(self):\n        request = testing.DummyRequest()\n        cookieval = self._serialize(0, {'state':1})\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_ctor_with_bad_cookie(self):\n        request = testing.DummyRequest()\n        cookieval = 'abc'\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_changed(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        self.assertEqual(session.changed(), None)\n\n    def test_invalidate(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['a'] = 1\n        self.assertEqual(session.invalidate(), None)\n        self.assertFalse('a' in session)\n\n    def test__set_cookie_on_exception(self):\n        request = testing.DummyRequest()\n        request.exception = True\n        session = self._makeOne(request)\n        session._cookie_on_exception = False\n        response = DummyResponse()\n        self.assertEqual(session._set_cookie(response), False)\n\n    def test__set_cookie_on_exception_no_request_exception(self):\n        import webob\n        request = testing.DummyRequest()\n        request.exception = None\n        session = self._makeOne(request)\n        session._cookie_on_exception = False\n        response = webob.Response()\n        self.assertEqual(session._set_cookie(response), True)\n        self.assertEqual(response.headerlist[-1][0], 'Set-Cookie')\n\n    def test__set_cookie_cookieval_too_long(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['abc'] = 'x'*100000\n        response = DummyResponse()\n        self.assertRaises(ValueError, session._set_cookie, response)\n\n    def test__set_cookie_real_webob_response(self):\n        import webob\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['abc'] = 'x'\n        response = webob.Response()\n        self.assertEqual(session._set_cookie(response), True)\n        self.assertEqual(response.headerlist[-1][0], 'Set-Cookie')\n\n    def test__set_cookie_options(self):\n        from pyramid.response import Response\n        request = testing.DummyRequest()\n        request.exception = None\n        session = self._makeOne(request,\n                                cookie_name = 'abc',\n                                cookie_path = '/foo',\n                                cookie_domain = 'localhost',\n                                cookie_secure = True,\n                                cookie_httponly = True,\n                                )\n        session['abc'] = 'x'\n        response = Response()\n        self.assertEqual(session._set_cookie(response), True)\n        cookieval= response.headerlist[-1][1]\n        val, domain, path, secure, httponly = [x.strip() for x in\n                                               cookieval.split(';')]\n        self.assertTrue(val.startswith('abc='))\n        self.assertEqual(domain, 'Domain=localhost')\n        self.assertEqual(path, 'Path=/foo')\n        self.assertEqual(secure, 'secure')\n        self.assertEqual(httponly, 'HttpOnly')\n\n    def test_flash_default(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1')\n        session.flash('msg2')\n        self.assertEqual(session['_f_'], ['msg1', 'msg2'])\n\n    def test_flash_allow_duplicate_false(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1')\n        session.flash('msg1', allow_duplicate=False)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_allow_duplicate_true_and_msg_not_in_storage(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1', allow_duplicate=True)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_allow_duplicate_false_and_msg_not_in_storage(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1', allow_duplicate=False)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_mixed(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('warn1', 'warn')\n        session.flash('warn2', 'warn')\n        session.flash('err1', 'error')\n        session.flash('err2', 'error')\n        self.assertEqual(session['_f_warn'], ['warn1', 'warn2'])\n\n    def test_pop_flash_default_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_'] = queue\n        result = session.pop_flash()\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_'), None)\n\n    def test_pop_flash_nodefault_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_error'] = queue\n        result = session.pop_flash('error')\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_error'), None)\n\n    def test_peek_flash_default_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_'] = queue\n        result = session.peek_flash()\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_'), queue)\n\n    def test_peek_flash_nodefault_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_error'] = queue\n        result = session.peek_flash('error')\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_error'), queue)\n\n    def test_new_csrf_token(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        token = session.new_csrf_token()\n        self.assertEqual(token, session['_csrft_'])\n\n    def test_get_csrf_token(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['_csrft_'] = 'token'\n        token = session.get_csrf_token()\n        self.assertEqual(token, 'token')\n        self.assertTrue('_csrft_' in session)\n\n    def test_get_csrf_token_new(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        token = session.get_csrf_token()\n        self.assertTrue(token)\n        self.assertTrue('_csrft_' in session)\n\nclass Test_manage_accessed(unittest.TestCase):\n    def _makeOne(self, wrapped):\n        from pyramid.session import manage_accessed\n        return manage_accessed(wrapped)\n\n    def test_accessed_set(self):\n        request = testing.DummyRequest()\n        session = DummySessionFactory(request)\n        session.accessed = None\n        wrapper = self._makeOne(session.__class__.get)\n        wrapper(session, 'a')\n        self.assertNotEqual(session.accessed, None)\n        \n    def test_already_dirty(self):\n        request = testing.DummyRequest()\n        session = DummySessionFactory(request)\n        session._dirty = True\n        session['a'] = 1\n        wrapper = self._makeOne(session.__class__.get)\n        self.assertEqual(wrapper.__doc__, session.get.__doc__)\n        result = wrapper(session, 'a')\n        self.assertEqual(result, 1)\n        callbacks = request.response_callbacks\n        self.assertEqual(len(callbacks), 0)\n\n    def test_with_exception(self):\n        import webob\n        request = testing.DummyRequest()\n        request.exception = True\n        session = DummySessionFactory(request)\n        session['a'] = 1\n        wrapper = self._makeOne(session.__class__.get)\n        self.assertEqual(wrapper.__doc__, session.get.__doc__)\n        result = wrapper(session, 'a')\n        self.assertEqual(result, 1)\n        callbacks = request.response_callbacks\n        self.assertEqual(len(callbacks), 1)\n        response = webob.Response()\n        result = callbacks[0](request, response)\n        self.assertEqual(result, None)\n        self.assertFalse('Set-Cookie' in dict(response.headerlist))\n\n    def test_cookie_is_set(self):\n        request = testing.DummyRequest()\n        session = DummySessionFactory(request)\n        session['a'] = 1\n        wrapper = self._makeOne(session.__class__.get)\n        self.assertEqual(wrapper.__doc__, session.get.__doc__)\n        result = wrapper(session, 'a')\n        self.assertEqual(result, 1)\n        callbacks = request.response_callbacks\n        self.assertEqual(len(callbacks), 1)\n        response = DummyResponse()\n        result = callbacks[0](request, response)\n        self.assertEqual(result, None)\n        self.assertEqual(session.response, response)\n\ndef serialize(data, secret):\n    import hmac\n    import base64\n    from hashlib import sha1\n    from pyramid.compat import bytes_\n    from pyramid.compat import native_\n    from pyramid.compat import pickle\n    pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)\n    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()\n    return sig + native_(base64.b64encode(pickled))\n\nclass Test_signed_serialize(unittest.TestCase):\n    def _callFUT(self, data, secret):\n        from pyramid.session import signed_serialize\n        return signed_serialize(data, secret)\n\n    def test_it(self):\n        expected = serialize('123', 'secret')\n        result = self._callFUT('123', 'secret')\n        self.assertEqual(result, expected)\n        \nclass Test_signed_deserialize(unittest.TestCase):\n    def _callFUT(self, serialized, secret, hmac=None):\n        if hmac is None:\n            import hmac\n        from pyramid.session import signed_deserialize\n        return signed_deserialize(serialized, secret, hmac=hmac)\n\n    def test_it(self):\n        serialized = serialize('123', 'secret')\n        result = self._callFUT(serialized, 'secret')\n        self.assertEqual(result, '123')\n\n    def test_invalid_bits(self):\n        serialized = serialize('123', 'secret')\n        self.assertRaises(ValueError, self._callFUT, serialized, 'seekrit')\n\n    def test_invalid_len(self):\n        class hmac(object):\n            def new(self, *arg):\n                return self\n            def hexdigest(self):\n                return '1234'\n        serialized = serialize('123', 'secret123')\n        self.assertRaises(ValueError, self._callFUT, serialized, 'secret',\n                          hmac=hmac())\n        \n    def test_it_bad_encoding(self):\n        serialized = 'bad' + serialize('123', 'secret')\n        self.assertRaises(ValueError, self._callFUT, serialized, 'secret')\n        \n\nclass DummySessionFactory(dict):\n    _dirty = False\n    _cookie_name = 'session'\n    _cookie_max_age = None\n    _cookie_path = '/'\n    _cookie_domain = None\n    _cookie_secure = False\n    _cookie_httponly = False\n    _timeout = 1200\n    _secret = 'secret'\n    def __init__(self, request):\n        self.request = request\n        dict.__init__(self, {})\n\n    def _set_cookie(self, response):\n        self.response = response\n\nclass DummyResponse(object):\n    def __init__(self):\n        self.headerlist = []\n",
            "new_file_content": "import unittest\nfrom pyramid import testing\n\nclass TestUnencryptedCookieSession(unittest.TestCase):\n    def _makeOne(self, request, **kw):\n        from pyramid.session import UnencryptedCookieSessionFactoryConfig\n        return UnencryptedCookieSessionFactoryConfig('secret', **kw)(request)\n\n    def test_ctor_no_cookie(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_instance_conforms(self):\n        from zope.interface.verify import verifyObject\n        from pyramid.interfaces import ISession\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        verifyObject(ISession, session)\n\n    def _serialize(self, accessed, state, secret='secret'):\n        from pyramid.session import signed_serialize\n        return signed_serialize((accessed, accessed, state), secret)\n        \n    def test_ctor_with_cookie_still_valid(self):\n        import time\n        request = testing.DummyRequest()\n        cookieval = self._serialize(time.time(), {'state':1})\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {'state':1})\n        \n    def test_ctor_with_cookie_expired(self):\n        request = testing.DummyRequest()\n        cookieval = self._serialize(0, {'state':1})\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_ctor_with_bad_cookie(self):\n        request = testing.DummyRequest()\n        cookieval = 'abc'\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_changed(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        self.assertEqual(session.changed(), None)\n\n    def test_invalidate(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['a'] = 1\n        self.assertEqual(session.invalidate(), None)\n        self.assertFalse('a' in session)\n\n    def test__set_cookie_on_exception(self):\n        request = testing.DummyRequest()\n        request.exception = True\n        session = self._makeOne(request)\n        session._cookie_on_exception = False\n        response = DummyResponse()\n        self.assertEqual(session._set_cookie(response), False)\n\n    def test__set_cookie_on_exception_no_request_exception(self):\n        import webob\n        request = testing.DummyRequest()\n        request.exception = None\n        session = self._makeOne(request)\n        session._cookie_on_exception = False\n        response = webob.Response()\n        self.assertEqual(session._set_cookie(response), True)\n        self.assertEqual(response.headerlist[-1][0], 'Set-Cookie')\n\n    def test__set_cookie_cookieval_too_long(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['abc'] = 'x'*100000\n        response = DummyResponse()\n        self.assertRaises(ValueError, session._set_cookie, response)\n\n    def test__set_cookie_real_webob_response(self):\n        import webob\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['abc'] = 'x'\n        response = webob.Response()\n        self.assertEqual(session._set_cookie(response), True)\n        self.assertEqual(response.headerlist[-1][0], 'Set-Cookie')\n\n    def test__set_cookie_options(self):\n        from pyramid.response import Response\n        request = testing.DummyRequest()\n        request.exception = None\n        session = self._makeOne(request,\n                                cookie_name = 'abc',\n                                cookie_path = '/foo',\n                                cookie_domain = 'localhost',\n                                cookie_secure = True,\n                                cookie_httponly = True,\n                                )\n        session['abc'] = 'x'\n        response = Response()\n        self.assertEqual(session._set_cookie(response), True)\n        cookieval= response.headerlist[-1][1]\n        val, domain, path, secure, httponly = [x.strip() for x in\n                                               cookieval.split(';')]\n        self.assertTrue(val.startswith('abc='))\n        self.assertEqual(domain, 'Domain=localhost')\n        self.assertEqual(path, 'Path=/foo')\n        self.assertEqual(secure, 'secure')\n        self.assertEqual(httponly, 'HttpOnly')\n\n    def test_flash_default(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1')\n        session.flash('msg2')\n        self.assertEqual(session['_f_'], ['msg1', 'msg2'])\n\n    def test_flash_allow_duplicate_false(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1')\n        session.flash('msg1', allow_duplicate=False)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_allow_duplicate_true_and_msg_not_in_storage(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1', allow_duplicate=True)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_allow_duplicate_false_and_msg_not_in_storage(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1', allow_duplicate=False)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_mixed(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('warn1', 'warn')\n        session.flash('warn2', 'warn')\n        session.flash('err1', 'error')\n        session.flash('err2', 'error')\n        self.assertEqual(session['_f_warn'], ['warn1', 'warn2'])\n\n    def test_pop_flash_default_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_'] = queue\n        result = session.pop_flash()\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_'), None)\n\n    def test_pop_flash_nodefault_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_error'] = queue\n        result = session.pop_flash('error')\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_error'), None)\n\n    def test_peek_flash_default_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_'] = queue\n        result = session.peek_flash()\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_'), queue)\n\n    def test_peek_flash_nodefault_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_error'] = queue\n        result = session.peek_flash('error')\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_error'), queue)\n\n    def test_new_csrf_token(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        token = session.new_csrf_token()\n        self.assertEqual(token, session['_csrft_'])\n\n    def test_get_csrf_token(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['_csrft_'] = 'token'\n        token = session.get_csrf_token()\n        self.assertEqual(token, 'token')\n        self.assertTrue('_csrft_' in session)\n\n    def test_get_csrf_token_new(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        token = session.get_csrf_token()\n        self.assertTrue(token)\n        self.assertTrue('_csrft_' in session)\n\n    def test_serialize_option(self):\n        from pyramid.response import Response\n        secret = 'secret'\n        request = testing.DummyRequest()\n        session = self._makeOne(request,\n            signed_serialize=dummy_signed_serialize)\n        session['key'] = 'value'\n        response = Response()\n        self.assertEqual(session._set_cookie(response), True)\n        cookie = response.headerlist[-1][1]\n        expected_cookieval = dummy_signed_serialize(\n            (session.accessed, session.created, {'key': 'value'}), secret)\n        response = Response()\n        response.set_cookie('session', expected_cookieval)\n        expected_cookie = response.headerlist[-1][1]\n        self.assertEqual(cookie, expected_cookie)\n\n    def test_deserialize_option(self):\n        import time\n        secret = 'secret'\n        request = testing.DummyRequest()\n        accessed = time.time()\n        state = {'key': 'value'}\n        cookieval = dummy_signed_serialize((accessed, accessed, state), secret)\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request,\n            signed_deserialize=dummy_signed_deserialize)\n        self.assertEqual(dict(session), state)\n\ndef dummy_signed_serialize(data, secret):\n    import base64\n    from pyramid.compat import pickle, bytes_\n    pickled = pickle.dumps(data)\n    return base64.b64encode(bytes_(secret)) + base64.b64encode(pickled)\n\ndef dummy_signed_deserialize(serialized, secret):\n    import base64\n    from pyramid.compat import pickle, bytes_\n    serialized_data = base64.b64decode(\n        serialized[len(base64.b64encode(bytes_(secret))):])\n    return pickle.loads(serialized_data)\n\nclass Test_manage_accessed(unittest.TestCase):\n    def _makeOne(self, wrapped):\n        from pyramid.session import manage_accessed\n        return manage_accessed(wrapped)\n\n    def test_accessed_set(self):\n        request = testing.DummyRequest()\n        session = DummySessionFactory(request)\n        session.accessed = None\n        wrapper = self._makeOne(session.__class__.get)\n        wrapper(session, 'a')\n        self.assertNotEqual(session.accessed, None)\n        \n    def test_already_dirty(self):\n        request = testing.DummyRequest()\n        session = DummySessionFactory(request)\n        session._dirty = True\n        session['a'] = 1\n        wrapper = self._makeOne(session.__class__.get)\n        self.assertEqual(wrapper.__doc__, session.get.__doc__)\n        result = wrapper(session, 'a')\n        self.assertEqual(result, 1)\n        callbacks = request.response_callbacks\n        self.assertEqual(len(callbacks), 0)\n\n    def test_with_exception(self):\n        import webob\n        request = testing.DummyRequest()\n        request.exception = True\n        session = DummySessionFactory(request)\n        session['a'] = 1\n        wrapper = self._makeOne(session.__class__.get)\n        self.assertEqual(wrapper.__doc__, session.get.__doc__)\n        result = wrapper(session, 'a')\n        self.assertEqual(result, 1)\n        callbacks = request.response_callbacks\n        self.assertEqual(len(callbacks), 1)\n        response = webob.Response()\n        result = callbacks[0](request, response)\n        self.assertEqual(result, None)\n        self.assertFalse('Set-Cookie' in dict(response.headerlist))\n\n    def test_cookie_is_set(self):\n        request = testing.DummyRequest()\n        session = DummySessionFactory(request)\n        session['a'] = 1\n        wrapper = self._makeOne(session.__class__.get)\n        self.assertEqual(wrapper.__doc__, session.get.__doc__)\n        result = wrapper(session, 'a')\n        self.assertEqual(result, 1)\n        callbacks = request.response_callbacks\n        self.assertEqual(len(callbacks), 1)\n        response = DummyResponse()\n        result = callbacks[0](request, response)\n        self.assertEqual(result, None)\n        self.assertEqual(session.response, response)\n\ndef serialize(data, secret):\n    import hmac\n    import base64\n    from hashlib import sha1\n    from pyramid.compat import bytes_\n    from pyramid.compat import native_\n    from pyramid.compat import pickle\n    pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)\n    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()\n    return sig + native_(base64.b64encode(pickled))\n\nclass Test_signed_serialize(unittest.TestCase):\n    def _callFUT(self, data, secret):\n        from pyramid.session import signed_serialize\n        return signed_serialize(data, secret)\n\n    def test_it(self):\n        expected = serialize('123', 'secret')\n        result = self._callFUT('123', 'secret')\n        self.assertEqual(result, expected)\n        \nclass Test_signed_deserialize(unittest.TestCase):\n    def _callFUT(self, serialized, secret, hmac=None):\n        if hmac is None:\n            import hmac\n        from pyramid.session import signed_deserialize\n        return signed_deserialize(serialized, secret, hmac=hmac)\n\n    def test_it(self):\n        serialized = serialize('123', 'secret')\n        result = self._callFUT(serialized, 'secret')\n        self.assertEqual(result, '123')\n\n    def test_invalid_bits(self):\n        serialized = serialize('123', 'secret')\n        self.assertRaises(ValueError, self._callFUT, serialized, 'seekrit')\n\n    def test_invalid_len(self):\n        class hmac(object):\n            def new(self, *arg):\n                return self\n            def hexdigest(self):\n                return '1234'\n        serialized = serialize('123', 'secret123')\n        self.assertRaises(ValueError, self._callFUT, serialized, 'secret',\n                          hmac=hmac())\n        \n    def test_it_bad_encoding(self):\n        serialized = 'bad' + serialize('123', 'secret')\n        self.assertRaises(ValueError, self._callFUT, serialized, 'secret')\n        \n\nclass DummySessionFactory(dict):\n    _dirty = False\n    _cookie_name = 'session'\n    _cookie_max_age = None\n    _cookie_path = '/'\n    _cookie_domain = None\n    _cookie_secure = False\n    _cookie_httponly = False\n    _timeout = 1200\n    _secret = 'secret'\n    def __init__(self, request):\n        self.request = request\n        dict.__init__(self, {})\n\n    def _set_cookie(self, response):\n        self.response = response\n\nclass DummyResponse(object):\n    def __init__(self):\n        self.headerlist = []\n",
            "header": {
                "file": {
                    "path": "pyramid/tests/test_session.py"
                },
                "misc_line": null
            },
            "index_line": {
                "old_commit_hash": "6d75c7950",
                "new_commit_hash": "5143b7a95",
                "mode": "100644"
            },
            "is_binary_file": false,
            "binary_line": null,
            "minus_file": {
                "path": "a/pyramid/tests/test_session.py"
            },
            "plus_file": {
                "path": "b/pyramid/tests/test_session.py"
            },
            "hunks": [
                {
                    "descriptor": {
                        "old_range": {
                            "start": 205,
                            "length": 6
                        },
                        "new_range": {
                            "start": 205,
                            "length": 48
                        },
                        "section": "class TestUnencryptedCookieSession(unittest.TestCase):"
                    },
                    "line_group": {
                        "all_lines": [
                            {
                                "content": "        self.assertTrue(token)",
                                "type": "context"
                            },
                            {
                                "content": "        self.assertTrue('_csrft_' in session)",
                                "type": "context"
                            },
                            {
                                "content": "",
                                "type": "context"
                            },
                            {
                                "content": "    def test_serialize_option(self):",
                                "type": "added"
                            },
                            {
                                "content": "        from pyramid.response import Response",
                                "type": "added"
                            },
                            {
                                "content": "        secret = 'secret'",
                                "type": "added"
                            },
                            {
                                "content": "        request = testing.DummyRequest()",
                                "type": "added"
                            },
                            {
                                "content": "        session = self._makeOne(request,",
                                "type": "added"
                            },
                            {
                                "content": "            signed_serialize=dummy_signed_serialize)",
                                "type": "added"
                            },
                            {
                                "content": "        session['key'] = 'value'",
                                "type": "added"
                            },
                            {
                                "content": "        response = Response()",
                                "type": "added"
                            },
                            {
                                "content": "        self.assertEqual(session._set_cookie(response), True)",
                                "type": "added"
                            },
                            {
                                "content": "        cookie = response.headerlist[-1][1]",
                                "type": "added"
                            },
                            {
                                "content": "        expected_cookieval = dummy_signed_serialize(",
                                "type": "added"
                            },
                            {
                                "content": "            (session.accessed, session.created, {'key': 'value'}), secret)",
                                "type": "added"
                            },
                            {
                                "content": "        response = Response()",
                                "type": "added"
                            },
                            {
                                "content": "        response.set_cookie('session', expected_cookieval)",
                                "type": "added"
                            },
                            {
                                "content": "        expected_cookie = response.headerlist[-1][1]",
                                "type": "added"
                            },
                            {
                                "content": "        self.assertEqual(cookie, expected_cookie)",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "    def test_deserialize_option(self):",
                                "type": "added"
                            },
                            {
                                "content": "        import time",
                                "type": "added"
                            },
                            {
                                "content": "        secret = 'secret'",
                                "type": "added"
                            },
                            {
                                "content": "        request = testing.DummyRequest()",
                                "type": "added"
                            },
                            {
                                "content": "        accessed = time.time()",
                                "type": "added"
                            },
                            {
                                "content": "        state = {'key': 'value'}",
                                "type": "added"
                            },
                            {
                                "content": "        cookieval = dummy_signed_serialize((accessed, accessed, state), secret)",
                                "type": "added"
                            },
                            {
                                "content": "        request.cookies['session'] = cookieval",
                                "type": "added"
                            },
                            {
                                "content": "        session = self._makeOne(request,",
                                "type": "added"
                            },
                            {
                                "content": "            signed_deserialize=dummy_signed_deserialize)",
                                "type": "added"
                            },
                            {
                                "content": "        self.assertEqual(dict(session), state)",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "def dummy_signed_serialize(data, secret):",
                                "type": "added"
                            },
                            {
                                "content": "    import base64",
                                "type": "added"
                            },
                            {
                                "content": "    from pyramid.compat import pickle, bytes_",
                                "type": "added"
                            },
                            {
                                "content": "    pickled = pickle.dumps(data)",
                                "type": "added"
                            },
                            {
                                "content": "    return base64.b64encode(bytes_(secret)) + base64.b64encode(pickled)",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "def dummy_signed_deserialize(serialized, secret):",
                                "type": "added"
                            },
                            {
                                "content": "    import base64",
                                "type": "added"
                            },
                            {
                                "content": "    from pyramid.compat import pickle, bytes_",
                                "type": "added"
                            },
                            {
                                "content": "    serialized_data = base64.b64decode(",
                                "type": "added"
                            },
                            {
                                "content": "        serialized[len(base64.b64encode(bytes_(secret))):])",
                                "type": "added"
                            },
                            {
                                "content": "    return pickle.loads(serialized_data)",
                                "type": "added"
                            },
                            {
                                "content": "",
                                "type": "added"
                            },
                            {
                                "content": "class Test_manage_accessed(unittest.TestCase):",
                                "type": "context"
                            },
                            {
                                "content": "    def _makeOne(self, wrapped):",
                                "type": "context"
                            },
                            {
                                "content": "        from pyramid.session import manage_accessed",
                                "type": "context"
                            },
                            {
                                "content": "",
                                "type": "context"
                            }
                        ]
                    },
                    "modified_entities": [
                        {
                            "file_name": "pyramid/tests/test_session.py",
                            "type": "class",
                            "name": "TestUnencryptedCookieSession",
                            "content": "class TestUnencryptedCookieSession(unittest.TestCase):\n    def _makeOne(self, request, **kw):\n        from pyramid.session import UnencryptedCookieSessionFactoryConfig\n        return UnencryptedCookieSessionFactoryConfig('secret', **kw)(request)\n\n    def test_ctor_no_cookie(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_instance_conforms(self):\n        from zope.interface.verify import verifyObject\n        from pyramid.interfaces import ISession\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        verifyObject(ISession, session)\n\n    def _serialize(self, accessed, state, secret='secret'):\n        from pyramid.session import signed_serialize\n        return signed_serialize((accessed, accessed, state), secret)\n        \n    def test_ctor_with_cookie_still_valid(self):\n        import time\n        request = testing.DummyRequest()\n        cookieval = self._serialize(time.time(), {'state':1})\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {'state':1})\n        \n    def test_ctor_with_cookie_expired(self):\n        request = testing.DummyRequest()\n        cookieval = self._serialize(0, {'state':1})\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_ctor_with_bad_cookie(self):\n        request = testing.DummyRequest()\n        cookieval = 'abc'\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_changed(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        self.assertEqual(session.changed(), None)\n\n    def test_invalidate(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['a'] = 1\n        self.assertEqual(session.invalidate(), None)\n        self.assertFalse('a' in session)\n\n    def test__set_cookie_on_exception(self):\n        request = testing.DummyRequest()\n        request.exception = True\n        session = self._makeOne(request)\n        session._cookie_on_exception = False\n        response = DummyResponse()\n        self.assertEqual(session._set_cookie(response), False)\n\n    def test__set_cookie_on_exception_no_request_exception(self):\n        import webob\n        request = testing.DummyRequest()\n        request.exception = None\n        session = self._makeOne(request)\n        session._cookie_on_exception = False\n        response = webob.Response()\n        self.assertEqual(session._set_cookie(response), True)\n        self.assertEqual(response.headerlist[-1][0], 'Set-Cookie')\n\n    def test__set_cookie_cookieval_too_long(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['abc'] = 'x'*100000\n        response = DummyResponse()\n        self.assertRaises(ValueError, session._set_cookie, response)\n\n    def test__set_cookie_real_webob_response(self):\n        import webob\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['abc'] = 'x'\n        response = webob.Response()\n        self.assertEqual(session._set_cookie(response), True)\n        self.assertEqual(response.headerlist[-1][0], 'Set-Cookie')\n\n    def test__set_cookie_options(self):\n        from pyramid.response import Response\n        request = testing.DummyRequest()\n        request.exception = None\n        session = self._makeOne(request,\n                                cookie_name = 'abc',\n                                cookie_path = '/foo',\n                                cookie_domain = 'localhost',\n                                cookie_secure = True,\n                                cookie_httponly = True,\n                                )\n        session['abc'] = 'x'\n        response = Response()\n        self.assertEqual(session._set_cookie(response), True)\n        cookieval= response.headerlist[-1][1]\n        val, domain, path, secure, httponly = [x.strip() for x in\n                                               cookieval.split(';')]\n        self.assertTrue(val.startswith('abc='))\n        self.assertEqual(domain, 'Domain=localhost')\n        self.assertEqual(path, 'Path=/foo')\n        self.assertEqual(secure, 'secure')\n        self.assertEqual(httponly, 'HttpOnly')\n\n    def test_flash_default(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1')\n        session.flash('msg2')\n        self.assertEqual(session['_f_'], ['msg1', 'msg2'])\n\n    def test_flash_allow_duplicate_false(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1')\n        session.flash('msg1', allow_duplicate=False)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_allow_duplicate_true_and_msg_not_in_storage(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1', allow_duplicate=True)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_allow_duplicate_false_and_msg_not_in_storage(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1', allow_duplicate=False)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_mixed(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('warn1', 'warn')\n        session.flash('warn2', 'warn')\n        session.flash('err1', 'error')\n        session.flash('err2', 'error')\n        self.assertEqual(session['_f_warn'], ['warn1', 'warn2'])\n\n    def test_pop_flash_default_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_'] = queue\n        result = session.pop_flash()\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_'), None)\n\n    def test_pop_flash_nodefault_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_error'] = queue\n        result = session.pop_flash('error')\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_error'), None)\n\n    def test_peek_flash_default_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_'] = queue\n        result = session.peek_flash()\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_'), queue)\n\n    def test_peek_flash_nodefault_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_error'] = queue\n        result = session.peek_flash('error')\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_error'), queue)\n\n    def test_new_csrf_token(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        token = session.new_csrf_token()\n        self.assertEqual(token, session['_csrft_'])\n\n    def test_get_csrf_token(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['_csrft_'] = 'token'\n        token = session.get_csrf_token()\n        self.assertEqual(token, 'token')\n        self.assertTrue('_csrft_' in session)\n\n    def test_get_csrf_token_new(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        token = session.get_csrf_token()\n        self.assertTrue(token)\n        self.assertTrue('_csrft_' in session)\n\n    def test_serialize_option(self):\n        from pyramid.response import Response\n        secret = 'secret'\n        request = testing.DummyRequest()\n        session = self._makeOne(request,\n            signed_serialize=dummy_signed_serialize)\n        session['key'] = 'value'\n        response = Response()\n        self.assertEqual(session._set_cookie(response), True)\n        cookie = response.headerlist[-1][1]\n        expected_cookieval = dummy_signed_serialize(\n            (session.accessed, session.created, {'key': 'value'}), secret)\n        response = Response()\n        response.set_cookie('session', expected_cookieval)\n        expected_cookie = response.headerlist[-1][1]\n        self.assertEqual(cookie, expected_cookie)\n\n    def test_deserialize_option(self):\n        import time\n        secret = 'secret'\n        request = testing.DummyRequest()\n        accessed = time.time()\n        state = {'key': 'value'}\n        cookieval = dummy_signed_serialize((accessed, accessed, state), secret)\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request,\n            signed_deserialize=dummy_signed_deserialize)\n        self.assertEqual(dict(session), state)",
                            "ast_type_str": "ClassDef",
                            "start_lineno": 4,
                            "end_lineno": 235,
                            "parent": null
                        }
                    ],
                    "added_entities": [
                        {
                            "file_name": "pyramid/tests/test_session.py",
                            "type": "method",
                            "name": "TestUnencryptedCookieSession.test_deserialize_option",
                            "content": "class TestUnencryptedCookieSession(unittest.TestCase):\n    def _makeOne(self, request, **kw):\n        from pyramid.session import UnencryptedCookieSessionFactoryConfig\n        return UnencryptedCookieSessionFactoryConfig('secret', **kw)(request)\n\n    def test_ctor_no_cookie(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_instance_conforms(self):\n        from zope.interface.verify import verifyObject\n        from pyramid.interfaces import ISession\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        verifyObject(ISession, session)\n\n    def _serialize(self, accessed, state, secret='secret'):\n        from pyramid.session import signed_serialize\n        return signed_serialize((accessed, accessed, state), secret)\n        \n    def test_ctor_with_cookie_still_valid(self):\n        import time\n        request = testing.DummyRequest()\n        cookieval = self._serialize(time.time(), {'state':1})\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {'state':1})\n        \n    def test_ctor_with_cookie_expired(self):\n        request = testing.DummyRequest()\n        cookieval = self._serialize(0, {'state':1})\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_ctor_with_bad_cookie(self):\n        request = testing.DummyRequest()\n        cookieval = 'abc'\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_changed(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        self.assertEqual(session.changed(), None)\n\n    def test_invalidate(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['a'] = 1\n        self.assertEqual(session.invalidate(), None)\n        self.assertFalse('a' in session)\n\n    def test__set_cookie_on_exception(self):\n        request = testing.DummyRequest()\n        request.exception = True\n        session = self._makeOne(request)\n        session._cookie_on_exception = False\n        response = DummyResponse()\n        self.assertEqual(session._set_cookie(response), False)\n\n    def test__set_cookie_on_exception_no_request_exception(self):\n        import webob\n        request = testing.DummyRequest()\n        request.exception = None\n        session = self._makeOne(request)\n        session._cookie_on_exception = False\n        response = webob.Response()\n        self.assertEqual(session._set_cookie(response), True)\n        self.assertEqual(response.headerlist[-1][0], 'Set-Cookie')\n\n    def test__set_cookie_cookieval_too_long(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['abc'] = 'x'*100000\n        response = DummyResponse()\n        self.assertRaises(ValueError, session._set_cookie, response)\n\n    def test__set_cookie_real_webob_response(self):\n        import webob\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['abc'] = 'x'\n        response = webob.Response()\n        self.assertEqual(session._set_cookie(response), True)\n        self.assertEqual(response.headerlist[-1][0], 'Set-Cookie')\n\n    def test__set_cookie_options(self):\n        from pyramid.response import Response\n        request = testing.DummyRequest()\n        request.exception = None\n        session = self._makeOne(request,\n                                cookie_name = 'abc',\n                                cookie_path = '/foo',\n                                cookie_domain = 'localhost',\n                                cookie_secure = True,\n                                cookie_httponly = True,\n                                )\n        session['abc'] = 'x'\n        response = Response()\n        self.assertEqual(session._set_cookie(response), True)\n        cookieval= response.headerlist[-1][1]\n        val, domain, path, secure, httponly = [x.strip() for x in\n                                               cookieval.split(';')]\n        self.assertTrue(val.startswith('abc='))\n        self.assertEqual(domain, 'Domain=localhost')\n        self.assertEqual(path, 'Path=/foo')\n        self.assertEqual(secure, 'secure')\n        self.assertEqual(httponly, 'HttpOnly')\n\n    def test_flash_default(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1')\n        session.flash('msg2')\n        self.assertEqual(session['_f_'], ['msg1', 'msg2'])\n\n    def test_flash_allow_duplicate_false(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1')\n        session.flash('msg1', allow_duplicate=False)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_allow_duplicate_true_and_msg_not_in_storage(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1', allow_duplicate=True)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_allow_duplicate_false_and_msg_not_in_storage(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1', allow_duplicate=False)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_mixed(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('warn1', 'warn')\n        session.flash('warn2', 'warn')\n        session.flash('err1', 'error')\n        session.flash('err2', 'error')\n        self.assertEqual(session['_f_warn'], ['warn1', 'warn2'])\n\n    def test_pop_flash_default_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_'] = queue\n        result = session.pop_flash()\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_'), None)\n\n    def test_pop_flash_nodefault_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_error'] = queue\n        result = session.pop_flash('error')\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_error'), None)\n\n    def test_peek_flash_default_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_'] = queue\n        result = session.peek_flash()\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_'), queue)\n\n    def test_peek_flash_nodefault_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_error'] = queue\n        result = session.peek_flash('error')\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_error'), queue)\n\n    def test_new_csrf_token(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        token = session.new_csrf_token()\n        self.assertEqual(token, session['_csrft_'])\n\n    def test_get_csrf_token(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['_csrft_'] = 'token'\n        token = session.get_csrf_token()\n        self.assertEqual(token, 'token')\n        self.assertTrue('_csrft_' in session)\n\n    def test_get_csrf_token_new(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        token = session.get_csrf_token()\n        self.assertTrue(token)\n        self.assertTrue('_csrft_' in session)\n\n    def test_serialize_option(self):\n        from pyramid.response import Response\n        secret = 'secret'\n        request = testing.DummyRequest()\n        session = self._makeOne(request,\n            signed_serialize=dummy_signed_serialize)\n        session['key'] = 'value'\n        response = Response()\n        self.assertEqual(session._set_cookie(response), True)\n        cookie = response.headerlist[-1][1]\n        expected_cookieval = dummy_signed_serialize(\n            (session.accessed, session.created, {'key': 'value'}), secret)\n        response = Response()\n        response.set_cookie('session', expected_cookieval)\n        expected_cookie = response.headerlist[-1][1]\n        self.assertEqual(cookie, expected_cookie)\n\n    def test_deserialize_option(self):\n        import time\n        secret = 'secret'\n        request = testing.DummyRequest()\n        accessed = time.time()\n        state = {'key': 'value'}\n        cookieval = dummy_signed_serialize((accessed, accessed, state), secret)\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request,\n            signed_deserialize=dummy_signed_deserialize)\n        self.assertEqual(dict(session), state)",
                            "ast_type_str": "ClassDef",
                            "start_lineno": 225,
                            "end_lineno": 235,
                            "parent": {
                                "file_name": "pyramid/tests/test_session.py",
                                "type": "class",
                                "name": "TestUnencryptedCookieSession",
                                "content": "class TestUnencryptedCookieSession(unittest.TestCase):\n    def _makeOne(self, request, **kw):\n        from pyramid.session import UnencryptedCookieSessionFactoryConfig\n        return UnencryptedCookieSessionFactoryConfig('secret', **kw)(request)\n\n    def test_ctor_no_cookie(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_instance_conforms(self):\n        from zope.interface.verify import verifyObject\n        from pyramid.interfaces import ISession\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        verifyObject(ISession, session)\n\n    def _serialize(self, accessed, state, secret='secret'):\n        from pyramid.session import signed_serialize\n        return signed_serialize((accessed, accessed, state), secret)\n        \n    def test_ctor_with_cookie_still_valid(self):\n        import time\n        request = testing.DummyRequest()\n        cookieval = self._serialize(time.time(), {'state':1})\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {'state':1})\n        \n    def test_ctor_with_cookie_expired(self):\n        request = testing.DummyRequest()\n        cookieval = self._serialize(0, {'state':1})\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_ctor_with_bad_cookie(self):\n        request = testing.DummyRequest()\n        cookieval = 'abc'\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_changed(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        self.assertEqual(session.changed(), None)\n\n    def test_invalidate(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['a'] = 1\n        self.assertEqual(session.invalidate(), None)\n        self.assertFalse('a' in session)\n\n    def test__set_cookie_on_exception(self):\n        request = testing.DummyRequest()\n        request.exception = True\n        session = self._makeOne(request)\n        session._cookie_on_exception = False\n        response = DummyResponse()\n        self.assertEqual(session._set_cookie(response), False)\n\n    def test__set_cookie_on_exception_no_request_exception(self):\n        import webob\n        request = testing.DummyRequest()\n        request.exception = None\n        session = self._makeOne(request)\n        session._cookie_on_exception = False\n        response = webob.Response()\n        self.assertEqual(session._set_cookie(response), True)\n        self.assertEqual(response.headerlist[-1][0], 'Set-Cookie')\n\n    def test__set_cookie_cookieval_too_long(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['abc'] = 'x'*100000\n        response = DummyResponse()\n        self.assertRaises(ValueError, session._set_cookie, response)\n\n    def test__set_cookie_real_webob_response(self):\n        import webob\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['abc'] = 'x'\n        response = webob.Response()\n        self.assertEqual(session._set_cookie(response), True)\n        self.assertEqual(response.headerlist[-1][0], 'Set-Cookie')\n\n    def test__set_cookie_options(self):\n        from pyramid.response import Response\n        request = testing.DummyRequest()\n        request.exception = None\n        session = self._makeOne(request,\n                                cookie_name = 'abc',\n                                cookie_path = '/foo',\n                                cookie_domain = 'localhost',\n                                cookie_secure = True,\n                                cookie_httponly = True,\n                                )\n        session['abc'] = 'x'\n        response = Response()\n        self.assertEqual(session._set_cookie(response), True)\n        cookieval= response.headerlist[-1][1]\n        val, domain, path, secure, httponly = [x.strip() for x in\n                                               cookieval.split(';')]\n        self.assertTrue(val.startswith('abc='))\n        self.assertEqual(domain, 'Domain=localhost')\n        self.assertEqual(path, 'Path=/foo')\n        self.assertEqual(secure, 'secure')\n        self.assertEqual(httponly, 'HttpOnly')\n\n    def test_flash_default(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1')\n        session.flash('msg2')\n        self.assertEqual(session['_f_'], ['msg1', 'msg2'])\n\n    def test_flash_allow_duplicate_false(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1')\n        session.flash('msg1', allow_duplicate=False)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_allow_duplicate_true_and_msg_not_in_storage(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1', allow_duplicate=True)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_allow_duplicate_false_and_msg_not_in_storage(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1', allow_duplicate=False)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_mixed(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('warn1', 'warn')\n        session.flash('warn2', 'warn')\n        session.flash('err1', 'error')\n        session.flash('err2', 'error')\n        self.assertEqual(session['_f_warn'], ['warn1', 'warn2'])\n\n    def test_pop_flash_default_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_'] = queue\n        result = session.pop_flash()\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_'), None)\n\n    def test_pop_flash_nodefault_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_error'] = queue\n        result = session.pop_flash('error')\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_error'), None)\n\n    def test_peek_flash_default_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_'] = queue\n        result = session.peek_flash()\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_'), queue)\n\n    def test_peek_flash_nodefault_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_error'] = queue\n        result = session.peek_flash('error')\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_error'), queue)\n\n    def test_new_csrf_token(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        token = session.new_csrf_token()\n        self.assertEqual(token, session['_csrft_'])\n\n    def test_get_csrf_token(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['_csrft_'] = 'token'\n        token = session.get_csrf_token()\n        self.assertEqual(token, 'token')\n        self.assertTrue('_csrft_' in session)\n\n    def test_get_csrf_token_new(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        token = session.get_csrf_token()\n        self.assertTrue(token)\n        self.assertTrue('_csrft_' in session)\n\n    def test_serialize_option(self):\n        from pyramid.response import Response\n        secret = 'secret'\n        request = testing.DummyRequest()\n        session = self._makeOne(request,\n            signed_serialize=dummy_signed_serialize)\n        session['key'] = 'value'\n        response = Response()\n        self.assertEqual(session._set_cookie(response), True)\n        cookie = response.headerlist[-1][1]\n        expected_cookieval = dummy_signed_serialize(\n            (session.accessed, session.created, {'key': 'value'}), secret)\n        response = Response()\n        response.set_cookie('session', expected_cookieval)\n        expected_cookie = response.headerlist[-1][1]\n        self.assertEqual(cookie, expected_cookie)\n\n    def test_deserialize_option(self):\n        import time\n        secret = 'secret'\n        request = testing.DummyRequest()\n        accessed = time.time()\n        state = {'key': 'value'}\n        cookieval = dummy_signed_serialize((accessed, accessed, state), secret)\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request,\n            signed_deserialize=dummy_signed_deserialize)\n        self.assertEqual(dict(session), state)",
                                "ast_type_str": "ClassDef",
                                "start_lineno": 4,
                                "end_lineno": 235,
                                "parent": null
                            }
                        },
                        {
                            "file_name": "pyramid/tests/test_session.py",
                            "type": "function",
                            "name": "dummy_signed_deserialize",
                            "content": "def dummy_signed_deserialize(serialized, secret):\n    import base64\n    from pyramid.compat import pickle, bytes_\n    serialized_data = base64.b64decode(\n        serialized[len(base64.b64encode(bytes_(secret))):])\n    return pickle.loads(serialized_data)",
                            "ast_type_str": "FunctionDef",
                            "start_lineno": 243,
                            "end_lineno": 248,
                            "parent": null
                        },
                        {
                            "file_name": "pyramid/tests/test_session.py",
                            "type": "function",
                            "name": "dummy_signed_serialize",
                            "content": "def dummy_signed_serialize(data, secret):\n    import base64\n    from pyramid.compat import pickle, bytes_\n    pickled = pickle.dumps(data)\n    return base64.b64encode(bytes_(secret)) + base64.b64encode(pickled)",
                            "ast_type_str": "FunctionDef",
                            "start_lineno": 237,
                            "end_lineno": 241,
                            "parent": null
                        },
                        {
                            "file_name": "pyramid/tests/test_session.py",
                            "type": "method",
                            "name": "TestUnencryptedCookieSession.test_serialize_option",
                            "content": "class TestUnencryptedCookieSession(unittest.TestCase):\n    def _makeOne(self, request, **kw):\n        from pyramid.session import UnencryptedCookieSessionFactoryConfig\n        return UnencryptedCookieSessionFactoryConfig('secret', **kw)(request)\n\n    def test_ctor_no_cookie(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_instance_conforms(self):\n        from zope.interface.verify import verifyObject\n        from pyramid.interfaces import ISession\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        verifyObject(ISession, session)\n\n    def _serialize(self, accessed, state, secret='secret'):\n        from pyramid.session import signed_serialize\n        return signed_serialize((accessed, accessed, state), secret)\n        \n    def test_ctor_with_cookie_still_valid(self):\n        import time\n        request = testing.DummyRequest()\n        cookieval = self._serialize(time.time(), {'state':1})\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {'state':1})\n        \n    def test_ctor_with_cookie_expired(self):\n        request = testing.DummyRequest()\n        cookieval = self._serialize(0, {'state':1})\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_ctor_with_bad_cookie(self):\n        request = testing.DummyRequest()\n        cookieval = 'abc'\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_changed(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        self.assertEqual(session.changed(), None)\n\n    def test_invalidate(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['a'] = 1\n        self.assertEqual(session.invalidate(), None)\n        self.assertFalse('a' in session)\n\n    def test__set_cookie_on_exception(self):\n        request = testing.DummyRequest()\n        request.exception = True\n        session = self._makeOne(request)\n        session._cookie_on_exception = False\n        response = DummyResponse()\n        self.assertEqual(session._set_cookie(response), False)\n\n    def test__set_cookie_on_exception_no_request_exception(self):\n        import webob\n        request = testing.DummyRequest()\n        request.exception = None\n        session = self._makeOne(request)\n        session._cookie_on_exception = False\n        response = webob.Response()\n        self.assertEqual(session._set_cookie(response), True)\n        self.assertEqual(response.headerlist[-1][0], 'Set-Cookie')\n\n    def test__set_cookie_cookieval_too_long(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['abc'] = 'x'*100000\n        response = DummyResponse()\n        self.assertRaises(ValueError, session._set_cookie, response)\n\n    def test__set_cookie_real_webob_response(self):\n        import webob\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['abc'] = 'x'\n        response = webob.Response()\n        self.assertEqual(session._set_cookie(response), True)\n        self.assertEqual(response.headerlist[-1][0], 'Set-Cookie')\n\n    def test__set_cookie_options(self):\n        from pyramid.response import Response\n        request = testing.DummyRequest()\n        request.exception = None\n        session = self._makeOne(request,\n                                cookie_name = 'abc',\n                                cookie_path = '/foo',\n                                cookie_domain = 'localhost',\n                                cookie_secure = True,\n                                cookie_httponly = True,\n                                )\n        session['abc'] = 'x'\n        response = Response()\n        self.assertEqual(session._set_cookie(response), True)\n        cookieval= response.headerlist[-1][1]\n        val, domain, path, secure, httponly = [x.strip() for x in\n                                               cookieval.split(';')]\n        self.assertTrue(val.startswith('abc='))\n        self.assertEqual(domain, 'Domain=localhost')\n        self.assertEqual(path, 'Path=/foo')\n        self.assertEqual(secure, 'secure')\n        self.assertEqual(httponly, 'HttpOnly')\n\n    def test_flash_default(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1')\n        session.flash('msg2')\n        self.assertEqual(session['_f_'], ['msg1', 'msg2'])\n\n    def test_flash_allow_duplicate_false(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1')\n        session.flash('msg1', allow_duplicate=False)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_allow_duplicate_true_and_msg_not_in_storage(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1', allow_duplicate=True)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_allow_duplicate_false_and_msg_not_in_storage(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1', allow_duplicate=False)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_mixed(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('warn1', 'warn')\n        session.flash('warn2', 'warn')\n        session.flash('err1', 'error')\n        session.flash('err2', 'error')\n        self.assertEqual(session['_f_warn'], ['warn1', 'warn2'])\n\n    def test_pop_flash_default_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_'] = queue\n        result = session.pop_flash()\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_'), None)\n\n    def test_pop_flash_nodefault_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_error'] = queue\n        result = session.pop_flash('error')\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_error'), None)\n\n    def test_peek_flash_default_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_'] = queue\n        result = session.peek_flash()\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_'), queue)\n\n    def test_peek_flash_nodefault_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_error'] = queue\n        result = session.peek_flash('error')\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_error'), queue)\n\n    def test_new_csrf_token(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        token = session.new_csrf_token()\n        self.assertEqual(token, session['_csrft_'])\n\n    def test_get_csrf_token(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['_csrft_'] = 'token'\n        token = session.get_csrf_token()\n        self.assertEqual(token, 'token')\n        self.assertTrue('_csrft_' in session)\n\n    def test_get_csrf_token_new(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        token = session.get_csrf_token()\n        self.assertTrue(token)\n        self.assertTrue('_csrft_' in session)\n\n    def test_serialize_option(self):\n        from pyramid.response import Response\n        secret = 'secret'\n        request = testing.DummyRequest()\n        session = self._makeOne(request,\n            signed_serialize=dummy_signed_serialize)\n        session['key'] = 'value'\n        response = Response()\n        self.assertEqual(session._set_cookie(response), True)\n        cookie = response.headerlist[-1][1]\n        expected_cookieval = dummy_signed_serialize(\n            (session.accessed, session.created, {'key': 'value'}), secret)\n        response = Response()\n        response.set_cookie('session', expected_cookieval)\n        expected_cookie = response.headerlist[-1][1]\n        self.assertEqual(cookie, expected_cookie)\n\n    def test_deserialize_option(self):\n        import time\n        secret = 'secret'\n        request = testing.DummyRequest()\n        accessed = time.time()\n        state = {'key': 'value'}\n        cookieval = dummy_signed_serialize((accessed, accessed, state), secret)\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request,\n            signed_deserialize=dummy_signed_deserialize)\n        self.assertEqual(dict(session), state)",
                            "ast_type_str": "ClassDef",
                            "start_lineno": 208,
                            "end_lineno": 223,
                            "parent": {
                                "file_name": "pyramid/tests/test_session.py",
                                "type": "class",
                                "name": "TestUnencryptedCookieSession",
                                "content": "class TestUnencryptedCookieSession(unittest.TestCase):\n    def _makeOne(self, request, **kw):\n        from pyramid.session import UnencryptedCookieSessionFactoryConfig\n        return UnencryptedCookieSessionFactoryConfig('secret', **kw)(request)\n\n    def test_ctor_no_cookie(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_instance_conforms(self):\n        from zope.interface.verify import verifyObject\n        from pyramid.interfaces import ISession\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        verifyObject(ISession, session)\n\n    def _serialize(self, accessed, state, secret='secret'):\n        from pyramid.session import signed_serialize\n        return signed_serialize((accessed, accessed, state), secret)\n        \n    def test_ctor_with_cookie_still_valid(self):\n        import time\n        request = testing.DummyRequest()\n        cookieval = self._serialize(time.time(), {'state':1})\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {'state':1})\n        \n    def test_ctor_with_cookie_expired(self):\n        request = testing.DummyRequest()\n        cookieval = self._serialize(0, {'state':1})\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_ctor_with_bad_cookie(self):\n        request = testing.DummyRequest()\n        cookieval = 'abc'\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_changed(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        self.assertEqual(session.changed(), None)\n\n    def test_invalidate(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['a'] = 1\n        self.assertEqual(session.invalidate(), None)\n        self.assertFalse('a' in session)\n\n    def test__set_cookie_on_exception(self):\n        request = testing.DummyRequest()\n        request.exception = True\n        session = self._makeOne(request)\n        session._cookie_on_exception = False\n        response = DummyResponse()\n        self.assertEqual(session._set_cookie(response), False)\n\n    def test__set_cookie_on_exception_no_request_exception(self):\n        import webob\n        request = testing.DummyRequest()\n        request.exception = None\n        session = self._makeOne(request)\n        session._cookie_on_exception = False\n        response = webob.Response()\n        self.assertEqual(session._set_cookie(response), True)\n        self.assertEqual(response.headerlist[-1][0], 'Set-Cookie')\n\n    def test__set_cookie_cookieval_too_long(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['abc'] = 'x'*100000\n        response = DummyResponse()\n        self.assertRaises(ValueError, session._set_cookie, response)\n\n    def test__set_cookie_real_webob_response(self):\n        import webob\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['abc'] = 'x'\n        response = webob.Response()\n        self.assertEqual(session._set_cookie(response), True)\n        self.assertEqual(response.headerlist[-1][0], 'Set-Cookie')\n\n    def test__set_cookie_options(self):\n        from pyramid.response import Response\n        request = testing.DummyRequest()\n        request.exception = None\n        session = self._makeOne(request,\n                                cookie_name = 'abc',\n                                cookie_path = '/foo',\n                                cookie_domain = 'localhost',\n                                cookie_secure = True,\n                                cookie_httponly = True,\n                                )\n        session['abc'] = 'x'\n        response = Response()\n        self.assertEqual(session._set_cookie(response), True)\n        cookieval= response.headerlist[-1][1]\n        val, domain, path, secure, httponly = [x.strip() for x in\n                                               cookieval.split(';')]\n        self.assertTrue(val.startswith('abc='))\n        self.assertEqual(domain, 'Domain=localhost')\n        self.assertEqual(path, 'Path=/foo')\n        self.assertEqual(secure, 'secure')\n        self.assertEqual(httponly, 'HttpOnly')\n\n    def test_flash_default(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1')\n        session.flash('msg2')\n        self.assertEqual(session['_f_'], ['msg1', 'msg2'])\n\n    def test_flash_allow_duplicate_false(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1')\n        session.flash('msg1', allow_duplicate=False)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_allow_duplicate_true_and_msg_not_in_storage(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1', allow_duplicate=True)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_allow_duplicate_false_and_msg_not_in_storage(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1', allow_duplicate=False)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_mixed(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('warn1', 'warn')\n        session.flash('warn2', 'warn')\n        session.flash('err1', 'error')\n        session.flash('err2', 'error')\n        self.assertEqual(session['_f_warn'], ['warn1', 'warn2'])\n\n    def test_pop_flash_default_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_'] = queue\n        result = session.pop_flash()\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_'), None)\n\n    def test_pop_flash_nodefault_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_error'] = queue\n        result = session.pop_flash('error')\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_error'), None)\n\n    def test_peek_flash_default_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_'] = queue\n        result = session.peek_flash()\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_'), queue)\n\n    def test_peek_flash_nodefault_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_error'] = queue\n        result = session.peek_flash('error')\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_error'), queue)\n\n    def test_new_csrf_token(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        token = session.new_csrf_token()\n        self.assertEqual(token, session['_csrft_'])\n\n    def test_get_csrf_token(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['_csrft_'] = 'token'\n        token = session.get_csrf_token()\n        self.assertEqual(token, 'token')\n        self.assertTrue('_csrft_' in session)\n\n    def test_get_csrf_token_new(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        token = session.get_csrf_token()\n        self.assertTrue(token)\n        self.assertTrue('_csrft_' in session)\n\n    def test_serialize_option(self):\n        from pyramid.response import Response\n        secret = 'secret'\n        request = testing.DummyRequest()\n        session = self._makeOne(request,\n            signed_serialize=dummy_signed_serialize)\n        session['key'] = 'value'\n        response = Response()\n        self.assertEqual(session._set_cookie(response), True)\n        cookie = response.headerlist[-1][1]\n        expected_cookieval = dummy_signed_serialize(\n            (session.accessed, session.created, {'key': 'value'}), secret)\n        response = Response()\n        response.set_cookie('session', expected_cookieval)\n        expected_cookie = response.headerlist[-1][1]\n        self.assertEqual(cookie, expected_cookie)\n\n    def test_deserialize_option(self):\n        import time\n        secret = 'secret'\n        request = testing.DummyRequest()\n        accessed = time.time()\n        state = {'key': 'value'}\n        cookieval = dummy_signed_serialize((accessed, accessed, state), secret)\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request,\n            signed_deserialize=dummy_signed_deserialize)\n        self.assertEqual(dict(session), state)",
                                "ast_type_str": "ClassDef",
                                "start_lineno": 4,
                                "end_lineno": 235,
                                "parent": null
                            }
                        }
                    ],
                    "deleted_entities": []
                }
            ]
        }
    ],
    "old_commit_hash": "b8b896b748ba5d4fd9c6d46db0d6f192cab264f3^",
    "new_commit_hash": "b8b896b748ba5d4fd9c6d46db0d6f192cab264f3",
    "commit_message": "Merge branch 'master' of ianjosephwilson/pyramid into pull.617\n\nConflicts:\n\tCONTRIBUTORS.txt",
    "commit_date": "2012-08-23T10:18:23-05:00",
    "metadata": {}
}
{
    "repo_name": "pyramid",
    "new_commit_hash": "b8b896b748ba5d4fd9c6d46db0d6f192cab264f3",
    "test_file_codes": [
        "import unittest\nfrom pyramid import testing\n\nclass TestUnencryptedCookieSession(unittest.TestCase):\n    def _makeOne(self, request, **kw):\n        from pyramid.session import UnencryptedCookieSessionFactoryConfig\n        return UnencryptedCookieSessionFactoryConfig('secret', **kw)(request)\n\n    def test_ctor_no_cookie(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_instance_conforms(self):\n        from zope.interface.verify import verifyObject\n        from pyramid.interfaces import ISession\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        verifyObject(ISession, session)\n\n    def _serialize(self, accessed, state, secret='secret'):\n        from pyramid.session import signed_serialize\n        return signed_serialize((accessed, accessed, state), secret)\n        \n    def test_ctor_with_cookie_still_valid(self):\n        import time\n        request = testing.DummyRequest()\n        cookieval = self._serialize(time.time(), {'state':1})\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {'state':1})\n        \n    def test_ctor_with_cookie_expired(self):\n        request = testing.DummyRequest()\n        cookieval = self._serialize(0, {'state':1})\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_ctor_with_bad_cookie(self):\n        request = testing.DummyRequest()\n        cookieval = 'abc'\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request)\n        self.assertEqual(dict(session), {})\n\n    def test_changed(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        self.assertEqual(session.changed(), None)\n\n    def test_invalidate(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['a'] = 1\n        self.assertEqual(session.invalidate(), None)\n        self.assertFalse('a' in session)\n\n    def test__set_cookie_on_exception(self):\n        request = testing.DummyRequest()\n        request.exception = True\n        session = self._makeOne(request)\n        session._cookie_on_exception = False\n        response = DummyResponse()\n        self.assertEqual(session._set_cookie(response), False)\n\n    def test__set_cookie_on_exception_no_request_exception(self):\n        import webob\n        request = testing.DummyRequest()\n        request.exception = None\n        session = self._makeOne(request)\n        session._cookie_on_exception = False\n        response = webob.Response()\n        self.assertEqual(session._set_cookie(response), True)\n        self.assertEqual(response.headerlist[-1][0], 'Set-Cookie')\n\n    def test__set_cookie_cookieval_too_long(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['abc'] = 'x'*100000\n        response = DummyResponse()\n        self.assertRaises(ValueError, session._set_cookie, response)\n\n    def test__set_cookie_real_webob_response(self):\n        import webob\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['abc'] = 'x'\n        response = webob.Response()\n        self.assertEqual(session._set_cookie(response), True)\n        self.assertEqual(response.headerlist[-1][0], 'Set-Cookie')\n\n    def test__set_cookie_options(self):\n        from pyramid.response import Response\n        request = testing.DummyRequest()\n        request.exception = None\n        session = self._makeOne(request,\n                                cookie_name = 'abc',\n                                cookie_path = '/foo',\n                                cookie_domain = 'localhost',\n                                cookie_secure = True,\n                                cookie_httponly = True,\n                                )\n        session['abc'] = 'x'\n        response = Response()\n        self.assertEqual(session._set_cookie(response), True)\n        cookieval= response.headerlist[-1][1]\n        val, domain, path, secure, httponly = [x.strip() for x in\n                                               cookieval.split(';')]\n        self.assertTrue(val.startswith('abc='))\n        self.assertEqual(domain, 'Domain=localhost')\n        self.assertEqual(path, 'Path=/foo')\n        self.assertEqual(secure, 'secure')\n        self.assertEqual(httponly, 'HttpOnly')\n\n    def test_flash_default(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1')\n        session.flash('msg2')\n        self.assertEqual(session['_f_'], ['msg1', 'msg2'])\n\n    def test_flash_allow_duplicate_false(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1')\n        session.flash('msg1', allow_duplicate=False)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_allow_duplicate_true_and_msg_not_in_storage(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1', allow_duplicate=True)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_allow_duplicate_false_and_msg_not_in_storage(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('msg1', allow_duplicate=False)\n        self.assertEqual(session['_f_'], ['msg1'])\n\n    def test_flash_mixed(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session.flash('warn1', 'warn')\n        session.flash('warn2', 'warn')\n        session.flash('err1', 'error')\n        session.flash('err2', 'error')\n        self.assertEqual(session['_f_warn'], ['warn1', 'warn2'])\n\n    def test_pop_flash_default_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_'] = queue\n        result = session.pop_flash()\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_'), None)\n\n    def test_pop_flash_nodefault_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_error'] = queue\n        result = session.pop_flash('error')\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_error'), None)\n\n    def test_peek_flash_default_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_'] = queue\n        result = session.peek_flash()\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_'), queue)\n\n    def test_peek_flash_nodefault_queue(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        queue = ['one', 'two']\n        session['_f_error'] = queue\n        result = session.peek_flash('error')\n        self.assertEqual(result, queue)\n        self.assertEqual(session.get('_f_error'), queue)\n\n    def test_new_csrf_token(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        token = session.new_csrf_token()\n        self.assertEqual(token, session['_csrft_'])\n\n    def test_get_csrf_token(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        session['_csrft_'] = 'token'\n        token = session.get_csrf_token()\n        self.assertEqual(token, 'token')\n        self.assertTrue('_csrft_' in session)\n\n    def test_get_csrf_token_new(self):\n        request = testing.DummyRequest()\n        session = self._makeOne(request)\n        token = session.get_csrf_token()\n        self.assertTrue(token)\n        self.assertTrue('_csrft_' in session)\n\n    def test_serialize_option(self):\n        from pyramid.response import Response\n        secret = 'secret'\n        request = testing.DummyRequest()\n        session = self._makeOne(request,\n            signed_serialize=dummy_signed_serialize)\n        session['key'] = 'value'\n        response = Response()\n        self.assertEqual(session._set_cookie(response), True)\n        cookie = response.headerlist[-1][1]\n        expected_cookieval = dummy_signed_serialize(\n            (session.accessed, session.created, {'key': 'value'}), secret)\n        response = Response()\n        response.set_cookie('session', expected_cookieval)\n        expected_cookie = response.headerlist[-1][1]\n        self.assertEqual(cookie, expected_cookie)\n\n    def test_deserialize_option(self):\n        import time\n        secret = 'secret'\n        request = testing.DummyRequest()\n        accessed = time.time()\n        state = {'key': 'value'}\n        cookieval = dummy_signed_serialize((accessed, accessed, state), secret)\n        request.cookies['session'] = cookieval\n        session = self._makeOne(request,\n            signed_deserialize=dummy_signed_deserialize)\n        self.assertEqual(dict(session), state)\n\ndef dummy_signed_serialize(data, secret):\n    import base64\n    from pyramid.compat import pickle, bytes_\n    pickled = pickle.dumps(data)\n    return base64.b64encode(bytes_(secret)) + base64.b64encode(pickled)\n\ndef dummy_signed_deserialize(serialized, secret):\n    import base64\n    from pyramid.compat import pickle, bytes_\n    serialized_data = base64.b64decode(\n        serialized[len(base64.b64encode(bytes_(secret))):])\n    return pickle.loads(serialized_data)\n\nclass Test_manage_accessed(unittest.TestCase):\n    def _makeOne(self, wrapped):\n        from pyramid.session import manage_accessed\n        return manage_accessed(wrapped)\n\n    def test_accessed_set(self):\n        request = testing.DummyRequest()\n        session = DummySessionFactory(request)\n        session.accessed = None\n        wrapper = self._makeOne(session.__class__.get)\n        wrapper(session, 'a')\n        self.assertNotEqual(session.accessed, None)\n        \n    def test_already_dirty(self):\n        request = testing.DummyRequest()\n        session = DummySessionFactory(request)\n        session._dirty = True\n        session['a'] = 1\n        wrapper = self._makeOne(session.__class__.get)\n        self.assertEqual(wrapper.__doc__, session.get.__doc__)\n        result = wrapper(session, 'a')\n        self.assertEqual(result, 1)\n        callbacks = request.response_callbacks\n        self.assertEqual(len(callbacks), 0)\n\n    def test_with_exception(self):\n        import webob\n        request = testing.DummyRequest()\n        request.exception = True\n        session = DummySessionFactory(request)\n        session['a'] = 1\n        wrapper = self._makeOne(session.__class__.get)\n        self.assertEqual(wrapper.__doc__, session.get.__doc__)\n        result = wrapper(session, 'a')\n        self.assertEqual(result, 1)\n        callbacks = request.response_callbacks\n        self.assertEqual(len(callbacks), 1)\n        response = webob.Response()\n        result = callbacks[0](request, response)\n        self.assertEqual(result, None)\n        self.assertFalse('Set-Cookie' in dict(response.headerlist))\n\n    def test_cookie_is_set(self):\n        request = testing.DummyRequest()\n        session = DummySessionFactory(request)\n        session['a'] = 1\n        wrapper = self._makeOne(session.__class__.get)\n        self.assertEqual(wrapper.__doc__, session.get.__doc__)\n        result = wrapper(session, 'a')\n        self.assertEqual(result, 1)\n        callbacks = request.response_callbacks\n        self.assertEqual(len(callbacks), 1)\n        response = DummyResponse()\n        result = callbacks[0](request, response)\n        self.assertEqual(result, None)\n        self.assertEqual(session.response, response)\n\ndef serialize(data, secret):\n    import hmac\n    import base64\n    from hashlib import sha1\n    from pyramid.compat import bytes_\n    from pyramid.compat import native_\n    from pyramid.compat import pickle\n    pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)\n    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()\n    return sig + native_(base64.b64encode(pickled))\n\nclass Test_signed_serialize(unittest.TestCase):\n    def _callFUT(self, data, secret):\n        from pyramid.session import signed_serialize\n        return signed_serialize(data, secret)\n\n    def test_it(self):\n        expected = serialize('123', 'secret')\n        result = self._callFUT('123', 'secret')\n        self.assertEqual(result, expected)\n        \nclass Test_signed_deserialize(unittest.TestCase):\n    def _callFUT(self, serialized, secret, hmac=None):\n        if hmac is None:\n            import hmac\n        from pyramid.session import signed_deserialize\n        return signed_deserialize(serialized, secret, hmac=hmac)\n\n    def test_it(self):\n        serialized = serialize('123', 'secret')\n        result = self._callFUT(serialized, 'secret')\n        self.assertEqual(result, '123')\n\n    def test_invalid_bits(self):\n        serialized = serialize('123', 'secret')\n        self.assertRaises(ValueError, self._callFUT, serialized, 'seekrit')\n\n    def test_invalid_len(self):\n        class hmac(object):\n            def new(self, *arg):\n                return self\n            def hexdigest(self):\n                return '1234'\n        serialized = serialize('123', 'secret123')\n        self.assertRaises(ValueError, self._callFUT, serialized, 'secret',\n                          hmac=hmac())\n        \n    def test_it_bad_encoding(self):\n        serialized = 'bad' + serialize('123', 'secret')\n        self.assertRaises(ValueError, self._callFUT, serialized, 'secret')\n        \n\nclass DummySessionFactory(dict):\n    _dirty = False\n    _cookie_name = 'session'\n    _cookie_max_age = None\n    _cookie_path = '/'\n    _cookie_domain = None\n    _cookie_secure = False\n    _cookie_httponly = False\n    _timeout = 1200\n    _secret = 'secret'\n    def __init__(self, request):\n        self.request = request\n        dict.__init__(self, {})\n\n    def _set_cookie(self, response):\n        self.response = response\n\nclass DummyResponse(object):\n    def __init__(self):\n        self.headerlist = []\n"
    ],
    "test_file_names": [
        "test_1.py"
    ],
    "setup_res_code": 0,
    "setup_res_stdout": "",
    "setup_res_stderr": "Using CPython 3.8.20\nCreating virtual environment at: .venv\nActivate with: source .venv/bin/activate\nResolved 15 packages in 599ms\nPrepared 1 package in 702ms\nInstalled 15 packages in 14ms\n + chameleon==4.4.4\n + importlib-metadata==8.5.0\n + importlib-resources==6.4.5\n + mako==1.3.8\n + markupsafe==2.1.5\n + pastedeploy==3.1.0\n + pyramid==1.4.dev0 (from file:///home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3)\n + repoze-lru==0.7\n + setuptools==75.3.0\n + translationstring==1.4\n + venusian==3.1.1\n + webob==1.8.9\n + zipp==3.20.2\n + zope-deprecation==5.0\n + zope-interface==7.2\nResolved 25 packages in 21ms\nInstalled 10 packages in 8ms\n + beautifulsoup4==4.12.3\n + coverage==7.6.1\n + distlib==0.3.9\n + filelock==3.16.1\n + nose==1.3.7\n + platformdirs==4.3.6\n + soupsieve==2.6\n + virtualenv==20.29.0\n + waitress==3.0.0\n + webtest==3.0.1\nResolved 16 packages in 6ms\nInstalled 12 packages in 9ms\n + cachetools==5.5.0\n + chardet==5.2.0\n + colorama==0.4.6\n + exceptiongroup==1.2.2\n + iniconfig==2.0.0\n + packaging==24.2\n + pluggy==1.5.0\n + pyproject-api==1.8.0\n + pytest==8.3.4\n + tomli==2.2.1\n + tox==4.23.2\n + typing-extensions==4.12.2\n",
    "new_commit_res_code": 1,
    "new_commit_res_stdout": "============================= test session starts ==============================\nplatform linux -- Python 3.8.20, pytest-8.3.4, pluggy-1.5.0\nrootdir: /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3\ncollected 835 items\n\nr2e_tests/test_1.py ...................................                  [  4%]\nr2e_tests/test_config/test_adapters.py .FF.........F..                   [  5%]\nr2e_tests/test_config/test_assets.py ...........FF.....................F [ 10%]\n....................                                                     [ 12%]\nr2e_tests/test_config/test_factories.py ....................             [ 14%]\nr2e_tests/test_config/test_i18n.py FFF.FF....                            [ 16%]\nr2e_tests/test_config/test_init.py ..................................... [ 20%]\nF..F....................F...........F................................... [ 29%]\n.FF...................                                                   [ 31%]\nr2e_tests/test_config/test_predicates.py ............................... [ 35%]\n......                                                                   [ 36%]\nr2e_tests/test_config/test_rendering.py ....                             [ 36%]\nr2e_tests/test_config/test_routes.py ........................            [ 39%]\nr2e_tests/test_config/test_security.py ..........                        [ 40%]\nr2e_tests/test_config/test_settings.py ......................            [ 43%]\nr2e_tests/test_config/test_testing.py ..........                         [ 44%]\nr2e_tests/test_config/test_tweens.py .................................   [ 48%]\nr2e_tests/test_config/test_util.py ..................................... [ 53%]\n...                                                                      [ 53%]\nr2e_tests/test_config/test_views.py ...................F................ [ 57%]\n......................................................................FF [ 66%]\n........................................................................ [ 74%]\n.........................FF.......F...F....F............................ [ 83%]\n.................................F                                       [ 87%]\nr2e_tests/test_scripts/test_common.py .                                  [ 87%]\nr2e_tests/test_scripts/test_pcreate.py .........                         [ 88%]\nr2e_tests/test_scripts/test_prequest.py F.FFFFF.F.FF.                    [ 90%]\nr2e_tests/test_scripts/test_proutes.py .........                         [ 91%]\nr2e_tests/test_scripts/test_pserve.py ..........................         [ 94%]\nr2e_tests/test_scripts/test_pshell.py .................                  [ 96%]\nr2e_tests/test_scripts/test_ptweens.py .....                             [ 97%]\nr2e_tests/test_scripts/test_pviews.py ................F......            [100%]\n\n=================================== FAILURES ===================================\n__ AdaptersConfiguratorMixinTests.test_add_resource_url_adapter_dotted_names ___\n\nself = <r2e_tests.test_config.test_adapters.AdaptersConfiguratorMixinTests testMethod=test_add_resource_url_adapter_dotted_names>\n\n    def test_add_resource_url_adapter_dotted_names(self):\n        from pyramid.interfaces import IResourceURL\n        config = self._makeOne(autocommit=True)\n        config.add_resource_url_adapter(\n            'pyramid.tests.test_config.test_adapters.DummyResourceURL',\n            'pyramid.tests.test_config.test_adapters.DummyIface',\n            )\n        iface = DummyIface()\n>       adapter = config.registry.getMultiAdapter((iface, iface),\n                                                    IResourceURL)\n\nr2e_tests/test_config/test_adapters.py:165: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <Registry r2e_tests.test_config>\nobjects = (<r2e_tests.test_config.test_adapters.DummyIface object at 0x7b0715997e50>, <r2e_tests.test_config.test_adapters.DummyIface object at 0x7b0715997e50>)\ninterface = <InterfaceClass pyramid.interfaces.IResourceURL>, name = ''\n\n    def getMultiAdapter(self, objects, interface, name=''):\n        adapter = self.adapters.queryMultiAdapter(objects, interface, name)\n        if adapter is None:\n>           raise ComponentLookupError(objects, interface, name)\nE           zope.interface.interfaces.ComponentLookupError: ((<r2e_tests.test_config.test_adapters.DummyIface object at 0x7b0715997e50>, <r2e_tests.test_config.test_adapters.DummyIface object at 0x7b0715997e50>), <InterfaceClass pyramid.interfaces.IResourceURL>, '')\n\n.venv/lib/python3.8/site-packages/zope/interface/registry.py:379: ComponentLookupError\n_ AdaptersConfiguratorMixinTests.test_add_resource_url_adapter_introspectables _\n\nself = <r2e_tests.test_config.test_adapters.AdaptersConfiguratorMixinTests testMethod=test_add_resource_url_adapter_introspectables>\n\n    def test_add_resource_url_adapter_introspectables(self):\n        config = self._makeOne()\n        config.add_resource_url_adapter(DummyResourceURL, DummyIface)\n        actions = config.action_state.actions\n        self.assertEqual(len(actions), 1)\n        intrs  = actions[0]['introspectables']\n        self.assertEqual(len(intrs), 1)\n        intr = intrs[0]\n        self.assertEqual(intr.type_name, 'resource url adapter')\n        self.assertEqual(intr.discriminator,\n                         ('resource url adapter', DummyIface))\n        self.assertEqual(intr.category_name, 'resource url adapters')\n>       self.assertEqual(\n            intr.title,\n            \"resource url adapter for resource iface \"\n            \"<class 'pyramid.tests.test_config.test_adapters.DummyIface'>\"\n            )\nE       AssertionError: \"reso[34 chars]e <class 'r2e_tests.test_config.test_adapters.DummyIface'>\" != \"reso[34 chars]e <class 'pyramid.tests.test_config.test_adapters.DummyIface'>\"\nE       - resource url adapter for resource iface <class 'r2e_tests.test_config.test_adapters.DummyIface'>\nE       ?                                                  ^^^\nE       + resource url adapter for resource iface <class 'pyramid.tests.test_config.test_adapters.DummyIface'>\nE       ?                                                 ++ ^^^^^\n\nr2e_tests/test_config/test_adapters.py:211: AssertionError\n________ AdaptersConfiguratorMixinTests.test_add_traverser_dotted_names ________\n\nself = <r2e_tests.test_config.test_adapters.AdaptersConfiguratorMixinTests testMethod=test_add_traverser_dotted_names>\n\n    def test_add_traverser_dotted_names(self):\n        from pyramid.interfaces import ITraverser\n        config = self._makeOne(autocommit=True)\n        config.add_traverser(\n            'pyramid.tests.test_config.test_adapters.DummyTraverser',\n            'pyramid.tests.test_config.test_adapters.DummyIface')\n        iface = DummyIface()\n>       traverser = config.registry.getAdapter(iface, ITraverser)\n\nr2e_tests/test_config/test_adapters.py:122: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <Registry r2e_tests.test_config>\nobject = <r2e_tests.test_config.test_adapters.DummyIface object at 0x7b07159e3b50>\ninterface = <InterfaceClass pyramid.interfaces.ITraverser>, name = ''\n\n    def getAdapter(self, object, interface, name=''):\n        adapter = self.adapters.queryAdapter(object, interface, name)\n        if adapter is None:\n>           raise ComponentLookupError(object, interface, name)\nE           zope.interface.interfaces.ComponentLookupError: (<r2e_tests.test_config.test_adapters.DummyIface object at 0x7b07159e3b50>, <InterfaceClass pyramid.interfaces.ITraverser>, '')\n\n.venv/lib/python3.8/site-packages/zope/interface/registry.py:368: ComponentLookupError\n_________ TestOverrideProvider.test_get_resource_filename_no_overrides _________\n\nself = <r2e_tests.test_config.test_assets.TestOverrideProvider testMethod=test_get_resource_filename_no_overrides>\n\n    def test_get_resource_filename_no_overrides(self):\n        import os\n        resource_name = 'test_assets.py'\n        import pyramid.tests.test_config\n        provider = self._makeOne(pyramid.tests.test_config)\n        here = os.path.dirname(os.path.abspath(__file__))\n        expected = os.path.join(here, resource_name)\n        result = provider.get_resource_filename(None, resource_name)\n>       self.assertEqual(result, expected)\nE       AssertionError: '/hom[73 chars]6d46db0d6f192cab264f3/pyramid/tests/test_config/test_assets.py' != '/hom[73 chars]6d46db0d6f192cab264f3/r2e_tests/test_config/test_assets.py'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/pyramid/tests/test_config/test_assets.py\nE       ?                                                                                                    -- ^^^^^\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/r2e_tests/test_config/test_assets.py\nE       ?                                                                                                     ^^^\n\nr2e_tests/test_config/test_assets.py:158: AssertionError\n____ TestOverrideProvider.test_get_resource_filename_override_returns_None _____\n\nself = <r2e_tests.test_config.test_assets.TestOverrideProvider testMethod=test_get_resource_filename_override_returns_None>\n\n    def test_get_resource_filename_override_returns_None(self):\n        overrides = DummyOverrides(None)\n        self._registerOverrides(overrides)\n        import os\n        resource_name = 'test_assets.py'\n        import pyramid.tests.test_config\n        provider = self._makeOne(pyramid.tests.test_config)\n        here = os.path.dirname(os.path.abspath(__file__))\n        expected = os.path.join(here, resource_name)\n        result = provider.get_resource_filename(None, resource_name)\n>       self.assertEqual(result, expected)\nE       AssertionError: '/hom[73 chars]6d46db0d6f192cab264f3/pyramid/tests/test_config/test_assets.py' != '/hom[73 chars]6d46db0d6f192cab264f3/r2e_tests/test_config/test_assets.py'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/pyramid/tests/test_config/test_assets.py\nE       ?                                                                                                    -- ^^^^^\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/r2e_tests/test_config/test_assets.py\nE       ?                                                                                                     ^^^\n\nr2e_tests/test_config/test_assets.py:212: AssertionError\n____________________ TestPackageOverrides.test_get_filename ____________________\n\nself = <r2e_tests.test_config.test_assets.TestPackageOverrides testMethod=test_get_filename>\n\n    def test_get_filename(self):\n        import os\n        overrides = [ DummyOverride(None), DummyOverride(\n            ('pyramid.tests.test_config', 'test_assets.py'))]\n        package = DummyPackage('package')\n        po = self._makeOne(package)\n        po.overrides= overrides\n        here = os.path.dirname(os.path.abspath(__file__))\n        expected = os.path.join(here, 'test_assets.py')\n>       self.assertEqual(po.get_filename('whatever'), expected)\nE       AssertionError: '/hom[73 chars]6d46db0d6f192cab264f3/pyramid/tests/test_config/test_assets.py' != '/hom[73 chars]6d46db0d6f192cab264f3/r2e_tests/test_config/test_assets.py'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/pyramid/tests/test_config/test_assets.py\nE       ?                                                                                                    -- ^^^^^\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/r2e_tests/test_config/test_assets.py\nE       ?                                                                                                     ^^^\n\nr2e_tests/test_config/test_assets.py:401: AssertionError\n_________ TestI18NConfiguratorMixin.test_add_translation_dirs_abspath __________\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_abspath>\n\n    def test_add_translation_dirs_abspath(self):\n        from pyramid.interfaces import ITranslationDirectories\n        config = self._makeOne(autocommit=True)\n>       config.add_translation_dirs(locale)\n\nr2e_tests/test_config/test_i18n.py:102: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \npyramid/config/util.py:54: in wrapper\n    result = wrapped(self, *arg, **kw)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <pyramid.config.Configurator object at 0x7b07156fd820>\nspecs = ('/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale',)\nintrospectables = []\nspec = '/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale'\npackage_name = None\n\n    @action_method\n    def add_translation_dirs(self, *specs):\n        \"\"\" Add one or more :term:`translation directory` paths to the\n        current configuration state.  The ``specs`` argument is a\n        sequence that may contain absolute directory paths\n        (e.g. ``/usr/share/locale``) or :term:`asset specification`\n        names naming a directory path (e.g. ``some.package:locale``)\n        or a combination of the two.\n    \n        Example:\n    \n        .. code-block:: python\n    \n           config.add_translation_dirs('/usr/share/locale',\n                                       'some.package:locale')\n    \n        Later calls to ``add_translation_dir`` insert directories into the\n        beginning of the list of translation directories created by earlier\n        calls.  This means that the same translation found in a directory\n        added later in the configuration process will be found before one\n        added earlier in the configuration process.  However, if multiple\n        specs are provided in a single call to ``add_translation_dirs``, the\n        directories will be inserted into the beginning of the directory list\n        in the order they're provided in the ``*specs`` list argument (items\n        earlier in the list trump ones later in the list).\n        \"\"\"\n        directories = []\n        introspectables = []\n    \n        for spec in specs[::-1]: # reversed\n            package_name, filename = self._split_spec(spec)\n            if package_name is None: # absolute filename\n                directory = filename\n            else:\n                __import__(package_name)\n                package = sys.modules[package_name]\n                directory = os.path.join(package_path(package), filename)\n    \n            if not os.path.isdir(os.path.realpath(directory)):\n>               raise ConfigurationError('\"%s\" is not a directory' %\n                                         directory)\nE               pyramid.exceptions.ConfigurationError: \"/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale\" is not a directory\n\npyramid/config/i18n.py:92: ConfigurationError\n________ TestI18NConfiguratorMixin.test_add_translation_dirs_asset_spec ________\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_asset_spec>\n\n    def test_add_translation_dirs_asset_spec(self):\n        from pyramid.interfaces import ITranslationDirectories\n        config = self._makeOne(autocommit=True)\n        config.add_translation_dirs('pyramid.tests.pkgs.localeapp:locale')\n>       self.assertEqual(config.registry.getUtility(ITranslationDirectories),\n                         [locale])\nE       AssertionError: Lists differ: ['/ho[70 chars]fd9c6d46db0d6f192cab264f3/pyramid/tests/pkgs/localeapp/locale'] != ['/ho[70 chars]fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale']\nE       \nE       First differing element 0:\nE       '/hom[68 chars]4fd9c6d46db0d6f192cab264f3/pyramid/tests/pkgs/localeapp/locale'\nE       '/hom[68 chars]4fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale'\nE       \nE       - ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/pyramid/tests/pkgs/localeapp/locale']\nE       ?                                                                                                      -- ^^^^^\nE       \nE       + ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale']\nE       ?                                                                                                       ^^^\n\nr2e_tests/test_config/test_i18n.py:57: AssertionError\n_ TestI18NConfiguratorMixin.test_add_translation_dirs_asset_spec_existing_translation_dirs _\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_asset_spec_existing_translation_dirs>\n\n    def test_add_translation_dirs_asset_spec_existing_translation_dirs(self):\n        from pyramid.interfaces import ITranslationDirectories\n        config = self._makeOne(autocommit=True)\n        directories = ['abc']\n        config.registry.registerUtility(directories, ITranslationDirectories)\n        config.add_translation_dirs('pyramid.tests.pkgs.localeapp:locale')\n        result = config.registry.getUtility(ITranslationDirectories)\n>       self.assertEqual(result, [locale, 'abc'])\nE       AssertionError: Lists differ: ['/ho[77 chars]6db0d6f192cab264f3/pyramid/tests/pkgs/localeapp/locale', 'abc'] != ['/ho[77 chars]6db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale', 'abc']\nE       \nE       First differing element 0:\nE       '/hom[68 chars]4fd9c6d46db0d6f192cab264f3/pyramid/tests/pkgs/localeapp/locale'\nE       '/hom[68 chars]4fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale'\nE       \nE       - ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/pyramid/tests/pkgs/localeapp/locale',\nE       ?                                                                                                      -- ^^^^^\nE       \nE       + ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale',\nE       ?                                                                                                       ^^^\nE       \nE          'abc']\n\nr2e_tests/test_config/test_i18n.py:67: AssertionError\n______ TestI18NConfiguratorMixin.test_add_translation_dirs_multiple_specs ______\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_multiple_specs>\n\n    def test_add_translation_dirs_multiple_specs(self):\n        from pyramid.interfaces import ITranslationDirectories\n        config = self._makeOne(autocommit=True)\n        config.add_translation_dirs('pyramid.tests.pkgs.localeapp:locale',\n                                    'pyramid.tests.pkgs.localeapp:locale2')\n>       self.assertEqual(config.registry.getUtility(ITranslationDirectories),\n                         [locale, locale2])\nE       AssertionError: Lists differ: ['/ho[91 chars]64f3/pyramid/tests/pkgs/localeapp/locale', '/h[130 chars]le2'] != ['/ho[91 chars]64f3/r2e_tests/pkgs/localeapp/locale', '/home/[122 chars]le2']\nE       \nE       First differing element 0:\nE       '/hom[68 chars]4fd9c6d46db0d6f192cab264f3/pyramid/tests/pkgs/localeapp/locale'\nE       '/hom[68 chars]4fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale'\nE       \nE       Diff is 1002 characters long. Set self.maxDiff to None to see it.\n\nr2e_tests/test_config/test_i18n.py:74: AssertionError\n_ TestI18NConfiguratorMixin.test_add_translation_dirs_multiple_specs_multiple_calls _\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_multiple_specs_multiple_calls>\n\n    def test_add_translation_dirs_multiple_specs_multiple_calls(self):\n        from pyramid.interfaces import ITranslationDirectories\n        config = self._makeOne(autocommit=True)\n        config.add_translation_dirs('pyramid.tests.pkgs.localeapp:locale',\n                                    'pyramid.tests.pkgs.localeapp:locale2')\n        config.add_translation_dirs('pyramid.tests.pkgs.localeapp:locale3')\n>       self.assertEqual(config.registry.getUtility(ITranslationDirectories),\n                         [locale3, locale, locale2])\nE       AssertionError: Lists differ: ['/ho[91 chars]64f3/pyramid/tests/pkgs/localeapp/locale3', '/[269 chars]le2'] != ['/ho[91 chars]64f3/r2e_tests/pkgs/localeapp/locale3', '/home[257 chars]le2']\nE       \nE       First differing element 0:\nE       '/hom[69 chars]fd9c6d46db0d6f192cab264f3/pyramid/tests/pkgs/localeapp/locale3'\nE       '/hom[69 chars]fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale3'\nE       \nE       Diff is 1504 characters long. Set self.maxDiff to None to see it.\n\nr2e_tests/test_config/test_i18n.py:83: AssertionError\n___________________ ConfiguratorTests.test_ctor_no_registry ____________________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_ctor_no_registry>\n\n    def test_ctor_no_registry(self):\n        import sys\n        from pyramid.interfaces import ISettings\n        from pyramid.config import Configurator\n        from pyramid.interfaces import IRendererFactory\n        config = Configurator()\n        this_pkg = sys.modules['pyramid.tests.test_config']\n        self.assertTrue(config.registry.getUtility(ISettings))\n>       self.assertEqual(config.package, this_pkg)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'pyramid.tests.test_config' from '/home/gc[125 chars].py'>\n\nr2e_tests/test_config/test_init.py:68: AssertionError\n_________ ConfiguratorTests.test_ctor_noreg_debug_logger_None_default __________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_ctor_noreg_debug_logger_None_default>\n\n    def test_ctor_noreg_debug_logger_None_default(self):\n        from pyramid.interfaces import IDebugLogger\n        config = self._makeOne()\n        logger = config.registry.getUtility(IDebugLogger)\n>       self.assertEqual(logger.name, 'pyramid.tests.test_config')\nE       AssertionError: 'r2e_tests.test_config' != 'pyramid.tests.test_config'\nE       - r2e_tests.test_config\nE       ?  ^^^\nE       + pyramid.tests.test_config\nE       ? ++ ^^^^^\n\nr2e_tests/test_config/test_init.py:129: AssertionError\n_______________ ConfiguratorTests.test_scan_integration_conflict _______________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_scan_integration_conflict>\n\n    def test_scan_integration_conflict(self):\n        from pyramid.tests.test_config.pkgs import selfscan\n        from pyramid.config import Configurator\n        c = Configurator()\n        c.scan(selfscan)\n        c.scan(selfscan)\n        try:\n>           c.commit()\n\nr2e_tests/test_config/test_init.py:1025: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \npyramid/config/__init__.py:600: in commit\n    self.action_state.execute_actions(introspector=self.introspector)\npyramid/config/__init__.py:1035: in execute_actions\n    for action in resolveConflicts(self.actions):\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nactions = []\n\n    def resolveConflicts(actions):\n        \"\"\"Resolve conflicting actions\n    \n        Given an actions list, identify and try to resolve conflicting actions.\n        Actions conflict if they have the same non-None discriminator.\n        Conflicting actions can be resolved if the include path of one of\n        the actions is a prefix of the includepaths of the other\n        conflicting actions and is unequal to the include paths in the\n        other conflicting actions.\n        \"\"\"\n    \n        def orderandpos(v):\n            n, v = v\n            if not isinstance(v, dict):\n                # old-style tuple action\n                v = expand_action(*v)\n            return (v['order'] or 0, n)\n    \n        sactions = sorted(enumerate(actions), key=orderandpos)\n    \n        def orderonly(v):\n            n, v = v\n            if not isinstance(v, dict):\n                # old-style tuple action\n                v = expand_action(*v)\n            return v['order'] or 0\n    \n        for order, actiongroup in itertools.groupby(sactions, orderonly):\n            # \"order\" is an integer grouping. Actions in a lower order will be\n            # executed before actions in a higher order.  All of the actions in\n            # one grouping will be executed (its callable, if any will be called)\n            # before any of the actions in the next.\n    \n            unique = {}\n            output = []\n    \n            for i, action in actiongroup:\n                # Within an order, actions are executed sequentially based on\n                # original action ordering (\"i\").\n    \n                if not isinstance(action, dict):\n                    # old-style tuple action\n                    action = expand_action(*action)\n    \n                # \"ainfo\" is a tuple of (order, i, action) where \"order\" is a\n                # user-supplied grouping, \"i\" is an integer expressing the relative\n                # position of this action in the action list being resolved, and\n                # \"action\" is an action dictionary.  The purpose of an ainfo is to\n                # associate an \"order\" and an \"i\" with a particular action; \"order\"\n                # and \"i\" exist for sorting purposes after conflict resolution.\n                ainfo = (order, i, action)\n    \n                discriminator = undefer(action['discriminator'])\n                action['discriminator'] = discriminator\n    \n                if discriminator is None:\n                    # The discriminator is None, so this action can never conflict.\n                    # We can add it directly to the result.\n                    output.append(ainfo)\n                    continue\n    \n                L = unique.setdefault(discriminator, [])\n                L.append(ainfo)\n    \n            # Check for conflicts\n            conflicts = {}\n    \n            for discriminator, ainfos in unique.items():\n                # We use (includepath, order, i) as a sort key because we need to\n                # sort the actions by the paths so that the shortest path with a\n                # given prefix comes first.  The \"first\" action is the one with the\n                # shortest include path.  We break sorting ties using \"order\", then\n                # \"i\".\n                def bypath(ainfo):\n                    path, order, i = ainfo[2]['includepath'], ainfo[0], ainfo[1]\n                    return path, order, i\n    \n                ainfos.sort(key=bypath)\n                ainfo, rest = ainfos[0], ainfos[1:]\n                output.append(ainfo)\n                _, _, action = ainfo\n                basepath, baseinfo, discriminator = (\n                    action['includepath'],\n                    action['info'],\n                    action['discriminator'],\n                    )\n    \n                for _, _, action in rest:\n                    includepath = action['includepath']\n                    # Test whether path is a prefix of opath\n                    if (includepath[:len(basepath)] != basepath # not a prefix\n                        or includepath == basepath):\n                        L = conflicts.setdefault(discriminator, [baseinfo])\n                        L.append(action['info'])\n    \n            if conflicts:\n>               raise ConfigurationConflictError(conflicts)\nE               pyramid.exceptions.ConfigurationConflictError: Conflicting configuration actions\nE                 For: ('view', None, '', None, 'd41d8cd98f00b204e9800998ecf8427e')\nE                   Line 4 of file /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/pyramid/tests/test_config/pkgs/selfscan/__init__.py:\nE                       def abc(request):\nE                   Line 4 of file /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/pyramid/tests/test_config/pkgs/selfscan/__init__.py:\nE                       def abc(request):\nE                 For: ('view', None, 'two', None, 'd41d8cd98f00b204e9800998ecf8427e')\nE                   Line 4 of file /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/pyramid/tests/test_config/pkgs/selfscan/another.py:\nE                       def two(request):\nE                   Line 4 of file /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/pyramid/tests/test_config/pkgs/selfscan/another.py:\nE                       def two(request):\n\npyramid/config/__init__.py:1163: ConfigurationConflictError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_scan_integration_conflict>\n\n    def test_scan_integration_conflict(self):\n        from pyramid.tests.test_config.pkgs import selfscan\n        from pyramid.config import Configurator\n        c = Configurator()\n        c.scan(selfscan)\n        c.scan(selfscan)\n        try:\n            c.commit()\n        except ConfigurationConflictError as why:\n            def scanconflicts(e):\n                conflicts = e._conflicts.values()\n                for conflict in conflicts:\n                    for confinst in conflict:\n                        yield confinst.src\n            which = list(scanconflicts(why))\n            self.assertEqual(len(which), 4)\n>           self.assertTrue(\"@view_config(renderer='string')\" in which)\nE           AssertionError: False is not true\n\nr2e_tests/test_config/test_init.py:1034: AssertionError\n_______ ConfiguratorTests.test_setup_registry_debug_logger_None_default ________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_setup_registry_debug_logger_None_default>\n\n    def test_setup_registry_debug_logger_None_default(self):\n        from pyramid.registry import Registry\n        from pyramid.interfaces import IDebugLogger\n        reg = Registry()\n        config = self._makeOne(reg)\n        config.setup_registry()\n        logger = reg.getUtility(IDebugLogger)\n>       self.assertEqual(logger.name, 'pyramid.tests.test_config')\nE       AssertionError: 'r2e_tests.test_config' != 'pyramid.tests.test_config'\nE       - r2e_tests.test_config\nE       ?  ^^^\nE       + pyramid.tests.test_config\nE       ? ++ ^^^^^\n\nr2e_tests/test_config/test_init.py:426: AssertionError\n_________ TestConfigurator_add_directive.test_extend_with_dotted_name __________\n\nself = <r2e_tests.test_config.test_init.TestConfigurator_add_directive testMethod=test_extend_with_dotted_name>\n\n    def test_extend_with_dotted_name(self):\n        from pyramid.tests import test_config\n        config = self.config\n        config.add_directive(\n            'dummy_extend', 'pyramid.tests.test_config.dummy_extend')\n        self.assertTrue(hasattr(config, 'dummy_extend'))\n        config.dummy_extend('discrim')\n        after = config.action_state\n        action = after.actions[-1]\n        self.assertEqual(action['discriminator'], 'discrim')\n        self.assertEqual(action['callable'], None)\n>       self.assertEqual(action['args'], test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'pyramid.tests.test_config' from '/home/gc[125 chars].py'>\n\nr2e_tests/test_config/test_init.py:1422: AssertionError\n_______ TestConfigurator_add_directive.test_extend_with_python_callable ________\n\nself = <r2e_tests.test_config.test_init.TestConfigurator_add_directive testMethod=test_extend_with_python_callable>\n\n    def test_extend_with_python_callable(self):\n        from pyramid.tests import test_config\n        config = self.config\n        config.add_directive(\n            'dummy_extend', dummy_extend)\n        self.assertTrue(hasattr(config, 'dummy_extend'))\n        config.dummy_extend('discrim')\n        after = config.action_state\n        action = after.actions[-1]\n        self.assertEqual(action['discriminator'], 'discrim')\n        self.assertEqual(action['callable'], None)\n>       self.assertEqual(action['args'], test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'pyramid.tests.test_config' from '/home/gc[125 chars].py'>\n\nr2e_tests/test_config/test_init.py:1435: AssertionError\n____ TestViewsConfigurationMixin.test_add_static_view_package_here_relative ____\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_static_view_package_here_relative>\n\n    def test_add_static_view_package_here_relative(self):\n        from pyramid.interfaces import IStaticURLInfo\n        info = DummyStaticURLInfo()\n        config = self._makeOne(autocommit=True)\n        config.registry.registerUtility(info, IStaticURLInfo)\n        config.add_static_view('static', 'files')\n>       self.assertEqual(\n            info.added,\n            [(config, 'static', 'pyramid.tests.test_config:files', {})])\nE       AssertionError: Lists differ: [(<py[39 chars]b071593adc0>, 'static', 'r2e_tests.test_config:files', {})] != [(<py[39 chars]b071593adc0>, 'static', 'pyramid.tests.test_config:files', {})]\nE       \nE       First differing element 0:\nE       (<pyr[37 chars]7b071593adc0>, 'static', 'r2e_tests.test_config:files', {})\nE       (<pyr[37 chars]7b071593adc0>, 'static', 'pyramid.tests.test_config:files', {})\nE       \nE         [(<pyramid.config.Configurator object at 0x7b071593adc0>,\nE           'static',\nE       -   'r2e_tests.test_config:files',\nE       ?     ^^^\nE       \nE       +   'pyramid.tests.test_config:files',\nE       ?    ++ ^^^^^\nE       \nE           {})]\n\nr2e_tests/test_config/test_views.py:1673: AssertionError\n_______ TestViewsConfigurationMixin.test_add_view_with_template_renderer _______\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_template_renderer>\n\n    def test_add_view_with_template_renderer(self):\n        from pyramid.tests import test_config\n        from pyramid.interfaces import ISettings\n        class view(object):\n            def __init__(self, context, request):\n                self.request = request\n                self.context = context\n    \n            def __call__(self):\n                return {'a':'1'}\n        config = self._makeOne(autocommit=True)\n        renderer = self._registerRenderer(config)\n        fixture = 'pyramid.tests.test_config:files/minimal.txt'\n        config.add_view(view=view, renderer=fixture)\n        wrapper = self._getViewCallable(config)\n        request = self._makeRequest(config)\n        result = wrapper(None, request)\n        self.assertEqual(result.body, b'Hello!')\n        settings = config.registry.queryUtility(ISettings)\n        result = renderer.info\n        self.assertEqual(result.registry, config.registry)\n        self.assertEqual(result.type, '.txt')\n>       self.assertEqual(result.package, test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'pyramid.tests.test_config' from '/home/gc[125 chars].py'>\n\nr2e_tests/test_config/test_views.py:1001: AssertionError\n_ TestViewsConfigurationMixin.test_add_view_with_template_renderer_no_callable _\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_template_renderer_no_callable>\n\n    def test_add_view_with_template_renderer_no_callable(self):\n        from pyramid.tests import test_config\n        from pyramid.interfaces import ISettings\n        config = self._makeOne(autocommit=True)\n        renderer = self._registerRenderer(config)\n        fixture = 'pyramid.tests.test_config:files/minimal.txt'\n        config.add_view(view=None, renderer=fixture)\n        wrapper = self._getViewCallable(config)\n        request = self._makeRequest(config)\n        result = wrapper(None, request)\n        self.assertEqual(result.body, b'Hello!')\n        settings = config.registry.queryUtility(ISettings)\n        result = renderer.info\n        self.assertEqual(result.registry, config.registry)\n        self.assertEqual(result.type, '.txt')\n>       self.assertEqual(result.package, test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'pyramid.tests.test_config' from '/home/gc[125 chars].py'>\n\nr2e_tests/test_config/test_views.py:1041: AssertionError\n_____________ TestViewDeriver.test_function_returns_non_adaptable ______________\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_function_returns_non_adaptable>\n\n    def test_function_returns_non_adaptable(self):\n        def view(request):\n            return None\n        deriver = self._makeOne()\n        result = deriver(view)\n        self.assertFalse(result is view)\n        try:\n>           result(None, None)\n\nr2e_tests/test_config/test_views.py:2377: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = None, request = None\n\n    def viewresult_to_response(context, request):\n        result = view(context, request)\n        response = registry.queryAdapterOrSelf(result, IResponse)\n        if response is None:\n            if result is None:\n                append = (' You may have forgotten to return a value from '\n                          'the view callable.')\n            elif isinstance(result, dict):\n                append = (' You may have forgotten to define a renderer in '\n                          'the view configuration.')\n            else:\n                append = ''\n            msg = ('Could not convert return value of the view callable %s '\n                  'into a response object. '\n                  'The value returned was %r.' + append)\n    \n>           raise ValueError(msg % (view_description(view), result))\nE           ValueError: Could not convert return value of the view callable function r2e_tests.test_config.test_views.view into a response object. The value returned was None. You may have forgotten to return a value from the view callable.\n\npyramid/config/views.py:386: ValueError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_function_returns_non_adaptable>\n\n    def test_function_returns_non_adaptable(self):\n        def view(request):\n            return None\n        deriver = self._makeOne()\n        result = deriver(view)\n        self.assertFalse(result is view)\n        try:\n            result(None, None)\n        except ValueError as e:\n>           self.assertEqual(\n                e.args[0],\n                'Could not convert return value of the view callable function '\n                'pyramid.tests.test_config.test_views.view into a response '\n                'object. The value returned was None. You may have forgotten '\n                'to return a value from the view callable.'\n                )\nE           AssertionError: 'Coul[52 chars]tion r2e_tests.test_config.test_views.view int[110 chars]ble.' != 'Coul[52 chars]tion pyramid.tests.test_config.test_views.view[114 chars]ble.'\nE           Diff is 663 characters long. Set self.maxDiff to None to see it.\n\nr2e_tests/test_config/test_views.py:2379: AssertionError\n___________ TestViewDeriver.test_function_returns_non_adaptable_dict ___________\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_function_returns_non_adaptable_dict>\n\n    def test_function_returns_non_adaptable_dict(self):\n        def view(request):\n            return {'a':1}\n        deriver = self._makeOne()\n        result = deriver(view)\n        self.assertFalse(result is view)\n        try:\n>           result(None, None)\n\nr2e_tests/test_config/test_views.py:2396: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = None, request = None\n\n    def viewresult_to_response(context, request):\n        result = view(context, request)\n        response = registry.queryAdapterOrSelf(result, IResponse)\n        if response is None:\n            if result is None:\n                append = (' You may have forgotten to return a value from '\n                          'the view callable.')\n            elif isinstance(result, dict):\n                append = (' You may have forgotten to define a renderer in '\n                          'the view configuration.')\n            else:\n                append = ''\n            msg = ('Could not convert return value of the view callable %s '\n                  'into a response object. '\n                  'The value returned was %r.' + append)\n    \n>           raise ValueError(msg % (view_description(view), result))\nE           ValueError: Could not convert return value of the view callable function r2e_tests.test_config.test_views.view into a response object. The value returned was {'a': 1}. You may have forgotten to define a renderer in the view configuration.\n\npyramid/config/views.py:386: ValueError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_function_returns_non_adaptable_dict>\n\n    def test_function_returns_non_adaptable_dict(self):\n        def view(request):\n            return {'a':1}\n        deriver = self._makeOne()\n        result = deriver(view)\n        self.assertFalse(result is view)\n        try:\n            result(None, None)\n        except ValueError as e:\n>           self.assertEqual(\n                e.args[0],\n                \"Could not convert return value of the view callable function \"\n                \"pyramid.tests.test_config.test_views.view into a response \"\n                \"object. The value returned was {'a': 1}. You may have \"\n                \"forgotten to define a renderer in the view configuration.\"\n                )\nE           AssertionError: \"Coul[52 chars]tion r2e_tests.test_config.test_views.view int[120 chars]ion.\" != \"Coul[52 chars]tion pyramid.tests.test_config.test_views.view[124 chars]ion.\"\nE           Diff is 683 characters long. Set self.maxDiff to None to see it.\n\nr2e_tests/test_config/test_views.py:2398: AssertionError\n_____________ TestViewDeriver.test_instance_returns_non_adaptable ______________\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_instance_returns_non_adaptable>\n\n    def test_instance_returns_non_adaptable(self):\n        class AView(object):\n            def __call__(self, request):\n                return None\n        view = AView()\n        deriver = self._makeOne()\n        result = deriver(view)\n        self.assertFalse(result is view)\n        try:\n>           result(None, None)\n\nr2e_tests/test_config/test_views.py:2417: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = None, request = None\n\n    def viewresult_to_response(context, request):\n        result = view(context, request)\n        response = registry.queryAdapterOrSelf(result, IResponse)\n        if response is None:\n            if result is None:\n                append = (' You may have forgotten to return a value from '\n                          'the view callable.')\n            elif isinstance(result, dict):\n                append = (' You may have forgotten to define a renderer in '\n                          'the view configuration.')\n            else:\n                append = ''\n            msg = ('Could not convert return value of the view callable %s '\n                  'into a response object. '\n                  'The value returned was %r.' + append)\n    \n>           raise ValueError(msg % (view_description(view), result))\nE           ValueError: Could not convert return value of the view callable object <r2e_tests.test_config.test_views.TestViewDeriver.test_instance_returns_non_adaptable.<locals>.AView object at 0x7b0714d399a0> into a response object. The value returned was None. You may have forgotten to return a value from the view callable.\n\npyramid/config/views.py:386: ValueError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_instance_returns_non_adaptable>\n\n    def test_instance_returns_non_adaptable(self):\n        class AView(object):\n            def __call__(self, request):\n                return None\n        view = AView()\n        deriver = self._makeOne()\n        result = deriver(view)\n        self.assertFalse(result is view)\n        try:\n            result(None, None)\n        except ValueError as e:\n            msg = e.args[0]\n>           self.assertTrue(msg.startswith(\n                'Could not convert return value of the view callable object '\n                '<pyramid.tests.test_config.test_views.'))\nE           AssertionError: False is not true\n\nr2e_tests/test_config/test_views.py:2420: AssertionError\n____ TestViewDeriver.test_requestonly_default_method_returns_non_adaptable _____\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_requestonly_default_method_returns_non_adaptable>\n\n    def test_requestonly_default_method_returns_non_adaptable(self):\n        request = DummyRequest()\n        class AView(object):\n            def __init__(self, request):\n                pass\n            def __call__(self):\n                return None\n        deriver = self._makeOne()\n        result = deriver(AView)\n        self.assertFalse(result is AView)\n        try:\n>           result(None, request)\n\nr2e_tests/test_config/test_views.py:2440: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = None\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x7b07161e1fd0>\n\n    def viewresult_to_response(context, request):\n        result = view(context, request)\n        response = registry.queryAdapterOrSelf(result, IResponse)\n        if response is None:\n            if result is None:\n                append = (' You may have forgotten to return a value from '\n                          'the view callable.')\n            elif isinstance(result, dict):\n                append = (' You may have forgotten to define a renderer in '\n                          'the view configuration.')\n            else:\n                append = ''\n            msg = ('Could not convert return value of the view callable %s '\n                  'into a response object. '\n                  'The value returned was %r.' + append)\n    \n>           raise ValueError(msg % (view_description(view), result))\nE           ValueError: Could not convert return value of the view callable method __call__ of class r2e_tests.test_config.test_views.AView into a response object. The value returned was None. You may have forgotten to return a value from the view callable.\n\npyramid/config/views.py:386: ValueError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_requestonly_default_method_returns_non_adaptable>\n\n    def test_requestonly_default_method_returns_non_adaptable(self):\n        request = DummyRequest()\n        class AView(object):\n            def __init__(self, request):\n                pass\n            def __call__(self):\n                return None\n        deriver = self._makeOne()\n        result = deriver(AView)\n        self.assertFalse(result is AView)\n        try:\n            result(None, request)\n        except ValueError as e:\n>           self.assertEqual(\n                e.args[0],\n                'Could not convert return value of the view callable '\n                'method __call__ of '\n                'class pyramid.tests.test_config.test_views.AView into a '\n                'response object. The value returned was None. You may have '\n                'forgotten to return a value from the view callable.'\n                )\nE           AssertionError: 'Coul[68 chars]lass r2e_tests.test_config.test_views.AView in[111 chars]ble.' != 'Coul[68 chars]lass pyramid.tests.test_config.test_views.AVie[115 chars]ble.'\nE           Diff is 649 characters long. Set self.maxDiff to None to see it.\n\nr2e_tests/test_config/test_views.py:2442: AssertionError\n___ TestViewDeriver.test_requestonly_nondefault_method_returns_non_adaptable ___\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_requestonly_nondefault_method_returns_non_adaptable>\n\n    def test_requestonly_nondefault_method_returns_non_adaptable(self):\n        request = DummyRequest()\n        class AView(object):\n            def __init__(self, request):\n                pass\n            def theviewmethod(self):\n                return None\n        deriver = self._makeOne(attr='theviewmethod')\n        result = deriver(AView)\n        self.assertFalse(result is AView)\n        try:\n>           result(None, request)\n\nr2e_tests/test_config/test_views.py:2464: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = None\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x7b07157aa790>\n\n    def viewresult_to_response(context, request):\n        result = view(context, request)\n        response = registry.queryAdapterOrSelf(result, IResponse)\n        if response is None:\n            if result is None:\n                append = (' You may have forgotten to return a value from '\n                          'the view callable.')\n            elif isinstance(result, dict):\n                append = (' You may have forgotten to define a renderer in '\n                          'the view configuration.')\n            else:\n                append = ''\n            msg = ('Could not convert return value of the view callable %s '\n                  'into a response object. '\n                  'The value returned was %r.' + append)\n    \n>           raise ValueError(msg % (view_description(view), result))\nE           ValueError: Could not convert return value of the view callable method theviewmethod of class r2e_tests.test_config.test_views.AView into a response object. The value returned was None. You may have forgotten to return a value from the view callable.\n\npyramid/config/views.py:386: ValueError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_requestonly_nondefault_method_returns_non_adaptable>\n\n    def test_requestonly_nondefault_method_returns_non_adaptable(self):\n        request = DummyRequest()\n        class AView(object):\n            def __init__(self, request):\n                pass\n            def theviewmethod(self):\n                return None\n        deriver = self._makeOne(attr='theviewmethod')\n        result = deriver(AView)\n        self.assertFalse(result is AView)\n        try:\n            result(None, request)\n        except ValueError as e:\n>           self.assertEqual(\n                e.args[0],\n                'Could not convert return value of the view callable '\n                'method theviewmethod of '\n                'class pyramid.tests.test_config.test_views.AView into a '\n                'response object. The value returned was None. You may have '\n                'forgotten to return a value from the view callable.'\n                )\nE           AssertionError: 'Coul[73 chars]lass r2e_tests.test_config.test_views.AView in[111 chars]ble.' != 'Coul[73 chars]lass pyramid.tests.test_config.test_views.AVie[115 chars]ble.'\nE           Diff is 669 characters long. Set self.maxDiff to None to see it.\n\nr2e_tests/test_config/test_views.py:2466: AssertionError\n___________________ Test_view_description.test_without_text ____________________\n\nself = <r2e_tests.test_config.test_views.Test_view_description testMethod=test_without_text>\n\n    def test_without_text(self):\n        def view(): pass\n        result = self._callFUT(view)\n>       self.assertEqual(result,\n                         'function pyramid.tests.test_config.test_views.view')\nE       AssertionError: 'function r2e_tests.test_config.test_views.view' != 'function pyramid.tests.test_config.test_views.view'\nE       - function r2e_tests.test_config.test_views.view\nE       ?           ^^^\nE       + function pyramid.tests.test_config.test_views.view\nE       ?          ++ ^^^^^\n\nr2e_tests/test_config/test_views.py:3925: AssertionError\n_______________ TestPRequestCommand.test_command_display_headers _______________\n\nself = <r2e_tests.test_scripts.test_prequest.TestPRequestCommand testMethod=test_command_display_headers>\n\n    def test_command_display_headers(self):\n        command = self._makeOne(\n            ['', '--display-headers', 'development.ini', '/'])\n        command.run()\n        self.assertEqual(self._path_info, '/')\n        self.assertEqual(self._spec, 'development.ini')\n        self.assertEqual(self._app_name, None)\n>       self.assertEqual(\n            self._out,\n            ['200 OK', 'Content-Type: text/html; charset=UTF-8', 'abc'])\nE       AssertionError: Lists differ: ['200 OK', b'abc'] != ['200 OK', 'Content-Type: text/html; charset=UTF-8', 'abc']\nE       \nE       First differing element 1:\nE       b'abc'\nE       'Content-Type: text/html; charset=UTF-8'\nE       \nE       Second list contains 1 additional elements.\nE       First extra element 2:\nE       'abc'\nE       \nE       - ['200 OK', b'abc']\nE       + ['200 OK', 'Content-Type: text/html; charset=UTF-8', 'abc']\n\nr2e_tests/test_scripts/test_prequest.py:131: AssertionError\n_________ TestPRequestCommand.test_command_has_content_type_header_var _________\n\nself = <r2e_tests.test_scripts.test_prequest.TestPRequestCommand testMethod=test_command_has_content_type_header_var>\n\n    def test_command_has_content_type_header_var(self):\n        command = self._makeOne(\n            ['', '--header=content-type:app/foo','development.ini', '/'])\n        command.run()\n        self.assertEqual(self._environ['CONTENT_TYPE'], 'app/foo')\n        self.assertEqual(self._path_info, '/')\n        self.assertEqual(self._spec, 'development.ini')\n        self.assertEqual(self._app_name, None)\n>       self.assertEqual(self._out, ['abc'])\nE       AssertionError: Lists differ: [b'abc'] != ['abc']\nE       \nE       First differing element 0:\nE       b'abc'\nE       'abc'\nE       \nE       - [b'abc']\nE       ?  -\nE       \nE       + ['abc']\n\nr2e_tests/test_scripts/test_prequest.py:77: AssertionError\n_____________ TestPRequestCommand.test_command_has_good_header_var _____________\n\nself = <r2e_tests.test_scripts.test_prequest.TestPRequestCommand testMethod=test_command_has_good_header_var>\n\n    def test_command_has_good_header_var(self):\n        command = self._makeOne(\n            ['', '--header=name:value','development.ini', '/'])\n        command.run()\n        self.assertEqual(self._environ['HTTP_NAME'], 'value')\n        self.assertEqual(self._path_info, '/')\n        self.assertEqual(self._spec, 'development.ini')\n        self.assertEqual(self._app_name, None)\n>       self.assertEqual(self._out, ['abc'])\nE       AssertionError: Lists differ: [b'abc'] != ['abc']\nE       \nE       First differing element 0:\nE       b'abc'\nE       'abc'\nE       \nE       - [b'abc']\nE       ?  -\nE       \nE       + ['abc']\n\nr2e_tests/test_scripts/test_prequest.py:67: AssertionError\n__________ TestPRequestCommand.test_command_has_multiple_header_vars ___________\n\nself = <r2e_tests.test_scripts.test_prequest.TestPRequestCommand testMethod=test_command_has_multiple_header_vars>\n\n    def test_command_has_multiple_header_vars(self):\n        command = self._makeOne(\n            ['',\n             '--header=name:value',\n             '--header=name2:value2',\n             'development.ini',\n             '/'])\n        command.run()\n        self.assertEqual(self._environ['HTTP_NAME'], 'value')\n        self.assertEqual(self._environ['HTTP_NAME2'], 'value2')\n        self.assertEqual(self._path_info, '/')\n        self.assertEqual(self._spec, 'development.ini')\n        self.assertEqual(self._app_name, None)\n>       self.assertEqual(self._out, ['abc'])\nE       AssertionError: Lists differ: [b'abc'] != ['abc']\nE       \nE       First differing element 0:\nE       b'abc'\nE       'abc'\nE       \nE       - [b'abc']\nE       ?  -\nE       \nE       + ['abc']\n\nr2e_tests/test_scripts/test_prequest.py:92: AssertionError\n_________________ TestPRequestCommand.test_command_method_get __________________\n\nself = <r2e_tests.test_scripts.test_prequest.TestPRequestCommand testMethod=test_command_method_get>\n\n    def test_command_method_get(self):\n        command = self._makeOne(['', '--method=GET', 'development.ini', '/'])\n        command.run()\n        self.assertEqual(self._path_info, '/')\n        self.assertEqual(self._spec, 'development.ini')\n        self.assertEqual(self._app_name, None)\n>       self.assertEqual(self._out, ['abc'])\nE       AssertionError: Lists differ: [b'abc'] != ['abc']\nE       \nE       First differing element 0:\nE       b'abc'\nE       'abc'\nE       \nE       - [b'abc']\nE       ?  -\nE       \nE       + ['abc']\n\nr2e_tests/test_scripts/test_prequest.py:100: AssertionError\n_________________ TestPRequestCommand.test_command_method_post _________________\n\nself = <r2e_tests.test_scripts.test_prequest.TestPRequestCommand testMethod=test_command_method_post>\n\n    def test_command_method_post(self):\n        from pyramid.compat import NativeIO\n        command = self._makeOne(['', '--method=POST', 'development.ini', '/'])\n        stdin = NativeIO()\n        command.stdin = stdin\n        command.run()\n        self.assertEqual(self._environ['CONTENT_LENGTH'], '-1')\n        self.assertEqual(self._environ['wsgi.input'], stdin)\n        self.assertEqual(self._path_info, '/')\n        self.assertEqual(self._spec, 'development.ini')\n        self.assertEqual(self._app_name, None)\n>       self.assertEqual(self._out, ['abc'])\nE       AssertionError: Lists differ: [b'abc'] != ['abc']\nE       \nE       First differing element 0:\nE       b'abc'\nE       'abc'\nE       \nE       - [b'abc']\nE       ?  -\nE       \nE       + ['abc']\n\nr2e_tests/test_scripts/test_prequest.py:113: AssertionError\n________ TestPRequestCommand.test_command_path_doesnt_start_with_slash _________\n\nself = <r2e_tests.test_scripts.test_prequest.TestPRequestCommand testMethod=test_command_path_doesnt_start_with_slash>\n\n    def test_command_path_doesnt_start_with_slash(self):\n        command = self._makeOne(['', 'development.ini', 'abc'])\n        command.run()\n        self.assertEqual(self._path_info, '/abc')\n        self.assertEqual(self._spec, 'development.ini')\n        self.assertEqual(self._app_name, None)\n>       self.assertEqual(self._out, ['abc'])\nE       AssertionError: Lists differ: [b'abc'] != ['abc']\nE       \nE       First differing element 0:\nE       b'abc'\nE       'abc'\nE       \nE       - [b'abc']\nE       ?  -\nE       \nE       + ['abc']\n\nr2e_tests/test_scripts/test_prequest.py:48: AssertionError\n__________________ TestPRequestCommand.test_command_two_args ___________________\n\nself = <r2e_tests.test_scripts.test_prequest.TestPRequestCommand testMethod=test_command_two_args>\n\n    def test_command_two_args(self):\n        command = self._makeOne(['', 'development.ini', '/'])\n        command.run()\n        self.assertEqual(self._path_info, '/')\n        self.assertEqual(self._spec, 'development.ini')\n        self.assertEqual(self._app_name, None)\n>       self.assertEqual(self._out, ['abc'])\nE       AssertionError: Lists differ: [b'abc'] != ['abc']\nE       \nE       First differing element 0:\nE       b'abc'\nE       'abc'\nE       \nE       - [b'abc']\nE       ?  -\nE       \nE       + ['abc']\n\nr2e_tests/test_scripts/test_prequest.py:40: AssertionError\n______________ TestPRequestCommand.test_command_with_query_string ______________\n\nself = <r2e_tests.test_scripts.test_prequest.TestPRequestCommand testMethod=test_command_with_query_string>\n\n    def test_command_with_query_string(self):\n        command = self._makeOne(['', 'development.ini', '/abc?a=1&b=2&c'])\n        command.run()\n        self.assertEqual(self._environ['QUERY_STRING'], 'a=1&b=2&c')\n        self.assertEqual(self._path_info, '/abc')\n        self.assertEqual(self._spec, 'development.ini')\n        self.assertEqual(self._app_name, None)\n>       self.assertEqual(self._out, ['abc'])\nE       AssertionError: Lists differ: [b'abc'] != ['abc']\nE       \nE       First differing element 0:\nE       b'abc'\nE       'abc'\nE       \nE       - [b'abc']\nE       ?  -\nE       \nE       + ['abc']\n\nr2e_tests/test_scripts/test_prequest.py:122: AssertionError\n_____ TestPViewsCommand.test_views_command_single_view_function_traversal ______\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_single_view_function_traversal>\n\n    def test_views_command_single_view_function_traversal(self):\n        from pyramid.registry import Registry\n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n        def view(): pass\n        view.__request_attrs__ = {'context': 'context', 'view_name': 'a'}\n        command._find_view = lambda arg1, arg2: view\n        command.args = ('/foo/bar/myapp.ini#myapp', '/a')\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n>       self.assertEqual(L[8],\n                         '    pyramid.tests.test_scripts.test_pviews.view')\nE       AssertionError: '    r2e_tests.test_scripts.test_pviews.view' != '    pyramid.tests.test_scripts.test_pviews.view'\nE       -     r2e_tests.test_scripts.test_pviews.view\nE       ?      ^^^\nE       +     pyramid.tests.test_scripts.test_pviews.view\nE       ?     ++ ^^^^^\n\nr2e_tests/test_scripts/test_pviews.py:283: AssertionError\n==================================== PASSES ====================================\n=========================== short test summary info ============================\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test__set_cookie_cookieval_too_long\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test__set_cookie_on_exception\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test__set_cookie_on_exception_no_request_exception\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test__set_cookie_options\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test__set_cookie_real_webob_response\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_changed\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_ctor_no_cookie\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_ctor_with_bad_cookie\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_ctor_with_cookie_expired\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_ctor_with_cookie_still_valid\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_deserialize_option\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_flash_allow_duplicate_false\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_flash_allow_duplicate_false_and_msg_not_in_storage\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_flash_allow_duplicate_true_and_msg_not_in_storage\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_flash_default\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_flash_mixed\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_get_csrf_token\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_get_csrf_token_new\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_instance_conforms\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_invalidate\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_new_csrf_token\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_peek_flash_default_queue\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_peek_flash_nodefault_queue\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_pop_flash_default_queue\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_pop_flash_nodefault_queue\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_serialize_option\nPASSED r2e_tests/test_1.py::Test_manage_accessed::test_accessed_set\nPASSED r2e_tests/test_1.py::Test_manage_accessed::test_already_dirty\nPASSED r2e_tests/test_1.py::Test_manage_accessed::test_cookie_is_set\nPASSED r2e_tests/test_1.py::Test_manage_accessed::test_with_exception\nPASSED r2e_tests/test_1.py::Test_signed_serialize::test_it\nPASSED r2e_tests/test_1.py::Test_signed_deserialize::test_invalid_bits\nPASSED r2e_tests/test_1.py::Test_signed_deserialize::test_invalid_len\nPASSED r2e_tests/test_1.py::Test_signed_deserialize::test_it\nPASSED r2e_tests/test_1.py::Test_signed_deserialize::test_it_bad_encoding\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_object_event_subscriber\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_resource_url_default_resource_iface_means_Interface\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_resource_url_nodefault_resource_iface\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_response_adapter\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_response_adapter_dottednames\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_response_adapter_self\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_defaults\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_dottednames\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_iface_specified\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_traverser_default_iface_means_Interface\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_traverser_introspectables\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_traverser_nondefault_iface\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test__override_already_registered\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test__override_not_yet_registered\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_directory_with_directory\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_directory_with_file\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_directory_with_package\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_file_with_directory\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_file_with_file\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_file_with_package\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_package_with_directory\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_package_with_package\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_samename\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_filename_override_returns_value\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_stream_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_stream_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_stream_override_returns_value\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_string_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_string_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_string_override_returns_value\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_has_resource_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_has_resource_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_has_resource_override_returns_True\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_isdir_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_isdir_override_returns_False\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_isdir_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_listdir_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_listdir_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_listdir_override_returns_values\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_package_already_has_loader_of_different_type\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_package_already_has_loader_of_same_type\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_registers_loader_type\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_sets_loader\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_sets_local_state\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_filename_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_stream\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_stream_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_string\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_string_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_has_resource\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_has_resource_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_insert_directory\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_insert_emptystring\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_insert_file\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_isdir_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_isdir_false\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_isdir_true\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_listdir\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_listdir_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_search_path\nPASSED r2e_tests/test_config/test_assets.py::TestDirectoryOverride::test_it_match\nPASSED r2e_tests/test_config/test_assets.py::TestDirectoryOverride::test_it_no_match\nPASSED r2e_tests/test_config/test_assets.py::TestFileOverride::test_it_match\nPASSED r2e_tests/test_config/test_assets.py::TestFileOverride::test_it_no_match\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_multiple_request_methods_conflict\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_multiple_request_properties\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_multiple_request_properties_conflict\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_factory\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_factory_dottedname\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_method_subscriber\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_method_with_None_callable\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_method_with_None_callable_and_no_name\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_method_with_None_callable_conflict\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_method_with_callable\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_method_with_unnamed_callable\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_property_subscriber\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_property_with_callable\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_property_with_property\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_property_with_unnamed_callable\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_root_factory\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_root_factory_as_None\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_root_factory_dottedname\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_session_factory\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_session_factory_dottedname\nPASSED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_missing_dir\nPASSED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_no_specs\nPASSED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_registers_chameleon_translate\nPASSED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_set_locale_negotiator\nPASSED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_set_locale_negotiator_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test___getattr__matches\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test___getattr__matches_no_action_wrap\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test___getattr__missing_when_directives_dont_exist\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test___getattr__missing_when_directives_exist\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_has_listeners\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_notify\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_queryAdapterOrSelf\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_registerSelfAdapter\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_absolute_asset_spec_already_absolute\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_absolute_asset_spec_notastring\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_absolute_asset_spec_relative\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_action_autocommit_with_introspectables\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_action_autocommit_with_introspectables_introspection_off\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_action_branching_kw_is_None\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_action_branching_kw_is_not_None\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_action_branching_nonautocommit_with_config_info\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_action_branching_nonautocommit_with_introspectables\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_action_branching_nonautocommit_without_config_info\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_action_nonautocommit_with_introspectables_introspection_off\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_autocommit_no_conflicts\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_begin\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_begin_with_request\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_commit_conflict_resolved_with_include\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_commit_conflict_resolved_with_two_includes_and_local\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_commit_conflict_simple\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_commit_conflict_with_two_includes\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_conflict_set_forbidden_view\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_conflict_set_notfound_view\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_alternate_renderers\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_authentication_policy\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_authorization_policy_only\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_default_permission\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_default_renderers\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_default_view_mapper\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_exceptionresponse_view_None\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_exceptionresponse_view_custom\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_httpexception_view_default\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_no_root_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_noreg_custom_settings\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_noreg_debug_logger_non_None\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_session_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_with_introspection\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_with_package_registry\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_with_root_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_end\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_hook_zca\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_dotted_name\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_missing_source_file\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_module_defaults_to_includeme\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_module_defaults_to_includeme_missing\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_nested_route_prefix\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_python_callable\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_route_prefix\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_introspector_decorator\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_make_wsgi_app\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_maybe_dotted_notstring_success\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_maybe_dotted_string_fail\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_maybe_dotted_string_success\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_dottedname_package\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_with_extra_kw\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_with_ignore\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_with_onerror\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_alternate_renderers\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authentication_policy\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authentication_policy_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authorization_policy_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authorization_policy_only\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_calls_fix_registry\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_custom_settings\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_debug_logger_name\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_debug_logger_non_None\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_default_permission\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_dottedname_root_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_explicit_notfound_trumps_iexceptionresponse\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_includes\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_includes_spaces\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_locale_negotiator\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_locale_negotiator_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_no_default_root_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_registers_default_exceptionresponse_views\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_registers_default_view_predicates\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_registers_default_webob_iresponse_adapter\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_renderer_globals_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_renderer_globals_factory_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_request_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_request_factory_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_tweens\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_unhook_zca\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_with_package\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_with_package_module\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_with_package_package\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_for_\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_view\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_view_attr\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_view_context\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_view_exception\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_view_for\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_view_permission\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_view_permission_alias\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_view_renderer\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_view_renderer_alias\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_conflict_route_with_view\nPASSED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_directive_persists_across_configurator_creations\nPASSED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_extend_action_method_successful\nPASSED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_extend_same_name_doesnt_conflict\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_action_simple\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_action_with_includepath\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_action_with_includepath_and_info\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_action_with_info\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_action_with_introspectables\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_action_with_order\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_execute_actions_dicts\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_execute_actions_error\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_execute_actions_tuples\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_execute_actions_with_introspectable_no_callable\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_execute_actions_with_introspectables\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_it\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_processSpec\nPASSED r2e_tests/test_config/test_init.py::Test_resolveConflicts::test_it_conflict\nPASSED r2e_tests/test_config/test_init.py::Test_resolveConflicts::test_it_success_dicts\nPASSED r2e_tests/test_config/test_init.py::Test_resolveConflicts::test_it_success_tuples\nPASSED r2e_tests/test_config/test_init.py::Test_resolveConflicts::test_it_with_actions_grouped_by_order\nPASSED r2e_tests/test_config/test_init.py::TestGlobalRegistriesIntegration::test_global_registries\nPASSED r2e_tests/test_config/test_init.py::TestGlobalRegistriesIntegration::test_global_registries_empty\nPASSED r2e_tests/test_config/test_predicates.py::TestXHRPredicate::test___call___false\nPASSED r2e_tests/test_config/test_predicates.py::TestXHRPredicate::test___call___true\nPASSED r2e_tests/test_config/test_predicates.py::TestXHRPredicate::test_phash\nPASSED r2e_tests/test_config/test_predicates.py::TestXHRPredicate::test_text\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestMethodPredicate::test___call___false\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestMethodPredicate::test___call___true_multi\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestMethodPredicate::test___call___true_single\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestMethodPredicate::test_ctor_get_but_no_head\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestMethodPredicate::test_phash\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestMethodPredicate::test_text\nPASSED r2e_tests/test_config/test_predicates.py::TestPathInfoPredicate::test___call___false\nPASSED r2e_tests/test_config/test_predicates.py::TestPathInfoPredicate::test___call___true\nPASSED r2e_tests/test_config/test_predicates.py::TestPathInfoPredicate::test_ctor_compilefail\nPASSED r2e_tests/test_config/test_predicates.py::TestPathInfoPredicate::test_phash\nPASSED r2e_tests/test_config/test_predicates.py::TestPathInfoPredicate::test_text\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestParamPredicate::test___call___false\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestParamPredicate::test___call___true_exists\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestParamPredicate::test___call___true_withval\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestParamPredicate::test_phash_exists\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestParamPredicate::test_phash_withval\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestParamPredicate::test_text_exists\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestParamPredicate::test_text_withval\nPASSED r2e_tests/test_config/test_predicates.py::TestMatchParamPredicate::test___call___false\nPASSED r2e_tests/test_config/test_predicates.py::TestMatchParamPredicate::test___call___true_multi\nPASSED r2e_tests/test_config/test_predicates.py::TestMatchParamPredicate::test___call___true_single\nPASSED r2e_tests/test_config/test_predicates.py::TestMatchParamPredicate::test_phash\nPASSED r2e_tests/test_config/test_predicates.py::TestMatchParamPredicate::test_text\nPASSED r2e_tests/test_config/test_predicates.py::TestCustomPredicate::test___call___false\nPASSED r2e_tests/test_config/test_predicates.py::TestCustomPredicate::test___call___true\nPASSED r2e_tests/test_config/test_predicates.py::TestCustomPredicate::test_phash\nPASSED r2e_tests/test_config/test_predicates.py::TestCustomPredicate::test_text_func_has___text__\nPASSED r2e_tests/test_config/test_predicates.py::TestCustomPredicate::test_text_func_repr\nPASSED r2e_tests/test_config/test_predicates.py::TestTraversePredicate::test___call__traverse_has_remainder_already\nPASSED r2e_tests/test_config/test_predicates.py::TestTraversePredicate::test___call__traverse_matches\nPASSED r2e_tests/test_config/test_predicates.py::TestTraversePredicate::test___call__traverse_matches_with_highorder_chars\nPASSED r2e_tests/test_config/test_predicates.py::TestTraversePredicate::test_phash\nPASSED r2e_tests/test_config/test_predicates.py::TestTraversePredicate::test_text\nPASSED r2e_tests/test_config/test_rendering.py::TestRenderingConfiguratorMixin::test_add_renderer\nPASSED r2e_tests/test_config/test_rendering.py::TestRenderingConfiguratorMixin::test_add_renderer_dottedname_factory\nPASSED r2e_tests/test_config/test_rendering.py::TestRenderingConfiguratorMixin::test_set_renderer_globals_factory\nPASSED r2e_tests/test_config/test_rendering.py::TestRenderingConfiguratorMixin::test_set_renderer_globals_factory_dottedname\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_defaults\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_discriminator\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_path_no_pattern\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_pattern_with_path\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_view_with_view_attr\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_view_with_view_context\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_view_with_view_permission\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_view_with_view_renderer\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_accept\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_custom_predicates\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_factory\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_factory_dottedname\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_header\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_path_info\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_path_info_highorder\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_path_info_regex\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_pregenerator\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_request_method\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_request_param\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_route_prefix\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_static\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_xhr\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_get_routes_mapper_already_registered\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_get_routes_mapper_not_yet_registered\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_add_permission\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_no_authz_policy\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_no_authz_policy_autocommit\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_with_authz_policy\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_with_authz_policy_autocommit\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_no_authn_policy\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_no_authn_policy_autocommit\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_with_authn_policy\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_with_authn_policy_autocommit\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_default_permission\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test__set_settings_as_None\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test__set_settings_as_dictwithvalues\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_add_settings_settings_already_registered\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_add_settings_settings_not_yet_registered\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_get_settings_nosettings\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_get_settings_withsettings\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_all\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_authorization\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_notfound\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_routematch\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_templates\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_default_locale_name\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_getattr_fail\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_getattr_raises_attribute_error\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_getattr_success\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_noargs\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_originals_kept\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_prevent_http_cache\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_reload_all\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_reload_assets\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_reload_resources\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_reload_templates\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_renderer\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_renderer_explicitrenderer\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_renderer_twice\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_subscriber_defaults\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_subscriber_dottedname\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_subscriber_multiple\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_subscriber_single\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_template\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_resources\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_securitypolicy\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_dottedname\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_instance\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_name_ingress\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_name_main\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_over_ingress\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_over_ingress_iterable\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_under_main\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_under_main_iterable\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_unsuitable\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_conflict\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_names_distinct\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_names_with_over_nonstringoriter\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_names_with_under_nonstringoriter\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_names_with_underover\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test___call___explicit\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test___call___implicit\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_add_explicit\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_add_implicit\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_1\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_2\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_3\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_4\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_5\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_conflict_direct\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_conflict_indirect\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_over_and_under_partials\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_over_partial\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_over_partial_with_fallback\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_under_partial\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_under_partial_with_fallback\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_with_missing_fallbacks\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_with_multiple_matching_fallbacks\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_with_partial_fallbacks\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_custom_predicates_can_affect_traversal\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_different_custom_predicates_with_same_hash\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_match_param_from_dict\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_match_param_from_dict_fails\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_match_param_from_string\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_match_param_from_string_fails\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_ordering_importance_and_number\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_ordering_importance_of_predicates\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_ordering_number_of_predicates\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_ordering_xhr_and_request_method_trump_only_containment\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_predicate_text_is_correct\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_request_method_ordering_hashes_same\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_request_method_sequence\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_traverse_has_remainder_already\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_traverse_matches\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_traverse_matches_with_highorder_chars\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_unknown_predicate\nPASSED r2e_tests/test_config/test_util.py::TestActionInfo::test___str__\nPASSED r2e_tests/test_config/test_util.py::TestActionInfo::test_class_conforms\nPASSED r2e_tests/test_config/test_util.py::TestActionInfo::test_ctor\nPASSED r2e_tests/test_config/test_util.py::TestActionInfo::test_instance_conforms\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_add\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_remove\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_1\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_2\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_3\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_4\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_5\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_conflict_direct\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_conflict_indirect\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_missing_after_partial\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_missing_after_partial_with_fallback\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_missing_before_and_after_partials\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_missing_before_partial\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_missing_before_partial_with_fallback\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_with_missing_fallbacks\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_with_multiple_matching_fallbacks\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_with_partial_fallbacks\nPASSED r2e_tests/test_config/test_util.py::TestSingleton::test_repr\nPASSED r2e_tests/test_config/test_util.py::TestCyclicDependencyError::test___str__\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_allows_other_predicates\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_context\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_for_\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_http_cache\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_with_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_allows_other_predicates\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_append_slash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_context\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_for_\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_http_cache\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_with_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_static_view_absolute\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_static_view_here_no_utility_registered\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_static_view_package_relative\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_instance\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_instance_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_instancemethod\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_instancemethod_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_oldstyle_class\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_oldstyle_class_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_context_as_class\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_context_as_dottedname\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_context_as_iface\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_context_trumps_for\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_custom_more_preds_first_bests_fewer_preds_last\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_custom_predicate_bests_standard_predicate\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_default_phash_overrides_default_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_default_phash_overrides_no_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_default_phash_overrides_default_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_default_phash_overrides_no_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_multiview_replaces_existing_securedview\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_multiview_replaces_existing_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_multiview_replaces_multiview\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_mulview_replaces_existing_view_with___accept__\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_same_phash_overrides_existing_single_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_with_accept_multiview_replaces_existing_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exception_register_secured_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_for__as_dottedname\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_for_as_class\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_for_as_iface\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview___discriminator__\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_call_ordering\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_context_superclass_then_subclass\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_exception_superclass_then_subclass\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_replaces_existing_securedview\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_replaces_existing_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_replaces_existing_view_with___accept__\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_replaces_multiview\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_register_secured_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_same_phash_overrides_existing_single_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_same_predicates\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_view_callable_None_no_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_view_callable_None_with_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_view_callable_dottedname\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_accept_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_accept_multiview_replaces_existing_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_accept_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_containment_dottedname\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_containment_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_containment_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_custom_predicates_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_custom_predicates_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_decorator\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_default_permission_no_explicit_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_default_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_function_callable\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_function_callable_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_badregex\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_noval_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_noval_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_val_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_val_missing\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_val_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_http_cache\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_mapper\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_name_unicode\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_no_default_permission_no_explicit_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_nonexistant_route_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_path_info_badregex\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_path_info_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_path_info_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_get_implies_head\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_sequence_conflict\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_sequence_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_sequence_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_param_noval_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_param_noval_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_param_val_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_param_val_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_type\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_type_and_route_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_type_as_iface\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_type_as_noniface\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_route_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_route_name_exception\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_config_and_view_defaults_conflicts\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_config_and_view_defaults_doesnt_conflict\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_defaults\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_defaults_viewname_is_dottedname_kwarg\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_defaults_viewname_is_dottedname_nonkwarg\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_xhr_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_xhr_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_wrapped_view_is_decorated\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_views_with_accept_multiview_replaces_existing\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_derive_view_dottedname\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_derive_view_function\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_derive_view_with_default_renderer_no_explicit_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_derive_view_with_default_renderer_with_explicit_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_set_view_mapper\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_set_view_mapper_dottedname\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_function_defaultargs_firstname_not_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_function_defaultargs_firstname_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_function_noargs\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_function_onearg_named_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_function_onearg_named_somethingelse\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_function_toomanyargs\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_function_with_attr_false\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_function_with_attr_true\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_instance_defaultargs_firstname_not_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_instance_defaultargs_firstname_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_instance_defaultargs_onearg_named_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_instance_defaultargs_onearg_named_somethingelse\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_instance_nocall\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_instance_toomanyargs\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_method_onearg_named_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_newstyle_class_init_defaultargs_firstname_not_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_newstyle_class_init_defaultargs_firstname_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_newstyle_class_init_firstname_request_with_secondname\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_newstyle_class_init_noargs\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_newstyle_class_init_onearg_named_somethingelse\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_oldstyle_class_init_defaultargs_firstname_not_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_oldstyle_class_init_defaultargs_firstname_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_oldstyle_class_init_noargs\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_oldstyle_class_init_onearg_named_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_oldstyle_class_init_onearg_named_somethingelse\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_oldstyle_class_init_toomanyargs\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_oldstyle_class_no_init\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_requestonly_newstyle_class_init_onearg_named_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_requestonly_newstyle_class_init_toomanyargs\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_requestonly_newstyle_class_no_init\nPASSED r2e_tests/test_config/test_views.py::Test_isexception::test_is_IException\nPASSED r2e_tests/test_config/test_views.py::Test_isexception::test_is_IException_subinterface\nPASSED r2e_tests/test_config/test_views.py::Test_isexception::test_is_exception_class\nPASSED r2e_tests/test_config/test_views.py::Test_isexception::test_is_exception_instance\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call__\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call__intermediate_not_found\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call__raise_not_found_isnt_interpreted_as_pred_mismatch\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call_permissive_has_call_permissive\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call_permissive_has_no_call_permissive\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test__call__not_found\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test__call__with_accept_match\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test__call__with_accept_miss\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test__call_permissive__not_found\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_add\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_add_with_phash\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_add_with_phash_override_accept\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_class_implements_ISecuredView\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_get_views\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_get_views_best_match_returns_None\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_get_views_no_self_accepts\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_get_views_request_has_no_accept\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_instance_implements_ISecuredView\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_match_not_found\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_match_predicate_fails\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_match_predicate_succeeds\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_multiple_with_functions_as_views\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_permitted\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_permitted_no_match_with__permitted__\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_permitted_no_views\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_function_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_function_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_instance_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_instance_context_and_request_attr_and_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_instance_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_instance_requestonly_attr_and_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_newstyle_class_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_newstyle_class_context_and_request_attr_and_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_newstyle_class_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_newstyle_class_requestonly_attr_and_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_oldstyle_class_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_oldstyle_class_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_oldstyle_cls_context_request_attr_and_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_oldstyle_cls_requestonly_attr_and_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_attr_wrapped_view_branching_default_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_attr_wrapped_view_branching_nondefault_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_class_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_class_without_attr\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_debug_auth_permission_authpol_denied\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_debug_auth_permission_authpol_denied2\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_debug_auth_permission_authpol_overridden\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_debug_auth_permission_authpol_permitted\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_debug_auth_permission_authpol_permitted_no_request\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_http_cached_prevent_http_cache_in_settings\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_http_cached_view_bad_tuple\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_http_cached_view_integer\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_http_cached_view_prevent_auto_set\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_http_cached_view_timedelta\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_http_cached_view_tuple\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_http_cached_view_tuple_seconds_None\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_predicate_mismatch_exception_has_text_in_detail\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_predicate_mismatch_view_has_name\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_predicate_mismatch_view_has_no_name\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_requestonly_function\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_requestonly_function_with_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_requestonly_function_with_renderer_request_has_view\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_requestonly_function_with_renderer_request_override\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_secured_view_authn_policy_no_authz_policy\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_secured_view_authz_policy_no_authn_policy\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_secured_view_raises_forbidden_no_name\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_secured_view_raises_forbidden_with_name\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_debug_authorization_authn_policy_no_authz_policy\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_debug_authorization_authz_policy_no_authn_policy\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_debug_authorization_no_authpol\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_debug_authorization_no_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_predicates_all\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_predicates_checker\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_predicates_notall\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_view_mapper_config_specified\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_view_mapper_default_mapper_specified\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_view_mapper_view_specified\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_wrapper_viewname\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_wrapper_viewname_notfound\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test__view_as_function_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_function_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_function_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_function_requestonly_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_instance_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_instance_context_and_request_and_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_instance_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_instance_requestonly_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_newstyle_class_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_newstyle_class_context_and_request_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_newstyle_class_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_newstyle_class_requestonly_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_oldstyle_class_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_oldstyle_class_context_and_request_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_oldstyle_class_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_oldstyle_class_requestonly_with_attr\nPASSED r2e_tests/test_config/test_views.py::Test_preserve_view_attrs::test_it_different\nPASSED r2e_tests/test_config/test_views.py::Test_preserve_view_attrs::test_it_different_with_existing_original_view\nPASSED r2e_tests/test_config/test_views.py::Test_preserve_view_attrs::test_it_same\nPASSED r2e_tests/test_config/test_views.py::Test_preserve_view_attrs::test_it_view_is_None\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_already_exists\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_url_noendslash\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_url_withendslash\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_for_\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_permission\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_renderer\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_route_prefix\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_view_attr\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_view_context\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_view_for\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_view_permission\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_view_renderer\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_missing\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_quoting\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_registration_miss\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_registration_no_registry_on_request\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_route_url\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_slash_in_name1\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_slash_in_name2\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_quoted_remote\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_unquoted_local\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_verifyClass\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_verifyObject\nPASSED r2e_tests/test_config/test_views.py::Test_view_description::test_with_text\nPASSED r2e_tests/test_scripts/test_common.py::Test_logging_file_config::test_it\nPASSED r2e_tests/test_scripts/test_pcreate.py::TestPCreateCommand::test_known_scaffold_absolute_path\nPASSED r2e_tests/test_scripts/test_pcreate.py::TestPCreateCommand::test_known_scaffold_multiple_rendered\nPASSED r2e_tests/test_scripts/test_pcreate.py::TestPCreateCommand::test_known_scaffold_single_rendered\nPASSED r2e_tests/test_scripts/test_pcreate.py::TestPCreateCommand::test_no_project_name\nPASSED r2e_tests/test_scripts/test_pcreate.py::TestPCreateCommand::test_run_no_scaffold_name\nPASSED r2e_tests/test_scripts/test_pcreate.py::TestPCreateCommand::test_run_show_scaffolds_exist\nPASSED r2e_tests/test_scripts/test_pcreate.py::TestPCreateCommand::test_run_show_scaffolds_none_exist\nPASSED r2e_tests/test_scripts/test_pcreate.py::TestPCreateCommand::test_unknown_scaffold_name\nPASSED r2e_tests/test_scripts/test_pcreate.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_has_bad_config_header\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_not_enough_args\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_response_has_no_charset\nPASSED r2e_tests/test_scripts/test_prequest.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test__get_mapper\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_no_mapper\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_no_routes\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_route_with_no_slash_prefix\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_single_route_no_route_registered\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_single_route_no_views_registered\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_single_route_one_view_registered\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_single_route_one_view_registered_with_factory\nPASSED r2e_tests/test_scripts/test_proutes.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_parse_vars_bad\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_parse_vars_good\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_record_pid_not_verbose\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_record_pid_verbose\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_remove_pid_current_pid_is_not_pid_in_file\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_remove_pid_current_pid_is_not_written_pid\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_remove_pid_file_not_verbose\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_remove_pid_file_stale_pid_write_exception\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_remove_pid_file_unlink_exception\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_remove_pid_file_verbose\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_remove_pid_no_pid_file\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_remove_pid_not_a_number\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_run_no_args\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_run_stop_daemon_bad_pid_file\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_run_stop_daemon_invalid_pid_in_file\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_run_stop_daemon_no_such_pid_file\nPASSED r2e_tests/test_scripts/test_pserve.py::Test_read_pidfile::test_read_pidfile\nPASSED r2e_tests/test_scripts/test_pserve.py::Test_read_pidfile::test_read_pidfile_no_pid_file\nPASSED r2e_tests/test_scripts/test_pserve.py::Test_read_pidfile::test_read_pidfile_not_a_number\nPASSED r2e_tests/test_scripts/test_pserve.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_pserve.py::TestLazyWriter::test_flush\nPASSED r2e_tests/test_scripts/test_pserve.py::TestLazyWriter::test_open\nPASSED r2e_tests/test_scripts/test_pserve.py::TestLazyWriter::test_write\nPASSED r2e_tests/test_scripts/test_pserve.py::TestLazyWriter::test_writeline\nPASSED r2e_tests/test_scripts/test_pserve.py::Test__methodwrapper::test___call__fail\nPASSED r2e_tests/test_scripts/test_pserve.py::Test__methodwrapper::test___call__succeed\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_custom_section_override\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_bpython_shell\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_check_variable_override_order\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_custom_items\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_default_shell\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_default_shell_with_unknown_shell\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_ipython_v0_10\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_ipython_v0_11\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_setup_from_options\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_setup\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_make_bpython_shell\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_make_default_shell\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_make_ipython_v0_10_shell\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_make_ipython_v0_11_shell\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_shell_ipython_ordering\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_shell_ordering\nPASSED r2e_tests/test_scripts/test_pshell.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_ptweens.py::TestPTweensCommand::test__get_tweens\nPASSED r2e_tests/test_scripts/test_ptweens.py::TestPTweensCommand::test_command_implicit_and_explicit_tweens\nPASSED r2e_tests/test_scripts/test_ptweens.py::TestPTweensCommand::test_command_implicit_tweens_only\nPASSED r2e_tests/test_scripts/test_ptweens.py::TestPTweensCommand::test_command_no_tweens\nPASSED r2e_tests/test_scripts/test_ptweens.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_multi_routes_all_match\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_multi_routes_none_match\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_multi_routes_some_match\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_no_match\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_no_match_multiview_registered\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_route_multiview\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_route_multiview_no_view_registered\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_route_no_multiview\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_traversal\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_traversal_multiview\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_multi_view_nested\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_multiview\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_multiview_with_permission\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_multiview_with_predicates\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_not_found\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_not_found_url_starts_without_slash\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_route\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_route_with_route_predicates\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_traversal\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_traversal_with_permission\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_traversal_with_predicates\nPASSED r2e_tests/test_scripts/test_pviews.py::Test_main::test_it\nFAILED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_resource_url_adapter_dotted_names\nFAILED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_resource_url_adapter_introspectables\nFAILED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_traverser_dotted_names\nFAILED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_filename_no_overrides\nFAILED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_filename_override_returns_None\nFAILED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_filename\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_abspath\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_asset_spec\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_asset_spec_existing_translation_dirs\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_multiple_specs\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_multiple_specs_multiple_calls\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_no_registry\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_noreg_debug_logger_None_default\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_conflict\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_debug_logger_None_default\nFAILED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_extend_with_dotted_name\nFAILED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_extend_with_python_callable\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_static_view_package_here_relative\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_template_renderer\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_template_renderer_no_callable\nFAILED r2e_tests/test_config/test_views.py::TestViewDeriver::test_function_returns_non_adaptable\nFAILED r2e_tests/test_config/test_views.py::TestViewDeriver::test_function_returns_non_adaptable_dict\nFAILED r2e_tests/test_config/test_views.py::TestViewDeriver::test_instance_returns_non_adaptable\nFAILED r2e_tests/test_config/test_views.py::TestViewDeriver::test_requestonly_default_method_returns_non_adaptable\nFAILED r2e_tests/test_config/test_views.py::TestViewDeriver::test_requestonly_nondefault_method_returns_non_adaptable\nFAILED r2e_tests/test_config/test_views.py::Test_view_description::test_without_text\nFAILED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_display_headers\nFAILED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_has_content_type_header_var\nFAILED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_has_good_header_var\nFAILED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_has_multiple_header_vars\nFAILED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_method_get\nFAILED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_method_post\nFAILED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_path_doesnt_start_with_slash\nFAILED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_two_args\nFAILED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_with_query_string\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_function_traversal\n======================== 36 failed, 799 passed in 4.78s ========================\n",
    "new_commit_res_stderr": "",
    "old_commit_res_code": 1,
    "old_commit_res_stdout": "============================= test session starts ==============================\nplatform linux -- Python 3.8.20, pytest-8.3.4, pluggy-1.5.0\nrootdir: /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3\ncollected 835 items\n\nr2e_tests/test_1.py ..........F..............F.........                  [  4%]\nr2e_tests/test_config/test_adapters.py .FF.........F..                   [  5%]\nr2e_tests/test_config/test_assets.py ...........FF.....................F [ 10%]\n....................                                                     [ 12%]\nr2e_tests/test_config/test_factories.py ....................             [ 14%]\nr2e_tests/test_config/test_i18n.py FFF.FF....                            [ 16%]\nr2e_tests/test_config/test_init.py ..................................... [ 20%]\nF..F....................F...........F................................... [ 29%]\n.FF...................                                                   [ 31%]\nr2e_tests/test_config/test_predicates.py ............................... [ 35%]\n......                                                                   [ 36%]\nr2e_tests/test_config/test_rendering.py ....                             [ 36%]\nr2e_tests/test_config/test_routes.py ........................            [ 39%]\nr2e_tests/test_config/test_security.py ..........                        [ 40%]\nr2e_tests/test_config/test_settings.py ......................            [ 43%]\nr2e_tests/test_config/test_testing.py ..........                         [ 44%]\nr2e_tests/test_config/test_tweens.py .................................   [ 48%]\nr2e_tests/test_config/test_util.py ..................................... [ 53%]\n...                                                                      [ 53%]\nr2e_tests/test_config/test_views.py ...................F................ [ 57%]\n......................................................................FF [ 66%]\n........................................................................ [ 74%]\n.........................FF.......F...F....F............................ [ 83%]\n.................................F                                       [ 87%]\nr2e_tests/test_scripts/test_common.py .                                  [ 87%]\nr2e_tests/test_scripts/test_pcreate.py .........                         [ 88%]\nr2e_tests/test_scripts/test_prequest.py F.FFFFF.F.FF.                    [ 90%]\nr2e_tests/test_scripts/test_proutes.py .........                         [ 91%]\nr2e_tests/test_scripts/test_pserve.py ..........................         [ 94%]\nr2e_tests/test_scripts/test_pshell.py .................                  [ 96%]\nr2e_tests/test_scripts/test_ptweens.py .....                             [ 97%]\nr2e_tests/test_scripts/test_pviews.py ................F......            [100%]\n\n=================================== FAILURES ===================================\n_____________ TestUnencryptedCookieSession.test_deserialize_option _____________\n\nself = <r2e_tests.test_1.TestUnencryptedCookieSession testMethod=test_deserialize_option>\n\n    def test_deserialize_option(self):\n        import time\n        secret = 'secret'\n        request = testing.DummyRequest()\n        accessed = time.time()\n        state = {'key': 'value'}\n        cookieval = dummy_signed_serialize((accessed, accessed, state), secret)\n        request.cookies['session'] = cookieval\n>       session = self._makeOne(request,\n            signed_deserialize=dummy_signed_deserialize)\n\nr2e_tests/test_1.py:233: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <r2e_tests.test_1.TestUnencryptedCookieSession testMethod=test_deserialize_option>\nrequest = <pyramid.testing.DummyRequest object at 0x739ea4a66bb0>\nkw = {'signed_deserialize': <function dummy_signed_deserialize at 0x739ea4e388b0>}\nUnencryptedCookieSessionFactoryConfig = <function UnencryptedCookieSessionFactoryConfig at 0x739ea4a128b0>\n\n    def _makeOne(self, request, **kw):\n        from pyramid.session import UnencryptedCookieSessionFactoryConfig\n>       return UnencryptedCookieSessionFactoryConfig('secret', **kw)(request)\nE       TypeError: UnencryptedCookieSessionFactoryConfig() got an unexpected keyword argument 'signed_deserialize'\n\nr2e_tests/test_1.py:7: TypeError\n______________ TestUnencryptedCookieSession.test_serialize_option ______________\n\nself = <r2e_tests.test_1.TestUnencryptedCookieSession testMethod=test_serialize_option>\n\n    def test_serialize_option(self):\n        from pyramid.response import Response\n        secret = 'secret'\n        request = testing.DummyRequest()\n>       session = self._makeOne(request,\n            signed_serialize=dummy_signed_serialize)\n\nr2e_tests/test_1.py:212: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <r2e_tests.test_1.TestUnencryptedCookieSession testMethod=test_serialize_option>\nrequest = <pyramid.testing.DummyRequest object at 0x739ea492b1f0>\nkw = {'signed_serialize': <function dummy_signed_serialize at 0x739ea56e8040>}\nUnencryptedCookieSessionFactoryConfig = <function UnencryptedCookieSessionFactoryConfig at 0x739ea4a128b0>\n\n    def _makeOne(self, request, **kw):\n        from pyramid.session import UnencryptedCookieSessionFactoryConfig\n>       return UnencryptedCookieSessionFactoryConfig('secret', **kw)(request)\nE       TypeError: UnencryptedCookieSessionFactoryConfig() got an unexpected keyword argument 'signed_serialize'\n\nr2e_tests/test_1.py:7: TypeError\n__ AdaptersConfiguratorMixinTests.test_add_resource_url_adapter_dotted_names ___\n\nself = <r2e_tests.test_config.test_adapters.AdaptersConfiguratorMixinTests testMethod=test_add_resource_url_adapter_dotted_names>\n\n    def test_add_resource_url_adapter_dotted_names(self):\n        from pyramid.interfaces import IResourceURL\n        config = self._makeOne(autocommit=True)\n        config.add_resource_url_adapter(\n            'pyramid.tests.test_config.test_adapters.DummyResourceURL',\n            'pyramid.tests.test_config.test_adapters.DummyIface',\n            )\n        iface = DummyIface()\n>       adapter = config.registry.getMultiAdapter((iface, iface),\n                                                    IResourceURL)\n\nr2e_tests/test_config/test_adapters.py:165: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <Registry r2e_tests.test_config>\nobjects = (<r2e_tests.test_config.test_adapters.DummyIface object at 0x739ea4948340>, <r2e_tests.test_config.test_adapters.DummyIface object at 0x739ea4948340>)\ninterface = <InterfaceClass pyramid.interfaces.IResourceURL>, name = ''\n\n    def getMultiAdapter(self, objects, interface, name=''):\n        adapter = self.adapters.queryMultiAdapter(objects, interface, name)\n        if adapter is None:\n>           raise ComponentLookupError(objects, interface, name)\nE           zope.interface.interfaces.ComponentLookupError: ((<r2e_tests.test_config.test_adapters.DummyIface object at 0x739ea4948340>, <r2e_tests.test_config.test_adapters.DummyIface object at 0x739ea4948340>), <InterfaceClass pyramid.interfaces.IResourceURL>, '')\n\n.venv/lib/python3.8/site-packages/zope/interface/registry.py:379: ComponentLookupError\n_ AdaptersConfiguratorMixinTests.test_add_resource_url_adapter_introspectables _\n\nself = <r2e_tests.test_config.test_adapters.AdaptersConfiguratorMixinTests testMethod=test_add_resource_url_adapter_introspectables>\n\n    def test_add_resource_url_adapter_introspectables(self):\n        config = self._makeOne()\n        config.add_resource_url_adapter(DummyResourceURL, DummyIface)\n        actions = config.action_state.actions\n        self.assertEqual(len(actions), 1)\n        intrs  = actions[0]['introspectables']\n        self.assertEqual(len(intrs), 1)\n        intr = intrs[0]\n        self.assertEqual(intr.type_name, 'resource url adapter')\n        self.assertEqual(intr.discriminator,\n                         ('resource url adapter', DummyIface))\n        self.assertEqual(intr.category_name, 'resource url adapters')\n>       self.assertEqual(\n            intr.title,\n            \"resource url adapter for resource iface \"\n            \"<class 'pyramid.tests.test_config.test_adapters.DummyIface'>\"\n            )\nE       AssertionError: \"reso[34 chars]e <class 'r2e_tests.test_config.test_adapters.DummyIface'>\" != \"reso[34 chars]e <class 'pyramid.tests.test_config.test_adapters.DummyIface'>\"\nE       - resource url adapter for resource iface <class 'r2e_tests.test_config.test_adapters.DummyIface'>\nE       ?                                                  ^^^\nE       + resource url adapter for resource iface <class 'pyramid.tests.test_config.test_adapters.DummyIface'>\nE       ?                                                 ++ ^^^^^\n\nr2e_tests/test_config/test_adapters.py:211: AssertionError\n________ AdaptersConfiguratorMixinTests.test_add_traverser_dotted_names ________\n\nself = <r2e_tests.test_config.test_adapters.AdaptersConfiguratorMixinTests testMethod=test_add_traverser_dotted_names>\n\n    def test_add_traverser_dotted_names(self):\n        from pyramid.interfaces import ITraverser\n        config = self._makeOne(autocommit=True)\n        config.add_traverser(\n            'pyramid.tests.test_config.test_adapters.DummyTraverser',\n            'pyramid.tests.test_config.test_adapters.DummyIface')\n        iface = DummyIface()\n>       traverser = config.registry.getAdapter(iface, ITraverser)\n\nr2e_tests/test_config/test_adapters.py:122: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <Registry r2e_tests.test_config>\nobject = <r2e_tests.test_config.test_adapters.DummyIface object at 0x739ea48437c0>\ninterface = <InterfaceClass pyramid.interfaces.ITraverser>, name = ''\n\n    def getAdapter(self, object, interface, name=''):\n        adapter = self.adapters.queryAdapter(object, interface, name)\n        if adapter is None:\n>           raise ComponentLookupError(object, interface, name)\nE           zope.interface.interfaces.ComponentLookupError: (<r2e_tests.test_config.test_adapters.DummyIface object at 0x739ea48437c0>, <InterfaceClass pyramid.interfaces.ITraverser>, '')\n\n.venv/lib/python3.8/site-packages/zope/interface/registry.py:368: ComponentLookupError\n_________ TestOverrideProvider.test_get_resource_filename_no_overrides _________\n\nself = <r2e_tests.test_config.test_assets.TestOverrideProvider testMethod=test_get_resource_filename_no_overrides>\n\n    def test_get_resource_filename_no_overrides(self):\n        import os\n        resource_name = 'test_assets.py'\n        import pyramid.tests.test_config\n        provider = self._makeOne(pyramid.tests.test_config)\n        here = os.path.dirname(os.path.abspath(__file__))\n        expected = os.path.join(here, resource_name)\n        result = provider.get_resource_filename(None, resource_name)\n>       self.assertEqual(result, expected)\nE       AssertionError: '/hom[73 chars]6d46db0d6f192cab264f3/pyramid/tests/test_config/test_assets.py' != '/hom[73 chars]6d46db0d6f192cab264f3/r2e_tests/test_config/test_assets.py'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/pyramid/tests/test_config/test_assets.py\nE       ?                                                                                                    -- ^^^^^\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/r2e_tests/test_config/test_assets.py\nE       ?                                                                                                     ^^^\n\nr2e_tests/test_config/test_assets.py:158: AssertionError\n____ TestOverrideProvider.test_get_resource_filename_override_returns_None _____\n\nself = <r2e_tests.test_config.test_assets.TestOverrideProvider testMethod=test_get_resource_filename_override_returns_None>\n\n    def test_get_resource_filename_override_returns_None(self):\n        overrides = DummyOverrides(None)\n        self._registerOverrides(overrides)\n        import os\n        resource_name = 'test_assets.py'\n        import pyramid.tests.test_config\n        provider = self._makeOne(pyramid.tests.test_config)\n        here = os.path.dirname(os.path.abspath(__file__))\n        expected = os.path.join(here, resource_name)\n        result = provider.get_resource_filename(None, resource_name)\n>       self.assertEqual(result, expected)\nE       AssertionError: '/hom[73 chars]6d46db0d6f192cab264f3/pyramid/tests/test_config/test_assets.py' != '/hom[73 chars]6d46db0d6f192cab264f3/r2e_tests/test_config/test_assets.py'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/pyramid/tests/test_config/test_assets.py\nE       ?                                                                                                    -- ^^^^^\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/r2e_tests/test_config/test_assets.py\nE       ?                                                                                                     ^^^\n\nr2e_tests/test_config/test_assets.py:212: AssertionError\n____________________ TestPackageOverrides.test_get_filename ____________________\n\nself = <r2e_tests.test_config.test_assets.TestPackageOverrides testMethod=test_get_filename>\n\n    def test_get_filename(self):\n        import os\n        overrides = [ DummyOverride(None), DummyOverride(\n            ('pyramid.tests.test_config', 'test_assets.py'))]\n        package = DummyPackage('package')\n        po = self._makeOne(package)\n        po.overrides= overrides\n        here = os.path.dirname(os.path.abspath(__file__))\n        expected = os.path.join(here, 'test_assets.py')\n>       self.assertEqual(po.get_filename('whatever'), expected)\nE       AssertionError: '/hom[73 chars]6d46db0d6f192cab264f3/pyramid/tests/test_config/test_assets.py' != '/hom[73 chars]6d46db0d6f192cab264f3/r2e_tests/test_config/test_assets.py'\nE       - /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/pyramid/tests/test_config/test_assets.py\nE       ?                                                                                                    -- ^^^^^\nE       + /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/r2e_tests/test_config/test_assets.py\nE       ?                                                                                                     ^^^\n\nr2e_tests/test_config/test_assets.py:401: AssertionError\n_________ TestI18NConfiguratorMixin.test_add_translation_dirs_abspath __________\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_abspath>\n\n    def test_add_translation_dirs_abspath(self):\n        from pyramid.interfaces import ITranslationDirectories\n        config = self._makeOne(autocommit=True)\n>       config.add_translation_dirs(locale)\n\nr2e_tests/test_config/test_i18n.py:102: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \npyramid/config/util.py:54: in wrapper\n    result = wrapped(self, *arg, **kw)\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nself = <pyramid.config.Configurator object at 0x739ea4ddfdc0>\nspecs = ('/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale',)\nintrospectables = []\nspec = '/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale'\npackage_name = None\n\n    @action_method\n    def add_translation_dirs(self, *specs):\n        \"\"\" Add one or more :term:`translation directory` paths to the\n        current configuration state.  The ``specs`` argument is a\n        sequence that may contain absolute directory paths\n        (e.g. ``/usr/share/locale``) or :term:`asset specification`\n        names naming a directory path (e.g. ``some.package:locale``)\n        or a combination of the two.\n    \n        Example:\n    \n        .. code-block:: python\n    \n           config.add_translation_dirs('/usr/share/locale',\n                                       'some.package:locale')\n    \n        Later calls to ``add_translation_dir`` insert directories into the\n        beginning of the list of translation directories created by earlier\n        calls.  This means that the same translation found in a directory\n        added later in the configuration process will be found before one\n        added earlier in the configuration process.  However, if multiple\n        specs are provided in a single call to ``add_translation_dirs``, the\n        directories will be inserted into the beginning of the directory list\n        in the order they're provided in the ``*specs`` list argument (items\n        earlier in the list trump ones later in the list).\n        \"\"\"\n        directories = []\n        introspectables = []\n    \n        for spec in specs[::-1]: # reversed\n            package_name, filename = self._split_spec(spec)\n            if package_name is None: # absolute filename\n                directory = filename\n            else:\n                __import__(package_name)\n                package = sys.modules[package_name]\n                directory = os.path.join(package_path(package), filename)\n    \n            if not os.path.isdir(os.path.realpath(directory)):\n>               raise ConfigurationError('\"%s\" is not a directory' %\n                                         directory)\nE               pyramid.exceptions.ConfigurationError: \"/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale\" is not a directory\n\npyramid/config/i18n.py:92: ConfigurationError\n________ TestI18NConfiguratorMixin.test_add_translation_dirs_asset_spec ________\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_asset_spec>\n\n    def test_add_translation_dirs_asset_spec(self):\n        from pyramid.interfaces import ITranslationDirectories\n        config = self._makeOne(autocommit=True)\n        config.add_translation_dirs('pyramid.tests.pkgs.localeapp:locale')\n>       self.assertEqual(config.registry.getUtility(ITranslationDirectories),\n                         [locale])\nE       AssertionError: Lists differ: ['/ho[70 chars]fd9c6d46db0d6f192cab264f3/pyramid/tests/pkgs/localeapp/locale'] != ['/ho[70 chars]fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale']\nE       \nE       First differing element 0:\nE       '/hom[68 chars]4fd9c6d46db0d6f192cab264f3/pyramid/tests/pkgs/localeapp/locale'\nE       '/hom[68 chars]4fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale'\nE       \nE       - ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/pyramid/tests/pkgs/localeapp/locale']\nE       ?                                                                                                      -- ^^^^^\nE       \nE       + ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale']\nE       ?                                                                                                       ^^^\n\nr2e_tests/test_config/test_i18n.py:57: AssertionError\n_ TestI18NConfiguratorMixin.test_add_translation_dirs_asset_spec_existing_translation_dirs _\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_asset_spec_existing_translation_dirs>\n\n    def test_add_translation_dirs_asset_spec_existing_translation_dirs(self):\n        from pyramid.interfaces import ITranslationDirectories\n        config = self._makeOne(autocommit=True)\n        directories = ['abc']\n        config.registry.registerUtility(directories, ITranslationDirectories)\n        config.add_translation_dirs('pyramid.tests.pkgs.localeapp:locale')\n        result = config.registry.getUtility(ITranslationDirectories)\n>       self.assertEqual(result, [locale, 'abc'])\nE       AssertionError: Lists differ: ['/ho[77 chars]6db0d6f192cab264f3/pyramid/tests/pkgs/localeapp/locale', 'abc'] != ['/ho[77 chars]6db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale', 'abc']\nE       \nE       First differing element 0:\nE       '/hom[68 chars]4fd9c6d46db0d6f192cab264f3/pyramid/tests/pkgs/localeapp/locale'\nE       '/hom[68 chars]4fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale'\nE       \nE       - ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/pyramid/tests/pkgs/localeapp/locale',\nE       ?                                                                                                      -- ^^^^^\nE       \nE       + ['/home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale',\nE       ?                                                                                                       ^^^\nE       \nE          'abc']\n\nr2e_tests/test_config/test_i18n.py:67: AssertionError\n______ TestI18NConfiguratorMixin.test_add_translation_dirs_multiple_specs ______\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_multiple_specs>\n\n    def test_add_translation_dirs_multiple_specs(self):\n        from pyramid.interfaces import ITranslationDirectories\n        config = self._makeOne(autocommit=True)\n        config.add_translation_dirs('pyramid.tests.pkgs.localeapp:locale',\n                                    'pyramid.tests.pkgs.localeapp:locale2')\n>       self.assertEqual(config.registry.getUtility(ITranslationDirectories),\n                         [locale, locale2])\nE       AssertionError: Lists differ: ['/ho[91 chars]64f3/pyramid/tests/pkgs/localeapp/locale', '/h[130 chars]le2'] != ['/ho[91 chars]64f3/r2e_tests/pkgs/localeapp/locale', '/home/[122 chars]le2']\nE       \nE       First differing element 0:\nE       '/hom[68 chars]4fd9c6d46db0d6f192cab264f3/pyramid/tests/pkgs/localeapp/locale'\nE       '/hom[68 chars]4fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale'\nE       \nE       Diff is 1002 characters long. Set self.maxDiff to None to see it.\n\nr2e_tests/test_config/test_i18n.py:74: AssertionError\n_ TestI18NConfiguratorMixin.test_add_translation_dirs_multiple_specs_multiple_calls _\n\nself = <r2e_tests.test_config.test_i18n.TestI18NConfiguratorMixin testMethod=test_add_translation_dirs_multiple_specs_multiple_calls>\n\n    def test_add_translation_dirs_multiple_specs_multiple_calls(self):\n        from pyramid.interfaces import ITranslationDirectories\n        config = self._makeOne(autocommit=True)\n        config.add_translation_dirs('pyramid.tests.pkgs.localeapp:locale',\n                                    'pyramid.tests.pkgs.localeapp:locale2')\n        config.add_translation_dirs('pyramid.tests.pkgs.localeapp:locale3')\n>       self.assertEqual(config.registry.getUtility(ITranslationDirectories),\n                         [locale3, locale, locale2])\nE       AssertionError: Lists differ: ['/ho[91 chars]64f3/pyramid/tests/pkgs/localeapp/locale3', '/[269 chars]le2'] != ['/ho[91 chars]64f3/r2e_tests/pkgs/localeapp/locale3', '/home[257 chars]le2']\nE       \nE       First differing element 0:\nE       '/hom[69 chars]fd9c6d46db0d6f192cab264f3/pyramid/tests/pkgs/localeapp/locale3'\nE       '/hom[69 chars]fd9c6d46db0d6f192cab264f3/r2e_tests/pkgs/localeapp/locale3'\nE       \nE       Diff is 1504 characters long. Set self.maxDiff to None to see it.\n\nr2e_tests/test_config/test_i18n.py:83: AssertionError\n___________________ ConfiguratorTests.test_ctor_no_registry ____________________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_ctor_no_registry>\n\n    def test_ctor_no_registry(self):\n        import sys\n        from pyramid.interfaces import ISettings\n        from pyramid.config import Configurator\n        from pyramid.interfaces import IRendererFactory\n        config = Configurator()\n        this_pkg = sys.modules['pyramid.tests.test_config']\n        self.assertTrue(config.registry.getUtility(ISettings))\n>       self.assertEqual(config.package, this_pkg)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'pyramid.tests.test_config' from '/home/gc[125 chars].py'>\n\nr2e_tests/test_config/test_init.py:68: AssertionError\n_________ ConfiguratorTests.test_ctor_noreg_debug_logger_None_default __________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_ctor_noreg_debug_logger_None_default>\n\n    def test_ctor_noreg_debug_logger_None_default(self):\n        from pyramid.interfaces import IDebugLogger\n        config = self._makeOne()\n        logger = config.registry.getUtility(IDebugLogger)\n>       self.assertEqual(logger.name, 'pyramid.tests.test_config')\nE       AssertionError: 'r2e_tests.test_config' != 'pyramid.tests.test_config'\nE       - r2e_tests.test_config\nE       ?  ^^^\nE       + pyramid.tests.test_config\nE       ? ++ ^^^^^\n\nr2e_tests/test_config/test_init.py:129: AssertionError\n_______________ ConfiguratorTests.test_scan_integration_conflict _______________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_scan_integration_conflict>\n\n    def test_scan_integration_conflict(self):\n        from pyramid.tests.test_config.pkgs import selfscan\n        from pyramid.config import Configurator\n        c = Configurator()\n        c.scan(selfscan)\n        c.scan(selfscan)\n        try:\n>           c.commit()\n\nr2e_tests/test_config/test_init.py:1025: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \npyramid/config/__init__.py:600: in commit\n    self.action_state.execute_actions(introspector=self.introspector)\npyramid/config/__init__.py:1035: in execute_actions\n    for action in resolveConflicts(self.actions):\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\nactions = []\n\n    def resolveConflicts(actions):\n        \"\"\"Resolve conflicting actions\n    \n        Given an actions list, identify and try to resolve conflicting actions.\n        Actions conflict if they have the same non-None discriminator.\n        Conflicting actions can be resolved if the include path of one of\n        the actions is a prefix of the includepaths of the other\n        conflicting actions and is unequal to the include paths in the\n        other conflicting actions.\n        \"\"\"\n    \n        def orderandpos(v):\n            n, v = v\n            if not isinstance(v, dict):\n                # old-style tuple action\n                v = expand_action(*v)\n            return (v['order'] or 0, n)\n    \n        sactions = sorted(enumerate(actions), key=orderandpos)\n    \n        def orderonly(v):\n            n, v = v\n            if not isinstance(v, dict):\n                # old-style tuple action\n                v = expand_action(*v)\n            return v['order'] or 0\n    \n        for order, actiongroup in itertools.groupby(sactions, orderonly):\n            # \"order\" is an integer grouping. Actions in a lower order will be\n            # executed before actions in a higher order.  All of the actions in\n            # one grouping will be executed (its callable, if any will be called)\n            # before any of the actions in the next.\n    \n            unique = {}\n            output = []\n    \n            for i, action in actiongroup:\n                # Within an order, actions are executed sequentially based on\n                # original action ordering (\"i\").\n    \n                if not isinstance(action, dict):\n                    # old-style tuple action\n                    action = expand_action(*action)\n    \n                # \"ainfo\" is a tuple of (order, i, action) where \"order\" is a\n                # user-supplied grouping, \"i\" is an integer expressing the relative\n                # position of this action in the action list being resolved, and\n                # \"action\" is an action dictionary.  The purpose of an ainfo is to\n                # associate an \"order\" and an \"i\" with a particular action; \"order\"\n                # and \"i\" exist for sorting purposes after conflict resolution.\n                ainfo = (order, i, action)\n    \n                discriminator = undefer(action['discriminator'])\n                action['discriminator'] = discriminator\n    \n                if discriminator is None:\n                    # The discriminator is None, so this action can never conflict.\n                    # We can add it directly to the result.\n                    output.append(ainfo)\n                    continue\n    \n                L = unique.setdefault(discriminator, [])\n                L.append(ainfo)\n    \n            # Check for conflicts\n            conflicts = {}\n    \n            for discriminator, ainfos in unique.items():\n                # We use (includepath, order, i) as a sort key because we need to\n                # sort the actions by the paths so that the shortest path with a\n                # given prefix comes first.  The \"first\" action is the one with the\n                # shortest include path.  We break sorting ties using \"order\", then\n                # \"i\".\n                def bypath(ainfo):\n                    path, order, i = ainfo[2]['includepath'], ainfo[0], ainfo[1]\n                    return path, order, i\n    \n                ainfos.sort(key=bypath)\n                ainfo, rest = ainfos[0], ainfos[1:]\n                output.append(ainfo)\n                _, _, action = ainfo\n                basepath, baseinfo, discriminator = (\n                    action['includepath'],\n                    action['info'],\n                    action['discriminator'],\n                    )\n    \n                for _, _, action in rest:\n                    includepath = action['includepath']\n                    # Test whether path is a prefix of opath\n                    if (includepath[:len(basepath)] != basepath # not a prefix\n                        or includepath == basepath):\n                        L = conflicts.setdefault(discriminator, [baseinfo])\n                        L.append(action['info'])\n    \n            if conflicts:\n>               raise ConfigurationConflictError(conflicts)\nE               pyramid.exceptions.ConfigurationConflictError: Conflicting configuration actions\nE                 For: ('view', None, '', None, 'd41d8cd98f00b204e9800998ecf8427e')\nE                   Line 4 of file /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/pyramid/tests/test_config/pkgs/selfscan/__init__.py:\nE                       def abc(request):\nE                   Line 4 of file /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/pyramid/tests/test_config/pkgs/selfscan/__init__.py:\nE                       def abc(request):\nE                 For: ('view', None, 'two', None, 'd41d8cd98f00b204e9800998ecf8427e')\nE                   Line 4 of file /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/pyramid/tests/test_config/pkgs/selfscan/another.py:\nE                       def two(request):\nE                   Line 4 of file /home/gcpuser/buckets/local_repoeval_bucket/repos/pyramid_b8b896b748ba5d4fd9c6d46db0d6f192cab264f3/pyramid/tests/test_config/pkgs/selfscan/another.py:\nE                       def two(request):\n\npyramid/config/__init__.py:1163: ConfigurationConflictError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_scan_integration_conflict>\n\n    def test_scan_integration_conflict(self):\n        from pyramid.tests.test_config.pkgs import selfscan\n        from pyramid.config import Configurator\n        c = Configurator()\n        c.scan(selfscan)\n        c.scan(selfscan)\n        try:\n            c.commit()\n        except ConfigurationConflictError as why:\n            def scanconflicts(e):\n                conflicts = e._conflicts.values()\n                for conflict in conflicts:\n                    for confinst in conflict:\n                        yield confinst.src\n            which = list(scanconflicts(why))\n            self.assertEqual(len(which), 4)\n>           self.assertTrue(\"@view_config(renderer='string')\" in which)\nE           AssertionError: False is not true\n\nr2e_tests/test_config/test_init.py:1034: AssertionError\n_______ ConfiguratorTests.test_setup_registry_debug_logger_None_default ________\n\nself = <r2e_tests.test_config.test_init.ConfiguratorTests testMethod=test_setup_registry_debug_logger_None_default>\n\n    def test_setup_registry_debug_logger_None_default(self):\n        from pyramid.registry import Registry\n        from pyramid.interfaces import IDebugLogger\n        reg = Registry()\n        config = self._makeOne(reg)\n        config.setup_registry()\n        logger = reg.getUtility(IDebugLogger)\n>       self.assertEqual(logger.name, 'pyramid.tests.test_config')\nE       AssertionError: 'r2e_tests.test_config' != 'pyramid.tests.test_config'\nE       - r2e_tests.test_config\nE       ?  ^^^\nE       + pyramid.tests.test_config\nE       ? ++ ^^^^^\n\nr2e_tests/test_config/test_init.py:426: AssertionError\n_________ TestConfigurator_add_directive.test_extend_with_dotted_name __________\n\nself = <r2e_tests.test_config.test_init.TestConfigurator_add_directive testMethod=test_extend_with_dotted_name>\n\n    def test_extend_with_dotted_name(self):\n        from pyramid.tests import test_config\n        config = self.config\n        config.add_directive(\n            'dummy_extend', 'pyramid.tests.test_config.dummy_extend')\n        self.assertTrue(hasattr(config, 'dummy_extend'))\n        config.dummy_extend('discrim')\n        after = config.action_state\n        action = after.actions[-1]\n        self.assertEqual(action['discriminator'], 'discrim')\n        self.assertEqual(action['callable'], None)\n>       self.assertEqual(action['args'], test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'pyramid.tests.test_config' from '/home/gc[125 chars].py'>\n\nr2e_tests/test_config/test_init.py:1422: AssertionError\n_______ TestConfigurator_add_directive.test_extend_with_python_callable ________\n\nself = <r2e_tests.test_config.test_init.TestConfigurator_add_directive testMethod=test_extend_with_python_callable>\n\n    def test_extend_with_python_callable(self):\n        from pyramid.tests import test_config\n        config = self.config\n        config.add_directive(\n            'dummy_extend', dummy_extend)\n        self.assertTrue(hasattr(config, 'dummy_extend'))\n        config.dummy_extend('discrim')\n        after = config.action_state\n        action = after.actions[-1]\n        self.assertEqual(action['discriminator'], 'discrim')\n        self.assertEqual(action['callable'], None)\n>       self.assertEqual(action['args'], test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'pyramid.tests.test_config' from '/home/gc[125 chars].py'>\n\nr2e_tests/test_config/test_init.py:1435: AssertionError\n____ TestViewsConfigurationMixin.test_add_static_view_package_here_relative ____\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_static_view_package_here_relative>\n\n    def test_add_static_view_package_here_relative(self):\n        from pyramid.interfaces import IStaticURLInfo\n        info = DummyStaticURLInfo()\n        config = self._makeOne(autocommit=True)\n        config.registry.registerUtility(info, IStaticURLInfo)\n        config.add_static_view('static', 'files')\n>       self.assertEqual(\n            info.added,\n            [(config, 'static', 'pyramid.tests.test_config:files', {})])\nE       AssertionError: Lists differ: [(<py[39 chars]39ea4564f40>, 'static', 'r2e_tests.test_config:files', {})] != [(<py[39 chars]39ea4564f40>, 'static', 'pyramid.tests.test_config:files', {})]\nE       \nE       First differing element 0:\nE       (<pyr[37 chars]739ea4564f40>, 'static', 'r2e_tests.test_config:files', {})\nE       (<pyr[37 chars]739ea4564f40>, 'static', 'pyramid.tests.test_config:files', {})\nE       \nE         [(<pyramid.config.Configurator object at 0x739ea4564f40>,\nE           'static',\nE       -   'r2e_tests.test_config:files',\nE       ?     ^^^\nE       \nE       +   'pyramid.tests.test_config:files',\nE       ?    ++ ^^^^^\nE       \nE           {})]\n\nr2e_tests/test_config/test_views.py:1673: AssertionError\n_______ TestViewsConfigurationMixin.test_add_view_with_template_renderer _______\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_template_renderer>\n\n    def test_add_view_with_template_renderer(self):\n        from pyramid.tests import test_config\n        from pyramid.interfaces import ISettings\n        class view(object):\n            def __init__(self, context, request):\n                self.request = request\n                self.context = context\n    \n            def __call__(self):\n                return {'a':'1'}\n        config = self._makeOne(autocommit=True)\n        renderer = self._registerRenderer(config)\n        fixture = 'pyramid.tests.test_config:files/minimal.txt'\n        config.add_view(view=view, renderer=fixture)\n        wrapper = self._getViewCallable(config)\n        request = self._makeRequest(config)\n        result = wrapper(None, request)\n        self.assertEqual(result.body, b'Hello!')\n        settings = config.registry.queryUtility(ISettings)\n        result = renderer.info\n        self.assertEqual(result.registry, config.registry)\n        self.assertEqual(result.type, '.txt')\n>       self.assertEqual(result.package, test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'pyramid.tests.test_config' from '/home/gc[125 chars].py'>\n\nr2e_tests/test_config/test_views.py:1001: AssertionError\n_ TestViewsConfigurationMixin.test_add_view_with_template_renderer_no_callable _\n\nself = <r2e_tests.test_config.test_views.TestViewsConfigurationMixin testMethod=test_add_view_with_template_renderer_no_callable>\n\n    def test_add_view_with_template_renderer_no_callable(self):\n        from pyramid.tests import test_config\n        from pyramid.interfaces import ISettings\n        config = self._makeOne(autocommit=True)\n        renderer = self._registerRenderer(config)\n        fixture = 'pyramid.tests.test_config:files/minimal.txt'\n        config.add_view(view=None, renderer=fixture)\n        wrapper = self._getViewCallable(config)\n        request = self._makeRequest(config)\n        result = wrapper(None, request)\n        self.assertEqual(result.body, b'Hello!')\n        settings = config.registry.queryUtility(ISettings)\n        result = renderer.info\n        self.assertEqual(result.registry, config.registry)\n        self.assertEqual(result.type, '.txt')\n>       self.assertEqual(result.package, test_config)\nE       AssertionError: <module 'r2e_tests.test_config' from '/home/gcpuse[117 chars].py'> != <module 'pyramid.tests.test_config' from '/home/gc[125 chars].py'>\n\nr2e_tests/test_config/test_views.py:1041: AssertionError\n_____________ TestViewDeriver.test_function_returns_non_adaptable ______________\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_function_returns_non_adaptable>\n\n    def test_function_returns_non_adaptable(self):\n        def view(request):\n            return None\n        deriver = self._makeOne()\n        result = deriver(view)\n        self.assertFalse(result is view)\n        try:\n>           result(None, None)\n\nr2e_tests/test_config/test_views.py:2377: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = None, request = None\n\n    def viewresult_to_response(context, request):\n        result = view(context, request)\n        response = registry.queryAdapterOrSelf(result, IResponse)\n        if response is None:\n            if result is None:\n                append = (' You may have forgotten to return a value from '\n                          'the view callable.')\n            elif isinstance(result, dict):\n                append = (' You may have forgotten to define a renderer in '\n                          'the view configuration.')\n            else:\n                append = ''\n            msg = ('Could not convert return value of the view callable %s '\n                  'into a response object. '\n                  'The value returned was %r.' + append)\n    \n>           raise ValueError(msg % (view_description(view), result))\nE           ValueError: Could not convert return value of the view callable function r2e_tests.test_config.test_views.view into a response object. The value returned was None. You may have forgotten to return a value from the view callable.\n\npyramid/config/views.py:386: ValueError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_function_returns_non_adaptable>\n\n    def test_function_returns_non_adaptable(self):\n        def view(request):\n            return None\n        deriver = self._makeOne()\n        result = deriver(view)\n        self.assertFalse(result is view)\n        try:\n            result(None, None)\n        except ValueError as e:\n>           self.assertEqual(\n                e.args[0],\n                'Could not convert return value of the view callable function '\n                'pyramid.tests.test_config.test_views.view into a response '\n                'object. The value returned was None. You may have forgotten '\n                'to return a value from the view callable.'\n                )\nE           AssertionError: 'Coul[52 chars]tion r2e_tests.test_config.test_views.view int[110 chars]ble.' != 'Coul[52 chars]tion pyramid.tests.test_config.test_views.view[114 chars]ble.'\nE           Diff is 663 characters long. Set self.maxDiff to None to see it.\n\nr2e_tests/test_config/test_views.py:2379: AssertionError\n___________ TestViewDeriver.test_function_returns_non_adaptable_dict ___________\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_function_returns_non_adaptable_dict>\n\n    def test_function_returns_non_adaptable_dict(self):\n        def view(request):\n            return {'a':1}\n        deriver = self._makeOne()\n        result = deriver(view)\n        self.assertFalse(result is view)\n        try:\n>           result(None, None)\n\nr2e_tests/test_config/test_views.py:2396: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = None, request = None\n\n    def viewresult_to_response(context, request):\n        result = view(context, request)\n        response = registry.queryAdapterOrSelf(result, IResponse)\n        if response is None:\n            if result is None:\n                append = (' You may have forgotten to return a value from '\n                          'the view callable.')\n            elif isinstance(result, dict):\n                append = (' You may have forgotten to define a renderer in '\n                          'the view configuration.')\n            else:\n                append = ''\n            msg = ('Could not convert return value of the view callable %s '\n                  'into a response object. '\n                  'The value returned was %r.' + append)\n    \n>           raise ValueError(msg % (view_description(view), result))\nE           ValueError: Could not convert return value of the view callable function r2e_tests.test_config.test_views.view into a response object. The value returned was {'a': 1}. You may have forgotten to define a renderer in the view configuration.\n\npyramid/config/views.py:386: ValueError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_function_returns_non_adaptable_dict>\n\n    def test_function_returns_non_adaptable_dict(self):\n        def view(request):\n            return {'a':1}\n        deriver = self._makeOne()\n        result = deriver(view)\n        self.assertFalse(result is view)\n        try:\n            result(None, None)\n        except ValueError as e:\n>           self.assertEqual(\n                e.args[0],\n                \"Could not convert return value of the view callable function \"\n                \"pyramid.tests.test_config.test_views.view into a response \"\n                \"object. The value returned was {'a': 1}. You may have \"\n                \"forgotten to define a renderer in the view configuration.\"\n                )\nE           AssertionError: \"Coul[52 chars]tion r2e_tests.test_config.test_views.view int[120 chars]ion.\" != \"Coul[52 chars]tion pyramid.tests.test_config.test_views.view[124 chars]ion.\"\nE           Diff is 683 characters long. Set self.maxDiff to None to see it.\n\nr2e_tests/test_config/test_views.py:2398: AssertionError\n_____________ TestViewDeriver.test_instance_returns_non_adaptable ______________\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_instance_returns_non_adaptable>\n\n    def test_instance_returns_non_adaptable(self):\n        class AView(object):\n            def __call__(self, request):\n                return None\n        view = AView()\n        deriver = self._makeOne()\n        result = deriver(view)\n        self.assertFalse(result is view)\n        try:\n>           result(None, None)\n\nr2e_tests/test_config/test_views.py:2417: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = None, request = None\n\n    def viewresult_to_response(context, request):\n        result = view(context, request)\n        response = registry.queryAdapterOrSelf(result, IResponse)\n        if response is None:\n            if result is None:\n                append = (' You may have forgotten to return a value from '\n                          'the view callable.')\n            elif isinstance(result, dict):\n                append = (' You may have forgotten to define a renderer in '\n                          'the view configuration.')\n            else:\n                append = ''\n            msg = ('Could not convert return value of the view callable %s '\n                  'into a response object. '\n                  'The value returned was %r.' + append)\n    \n>           raise ValueError(msg % (view_description(view), result))\nE           ValueError: Could not convert return value of the view callable object <r2e_tests.test_config.test_views.TestViewDeriver.test_instance_returns_non_adaptable.<locals>.AView object at 0x739ea497e520> into a response object. The value returned was None. You may have forgotten to return a value from the view callable.\n\npyramid/config/views.py:386: ValueError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_instance_returns_non_adaptable>\n\n    def test_instance_returns_non_adaptable(self):\n        class AView(object):\n            def __call__(self, request):\n                return None\n        view = AView()\n        deriver = self._makeOne()\n        result = deriver(view)\n        self.assertFalse(result is view)\n        try:\n            result(None, None)\n        except ValueError as e:\n            msg = e.args[0]\n>           self.assertTrue(msg.startswith(\n                'Could not convert return value of the view callable object '\n                '<pyramid.tests.test_config.test_views.'))\nE           AssertionError: False is not true\n\nr2e_tests/test_config/test_views.py:2420: AssertionError\n____ TestViewDeriver.test_requestonly_default_method_returns_non_adaptable _____\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_requestonly_default_method_returns_non_adaptable>\n\n    def test_requestonly_default_method_returns_non_adaptable(self):\n        request = DummyRequest()\n        class AView(object):\n            def __init__(self, request):\n                pass\n            def __call__(self):\n                return None\n        deriver = self._makeOne()\n        result = deriver(AView)\n        self.assertFalse(result is AView)\n        try:\n>           result(None, request)\n\nr2e_tests/test_config/test_views.py:2440: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = None\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x739ea4dc94f0>\n\n    def viewresult_to_response(context, request):\n        result = view(context, request)\n        response = registry.queryAdapterOrSelf(result, IResponse)\n        if response is None:\n            if result is None:\n                append = (' You may have forgotten to return a value from '\n                          'the view callable.')\n            elif isinstance(result, dict):\n                append = (' You may have forgotten to define a renderer in '\n                          'the view configuration.')\n            else:\n                append = ''\n            msg = ('Could not convert return value of the view callable %s '\n                  'into a response object. '\n                  'The value returned was %r.' + append)\n    \n>           raise ValueError(msg % (view_description(view), result))\nE           ValueError: Could not convert return value of the view callable method __call__ of class r2e_tests.test_config.test_views.AView into a response object. The value returned was None. You may have forgotten to return a value from the view callable.\n\npyramid/config/views.py:386: ValueError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_requestonly_default_method_returns_non_adaptable>\n\n    def test_requestonly_default_method_returns_non_adaptable(self):\n        request = DummyRequest()\n        class AView(object):\n            def __init__(self, request):\n                pass\n            def __call__(self):\n                return None\n        deriver = self._makeOne()\n        result = deriver(AView)\n        self.assertFalse(result is AView)\n        try:\n            result(None, request)\n        except ValueError as e:\n>           self.assertEqual(\n                e.args[0],\n                'Could not convert return value of the view callable '\n                'method __call__ of '\n                'class pyramid.tests.test_config.test_views.AView into a '\n                'response object. The value returned was None. You may have '\n                'forgotten to return a value from the view callable.'\n                )\nE           AssertionError: 'Coul[68 chars]lass r2e_tests.test_config.test_views.AView in[111 chars]ble.' != 'Coul[68 chars]lass pyramid.tests.test_config.test_views.AVie[115 chars]ble.'\nE           Diff is 649 characters long. Set self.maxDiff to None to see it.\n\nr2e_tests/test_config/test_views.py:2442: AssertionError\n___ TestViewDeriver.test_requestonly_nondefault_method_returns_non_adaptable ___\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_requestonly_nondefault_method_returns_non_adaptable>\n\n    def test_requestonly_nondefault_method_returns_non_adaptable(self):\n        request = DummyRequest()\n        class AView(object):\n            def __init__(self, request):\n                pass\n            def theviewmethod(self):\n                return None\n        deriver = self._makeOne(attr='theviewmethod')\n        result = deriver(AView)\n        self.assertFalse(result is AView)\n        try:\n>           result(None, request)\n\nr2e_tests/test_config/test_views.py:2464: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n\ncontext = None\nrequest = <r2e_tests.test_config.test_views.DummyRequest object at 0x739ea45c0910>\n\n    def viewresult_to_response(context, request):\n        result = view(context, request)\n        response = registry.queryAdapterOrSelf(result, IResponse)\n        if response is None:\n            if result is None:\n                append = (' You may have forgotten to return a value from '\n                          'the view callable.')\n            elif isinstance(result, dict):\n                append = (' You may have forgotten to define a renderer in '\n                          'the view configuration.')\n            else:\n                append = ''\n            msg = ('Could not convert return value of the view callable %s '\n                  'into a response object. '\n                  'The value returned was %r.' + append)\n    \n>           raise ValueError(msg % (view_description(view), result))\nE           ValueError: Could not convert return value of the view callable method theviewmethod of class r2e_tests.test_config.test_views.AView into a response object. The value returned was None. You may have forgotten to return a value from the view callable.\n\npyramid/config/views.py:386: ValueError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <r2e_tests.test_config.test_views.TestViewDeriver testMethod=test_requestonly_nondefault_method_returns_non_adaptable>\n\n    def test_requestonly_nondefault_method_returns_non_adaptable(self):\n        request = DummyRequest()\n        class AView(object):\n            def __init__(self, request):\n                pass\n            def theviewmethod(self):\n                return None\n        deriver = self._makeOne(attr='theviewmethod')\n        result = deriver(AView)\n        self.assertFalse(result is AView)\n        try:\n            result(None, request)\n        except ValueError as e:\n>           self.assertEqual(\n                e.args[0],\n                'Could not convert return value of the view callable '\n                'method theviewmethod of '\n                'class pyramid.tests.test_config.test_views.AView into a '\n                'response object. The value returned was None. You may have '\n                'forgotten to return a value from the view callable.'\n                )\nE           AssertionError: 'Coul[73 chars]lass r2e_tests.test_config.test_views.AView in[111 chars]ble.' != 'Coul[73 chars]lass pyramid.tests.test_config.test_views.AVie[115 chars]ble.'\nE           Diff is 669 characters long. Set self.maxDiff to None to see it.\n\nr2e_tests/test_config/test_views.py:2466: AssertionError\n___________________ Test_view_description.test_without_text ____________________\n\nself = <r2e_tests.test_config.test_views.Test_view_description testMethod=test_without_text>\n\n    def test_without_text(self):\n        def view(): pass\n        result = self._callFUT(view)\n>       self.assertEqual(result,\n                         'function pyramid.tests.test_config.test_views.view')\nE       AssertionError: 'function r2e_tests.test_config.test_views.view' != 'function pyramid.tests.test_config.test_views.view'\nE       - function r2e_tests.test_config.test_views.view\nE       ?           ^^^\nE       + function pyramid.tests.test_config.test_views.view\nE       ?          ++ ^^^^^\n\nr2e_tests/test_config/test_views.py:3925: AssertionError\n_______________ TestPRequestCommand.test_command_display_headers _______________\n\nself = <r2e_tests.test_scripts.test_prequest.TestPRequestCommand testMethod=test_command_display_headers>\n\n    def test_command_display_headers(self):\n        command = self._makeOne(\n            ['', '--display-headers', 'development.ini', '/'])\n        command.run()\n        self.assertEqual(self._path_info, '/')\n        self.assertEqual(self._spec, 'development.ini')\n        self.assertEqual(self._app_name, None)\n>       self.assertEqual(\n            self._out,\n            ['200 OK', 'Content-Type: text/html; charset=UTF-8', 'abc'])\nE       AssertionError: Lists differ: ['200 OK', b'abc'] != ['200 OK', 'Content-Type: text/html; charset=UTF-8', 'abc']\nE       \nE       First differing element 1:\nE       b'abc'\nE       'Content-Type: text/html; charset=UTF-8'\nE       \nE       Second list contains 1 additional elements.\nE       First extra element 2:\nE       'abc'\nE       \nE       - ['200 OK', b'abc']\nE       + ['200 OK', 'Content-Type: text/html; charset=UTF-8', 'abc']\n\nr2e_tests/test_scripts/test_prequest.py:131: AssertionError\n_________ TestPRequestCommand.test_command_has_content_type_header_var _________\n\nself = <r2e_tests.test_scripts.test_prequest.TestPRequestCommand testMethod=test_command_has_content_type_header_var>\n\n    def test_command_has_content_type_header_var(self):\n        command = self._makeOne(\n            ['', '--header=content-type:app/foo','development.ini', '/'])\n        command.run()\n        self.assertEqual(self._environ['CONTENT_TYPE'], 'app/foo')\n        self.assertEqual(self._path_info, '/')\n        self.assertEqual(self._spec, 'development.ini')\n        self.assertEqual(self._app_name, None)\n>       self.assertEqual(self._out, ['abc'])\nE       AssertionError: Lists differ: [b'abc'] != ['abc']\nE       \nE       First differing element 0:\nE       b'abc'\nE       'abc'\nE       \nE       - [b'abc']\nE       ?  -\nE       \nE       + ['abc']\n\nr2e_tests/test_scripts/test_prequest.py:77: AssertionError\n_____________ TestPRequestCommand.test_command_has_good_header_var _____________\n\nself = <r2e_tests.test_scripts.test_prequest.TestPRequestCommand testMethod=test_command_has_good_header_var>\n\n    def test_command_has_good_header_var(self):\n        command = self._makeOne(\n            ['', '--header=name:value','development.ini', '/'])\n        command.run()\n        self.assertEqual(self._environ['HTTP_NAME'], 'value')\n        self.assertEqual(self._path_info, '/')\n        self.assertEqual(self._spec, 'development.ini')\n        self.assertEqual(self._app_name, None)\n>       self.assertEqual(self._out, ['abc'])\nE       AssertionError: Lists differ: [b'abc'] != ['abc']\nE       \nE       First differing element 0:\nE       b'abc'\nE       'abc'\nE       \nE       - [b'abc']\nE       ?  -\nE       \nE       + ['abc']\n\nr2e_tests/test_scripts/test_prequest.py:67: AssertionError\n__________ TestPRequestCommand.test_command_has_multiple_header_vars ___________\n\nself = <r2e_tests.test_scripts.test_prequest.TestPRequestCommand testMethod=test_command_has_multiple_header_vars>\n\n    def test_command_has_multiple_header_vars(self):\n        command = self._makeOne(\n            ['',\n             '--header=name:value',\n             '--header=name2:value2',\n             'development.ini',\n             '/'])\n        command.run()\n        self.assertEqual(self._environ['HTTP_NAME'], 'value')\n        self.assertEqual(self._environ['HTTP_NAME2'], 'value2')\n        self.assertEqual(self._path_info, '/')\n        self.assertEqual(self._spec, 'development.ini')\n        self.assertEqual(self._app_name, None)\n>       self.assertEqual(self._out, ['abc'])\nE       AssertionError: Lists differ: [b'abc'] != ['abc']\nE       \nE       First differing element 0:\nE       b'abc'\nE       'abc'\nE       \nE       - [b'abc']\nE       ?  -\nE       \nE       + ['abc']\n\nr2e_tests/test_scripts/test_prequest.py:92: AssertionError\n_________________ TestPRequestCommand.test_command_method_get __________________\n\nself = <r2e_tests.test_scripts.test_prequest.TestPRequestCommand testMethod=test_command_method_get>\n\n    def test_command_method_get(self):\n        command = self._makeOne(['', '--method=GET', 'development.ini', '/'])\n        command.run()\n        self.assertEqual(self._path_info, '/')\n        self.assertEqual(self._spec, 'development.ini')\n        self.assertEqual(self._app_name, None)\n>       self.assertEqual(self._out, ['abc'])\nE       AssertionError: Lists differ: [b'abc'] != ['abc']\nE       \nE       First differing element 0:\nE       b'abc'\nE       'abc'\nE       \nE       - [b'abc']\nE       ?  -\nE       \nE       + ['abc']\n\nr2e_tests/test_scripts/test_prequest.py:100: AssertionError\n_________________ TestPRequestCommand.test_command_method_post _________________\n\nself = <r2e_tests.test_scripts.test_prequest.TestPRequestCommand testMethod=test_command_method_post>\n\n    def test_command_method_post(self):\n        from pyramid.compat import NativeIO\n        command = self._makeOne(['', '--method=POST', 'development.ini', '/'])\n        stdin = NativeIO()\n        command.stdin = stdin\n        command.run()\n        self.assertEqual(self._environ['CONTENT_LENGTH'], '-1')\n        self.assertEqual(self._environ['wsgi.input'], stdin)\n        self.assertEqual(self._path_info, '/')\n        self.assertEqual(self._spec, 'development.ini')\n        self.assertEqual(self._app_name, None)\n>       self.assertEqual(self._out, ['abc'])\nE       AssertionError: Lists differ: [b'abc'] != ['abc']\nE       \nE       First differing element 0:\nE       b'abc'\nE       'abc'\nE       \nE       - [b'abc']\nE       ?  -\nE       \nE       + ['abc']\n\nr2e_tests/test_scripts/test_prequest.py:113: AssertionError\n________ TestPRequestCommand.test_command_path_doesnt_start_with_slash _________\n\nself = <r2e_tests.test_scripts.test_prequest.TestPRequestCommand testMethod=test_command_path_doesnt_start_with_slash>\n\n    def test_command_path_doesnt_start_with_slash(self):\n        command = self._makeOne(['', 'development.ini', 'abc'])\n        command.run()\n        self.assertEqual(self._path_info, '/abc')\n        self.assertEqual(self._spec, 'development.ini')\n        self.assertEqual(self._app_name, None)\n>       self.assertEqual(self._out, ['abc'])\nE       AssertionError: Lists differ: [b'abc'] != ['abc']\nE       \nE       First differing element 0:\nE       b'abc'\nE       'abc'\nE       \nE       - [b'abc']\nE       ?  -\nE       \nE       + ['abc']\n\nr2e_tests/test_scripts/test_prequest.py:48: AssertionError\n__________________ TestPRequestCommand.test_command_two_args ___________________\n\nself = <r2e_tests.test_scripts.test_prequest.TestPRequestCommand testMethod=test_command_two_args>\n\n    def test_command_two_args(self):\n        command = self._makeOne(['', 'development.ini', '/'])\n        command.run()\n        self.assertEqual(self._path_info, '/')\n        self.assertEqual(self._spec, 'development.ini')\n        self.assertEqual(self._app_name, None)\n>       self.assertEqual(self._out, ['abc'])\nE       AssertionError: Lists differ: [b'abc'] != ['abc']\nE       \nE       First differing element 0:\nE       b'abc'\nE       'abc'\nE       \nE       - [b'abc']\nE       ?  -\nE       \nE       + ['abc']\n\nr2e_tests/test_scripts/test_prequest.py:40: AssertionError\n______________ TestPRequestCommand.test_command_with_query_string ______________\n\nself = <r2e_tests.test_scripts.test_prequest.TestPRequestCommand testMethod=test_command_with_query_string>\n\n    def test_command_with_query_string(self):\n        command = self._makeOne(['', 'development.ini', '/abc?a=1&b=2&c'])\n        command.run()\n        self.assertEqual(self._environ['QUERY_STRING'], 'a=1&b=2&c')\n        self.assertEqual(self._path_info, '/abc')\n        self.assertEqual(self._spec, 'development.ini')\n        self.assertEqual(self._app_name, None)\n>       self.assertEqual(self._out, ['abc'])\nE       AssertionError: Lists differ: [b'abc'] != ['abc']\nE       \nE       First differing element 0:\nE       b'abc'\nE       'abc'\nE       \nE       - [b'abc']\nE       ?  -\nE       \nE       + ['abc']\n\nr2e_tests/test_scripts/test_prequest.py:122: AssertionError\n_____ TestPViewsCommand.test_views_command_single_view_function_traversal ______\n\nself = <r2e_tests.test_scripts.test_pviews.TestPViewsCommand testMethod=test_views_command_single_view_function_traversal>\n\n    def test_views_command_single_view_function_traversal(self):\n        from pyramid.registry import Registry\n        registry = Registry()\n        command = self._makeOne(registry=registry)\n        L = []\n        command.out = L.append\n        def view(): pass\n        view.__request_attrs__ = {'context': 'context', 'view_name': 'a'}\n        command._find_view = lambda arg1, arg2: view\n        command.args = ('/foo/bar/myapp.ini#myapp', '/a')\n        result = command.run()\n        self.assertEqual(result, 0)\n        self.assertEqual(L[1], 'URL = /a')\n        self.assertEqual(L[3], '    context: context')\n        self.assertEqual(L[4], '    view name: a')\n>       self.assertEqual(L[8],\n                         '    pyramid.tests.test_scripts.test_pviews.view')\nE       AssertionError: '    r2e_tests.test_scripts.test_pviews.view' != '    pyramid.tests.test_scripts.test_pviews.view'\nE       -     r2e_tests.test_scripts.test_pviews.view\nE       ?      ^^^\nE       +     pyramid.tests.test_scripts.test_pviews.view\nE       ?     ++ ^^^^^\n\nr2e_tests/test_scripts/test_pviews.py:283: AssertionError\n==================================== PASSES ====================================\n=========================== short test summary info ============================\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test__set_cookie_cookieval_too_long\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test__set_cookie_on_exception\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test__set_cookie_on_exception_no_request_exception\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test__set_cookie_options\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test__set_cookie_real_webob_response\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_changed\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_ctor_no_cookie\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_ctor_with_bad_cookie\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_ctor_with_cookie_expired\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_ctor_with_cookie_still_valid\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_flash_allow_duplicate_false\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_flash_allow_duplicate_false_and_msg_not_in_storage\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_flash_allow_duplicate_true_and_msg_not_in_storage\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_flash_default\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_flash_mixed\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_get_csrf_token\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_get_csrf_token_new\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_instance_conforms\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_invalidate\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_new_csrf_token\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_peek_flash_default_queue\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_peek_flash_nodefault_queue\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_pop_flash_default_queue\nPASSED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_pop_flash_nodefault_queue\nPASSED r2e_tests/test_1.py::Test_manage_accessed::test_accessed_set\nPASSED r2e_tests/test_1.py::Test_manage_accessed::test_already_dirty\nPASSED r2e_tests/test_1.py::Test_manage_accessed::test_cookie_is_set\nPASSED r2e_tests/test_1.py::Test_manage_accessed::test_with_exception\nPASSED r2e_tests/test_1.py::Test_signed_serialize::test_it\nPASSED r2e_tests/test_1.py::Test_signed_deserialize::test_invalid_bits\nPASSED r2e_tests/test_1.py::Test_signed_deserialize::test_invalid_len\nPASSED r2e_tests/test_1.py::Test_signed_deserialize::test_it\nPASSED r2e_tests/test_1.py::Test_signed_deserialize::test_it_bad_encoding\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_object_event_subscriber\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_resource_url_default_resource_iface_means_Interface\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_resource_url_nodefault_resource_iface\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_response_adapter\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_response_adapter_dottednames\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_response_adapter_self\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_defaults\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_dottednames\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_subscriber_iface_specified\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_traverser_default_iface_means_Interface\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_traverser_introspectables\nPASSED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_traverser_nondefault_iface\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test__override_already_registered\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test__override_not_yet_registered\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_directory_with_directory\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_directory_with_file\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_directory_with_package\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_file_with_directory\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_file_with_file\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_file_with_package\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_package_with_directory\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_package_with_package\nPASSED r2e_tests/test_config/test_assets.py::TestAssetsConfiguratorMixin::test_override_asset_samename\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_filename_override_returns_value\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_stream_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_stream_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_stream_override_returns_value\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_string_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_string_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_string_override_returns_value\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_has_resource_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_has_resource_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_has_resource_override_returns_True\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_isdir_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_isdir_override_returns_False\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_isdir_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_listdir_no_overrides\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_listdir_override_returns_None\nPASSED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_resource_listdir_override_returns_values\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_package_already_has_loader_of_different_type\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_package_already_has_loader_of_same_type\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_registers_loader_type\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_sets_loader\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_ctor_sets_local_state\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_filename_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_stream\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_stream_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_string\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_string_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_has_resource\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_has_resource_file_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_insert_directory\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_insert_emptystring\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_insert_file\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_isdir_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_isdir_false\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_isdir_true\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_listdir\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_listdir_doesnt_exist\nPASSED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_search_path\nPASSED r2e_tests/test_config/test_assets.py::TestDirectoryOverride::test_it_match\nPASSED r2e_tests/test_config/test_assets.py::TestDirectoryOverride::test_it_no_match\nPASSED r2e_tests/test_config/test_assets.py::TestFileOverride::test_it_match\nPASSED r2e_tests/test_config/test_assets.py::TestFileOverride::test_it_no_match\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_multiple_request_methods_conflict\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_multiple_request_properties\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_multiple_request_properties_conflict\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_factory\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_factory_dottedname\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_method_subscriber\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_method_with_None_callable\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_method_with_None_callable_and_no_name\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_method_with_None_callable_conflict\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_method_with_callable\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_method_with_unnamed_callable\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_property_subscriber\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_property_with_callable\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_property_with_property\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_request_property_with_unnamed_callable\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_root_factory\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_root_factory_as_None\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_root_factory_dottedname\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_session_factory\nPASSED r2e_tests/test_config/test_factories.py::TestFactoriesMixin::test_set_session_factory_dottedname\nPASSED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_missing_dir\nPASSED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_no_specs\nPASSED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_registers_chameleon_translate\nPASSED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_set_locale_negotiator\nPASSED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_set_locale_negotiator_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test___getattr__matches\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test___getattr__matches_no_action_wrap\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test___getattr__missing_when_directives_dont_exist\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test___getattr__missing_when_directives_exist\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_has_listeners\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_notify\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_queryAdapterOrSelf\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test__fix_registry_registerSelfAdapter\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_absolute_asset_spec_already_absolute\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_absolute_asset_spec_notastring\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_absolute_asset_spec_relative\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_action_autocommit_with_introspectables\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_action_autocommit_with_introspectables_introspection_off\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_action_branching_kw_is_None\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_action_branching_kw_is_not_None\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_action_branching_nonautocommit_with_config_info\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_action_branching_nonautocommit_with_introspectables\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_action_branching_nonautocommit_without_config_info\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_action_nonautocommit_with_introspectables_introspection_off\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_autocommit_no_conflicts\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_begin\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_begin_with_request\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_commit_conflict_resolved_with_include\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_commit_conflict_resolved_with_two_includes_and_local\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_commit_conflict_simple\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_commit_conflict_with_two_includes\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_conflict_set_forbidden_view\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_conflict_set_notfound_view\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_alternate_renderers\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_authentication_policy\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_authorization_policy_only\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_default_permission\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_default_renderers\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_default_view_mapper\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_exceptionresponse_view_None\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_exceptionresponse_view_custom\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_httpexception_view_default\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_no_root_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_noreg_custom_settings\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_noreg_debug_logger_non_None\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_session_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_with_introspection\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_with_package_registry\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_with_root_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_end\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_hook_zca\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_dotted_name\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_missing_source_file\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_module_defaults_to_includeme\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_module_defaults_to_includeme_missing\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_nested_route_prefix\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_python_callable\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_include_with_route_prefix\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_introspector_decorator\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_make_wsgi_app\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_maybe_dotted_notstring_success\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_maybe_dotted_string_fail\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_maybe_dotted_string_success\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_dottedname_package\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_with_extra_kw\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_with_ignore\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_with_onerror\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_alternate_renderers\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authentication_policy\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authentication_policy_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authorization_policy_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_authorization_policy_only\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_calls_fix_registry\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_custom_settings\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_debug_logger_name\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_debug_logger_non_None\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_default_permission\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_dottedname_root_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_explicit_notfound_trumps_iexceptionresponse\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_includes\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_includes_spaces\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_locale_negotiator\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_locale_negotiator_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_no_default_root_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_registers_default_exceptionresponse_views\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_registers_default_view_predicates\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_registers_default_webob_iresponse_adapter\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_renderer_globals_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_renderer_globals_factory_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_request_factory\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_request_factory_dottedname\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_tweens\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_unhook_zca\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_with_package\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_with_package_module\nPASSED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_with_package_package\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_for_\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_view\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_view_attr\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_view_context\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_view_exception\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_view_for\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_view_permission\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_view_permission_alias\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_view_renderer\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_add_route_with_view_renderer_alias\nPASSED r2e_tests/test_config/test_init.py::TestConfiguratorDeprecatedFeatures::test_conflict_route_with_view\nPASSED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_directive_persists_across_configurator_creations\nPASSED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_extend_action_method_successful\nPASSED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_extend_same_name_doesnt_conflict\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_action_simple\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_action_with_includepath\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_action_with_includepath_and_info\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_action_with_info\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_action_with_introspectables\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_action_with_order\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_execute_actions_dicts\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_execute_actions_error\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_execute_actions_tuples\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_execute_actions_with_introspectable_no_callable\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_execute_actions_with_introspectables\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_it\nPASSED r2e_tests/test_config/test_init.py::TestActionState::test_processSpec\nPASSED r2e_tests/test_config/test_init.py::Test_resolveConflicts::test_it_conflict\nPASSED r2e_tests/test_config/test_init.py::Test_resolveConflicts::test_it_success_dicts\nPASSED r2e_tests/test_config/test_init.py::Test_resolveConflicts::test_it_success_tuples\nPASSED r2e_tests/test_config/test_init.py::Test_resolveConflicts::test_it_with_actions_grouped_by_order\nPASSED r2e_tests/test_config/test_init.py::TestGlobalRegistriesIntegration::test_global_registries\nPASSED r2e_tests/test_config/test_init.py::TestGlobalRegistriesIntegration::test_global_registries_empty\nPASSED r2e_tests/test_config/test_predicates.py::TestXHRPredicate::test___call___false\nPASSED r2e_tests/test_config/test_predicates.py::TestXHRPredicate::test___call___true\nPASSED r2e_tests/test_config/test_predicates.py::TestXHRPredicate::test_phash\nPASSED r2e_tests/test_config/test_predicates.py::TestXHRPredicate::test_text\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestMethodPredicate::test___call___false\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestMethodPredicate::test___call___true_multi\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestMethodPredicate::test___call___true_single\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestMethodPredicate::test_ctor_get_but_no_head\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestMethodPredicate::test_phash\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestMethodPredicate::test_text\nPASSED r2e_tests/test_config/test_predicates.py::TestPathInfoPredicate::test___call___false\nPASSED r2e_tests/test_config/test_predicates.py::TestPathInfoPredicate::test___call___true\nPASSED r2e_tests/test_config/test_predicates.py::TestPathInfoPredicate::test_ctor_compilefail\nPASSED r2e_tests/test_config/test_predicates.py::TestPathInfoPredicate::test_phash\nPASSED r2e_tests/test_config/test_predicates.py::TestPathInfoPredicate::test_text\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestParamPredicate::test___call___false\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestParamPredicate::test___call___true_exists\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestParamPredicate::test___call___true_withval\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestParamPredicate::test_phash_exists\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestParamPredicate::test_phash_withval\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestParamPredicate::test_text_exists\nPASSED r2e_tests/test_config/test_predicates.py::TestRequestParamPredicate::test_text_withval\nPASSED r2e_tests/test_config/test_predicates.py::TestMatchParamPredicate::test___call___false\nPASSED r2e_tests/test_config/test_predicates.py::TestMatchParamPredicate::test___call___true_multi\nPASSED r2e_tests/test_config/test_predicates.py::TestMatchParamPredicate::test___call___true_single\nPASSED r2e_tests/test_config/test_predicates.py::TestMatchParamPredicate::test_phash\nPASSED r2e_tests/test_config/test_predicates.py::TestMatchParamPredicate::test_text\nPASSED r2e_tests/test_config/test_predicates.py::TestCustomPredicate::test___call___false\nPASSED r2e_tests/test_config/test_predicates.py::TestCustomPredicate::test___call___true\nPASSED r2e_tests/test_config/test_predicates.py::TestCustomPredicate::test_phash\nPASSED r2e_tests/test_config/test_predicates.py::TestCustomPredicate::test_text_func_has___text__\nPASSED r2e_tests/test_config/test_predicates.py::TestCustomPredicate::test_text_func_repr\nPASSED r2e_tests/test_config/test_predicates.py::TestTraversePredicate::test___call__traverse_has_remainder_already\nPASSED r2e_tests/test_config/test_predicates.py::TestTraversePredicate::test___call__traverse_matches\nPASSED r2e_tests/test_config/test_predicates.py::TestTraversePredicate::test___call__traverse_matches_with_highorder_chars\nPASSED r2e_tests/test_config/test_predicates.py::TestTraversePredicate::test_phash\nPASSED r2e_tests/test_config/test_predicates.py::TestTraversePredicate::test_text\nPASSED r2e_tests/test_config/test_rendering.py::TestRenderingConfiguratorMixin::test_add_renderer\nPASSED r2e_tests/test_config/test_rendering.py::TestRenderingConfiguratorMixin::test_add_renderer_dottedname_factory\nPASSED r2e_tests/test_config/test_rendering.py::TestRenderingConfiguratorMixin::test_set_renderer_globals_factory\nPASSED r2e_tests/test_config/test_rendering.py::TestRenderingConfiguratorMixin::test_set_renderer_globals_factory_dottedname\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_defaults\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_discriminator\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_path_no_pattern\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_pattern_with_path\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_view_with_view_attr\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_view_with_view_context\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_view_with_view_permission\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_no_view_with_view_renderer\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_accept\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_custom_predicates\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_factory\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_factory_dottedname\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_header\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_path_info\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_path_info_highorder\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_path_info_regex\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_pregenerator\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_request_method\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_request_param\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_route_prefix\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_static\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_add_route_with_xhr\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_get_routes_mapper_already_registered\nPASSED r2e_tests/test_config/test_routes.py::RoutesConfiguratorMixinTests::test_get_routes_mapper_not_yet_registered\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_add_permission\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_no_authz_policy\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_no_authz_policy_autocommit\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_with_authz_policy\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authentication_policy_with_authz_policy_autocommit\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_no_authn_policy\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_no_authn_policy_autocommit\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_with_authn_policy\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_authorization_policy_with_authn_policy_autocommit\nPASSED r2e_tests/test_config/test_security.py::ConfiguratorSecurityMethodsTests::test_set_default_permission\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test__set_settings_as_None\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test__set_settings_as_dictwithvalues\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_add_settings_settings_already_registered\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_add_settings_settings_not_yet_registered\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_get_settings_nosettings\nPASSED r2e_tests/test_config/test_settings.py::TestSettingsConfiguratorMixin::test_get_settings_withsettings\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_all\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_authorization\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_notfound\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_routematch\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_debug_templates\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_default_locale_name\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_getattr_fail\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_getattr_raises_attribute_error\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_getattr_success\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_noargs\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_originals_kept\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_prevent_http_cache\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_reload_all\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_reload_assets\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_reload_resources\nPASSED r2e_tests/test_config/test_settings.py::TestSettings::test_reload_templates\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_renderer\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_renderer_explicitrenderer\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_renderer_twice\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_subscriber_defaults\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_subscriber_dottedname\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_subscriber_multiple\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_subscriber_single\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_add_template\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_resources\nPASSED r2e_tests/test_config/test_testing.py::TestingConfiguratorMixinTests::test_testing_securitypolicy\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_dottedname\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_instance\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_name_ingress\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_name_main\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_over_ingress\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_over_ingress_iterable\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_under_main\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_under_main_iterable\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tween_unsuitable\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_conflict\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_names_distinct\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_names_with_over_nonstringoriter\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_names_with_under_nonstringoriter\nPASSED r2e_tests/test_config/test_tweens.py::TestTweensConfiguratorMixin::test_add_tweens_names_with_underover\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test___call___explicit\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test___call___implicit\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_add_explicit\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_add_implicit\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_1\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_2\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_3\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_4\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_5\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_conflict_direct\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_conflict_indirect\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_over_and_under_partials\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_over_partial\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_over_partial_with_fallback\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_under_partial\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_missing_under_partial_with_fallback\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_with_missing_fallbacks\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_with_multiple_matching_fallbacks\nPASSED r2e_tests/test_config/test_tweens.py::TestTweens::test_implicit_ordering_with_partial_fallbacks\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_custom_predicates_can_affect_traversal\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_different_custom_predicates_with_same_hash\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_match_param_from_dict\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_match_param_from_dict_fails\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_match_param_from_string\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_match_param_from_string_fails\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_ordering_importance_and_number\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_ordering_importance_of_predicates\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_ordering_number_of_predicates\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_ordering_xhr_and_request_method_trump_only_containment\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_predicate_text_is_correct\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_request_method_ordering_hashes_same\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_request_method_sequence\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_traverse_has_remainder_already\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_traverse_matches\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_traverse_matches_with_highorder_chars\nPASSED r2e_tests/test_config/test_util.py::TestPredicateList::test_unknown_predicate\nPASSED r2e_tests/test_config/test_util.py::TestActionInfo::test___str__\nPASSED r2e_tests/test_config/test_util.py::TestActionInfo::test_class_conforms\nPASSED r2e_tests/test_config/test_util.py::TestActionInfo::test_ctor\nPASSED r2e_tests/test_config/test_util.py::TestActionInfo::test_instance_conforms\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_add\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_remove\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_1\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_2\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_3\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_4\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_5\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_conflict_direct\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_conflict_indirect\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_missing_after_partial\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_missing_after_partial_with_fallback\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_missing_before_and_after_partials\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_missing_before_partial\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_missing_before_partial_with_fallback\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_with_missing_fallbacks\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_with_multiple_matching_fallbacks\nPASSED r2e_tests/test_config/test_util.py::TestTopologicalSorter::test_sorted_ordering_with_partial_fallbacks\nPASSED r2e_tests/test_config/test_util.py::TestSingleton::test_repr\nPASSED r2e_tests/test_config/test_util.py::TestCyclicDependencyError::test___str__\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_allows_other_predicates\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_context\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_for_\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_http_cache\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_disallows_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_forbidden_view_with_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_allows_other_predicates\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_append_slash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_context\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_for_\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_http_cache\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_disallows_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_notfound_view_with_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_static_view_absolute\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_static_view_here_no_utility_registered\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_static_view_package_relative\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_instance\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_instance_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_instancemethod\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_instancemethod_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_oldstyle_class\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_as_oldstyle_class_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_context_as_class\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_context_as_dottedname\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_context_as_iface\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_context_trumps_for\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_custom_more_preds_first_bests_fewer_preds_last\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_custom_predicate_bests_standard_predicate\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_default_phash_overrides_default_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_default_phash_overrides_no_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_default_phash_overrides_default_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_default_phash_overrides_no_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_multiview_replaces_existing_securedview\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_multiview_replaces_existing_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_multiview_replaces_multiview\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_mulview_replaces_existing_view_with___accept__\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_same_phash_overrides_existing_single_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exc_with_accept_multiview_replaces_existing_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_exception_register_secured_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_for__as_dottedname\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_for_as_class\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_for_as_iface\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview___discriminator__\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_call_ordering\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_context_superclass_then_subclass\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_exception_superclass_then_subclass\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_replaces_existing_securedview\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_replaces_existing_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_replaces_existing_view_with___accept__\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_multiview_replaces_multiview\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_register_secured_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_same_phash_overrides_existing_single_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_same_predicates\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_view_callable_None_no_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_view_callable_None_with_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_view_callable_dottedname\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_accept_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_accept_multiview_replaces_existing_view\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_accept_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_containment_dottedname\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_containment_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_containment_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_custom_predicates_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_custom_predicates_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_decorator\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_default_permission_no_explicit_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_default_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_function_callable\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_function_callable_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_badregex\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_noval_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_noval_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_val_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_val_missing\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_header_val_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_http_cache\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_mapper\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_name_unicode\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_no_default_permission_no_explicit_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_nonexistant_route_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_path_info_badregex\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_path_info_match\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_path_info_nomatch\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_get_implies_head\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_sequence_conflict\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_sequence_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_sequence_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_method_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_param_noval_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_param_noval_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_param_val_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_param_val_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_type\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_type_and_route_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_type_as_iface\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_request_type_as_noniface\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_route_name\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_route_name_exception\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_config_and_view_defaults_conflicts\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_config_and_view_defaults_doesnt_conflict\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_defaults\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_defaults_viewname_is_dottedname_kwarg\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_view_defaults_viewname_is_dottedname_nonkwarg\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_xhr_false\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_xhr_true\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_wrapped_view_is_decorated\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_views_with_accept_multiview_replaces_existing\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_derive_view_dottedname\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_derive_view_function\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_derive_view_with_default_renderer_no_explicit_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_derive_view_with_default_renderer_with_explicit_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_set_view_mapper\nPASSED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_set_view_mapper_dottedname\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_function_defaultargs_firstname_not_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_function_defaultargs_firstname_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_function_noargs\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_function_onearg_named_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_function_onearg_named_somethingelse\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_function_toomanyargs\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_function_with_attr_false\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_function_with_attr_true\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_instance_defaultargs_firstname_not_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_instance_defaultargs_firstname_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_instance_defaultargs_onearg_named_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_instance_defaultargs_onearg_named_somethingelse\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_instance_nocall\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_instance_toomanyargs\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_method_onearg_named_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_newstyle_class_init_defaultargs_firstname_not_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_newstyle_class_init_defaultargs_firstname_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_newstyle_class_init_firstname_request_with_secondname\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_newstyle_class_init_noargs\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_newstyle_class_init_onearg_named_somethingelse\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_oldstyle_class_init_defaultargs_firstname_not_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_oldstyle_class_init_defaultargs_firstname_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_oldstyle_class_init_noargs\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_oldstyle_class_init_onearg_named_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_oldstyle_class_init_onearg_named_somethingelse\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_oldstyle_class_init_toomanyargs\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_oldstyle_class_no_init\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_requestonly_newstyle_class_init_onearg_named_request\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_requestonly_newstyle_class_init_toomanyargs\nPASSED r2e_tests/test_config/test_views.py::Test_requestonly::test_requestonly_newstyle_class_no_init\nPASSED r2e_tests/test_config/test_views.py::Test_isexception::test_is_IException\nPASSED r2e_tests/test_config/test_views.py::Test_isexception::test_is_IException_subinterface\nPASSED r2e_tests/test_config/test_views.py::Test_isexception::test_is_exception_class\nPASSED r2e_tests/test_config/test_views.py::Test_isexception::test_is_exception_instance\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call__\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call__intermediate_not_found\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call__raise_not_found_isnt_interpreted_as_pred_mismatch\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call_permissive_has_call_permissive\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test___call_permissive_has_no_call_permissive\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test__call__not_found\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test__call__with_accept_match\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test__call__with_accept_miss\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test__call_permissive__not_found\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_add\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_add_with_phash\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_add_with_phash_override_accept\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_class_implements_ISecuredView\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_get_views\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_get_views_best_match_returns_None\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_get_views_no_self_accepts\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_get_views_request_has_no_accept\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_instance_implements_ISecuredView\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_match_not_found\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_match_predicate_fails\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_match_predicate_succeeds\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_multiple_with_functions_as_views\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_permitted\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_permitted_no_match_with__permitted__\nPASSED r2e_tests/test_config/test_views.py::TestMultiView::test_permitted_no_views\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_function_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_function_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_instance_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_instance_context_and_request_attr_and_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_instance_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_instance_requestonly_attr_and_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_newstyle_class_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_newstyle_class_context_and_request_attr_and_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_newstyle_class_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_newstyle_class_requestonly_attr_and_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_oldstyle_class_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_oldstyle_class_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_oldstyle_cls_context_request_attr_and_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_as_oldstyle_cls_requestonly_attr_and_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_attr_wrapped_view_branching_default_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_attr_wrapped_view_branching_nondefault_phash\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_class_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_class_without_attr\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_debug_auth_permission_authpol_denied\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_debug_auth_permission_authpol_denied2\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_debug_auth_permission_authpol_overridden\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_debug_auth_permission_authpol_permitted\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_debug_auth_permission_authpol_permitted_no_request\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_http_cached_prevent_http_cache_in_settings\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_http_cached_view_bad_tuple\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_http_cached_view_integer\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_http_cached_view_prevent_auto_set\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_http_cached_view_timedelta\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_http_cached_view_tuple\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_http_cached_view_tuple_seconds_None\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_predicate_mismatch_exception_has_text_in_detail\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_predicate_mismatch_view_has_name\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_predicate_mismatch_view_has_no_name\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_requestonly_function\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_requestonly_function_with_renderer\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_requestonly_function_with_renderer_request_has_view\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_requestonly_function_with_renderer_request_override\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_secured_view_authn_policy_no_authz_policy\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_secured_view_authz_policy_no_authn_policy\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_secured_view_raises_forbidden_no_name\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_secured_view_raises_forbidden_with_name\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_debug_authorization_authn_policy_no_authz_policy\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_debug_authorization_authz_policy_no_authn_policy\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_debug_authorization_no_authpol\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_debug_authorization_no_permission\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_predicates_all\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_predicates_checker\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_predicates_notall\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_view_mapper_config_specified\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_view_mapper_default_mapper_specified\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_view_mapper_view_specified\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_wrapper_viewname\nPASSED r2e_tests/test_config/test_views.py::TestViewDeriver::test_with_wrapper_viewname_notfound\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test__view_as_function_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_function_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_function_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_function_requestonly_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_instance_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_instance_context_and_request_and_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_instance_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_instance_requestonly_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_newstyle_class_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_newstyle_class_context_and_request_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_newstyle_class_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_newstyle_class_requestonly_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_oldstyle_class_context_and_request\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_oldstyle_class_context_and_request_with_attr\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_oldstyle_class_requestonly\nPASSED r2e_tests/test_config/test_views.py::TestDefaultViewMapper::test_view_as_oldstyle_class_requestonly_with_attr\nPASSED r2e_tests/test_config/test_views.py::Test_preserve_view_attrs::test_it_different\nPASSED r2e_tests/test_config/test_views.py::Test_preserve_view_attrs::test_it_different_with_existing_original_view\nPASSED r2e_tests/test_config/test_views.py::Test_preserve_view_attrs::test_it_same\nPASSED r2e_tests/test_config/test_views.py::Test_preserve_view_attrs::test_it_view_is_None\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_already_exists\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_url_noendslash\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_url_withendslash\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_for_\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_permission\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_renderer\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_route_prefix\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_view_attr\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_view_context\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_view_for\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_view_permission\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_add_viewname_with_view_renderer\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_missing\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_quoting\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_registration_miss\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_registration_no_registry_on_request\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_route_url\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_slash_in_name1\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_slash_in_name2\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_quoted_remote\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_generate_url_unquoted_local\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_verifyClass\nPASSED r2e_tests/test_config/test_views.py::TestStaticURLInfo::test_verifyObject\nPASSED r2e_tests/test_config/test_views.py::Test_view_description::test_with_text\nPASSED r2e_tests/test_scripts/test_common.py::Test_logging_file_config::test_it\nPASSED r2e_tests/test_scripts/test_pcreate.py::TestPCreateCommand::test_known_scaffold_absolute_path\nPASSED r2e_tests/test_scripts/test_pcreate.py::TestPCreateCommand::test_known_scaffold_multiple_rendered\nPASSED r2e_tests/test_scripts/test_pcreate.py::TestPCreateCommand::test_known_scaffold_single_rendered\nPASSED r2e_tests/test_scripts/test_pcreate.py::TestPCreateCommand::test_no_project_name\nPASSED r2e_tests/test_scripts/test_pcreate.py::TestPCreateCommand::test_run_no_scaffold_name\nPASSED r2e_tests/test_scripts/test_pcreate.py::TestPCreateCommand::test_run_show_scaffolds_exist\nPASSED r2e_tests/test_scripts/test_pcreate.py::TestPCreateCommand::test_run_show_scaffolds_none_exist\nPASSED r2e_tests/test_scripts/test_pcreate.py::TestPCreateCommand::test_unknown_scaffold_name\nPASSED r2e_tests/test_scripts/test_pcreate.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_has_bad_config_header\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_not_enough_args\nPASSED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_response_has_no_charset\nPASSED r2e_tests/test_scripts/test_prequest.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test__get_mapper\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_no_mapper\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_no_routes\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_route_with_no_slash_prefix\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_single_route_no_route_registered\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_single_route_no_views_registered\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_single_route_one_view_registered\nPASSED r2e_tests/test_scripts/test_proutes.py::TestPRoutesCommand::test_single_route_one_view_registered_with_factory\nPASSED r2e_tests/test_scripts/test_proutes.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_parse_vars_bad\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_parse_vars_good\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_record_pid_not_verbose\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_record_pid_verbose\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_remove_pid_current_pid_is_not_pid_in_file\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_remove_pid_current_pid_is_not_written_pid\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_remove_pid_file_not_verbose\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_remove_pid_file_stale_pid_write_exception\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_remove_pid_file_unlink_exception\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_remove_pid_file_verbose\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_remove_pid_no_pid_file\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_remove_pid_not_a_number\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_run_no_args\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_run_stop_daemon_bad_pid_file\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_run_stop_daemon_invalid_pid_in_file\nPASSED r2e_tests/test_scripts/test_pserve.py::TestPServeCommand::test_run_stop_daemon_no_such_pid_file\nPASSED r2e_tests/test_scripts/test_pserve.py::Test_read_pidfile::test_read_pidfile\nPASSED r2e_tests/test_scripts/test_pserve.py::Test_read_pidfile::test_read_pidfile_no_pid_file\nPASSED r2e_tests/test_scripts/test_pserve.py::Test_read_pidfile::test_read_pidfile_not_a_number\nPASSED r2e_tests/test_scripts/test_pserve.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_pserve.py::TestLazyWriter::test_flush\nPASSED r2e_tests/test_scripts/test_pserve.py::TestLazyWriter::test_open\nPASSED r2e_tests/test_scripts/test_pserve.py::TestLazyWriter::test_write\nPASSED r2e_tests/test_scripts/test_pserve.py::TestLazyWriter::test_writeline\nPASSED r2e_tests/test_scripts/test_pserve.py::Test__methodwrapper::test___call__fail\nPASSED r2e_tests/test_scripts/test_pserve.py::Test__methodwrapper::test___call__succeed\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_custom_section_override\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_bpython_shell\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_check_variable_override_order\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_custom_items\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_default_shell\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_default_shell_with_unknown_shell\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_ipython_v0_10\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_ipython_v0_11\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_loads_setup_from_options\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_command_setup\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_make_bpython_shell\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_make_default_shell\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_make_ipython_v0_10_shell\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_make_ipython_v0_11_shell\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_shell_ipython_ordering\nPASSED r2e_tests/test_scripts/test_pshell.py::TestPShellCommand::test_shell_ordering\nPASSED r2e_tests/test_scripts/test_pshell.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_ptweens.py::TestPTweensCommand::test__get_tweens\nPASSED r2e_tests/test_scripts/test_ptweens.py::TestPTweensCommand::test_command_implicit_and_explicit_tweens\nPASSED r2e_tests/test_scripts/test_ptweens.py::TestPTweensCommand::test_command_implicit_tweens_only\nPASSED r2e_tests/test_scripts/test_ptweens.py::TestPTweensCommand::test_command_no_tweens\nPASSED r2e_tests/test_scripts/test_ptweens.py::Test_main::test_it\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_multi_routes_all_match\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_multi_routes_none_match\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_multi_routes_some_match\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_no_match\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_no_match_multiview_registered\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_route_multiview\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_route_multiview_no_view_registered\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_route_no_multiview\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_traversal\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test__find_view_traversal_multiview\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_multi_view_nested\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_multiview\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_multiview_with_permission\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_multiview_with_predicates\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_not_found\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_not_found_url_starts_without_slash\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_route\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_route_with_route_predicates\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_traversal\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_traversal_with_permission\nPASSED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_traversal_with_predicates\nPASSED r2e_tests/test_scripts/test_pviews.py::Test_main::test_it\nFAILED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_deserialize_option\nFAILED r2e_tests/test_1.py::TestUnencryptedCookieSession::test_serialize_option\nFAILED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_resource_url_adapter_dotted_names\nFAILED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_resource_url_adapter_introspectables\nFAILED r2e_tests/test_config/test_adapters.py::AdaptersConfiguratorMixinTests::test_add_traverser_dotted_names\nFAILED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_filename_no_overrides\nFAILED r2e_tests/test_config/test_assets.py::TestOverrideProvider::test_get_resource_filename_override_returns_None\nFAILED r2e_tests/test_config/test_assets.py::TestPackageOverrides::test_get_filename\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_abspath\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_asset_spec\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_asset_spec_existing_translation_dirs\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_multiple_specs\nFAILED r2e_tests/test_config/test_i18n.py::TestI18NConfiguratorMixin::test_add_translation_dirs_multiple_specs_multiple_calls\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_no_registry\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_ctor_noreg_debug_logger_None_default\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_scan_integration_conflict\nFAILED r2e_tests/test_config/test_init.py::ConfiguratorTests::test_setup_registry_debug_logger_None_default\nFAILED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_extend_with_dotted_name\nFAILED r2e_tests/test_config/test_init.py::TestConfigurator_add_directive::test_extend_with_python_callable\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_static_view_package_here_relative\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_template_renderer\nFAILED r2e_tests/test_config/test_views.py::TestViewsConfigurationMixin::test_add_view_with_template_renderer_no_callable\nFAILED r2e_tests/test_config/test_views.py::TestViewDeriver::test_function_returns_non_adaptable\nFAILED r2e_tests/test_config/test_views.py::TestViewDeriver::test_function_returns_non_adaptable_dict\nFAILED r2e_tests/test_config/test_views.py::TestViewDeriver::test_instance_returns_non_adaptable\nFAILED r2e_tests/test_config/test_views.py::TestViewDeriver::test_requestonly_default_method_returns_non_adaptable\nFAILED r2e_tests/test_config/test_views.py::TestViewDeriver::test_requestonly_nondefault_method_returns_non_adaptable\nFAILED r2e_tests/test_config/test_views.py::Test_view_description::test_without_text\nFAILED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_display_headers\nFAILED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_has_content_type_header_var\nFAILED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_has_good_header_var\nFAILED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_has_multiple_header_vars\nFAILED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_method_get\nFAILED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_method_post\nFAILED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_path_doesnt_start_with_slash\nFAILED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_two_args\nFAILED r2e_tests/test_scripts/test_prequest.py::TestPRequestCommand::test_command_with_query_string\nFAILED r2e_tests/test_scripts/test_pviews.py::TestPViewsCommand::test_views_command_single_view_function_traversal\n======================== 38 failed, 797 passed in 4.12s ========================\n",
    "old_commit_res_stderr": ""
}
CONTRIBUTORS.txt pyramid/session.py pyramid/tests/test_session.py
We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
[ISSUE]

**Title:** Session Factory Fails to Accept 'signed_serialize' and 'signed_deserialize' Parameters

**Description:**
After merging the latest changes, attempting to configure the `UnencryptedCookieSessionFactoryConfig` with custom `signed_serialize` and `signed_deserialize` functions results in a `TypeError`. This prevents customization of the session serialization process.

**Example Buggy Code:**
```python
def dummy_signed_serialize(data, secret):
    import base64
    from pyramid.compat import pickle, bytes_
    pickled = pickle.dumps(data)
    return base64.b64encode(bytes_(secret)) + base64.b64encode(pickled)

def dummy_signed_deserialize(serialized, secret):
    import base64
    from pyramid.compat import pickle, bytes_
    serialized_data = base64.b64decode(
        serialized[len(base64.b64encode(bytes_(secret))):])
    return pickle.loads(serialized_data)

session = UnencryptedCookieSessionFactoryConfig('secret', 
    signed_serialize=dummy_signed_serialize,
    signed_deserialize=dummy_signed_deserialize)
```

**Expected Behavior:**
The `UnencryptedCookieSessionFactoryConfig` should accept the `signed_serialize` and `signed_deserialize` keyword arguments, allowing developers to provide custom serialization and deserialization functions for session data.

**Actual Behavior:**
A `TypeError` is raised stating that `UnencryptedCookieSessionFactoryConfig` received unexpected keyword arguments `'signed_serialize'` and `'signed_deserialize'`. This prevents the configuration of custom serialization methods.

**Error Message:**
```
TypeError: UnencryptedCookieSessionFactoryConfig() got an unexpected keyword argument 'signed_deserialize'
```

**Impact:**
This issue blocks developers from customizing the session serialization process, potentially limiting flexibility and security enhancements related to session management.

[/ISSUE]
--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.

--- BEGIN FILE ---
```
### pyramid/session.py
from hashlib import sha1
import base64
import binascii
import hmac
import time
import os

from zope.interface import implementer

from pyramid.compat import (
    pickle,
    PY3,
    text_,
    bytes_,
    native_,
    )

from pyramid.interfaces import ISession
from pyramid.util import strings_differ

def manage_accessed(wrapped):
    """ Decorator which causes a cookie to be set when a wrapped
    method is called"""
    def accessed(session, *arg, **kw):
        session.accessed = int(time.time())
        if not session._dirty:
            session._dirty = True
            def set_cookie_callback(request, response):
                session._set_cookie(response)
                session.request = None # explicitly break cycle for gc
            session.request.add_response_callback(set_cookie_callback)
        return wrapped(session, *arg, **kw)
    accessed.__doc__ = wrapped.__doc__
    return accessed

def UnencryptedCookieSessionFactoryConfig(
    secret,
    timeout=1200,
    cookie_name='session',
    cookie_max_age=None,
    cookie_path='/',
    cookie_domain=None,
    cookie_secure=False, 
    cookie_httponly=False,
    cookie_on_exception=True,
    ):
    """
    Configure a :term:`session factory` which will provide unencrypted
    (but signed) cookie-based sessions.  The return value of this
    function is a :term:`session factory`, which may be provided as
    the ``session_factory`` argument of a
    :class:`pyramid.config.Configurator` constructor, or used
    as the ``session_factory`` argument of the
    :meth:`pyramid.config.Configurator.set_session_factory`
    method.

    The session factory returned by this function will create sessions
    which are limited to storing fewer than 4000 bytes of data (as the
    payload must fit into a single cookie).

    Parameters:

    ``secret``
      A string which is used to sign the cookie.

    ``timeout``
      A number of seconds of inactivity before a session times out.

    ``cookie_name``
      The name of the cookie used for sessioning.  Default: ``session``.

    ``cookie_max_age``
      The maximum age of the cookie used for sessioning (in seconds).
      Default: ``None`` (browser scope).

    ``cookie_path``
      The path used for the session cookie.  Default: ``/``.

    ``cookie_domain``
      The domain used for the session cookie.  Default: ``None`` (no domain).

    ``cookie_secure``
      The 'secure' flag of the session cookie.  Default: ``False``.

    ``cookie_httponly``
      The 'httpOnly' flag of the session cookie.  Default: ``False``.

    ``cookie_on_exception``
      If ``True``, set a session cookie even if an exception occurs
      while rendering a view.  Default: ``True``.

    """

    @implementer(ISession)
    class UnencryptedCookieSessionFactory(dict):
        """ Dictionary-like session object """

        # configuration parameters
        _cookie_name = cookie_name
        _cookie_max_age = cookie_max_age
        _cookie_path = cookie_path
        _cookie_domain = cookie_domain
        _cookie_secure = cookie_secure
        _cookie_httponly = cookie_httponly
        _cookie_on_exception = cookie_on_exception
        _secret = secret
        _timeout = timeout

        # dirty flag
        _dirty = False

        def __init__(self, request):
            self.request = request
            now = time.time()
            created = accessed = now
            new = True
            value = None
            state = {}
            cookieval = request.cookies.get(self._cookie_name)
            if cookieval is not None:
                try:
                    value = signed_deserialize(cookieval, self._secret)
                except ValueError:
                    value = None

            if value is not None:
                accessed, created, state = value
                new = False
                if now - accessed > self._timeout:
                    state = {}

            self.created = created
            self.accessed = accessed
            self.new = new
            dict.__init__(self, state)

        # ISession methods
        def changed(self):
            """ This is intentionally a noop; the session is
            serialized on every access, so unnecessary"""
            pass

        def invalidate(self):
            self.clear() # XXX probably needs to unset cookie

        # non-modifying dictionary methods
        get = manage_accessed(dict.get)
        __getitem__ = manage_accessed(dict.__getitem__)
        items = manage_accessed(dict.items)
        values = manage_accessed(dict.values)
        keys = manage_accessed(dict.keys)
        __contains__ = manage_accessed(dict.__contains__)
        __len__ = manage_accessed(dict.__len__)
        __iter__ = manage_accessed(dict.__iter__)

        if not PY3:
            iteritems = manage_accessed(dict.iteritems)
            itervalues = manage_accessed(dict.itervalues)
            iterkeys = manage_accessed(dict.iterkeys)
            has_key = manage_accessed(dict.has_key)

        # modifying dictionary methods
        clear = manage_accessed(dict.clear)
        update = manage_accessed(dict.update)
        setdefault = manage_accessed(dict.setdefault)
        pop = manage_accessed(dict.pop)
        popitem = manage_accessed(dict.popitem)
        __setitem__ = manage_accessed(dict.__setitem__)
        __delitem__ = manage_accessed(dict.__delitem__)

        # flash API methods
        @manage_accessed
        def flash(self, msg, queue='', allow_duplicate=True):
            storage = self.setdefault('_f_' + queue, [])
            if allow_duplicate or (msg not in storage):
                storage.append(msg)

        @manage_accessed
        def pop_flash(self, queue=''):
            storage = self.pop('_f_' + queue, [])
            return storage

        @manage_accessed
        def peek_flash(self, queue=''):
            storage = self.get('_f_' + queue, [])
            return storage

        # CSRF API methods
        @manage_accessed
        def new_csrf_token(self):
            token = text_(binascii.hexlify(os.urandom(20)))
            self['_csrft_'] = token
            return token

        @manage_accessed
        def get_csrf_token(self):
            token = self.get('_csrft_', None)
            if token is None:
                token = self.new_csrf_token()
            return token

        # non-API methods
        def _set_cookie(self, response):
            if not self._cookie_on_exception:
                exception = getattr(self.request, 'exception', None)
                if exception is not None: # dont set a cookie during exceptions
                    return False
            cookieval = signed_serialize(
                (self.accessed, self.created, dict(self)), self._secret
                )
            if len(cookieval) > 4064:
                raise ValueError(
                    'Cookie value is too long to store (%s bytes)' %
                    len(cookieval)
                    )
            response.set_cookie(
                self._cookie_name,
                value=cookieval,
                max_age = self._cookie_max_age,
                path = self._cookie_path,
                domain = self._cookie_domain,
                secure = self._cookie_secure,
                httponly = self._cookie_httponly,
                )
            return True

    return UnencryptedCookieSessionFactory

def signed_serialize(data, secret):
    """ Serialize any pickleable structure (``data``) and sign it
    using the ``secret`` (must be a string).  Return the
    serialization, which includes the signature as its first 40 bytes.
    The ``signed_deserialize`` method will deserialize such a value.

    This function is useful for creating signed cookies.  For example:

    .. code-block:: python

       cookieval = signed_serialize({'a':1}, 'secret')
       response.set_cookie('signed_cookie', cookieval)
    """
    pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)
    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()
    return sig + native_(base64.b64encode(pickled))

def signed_deserialize(serialized, secret, hmac=hmac):
    """ Deserialize the value returned from ``signed_serialize``.  If
    the value cannot be deserialized for any reason, a
    :exc:`ValueError` exception will be raised.

    This function is useful for deserializing a signed cookie value
    created by ``signed_serialize``.  For example:

    .. code-block:: python

       cookieval = request.cookies['signed_cookie']
       data = signed_deserialize(cookieval, 'secret')
    """
    # hmac parameterized only for unit tests
    try:
        input_sig, pickled = (serialized[:40],
                              base64.b64decode(bytes_(serialized[40:])))
    except (binascii.Error, TypeError) as e:
        # Badly formed data can make base64 die
        raise ValueError('Badly formed base64 data: %s' % e)

    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()

    # Avoid timing attacks (see
    # http://seb.dbzteam.org/crypto/python-oauth-timing-hmac.pdf)
    if strings_differ(sig, input_sig):
        raise ValueError('Invalid signature')

    return pickle.loads(pickled)


```
--- END FILE ---

Please first localize the bug based on the issue statement, and then generate *SEARCH/REPLACE* edits to fix the issue.

Every *SEARCH/REPLACE* edit must use this format:
1. The file path
2. The start of search block: <<<<<<< SEARCH
3. A contiguous chunk of lines to search for in the existing source code
4. The dividing line: =======
5. The lines to replace into the source code
6. The end of the replace block: >>>>>>> REPLACE

Here is an example:

```python
### mathweb/flask/app.py
<<<<<<< SEARCH
from flask import Flask
=======
import math
from flask import Flask
>>>>>>> REPLACE
```
</solution>

Please note that the *SEARCH/REPLACE* edit REQUIRES PROPER INDENTATION. If you would like to add the line '        print(x)', you must fully write that out, with all those spaces before the code!
Wrap each *SEARCH/REPLACE* edit in a code block as shown in the example above. If you have multiple *SEARCH/REPLACE* edits, use a separate code block for each one.
[ISSUE]

**Title:** Session Factory Fails to Accept 'signed_serialize' and 'signed_deserialize' Parameters

**Description:**
After merging the latest changes, attempting to configure the `UnencryptedCookieSessionFactoryConfig` with custom `signed_serialize` and `signed_deserialize` functions results in a `TypeError`. This prevents customization of the session serialization process.

**Example Buggy Code:**
```python
def dummy_signed_serialize(data, secret):
    import base64
    from pyramid.compat import pickle, bytes_
    pickled = pickle.dumps(data)
    return base64.b64encode(bytes_(secret)) + base64.b64encode(pickled)

def dummy_signed_deserialize(serialized, secret):
    import base64
    from pyramid.compat import pickle, bytes_
    serialized_data = base64.b64decode(
        serialized[len(base64.b64encode(bytes_(secret))):])
    return pickle.loads(serialized_data)

session = UnencryptedCookieSessionFactoryConfig('secret', 
    signed_serialize=dummy_signed_serialize,
    signed_deserialize=dummy_signed_deserialize)
```

**Expected Behavior:**
The `UnencryptedCookieSessionFactoryConfig` should accept the `signed_serialize` and `signed_deserialize` keyword arguments, allowing developers to provide custom serialization and deserialization functions for session data.

**Actual Behavior:**
A `TypeError` is raised stating that `UnencryptedCookieSessionFactoryConfig` received unexpected keyword arguments `'signed_serialize'` and `'signed_deserialize'`. This prevents the configuration of custom serialization methods.

**Error Message:**
```
TypeError: UnencryptedCookieSessionFactoryConfig() got an unexpected keyword argument 'signed_deserialize'
```

**Impact:**
This issue blocks developers from customizing the session serialization process, potentially limiting flexibility and security enhancements related to session management.

[/ISSUE]
{
    "TestUnencryptedCookieSession.test__set_cookie_cookieval_too_long": "PASSED",
    "TestUnencryptedCookieSession.test__set_cookie_on_exception": "PASSED",
    "TestUnencryptedCookieSession.test__set_cookie_on_exception_no_request_exception": "PASSED",
    "TestUnencryptedCookieSession.test__set_cookie_options": "PASSED",
    "TestUnencryptedCookieSession.test__set_cookie_real_webob_response": "PASSED",
    "TestUnencryptedCookieSession.test_changed": "PASSED",
    "TestUnencryptedCookieSession.test_ctor_no_cookie": "PASSED",
    "TestUnencryptedCookieSession.test_ctor_with_bad_cookie": "PASSED",
    "TestUnencryptedCookieSession.test_ctor_with_cookie_expired": "PASSED",
    "TestUnencryptedCookieSession.test_ctor_with_cookie_still_valid": "PASSED",
    "TestUnencryptedCookieSession.test_deserialize_option": "PASSED",
    "TestUnencryptedCookieSession.test_flash_allow_duplicate_false": "PASSED",
    "TestUnencryptedCookieSession.test_flash_allow_duplicate_false_and_msg_not_in_storage": "PASSED",
    "TestUnencryptedCookieSession.test_flash_allow_duplicate_true_and_msg_not_in_storage": "PASSED",
    "TestUnencryptedCookieSession.test_flash_default": "PASSED",
    "TestUnencryptedCookieSession.test_flash_mixed": "PASSED",
    "TestUnencryptedCookieSession.test_get_csrf_token": "PASSED",
    "TestUnencryptedCookieSession.test_get_csrf_token_new": "PASSED",
    "TestUnencryptedCookieSession.test_instance_conforms": "PASSED",
    "TestUnencryptedCookieSession.test_invalidate": "PASSED",
    "TestUnencryptedCookieSession.test_new_csrf_token": "PASSED",
    "TestUnencryptedCookieSession.test_peek_flash_default_queue": "PASSED",
    "TestUnencryptedCookieSession.test_peek_flash_nodefault_queue": "PASSED",
    "TestUnencryptedCookieSession.test_pop_flash_default_queue": "PASSED",
    "TestUnencryptedCookieSession.test_pop_flash_nodefault_queue": "PASSED",
    "TestUnencryptedCookieSession.test_serialize_option": "PASSED",
    "Test_manage_accessed.test_accessed_set": "PASSED",
    "Test_manage_accessed.test_already_dirty": "PASSED",
    "Test_manage_accessed.test_cookie_is_set": "PASSED",
    "Test_manage_accessed.test_with_exception": "PASSED",
    "Test_signed_serialize.test_it": "PASSED",
    "Test_signed_deserialize.test_invalid_bits": "PASSED",
    "Test_signed_deserialize.test_invalid_len": "PASSED",
    "Test_signed_deserialize.test_it": "PASSED",
    "Test_signed_deserialize.test_it_bad_encoding": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_object_event_subscriber": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_resource_url_default_resource_iface_means_Interface": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_resource_url_nodefault_resource_iface": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_response_adapter": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_response_adapter_dottednames": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_response_adapter_self": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_subscriber_defaults": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_subscriber_dottednames": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_subscriber_iface_specified": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_traverser_default_iface_means_Interface": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_traverser_introspectables": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_traverser_nondefault_iface": "PASSED",
    "TestAssetsConfiguratorMixin.test__override_already_registered": "PASSED",
    "TestAssetsConfiguratorMixin.test__override_not_yet_registered": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_directory_with_directory": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_directory_with_file": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_directory_with_package": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_file_with_directory": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_file_with_file": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_file_with_package": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_package_with_directory": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_package_with_package": "PASSED",
    "TestAssetsConfiguratorMixin.test_override_asset_samename": "PASSED",
    "TestOverrideProvider.test_get_resource_filename_override_returns_value": "PASSED",
    "TestOverrideProvider.test_get_resource_stream_no_overrides": "PASSED",
    "TestOverrideProvider.test_get_resource_stream_override_returns_None": "PASSED",
    "TestOverrideProvider.test_get_resource_stream_override_returns_value": "PASSED",
    "TestOverrideProvider.test_get_resource_string_no_overrides": "PASSED",
    "TestOverrideProvider.test_get_resource_string_override_returns_None": "PASSED",
    "TestOverrideProvider.test_get_resource_string_override_returns_value": "PASSED",
    "TestOverrideProvider.test_has_resource_no_overrides": "PASSED",
    "TestOverrideProvider.test_has_resource_override_returns_None": "PASSED",
    "TestOverrideProvider.test_has_resource_override_returns_True": "PASSED",
    "TestOverrideProvider.test_resource_isdir_no_overrides": "PASSED",
    "TestOverrideProvider.test_resource_isdir_override_returns_False": "PASSED",
    "TestOverrideProvider.test_resource_isdir_override_returns_None": "PASSED",
    "TestOverrideProvider.test_resource_listdir_no_overrides": "PASSED",
    "TestOverrideProvider.test_resource_listdir_override_returns_None": "PASSED",
    "TestOverrideProvider.test_resource_listdir_override_returns_values": "PASSED",
    "TestPackageOverrides.test_ctor_package_already_has_loader_of_different_type": "PASSED",
    "TestPackageOverrides.test_ctor_package_already_has_loader_of_same_type": "PASSED",
    "TestPackageOverrides.test_ctor_registers_loader_type": "PASSED",
    "TestPackageOverrides.test_ctor_sets_loader": "PASSED",
    "TestPackageOverrides.test_ctor_sets_local_state": "PASSED",
    "TestPackageOverrides.test_get_filename_file_doesnt_exist": "PASSED",
    "TestPackageOverrides.test_get_stream": "PASSED",
    "TestPackageOverrides.test_get_stream_file_doesnt_exist": "PASSED",
    "TestPackageOverrides.test_get_string": "PASSED",
    "TestPackageOverrides.test_get_string_file_doesnt_exist": "PASSED",
    "TestPackageOverrides.test_has_resource": "PASSED",
    "TestPackageOverrides.test_has_resource_file_doesnt_exist": "PASSED",
    "TestPackageOverrides.test_insert_directory": "PASSED",
    "TestPackageOverrides.test_insert_emptystring": "PASSED",
    "TestPackageOverrides.test_insert_file": "PASSED",
    "TestPackageOverrides.test_isdir_doesnt_exist": "PASSED",
    "TestPackageOverrides.test_isdir_false": "PASSED",
    "TestPackageOverrides.test_isdir_true": "PASSED",
    "TestPackageOverrides.test_listdir": "PASSED",
    "TestPackageOverrides.test_listdir_doesnt_exist": "PASSED",
    "TestPackageOverrides.test_search_path": "PASSED",
    "TestDirectoryOverride.test_it_match": "PASSED",
    "TestDirectoryOverride.test_it_no_match": "PASSED",
    "TestFileOverride.test_it_match": "PASSED",
    "TestFileOverride.test_it_no_match": "PASSED",
    "TestFactoriesMixin.test_set_multiple_request_methods_conflict": "PASSED",
    "TestFactoriesMixin.test_set_multiple_request_properties": "PASSED",
    "TestFactoriesMixin.test_set_multiple_request_properties_conflict": "PASSED",
    "TestFactoriesMixin.test_set_request_factory": "PASSED",
    "TestFactoriesMixin.test_set_request_factory_dottedname": "PASSED",
    "TestFactoriesMixin.test_set_request_method_subscriber": "PASSED",
    "TestFactoriesMixin.test_set_request_method_with_None_callable": "PASSED",
    "TestFactoriesMixin.test_set_request_method_with_None_callable_and_no_name": "PASSED",
    "TestFactoriesMixin.test_set_request_method_with_None_callable_conflict": "PASSED",
    "TestFactoriesMixin.test_set_request_method_with_callable": "PASSED",
    "TestFactoriesMixin.test_set_request_method_with_unnamed_callable": "PASSED",
    "TestFactoriesMixin.test_set_request_property_subscriber": "PASSED",
    "TestFactoriesMixin.test_set_request_property_with_callable": "PASSED",
    "TestFactoriesMixin.test_set_request_property_with_property": "PASSED",
    "TestFactoriesMixin.test_set_request_property_with_unnamed_callable": "PASSED",
    "TestFactoriesMixin.test_set_root_factory": "PASSED",
    "TestFactoriesMixin.test_set_root_factory_as_None": "PASSED",
    "TestFactoriesMixin.test_set_root_factory_dottedname": "PASSED",
    "TestFactoriesMixin.test_set_session_factory": "PASSED",
    "TestFactoriesMixin.test_set_session_factory_dottedname": "PASSED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_missing_dir": "PASSED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_no_specs": "PASSED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_registers_chameleon_translate": "PASSED",
    "TestI18NConfiguratorMixin.test_set_locale_negotiator": "PASSED",
    "TestI18NConfiguratorMixin.test_set_locale_negotiator_dottedname": "PASSED",
    "ConfiguratorTests.test___getattr__matches": "PASSED",
    "ConfiguratorTests.test___getattr__matches_no_action_wrap": "PASSED",
    "ConfiguratorTests.test___getattr__missing_when_directives_dont_exist": "PASSED",
    "ConfiguratorTests.test___getattr__missing_when_directives_exist": "PASSED",
    "ConfiguratorTests.test__fix_registry_has_listeners": "PASSED",
    "ConfiguratorTests.test__fix_registry_notify": "PASSED",
    "ConfiguratorTests.test__fix_registry_queryAdapterOrSelf": "PASSED",
    "ConfiguratorTests.test__fix_registry_registerSelfAdapter": "PASSED",
    "ConfiguratorTests.test_absolute_asset_spec_already_absolute": "PASSED",
    "ConfiguratorTests.test_absolute_asset_spec_notastring": "PASSED",
    "ConfiguratorTests.test_absolute_asset_spec_relative": "PASSED",
    "ConfiguratorTests.test_action_autocommit_with_introspectables": "PASSED",
    "ConfiguratorTests.test_action_autocommit_with_introspectables_introspection_off": "PASSED",
    "ConfiguratorTests.test_action_branching_kw_is_None": "PASSED",
    "ConfiguratorTests.test_action_branching_kw_is_not_None": "PASSED",
    "ConfiguratorTests.test_action_branching_nonautocommit_with_config_info": "PASSED",
    "ConfiguratorTests.test_action_branching_nonautocommit_with_introspectables": "PASSED",
    "ConfiguratorTests.test_action_branching_nonautocommit_without_config_info": "PASSED",
    "ConfiguratorTests.test_action_nonautocommit_with_introspectables_introspection_off": "PASSED",
    "ConfiguratorTests.test_autocommit_no_conflicts": "PASSED",
    "ConfiguratorTests.test_begin": "PASSED",
    "ConfiguratorTests.test_begin_with_request": "PASSED",
    "ConfiguratorTests.test_commit_conflict_resolved_with_include": "PASSED",
    "ConfiguratorTests.test_commit_conflict_resolved_with_two_includes_and_local": "PASSED",
    "ConfiguratorTests.test_commit_conflict_simple": "PASSED",
    "ConfiguratorTests.test_commit_conflict_with_two_includes": "PASSED",
    "ConfiguratorTests.test_conflict_set_forbidden_view": "PASSED",
    "ConfiguratorTests.test_conflict_set_notfound_view": "PASSED",
    "ConfiguratorTests.test_ctor_alternate_renderers": "PASSED",
    "ConfiguratorTests.test_ctor_authentication_policy": "PASSED",
    "ConfiguratorTests.test_ctor_authorization_policy_only": "PASSED",
    "ConfiguratorTests.test_ctor_default_permission": "PASSED",
    "ConfiguratorTests.test_ctor_default_renderers": "PASSED",
    "ConfiguratorTests.test_ctor_default_view_mapper": "PASSED",
    "ConfiguratorTests.test_ctor_exceptionresponse_view_None": "PASSED",
    "ConfiguratorTests.test_ctor_exceptionresponse_view_custom": "PASSED",
    "ConfiguratorTests.test_ctor_httpexception_view_default": "PASSED",
    "ConfiguratorTests.test_ctor_no_root_factory": "PASSED",
    "ConfiguratorTests.test_ctor_noreg_custom_settings": "PASSED",
    "ConfiguratorTests.test_ctor_noreg_debug_logger_non_None": "PASSED",
    "ConfiguratorTests.test_ctor_session_factory": "PASSED",
    "ConfiguratorTests.test_ctor_with_introspection": "PASSED",
    "ConfiguratorTests.test_ctor_with_package_registry": "PASSED",
    "ConfiguratorTests.test_ctor_with_root_factory": "PASSED",
    "ConfiguratorTests.test_end": "PASSED",
    "ConfiguratorTests.test_hook_zca": "PASSED",
    "ConfiguratorTests.test_include_with_dotted_name": "PASSED",
    "ConfiguratorTests.test_include_with_missing_source_file": "PASSED",
    "ConfiguratorTests.test_include_with_module_defaults_to_includeme": "PASSED",
    "ConfiguratorTests.test_include_with_module_defaults_to_includeme_missing": "PASSED",
    "ConfiguratorTests.test_include_with_nested_route_prefix": "PASSED",
    "ConfiguratorTests.test_include_with_python_callable": "PASSED",
    "ConfiguratorTests.test_include_with_route_prefix": "PASSED",
    "ConfiguratorTests.test_introspector_decorator": "PASSED",
    "ConfiguratorTests.test_make_wsgi_app": "PASSED",
    "ConfiguratorTests.test_maybe_dotted_notstring_success": "PASSED",
    "ConfiguratorTests.test_maybe_dotted_string_fail": "PASSED",
    "ConfiguratorTests.test_maybe_dotted_string_success": "PASSED",
    "ConfiguratorTests.test_scan_integration": "PASSED",
    "ConfiguratorTests.test_scan_integration_dottedname_package": "PASSED",
    "ConfiguratorTests.test_scan_integration_with_extra_kw": "PASSED",
    "ConfiguratorTests.test_scan_integration_with_ignore": "PASSED",
    "ConfiguratorTests.test_scan_integration_with_onerror": "PASSED",
    "ConfiguratorTests.test_setup_registry_alternate_renderers": "PASSED",
    "ConfiguratorTests.test_setup_registry_authentication_policy": "PASSED",
    "ConfiguratorTests.test_setup_registry_authentication_policy_dottedname": "PASSED",
    "ConfiguratorTests.test_setup_registry_authorization_policy_dottedname": "PASSED",
    "ConfiguratorTests.test_setup_registry_authorization_policy_only": "PASSED",
    "ConfiguratorTests.test_setup_registry_calls_fix_registry": "PASSED",
    "ConfiguratorTests.test_setup_registry_custom_settings": "PASSED",
    "ConfiguratorTests.test_setup_registry_debug_logger_name": "PASSED",
    "ConfiguratorTests.test_setup_registry_debug_logger_non_None": "PASSED",
    "ConfiguratorTests.test_setup_registry_default_permission": "PASSED",
    "ConfiguratorTests.test_setup_registry_dottedname_root_factory": "PASSED",
    "ConfiguratorTests.test_setup_registry_explicit_notfound_trumps_iexceptionresponse": "PASSED",
    "ConfiguratorTests.test_setup_registry_includes": "PASSED",
    "ConfiguratorTests.test_setup_registry_includes_spaces": "PASSED",
    "ConfiguratorTests.test_setup_registry_locale_negotiator": "PASSED",
    "ConfiguratorTests.test_setup_registry_locale_negotiator_dottedname": "PASSED",
    "ConfiguratorTests.test_setup_registry_no_default_root_factory": "PASSED",
    "ConfiguratorTests.test_setup_registry_registers_default_exceptionresponse_views": "PASSED",
    "ConfiguratorTests.test_setup_registry_registers_default_view_predicates": "PASSED",
    "ConfiguratorTests.test_setup_registry_registers_default_webob_iresponse_adapter": "PASSED",
    "ConfiguratorTests.test_setup_registry_renderer_globals_factory": "PASSED",
    "ConfiguratorTests.test_setup_registry_renderer_globals_factory_dottedname": "PASSED",
    "ConfiguratorTests.test_setup_registry_request_factory": "PASSED",
    "ConfiguratorTests.test_setup_registry_request_factory_dottedname": "PASSED",
    "ConfiguratorTests.test_setup_registry_tweens": "PASSED",
    "ConfiguratorTests.test_unhook_zca": "PASSED",
    "ConfiguratorTests.test_with_package": "PASSED",
    "ConfiguratorTests.test_with_package_module": "PASSED",
    "ConfiguratorTests.test_with_package_package": "PASSED",
    "TestConfiguratorDeprecatedFeatures.test_add_route_with_for_": "PASSED",
    "TestConfiguratorDeprecatedFeatures.test_add_route_with_view": "PASSED",
    "TestConfiguratorDeprecatedFeatures.test_add_route_with_view_attr": "PASSED",
    "TestConfiguratorDeprecatedFeatures.test_add_route_with_view_context": "PASSED",
    "TestConfiguratorDeprecatedFeatures.test_add_route_with_view_exception": "PASSED",
    "TestConfiguratorDeprecatedFeatures.test_add_route_with_view_for": "PASSED",
    "TestConfiguratorDeprecatedFeatures.test_add_route_with_view_permission": "PASSED",
    "TestConfiguratorDeprecatedFeatures.test_add_route_with_view_permission_alias": "PASSED",
    "TestConfiguratorDeprecatedFeatures.test_add_route_with_view_renderer": "PASSED",
    "TestConfiguratorDeprecatedFeatures.test_add_route_with_view_renderer_alias": "PASSED",
    "TestConfiguratorDeprecatedFeatures.test_conflict_route_with_view": "PASSED",
    "TestConfigurator_add_directive.test_directive_persists_across_configurator_creations": "PASSED",
    "TestConfigurator_add_directive.test_extend_action_method_successful": "PASSED",
    "TestConfigurator_add_directive.test_extend_same_name_doesnt_conflict": "PASSED",
    "TestActionState.test_action_simple": "PASSED",
    "TestActionState.test_action_with_includepath": "PASSED",
    "TestActionState.test_action_with_includepath_and_info": "PASSED",
    "TestActionState.test_action_with_info": "PASSED",
    "TestActionState.test_action_with_introspectables": "PASSED",
    "TestActionState.test_action_with_order": "PASSED",
    "TestActionState.test_execute_actions_dicts": "PASSED",
    "TestActionState.test_execute_actions_error": "PASSED",
    "TestActionState.test_execute_actions_tuples": "PASSED",
    "TestActionState.test_execute_actions_with_introspectable_no_callable": "PASSED",
    "TestActionState.test_execute_actions_with_introspectables": "PASSED",
    "TestActionState.test_it": "PASSED",
    "TestActionState.test_processSpec": "PASSED",
    "Test_resolveConflicts.test_it_conflict": "PASSED",
    "Test_resolveConflicts.test_it_success_dicts": "PASSED",
    "Test_resolveConflicts.test_it_success_tuples": "PASSED",
    "Test_resolveConflicts.test_it_with_actions_grouped_by_order": "PASSED",
    "TestGlobalRegistriesIntegration.test_global_registries": "PASSED",
    "TestGlobalRegistriesIntegration.test_global_registries_empty": "PASSED",
    "TestXHRPredicate.test___call___false": "PASSED",
    "TestXHRPredicate.test___call___true": "PASSED",
    "TestXHRPredicate.test_phash": "PASSED",
    "TestXHRPredicate.test_text": "PASSED",
    "TestRequestMethodPredicate.test___call___false": "PASSED",
    "TestRequestMethodPredicate.test___call___true_multi": "PASSED",
    "TestRequestMethodPredicate.test___call___true_single": "PASSED",
    "TestRequestMethodPredicate.test_ctor_get_but_no_head": "PASSED",
    "TestRequestMethodPredicate.test_phash": "PASSED",
    "TestRequestMethodPredicate.test_text": "PASSED",
    "TestPathInfoPredicate.test___call___false": "PASSED",
    "TestPathInfoPredicate.test___call___true": "PASSED",
    "TestPathInfoPredicate.test_ctor_compilefail": "PASSED",
    "TestPathInfoPredicate.test_phash": "PASSED",
    "TestPathInfoPredicate.test_text": "PASSED",
    "TestRequestParamPredicate.test___call___false": "PASSED",
    "TestRequestParamPredicate.test___call___true_exists": "PASSED",
    "TestRequestParamPredicate.test___call___true_withval": "PASSED",
    "TestRequestParamPredicate.test_phash_exists": "PASSED",
    "TestRequestParamPredicate.test_phash_withval": "PASSED",
    "TestRequestParamPredicate.test_text_exists": "PASSED",
    "TestRequestParamPredicate.test_text_withval": "PASSED",
    "TestMatchParamPredicate.test___call___false": "PASSED",
    "TestMatchParamPredicate.test___call___true_multi": "PASSED",
    "TestMatchParamPredicate.test___call___true_single": "PASSED",
    "TestMatchParamPredicate.test_phash": "PASSED",
    "TestMatchParamPredicate.test_text": "PASSED",
    "TestCustomPredicate.test___call___false": "PASSED",
    "TestCustomPredicate.test___call___true": "PASSED",
    "TestCustomPredicate.test_phash": "PASSED",
    "TestCustomPredicate.test_text_func_has___text__": "PASSED",
    "TestCustomPredicate.test_text_func_repr": "PASSED",
    "TestTraversePredicate.test___call__traverse_has_remainder_already": "PASSED",
    "TestTraversePredicate.test___call__traverse_matches": "PASSED",
    "TestTraversePredicate.test___call__traverse_matches_with_highorder_chars": "PASSED",
    "TestTraversePredicate.test_phash": "PASSED",
    "TestTraversePredicate.test_text": "PASSED",
    "TestRenderingConfiguratorMixin.test_add_renderer": "PASSED",
    "TestRenderingConfiguratorMixin.test_add_renderer_dottedname_factory": "PASSED",
    "TestRenderingConfiguratorMixin.test_set_renderer_globals_factory": "PASSED",
    "TestRenderingConfiguratorMixin.test_set_renderer_globals_factory_dottedname": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_defaults": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_discriminator": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_no_path_no_pattern": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_no_pattern_with_path": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_no_view_with_view_attr": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_no_view_with_view_context": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_no_view_with_view_permission": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_no_view_with_view_renderer": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_accept": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_custom_predicates": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_factory": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_factory_dottedname": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_header": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_path_info": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_path_info_highorder": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_path_info_regex": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_pregenerator": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_request_method": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_request_param": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_route_prefix": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_static": "PASSED",
    "RoutesConfiguratorMixinTests.test_add_route_with_xhr": "PASSED",
    "RoutesConfiguratorMixinTests.test_get_routes_mapper_already_registered": "PASSED",
    "RoutesConfiguratorMixinTests.test_get_routes_mapper_not_yet_registered": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_add_permission": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_authentication_policy_no_authz_policy": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_authentication_policy_no_authz_policy_autocommit": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_authentication_policy_with_authz_policy": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_authentication_policy_with_authz_policy_autocommit": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_authorization_policy_no_authn_policy": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_authorization_policy_no_authn_policy_autocommit": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_authorization_policy_with_authn_policy": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_authorization_policy_with_authn_policy_autocommit": "PASSED",
    "ConfiguratorSecurityMethodsTests.test_set_default_permission": "PASSED",
    "TestSettingsConfiguratorMixin.test__set_settings_as_None": "PASSED",
    "TestSettingsConfiguratorMixin.test__set_settings_as_dictwithvalues": "PASSED",
    "TestSettingsConfiguratorMixin.test_add_settings_settings_already_registered": "PASSED",
    "TestSettingsConfiguratorMixin.test_add_settings_settings_not_yet_registered": "PASSED",
    "TestSettingsConfiguratorMixin.test_get_settings_nosettings": "PASSED",
    "TestSettingsConfiguratorMixin.test_get_settings_withsettings": "PASSED",
    "TestSettings.test_debug_all": "PASSED",
    "TestSettings.test_debug_authorization": "PASSED",
    "TestSettings.test_debug_notfound": "PASSED",
    "TestSettings.test_debug_routematch": "PASSED",
    "TestSettings.test_debug_templates": "PASSED",
    "TestSettings.test_default_locale_name": "PASSED",
    "TestSettings.test_getattr_fail": "PASSED",
    "TestSettings.test_getattr_raises_attribute_error": "PASSED",
    "TestSettings.test_getattr_success": "PASSED",
    "TestSettings.test_noargs": "PASSED",
    "TestSettings.test_originals_kept": "PASSED",
    "TestSettings.test_prevent_http_cache": "PASSED",
    "TestSettings.test_reload_all": "PASSED",
    "TestSettings.test_reload_assets": "PASSED",
    "TestSettings.test_reload_resources": "PASSED",
    "TestSettings.test_reload_templates": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_add_renderer": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_add_renderer_explicitrenderer": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_add_renderer_twice": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_add_subscriber_defaults": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_add_subscriber_dottedname": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_add_subscriber_multiple": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_add_subscriber_single": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_add_template": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_resources": "PASSED",
    "TestingConfiguratorMixinTests.test_testing_securitypolicy": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tween_dottedname": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tween_instance": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tween_name_ingress": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tween_name_main": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tween_over_ingress": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tween_over_ingress_iterable": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tween_under_main": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tween_under_main_iterable": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tween_unsuitable": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tweens_conflict": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tweens_names_distinct": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tweens_names_with_over_nonstringoriter": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tweens_names_with_under_nonstringoriter": "PASSED",
    "TestTweensConfiguratorMixin.test_add_tweens_names_with_underover": "PASSED",
    "TestTweens.test___call___explicit": "PASSED",
    "TestTweens.test___call___implicit": "PASSED",
    "TestTweens.test_add_explicit": "PASSED",
    "TestTweens.test_add_implicit": "PASSED",
    "TestTweens.test_implicit_ordering_1": "PASSED",
    "TestTweens.test_implicit_ordering_2": "PASSED",
    "TestTweens.test_implicit_ordering_3": "PASSED",
    "TestTweens.test_implicit_ordering_4": "PASSED",
    "TestTweens.test_implicit_ordering_5": "PASSED",
    "TestTweens.test_implicit_ordering_conflict_direct": "PASSED",
    "TestTweens.test_implicit_ordering_conflict_indirect": "PASSED",
    "TestTweens.test_implicit_ordering_missing_over_and_under_partials": "PASSED",
    "TestTweens.test_implicit_ordering_missing_over_partial": "PASSED",
    "TestTweens.test_implicit_ordering_missing_over_partial_with_fallback": "PASSED",
    "TestTweens.test_implicit_ordering_missing_under_partial": "PASSED",
    "TestTweens.test_implicit_ordering_missing_under_partial_with_fallback": "PASSED",
    "TestTweens.test_implicit_ordering_with_missing_fallbacks": "PASSED",
    "TestTweens.test_implicit_ordering_with_multiple_matching_fallbacks": "PASSED",
    "TestTweens.test_implicit_ordering_with_partial_fallbacks": "PASSED",
    "TestPredicateList.test_custom_predicates_can_affect_traversal": "PASSED",
    "TestPredicateList.test_different_custom_predicates_with_same_hash": "PASSED",
    "TestPredicateList.test_match_param_from_dict": "PASSED",
    "TestPredicateList.test_match_param_from_dict_fails": "PASSED",
    "TestPredicateList.test_match_param_from_string": "PASSED",
    "TestPredicateList.test_match_param_from_string_fails": "PASSED",
    "TestPredicateList.test_ordering_importance_and_number": "PASSED",
    "TestPredicateList.test_ordering_importance_of_predicates": "PASSED",
    "TestPredicateList.test_ordering_number_of_predicates": "PASSED",
    "TestPredicateList.test_ordering_xhr_and_request_method_trump_only_containment": "PASSED",
    "TestPredicateList.test_predicate_text_is_correct": "PASSED",
    "TestPredicateList.test_request_method_ordering_hashes_same": "PASSED",
    "TestPredicateList.test_request_method_sequence": "PASSED",
    "TestPredicateList.test_traverse_has_remainder_already": "PASSED",
    "TestPredicateList.test_traverse_matches": "PASSED",
    "TestPredicateList.test_traverse_matches_with_highorder_chars": "PASSED",
    "TestPredicateList.test_unknown_predicate": "PASSED",
    "TestActionInfo.test___str__": "PASSED",
    "TestActionInfo.test_class_conforms": "PASSED",
    "TestActionInfo.test_ctor": "PASSED",
    "TestActionInfo.test_instance_conforms": "PASSED",
    "TestTopologicalSorter.test_add": "PASSED",
    "TestTopologicalSorter.test_remove": "PASSED",
    "TestTopologicalSorter.test_sorted_ordering_1": "PASSED",
    "TestTopologicalSorter.test_sorted_ordering_2": "PASSED",
    "TestTopologicalSorter.test_sorted_ordering_3": "PASSED",
    "TestTopologicalSorter.test_sorted_ordering_4": "PASSED",
    "TestTopologicalSorter.test_sorted_ordering_5": "PASSED",
    "TestTopologicalSorter.test_sorted_ordering_conflict_direct": "PASSED",
    "TestTopologicalSorter.test_sorted_ordering_conflict_indirect": "PASSED",
    "TestTopologicalSorter.test_sorted_ordering_missing_after_partial": "PASSED",
    "TestTopologicalSorter.test_sorted_ordering_missing_after_partial_with_fallback": "PASSED",
    "TestTopologicalSorter.test_sorted_ordering_missing_before_and_after_partials": "PASSED",
    "TestTopologicalSorter.test_sorted_ordering_missing_before_partial": "PASSED",
    "TestTopologicalSorter.test_sorted_ordering_missing_before_partial_with_fallback": "PASSED",
    "TestTopologicalSorter.test_sorted_ordering_with_missing_fallbacks": "PASSED",
    "TestTopologicalSorter.test_sorted_ordering_with_multiple_matching_fallbacks": "PASSED",
    "TestTopologicalSorter.test_sorted_ordering_with_partial_fallbacks": "PASSED",
    "TestSingleton.test_repr": "PASSED",
    "TestCyclicDependencyError.test___str__": "PASSED",
    "TestViewsConfigurationMixin.test_add_forbidden_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_forbidden_view_allows_other_predicates": "PASSED",
    "TestViewsConfigurationMixin.test_add_forbidden_view_disallows_context": "PASSED",
    "TestViewsConfigurationMixin.test_add_forbidden_view_disallows_for_": "PASSED",
    "TestViewsConfigurationMixin.test_add_forbidden_view_disallows_http_cache": "PASSED",
    "TestViewsConfigurationMixin.test_add_forbidden_view_disallows_name": "PASSED",
    "TestViewsConfigurationMixin.test_add_forbidden_view_disallows_permission": "PASSED",
    "TestViewsConfigurationMixin.test_add_forbidden_view_with_renderer": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view_allows_other_predicates": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view_append_slash": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view_disallows_context": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view_disallows_for_": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view_disallows_http_cache": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view_disallows_name": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view_disallows_permission": "PASSED",
    "TestViewsConfigurationMixin.test_add_notfound_view_with_renderer": "PASSED",
    "TestViewsConfigurationMixin.test_add_static_view_absolute": "PASSED",
    "TestViewsConfigurationMixin.test_add_static_view_here_no_utility_registered": "PASSED",
    "TestViewsConfigurationMixin.test_add_static_view_package_relative": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_as_instance": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_as_instance_requestonly": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_as_instancemethod": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_as_instancemethod_requestonly": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_as_oldstyle_class": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_as_oldstyle_class_requestonly": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_context_as_class": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_context_as_dottedname": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_context_as_iface": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_context_trumps_for": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_custom_more_preds_first_bests_fewer_preds_last": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_custom_predicate_bests_standard_predicate": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_default_phash_overrides_default_phash": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_default_phash_overrides_no_phash": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exc_default_phash_overrides_default_phash": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exc_default_phash_overrides_no_phash": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exc_multiview_replaces_existing_securedview": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exc_multiview_replaces_existing_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exc_multiview_replaces_multiview": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exc_mulview_replaces_existing_view_with___accept__": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exc_same_phash_overrides_existing_single_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exc_with_accept_multiview_replaces_existing_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_exception_register_secured_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_for__as_dottedname": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_for_as_class": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_for_as_iface": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_multiview___discriminator__": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_multiview_call_ordering": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_multiview_context_superclass_then_subclass": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_multiview_exception_superclass_then_subclass": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_multiview_replaces_existing_securedview": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_multiview_replaces_existing_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_multiview_replaces_existing_view_with___accept__": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_multiview_replaces_multiview": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_register_secured_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_same_phash_overrides_existing_single_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_same_predicates": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_view_callable_None_no_renderer": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_view_callable_None_with_renderer": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_view_callable_dottedname": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_accept_match": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_accept_multiview_replaces_existing_view": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_accept_nomatch": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_containment_dottedname": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_containment_false": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_containment_true": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_custom_predicates_match": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_custom_predicates_nomatch": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_decorator": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_default_permission_no_explicit_permission": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_default_renderer": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_function_callable": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_function_callable_requestonly": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_header_badregex": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_header_noval_match": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_header_noval_nomatch": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_header_val_match": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_header_val_missing": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_header_val_nomatch": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_http_cache": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_mapper": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_name": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_name_unicode": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_no_default_permission_no_explicit_permission": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_nonexistant_route_name": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_path_info_badregex": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_path_info_match": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_path_info_nomatch": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_permission": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_method_false": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_method_get_implies_head": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_method_sequence_conflict": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_method_sequence_false": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_method_sequence_true": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_method_true": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_param_noval_false": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_param_noval_true": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_param_val_false": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_param_val_true": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_type": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_type_and_route_name": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_type_as_iface": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_request_type_as_noniface": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_route_name": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_route_name_exception": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_view_config_and_view_defaults_conflicts": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_view_config_and_view_defaults_doesnt_conflict": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_view_defaults": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_view_defaults_viewname_is_dottedname_kwarg": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_view_defaults_viewname_is_dottedname_nonkwarg": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_xhr_false": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_with_xhr_true": "PASSED",
    "TestViewsConfigurationMixin.test_add_view_wrapped_view_is_decorated": "PASSED",
    "TestViewsConfigurationMixin.test_add_views_with_accept_multiview_replaces_existing": "PASSED",
    "TestViewsConfigurationMixin.test_derive_view_dottedname": "PASSED",
    "TestViewsConfigurationMixin.test_derive_view_function": "PASSED",
    "TestViewsConfigurationMixin.test_derive_view_with_default_renderer_no_explicit_renderer": "PASSED",
    "TestViewsConfigurationMixin.test_derive_view_with_default_renderer_with_explicit_renderer": "PASSED",
    "TestViewsConfigurationMixin.test_set_view_mapper": "PASSED",
    "TestViewsConfigurationMixin.test_set_view_mapper_dottedname": "PASSED",
    "Test_requestonly.test_function_defaultargs_firstname_not_request": "PASSED",
    "Test_requestonly.test_function_defaultargs_firstname_request": "PASSED",
    "Test_requestonly.test_function_noargs": "PASSED",
    "Test_requestonly.test_function_onearg_named_request": "PASSED",
    "Test_requestonly.test_function_onearg_named_somethingelse": "PASSED",
    "Test_requestonly.test_function_toomanyargs": "PASSED",
    "Test_requestonly.test_function_with_attr_false": "PASSED",
    "Test_requestonly.test_function_with_attr_true": "PASSED",
    "Test_requestonly.test_instance_defaultargs_firstname_not_request": "PASSED",
    "Test_requestonly.test_instance_defaultargs_firstname_request": "PASSED",
    "Test_requestonly.test_instance_defaultargs_onearg_named_request": "PASSED",
    "Test_requestonly.test_instance_defaultargs_onearg_named_somethingelse": "PASSED",
    "Test_requestonly.test_instance_nocall": "PASSED",
    "Test_requestonly.test_instance_toomanyargs": "PASSED",
    "Test_requestonly.test_method_onearg_named_request": "PASSED",
    "Test_requestonly.test_newstyle_class_init_defaultargs_firstname_not_request": "PASSED",
    "Test_requestonly.test_newstyle_class_init_defaultargs_firstname_request": "PASSED",
    "Test_requestonly.test_newstyle_class_init_firstname_request_with_secondname": "PASSED",
    "Test_requestonly.test_newstyle_class_init_noargs": "PASSED",
    "Test_requestonly.test_newstyle_class_init_onearg_named_somethingelse": "PASSED",
    "Test_requestonly.test_oldstyle_class_init_defaultargs_firstname_not_request": "PASSED",
    "Test_requestonly.test_oldstyle_class_init_defaultargs_firstname_request": "PASSED",
    "Test_requestonly.test_oldstyle_class_init_noargs": "PASSED",
    "Test_requestonly.test_oldstyle_class_init_onearg_named_request": "PASSED",
    "Test_requestonly.test_oldstyle_class_init_onearg_named_somethingelse": "PASSED",
    "Test_requestonly.test_oldstyle_class_init_toomanyargs": "PASSED",
    "Test_requestonly.test_oldstyle_class_no_init": "PASSED",
    "Test_requestonly.test_requestonly_newstyle_class_init_onearg_named_request": "PASSED",
    "Test_requestonly.test_requestonly_newstyle_class_init_toomanyargs": "PASSED",
    "Test_requestonly.test_requestonly_newstyle_class_no_init": "PASSED",
    "Test_isexception.test_is_IException": "PASSED",
    "Test_isexception.test_is_IException_subinterface": "PASSED",
    "Test_isexception.test_is_exception_class": "PASSED",
    "Test_isexception.test_is_exception_instance": "PASSED",
    "TestMultiView.test___call__": "PASSED",
    "TestMultiView.test___call__intermediate_not_found": "PASSED",
    "TestMultiView.test___call__raise_not_found_isnt_interpreted_as_pred_mismatch": "PASSED",
    "TestMultiView.test___call_permissive_has_call_permissive": "PASSED",
    "TestMultiView.test___call_permissive_has_no_call_permissive": "PASSED",
    "TestMultiView.test__call__not_found": "PASSED",
    "TestMultiView.test__call__with_accept_match": "PASSED",
    "TestMultiView.test__call__with_accept_miss": "PASSED",
    "TestMultiView.test__call_permissive__not_found": "PASSED",
    "TestMultiView.test_add": "PASSED",
    "TestMultiView.test_add_with_phash": "PASSED",
    "TestMultiView.test_add_with_phash_override_accept": "PASSED",
    "TestMultiView.test_class_implements_ISecuredView": "PASSED",
    "TestMultiView.test_get_views": "PASSED",
    "TestMultiView.test_get_views_best_match_returns_None": "PASSED",
    "TestMultiView.test_get_views_no_self_accepts": "PASSED",
    "TestMultiView.test_get_views_request_has_no_accept": "PASSED",
    "TestMultiView.test_instance_implements_ISecuredView": "PASSED",
    "TestMultiView.test_match_not_found": "PASSED",
    "TestMultiView.test_match_predicate_fails": "PASSED",
    "TestMultiView.test_match_predicate_succeeds": "PASSED",
    "TestMultiView.test_multiple_with_functions_as_views": "PASSED",
    "TestMultiView.test_permitted": "PASSED",
    "TestMultiView.test_permitted_no_match_with__permitted__": "PASSED",
    "TestMultiView.test_permitted_no_views": "PASSED",
    "TestViewDeriver.test_as_function_context_and_request": "PASSED",
    "TestViewDeriver.test_as_function_requestonly": "PASSED",
    "TestViewDeriver.test_as_instance_context_and_request": "PASSED",
    "TestViewDeriver.test_as_instance_context_and_request_attr_and_renderer": "PASSED",
    "TestViewDeriver.test_as_instance_requestonly": "PASSED",
    "TestViewDeriver.test_as_instance_requestonly_attr_and_renderer": "PASSED",
    "TestViewDeriver.test_as_newstyle_class_context_and_request": "PASSED",
    "TestViewDeriver.test_as_newstyle_class_context_and_request_attr_and_renderer": "PASSED",
    "TestViewDeriver.test_as_newstyle_class_requestonly": "PASSED",
    "TestViewDeriver.test_as_newstyle_class_requestonly_attr_and_renderer": "PASSED",
    "TestViewDeriver.test_as_oldstyle_class_context_and_request": "PASSED",
    "TestViewDeriver.test_as_oldstyle_class_requestonly": "PASSED",
    "TestViewDeriver.test_as_oldstyle_cls_context_request_attr_and_renderer": "PASSED",
    "TestViewDeriver.test_as_oldstyle_cls_requestonly_attr_and_renderer": "PASSED",
    "TestViewDeriver.test_attr_wrapped_view_branching_default_phash": "PASSED",
    "TestViewDeriver.test_attr_wrapped_view_branching_nondefault_phash": "PASSED",
    "TestViewDeriver.test_class_with_attr": "PASSED",
    "TestViewDeriver.test_class_without_attr": "PASSED",
    "TestViewDeriver.test_debug_auth_permission_authpol_denied": "PASSED",
    "TestViewDeriver.test_debug_auth_permission_authpol_denied2": "PASSED",
    "TestViewDeriver.test_debug_auth_permission_authpol_overridden": "PASSED",
    "TestViewDeriver.test_debug_auth_permission_authpol_permitted": "PASSED",
    "TestViewDeriver.test_debug_auth_permission_authpol_permitted_no_request": "PASSED",
    "TestViewDeriver.test_http_cached_prevent_http_cache_in_settings": "PASSED",
    "TestViewDeriver.test_http_cached_view_bad_tuple": "PASSED",
    "TestViewDeriver.test_http_cached_view_integer": "PASSED",
    "TestViewDeriver.test_http_cached_view_prevent_auto_set": "PASSED",
    "TestViewDeriver.test_http_cached_view_timedelta": "PASSED",
    "TestViewDeriver.test_http_cached_view_tuple": "PASSED",
    "TestViewDeriver.test_http_cached_view_tuple_seconds_None": "PASSED",
    "TestViewDeriver.test_predicate_mismatch_exception_has_text_in_detail": "PASSED",
    "TestViewDeriver.test_predicate_mismatch_view_has_name": "PASSED",
    "TestViewDeriver.test_predicate_mismatch_view_has_no_name": "PASSED",
    "TestViewDeriver.test_requestonly_function": "PASSED",
    "TestViewDeriver.test_requestonly_function_with_renderer": "PASSED",
    "TestViewDeriver.test_requestonly_function_with_renderer_request_has_view": "PASSED",
    "TestViewDeriver.test_requestonly_function_with_renderer_request_override": "PASSED",
    "TestViewDeriver.test_secured_view_authn_policy_no_authz_policy": "PASSED",
    "TestViewDeriver.test_secured_view_authz_policy_no_authn_policy": "PASSED",
    "TestViewDeriver.test_secured_view_raises_forbidden_no_name": "PASSED",
    "TestViewDeriver.test_secured_view_raises_forbidden_with_name": "PASSED",
    "TestViewDeriver.test_with_debug_authorization_authn_policy_no_authz_policy": "PASSED",
    "TestViewDeriver.test_with_debug_authorization_authz_policy_no_authn_policy": "PASSED",
    "TestViewDeriver.test_with_debug_authorization_no_authpol": "PASSED",
    "TestViewDeriver.test_with_debug_authorization_no_permission": "PASSED",
    "TestViewDeriver.test_with_predicates_all": "PASSED",
    "TestViewDeriver.test_with_predicates_checker": "PASSED",
    "TestViewDeriver.test_with_predicates_notall": "PASSED",
    "TestViewDeriver.test_with_view_mapper_config_specified": "PASSED",
    "TestViewDeriver.test_with_view_mapper_default_mapper_specified": "PASSED",
    "TestViewDeriver.test_with_view_mapper_view_specified": "PASSED",
    "TestViewDeriver.test_with_wrapper_viewname": "PASSED",
    "TestViewDeriver.test_with_wrapper_viewname_notfound": "PASSED",
    "TestDefaultViewMapper.test__view_as_function_with_attr": "PASSED",
    "TestDefaultViewMapper.test_view_as_function_context_and_request": "PASSED",
    "TestDefaultViewMapper.test_view_as_function_requestonly": "PASSED",
    "TestDefaultViewMapper.test_view_as_function_requestonly_with_attr": "PASSED",
    "TestDefaultViewMapper.test_view_as_instance_context_and_request": "PASSED",
    "TestDefaultViewMapper.test_view_as_instance_context_and_request_and_attr": "PASSED",
    "TestDefaultViewMapper.test_view_as_instance_requestonly": "PASSED",
    "TestDefaultViewMapper.test_view_as_instance_requestonly_with_attr": "PASSED",
    "TestDefaultViewMapper.test_view_as_newstyle_class_context_and_request": "PASSED",
    "TestDefaultViewMapper.test_view_as_newstyle_class_context_and_request_with_attr": "PASSED",
    "TestDefaultViewMapper.test_view_as_newstyle_class_requestonly": "PASSED",
    "TestDefaultViewMapper.test_view_as_newstyle_class_requestonly_with_attr": "PASSED",
    "TestDefaultViewMapper.test_view_as_oldstyle_class_context_and_request": "PASSED",
    "TestDefaultViewMapper.test_view_as_oldstyle_class_context_and_request_with_attr": "PASSED",
    "TestDefaultViewMapper.test_view_as_oldstyle_class_requestonly": "PASSED",
    "TestDefaultViewMapper.test_view_as_oldstyle_class_requestonly_with_attr": "PASSED",
    "Test_preserve_view_attrs.test_it_different": "PASSED",
    "Test_preserve_view_attrs.test_it_different_with_existing_original_view": "PASSED",
    "Test_preserve_view_attrs.test_it_same": "PASSED",
    "Test_preserve_view_attrs.test_it_view_is_None": "PASSED",
    "TestStaticURLInfo.test_add_already_exists": "PASSED",
    "TestStaticURLInfo.test_add_url_noendslash": "PASSED",
    "TestStaticURLInfo.test_add_url_withendslash": "PASSED",
    "TestStaticURLInfo.test_add_viewname": "PASSED",
    "TestStaticURLInfo.test_add_viewname_with_for_": "PASSED",
    "TestStaticURLInfo.test_add_viewname_with_permission": "PASSED",
    "TestStaticURLInfo.test_add_viewname_with_renderer": "PASSED",
    "TestStaticURLInfo.test_add_viewname_with_route_prefix": "PASSED",
    "TestStaticURLInfo.test_add_viewname_with_view_attr": "PASSED",
    "TestStaticURLInfo.test_add_viewname_with_view_context": "PASSED",
    "TestStaticURLInfo.test_add_viewname_with_view_for": "PASSED",
    "TestStaticURLInfo.test_add_viewname_with_view_permission": "PASSED",
    "TestStaticURLInfo.test_add_viewname_with_view_renderer": "PASSED",
    "TestStaticURLInfo.test_generate_missing": "PASSED",
    "TestStaticURLInfo.test_generate_quoting": "PASSED",
    "TestStaticURLInfo.test_generate_registration_miss": "PASSED",
    "TestStaticURLInfo.test_generate_registration_no_registry_on_request": "PASSED",
    "TestStaticURLInfo.test_generate_route_url": "PASSED",
    "TestStaticURLInfo.test_generate_slash_in_name1": "PASSED",
    "TestStaticURLInfo.test_generate_slash_in_name2": "PASSED",
    "TestStaticURLInfo.test_generate_url_quoted_remote": "PASSED",
    "TestStaticURLInfo.test_generate_url_unquoted_local": "PASSED",
    "TestStaticURLInfo.test_verifyClass": "PASSED",
    "TestStaticURLInfo.test_verifyObject": "PASSED",
    "Test_view_description.test_with_text": "PASSED",
    "Test_logging_file_config.test_it": "PASSED",
    "TestPCreateCommand.test_known_scaffold_absolute_path": "PASSED",
    "TestPCreateCommand.test_known_scaffold_multiple_rendered": "PASSED",
    "TestPCreateCommand.test_known_scaffold_single_rendered": "PASSED",
    "TestPCreateCommand.test_no_project_name": "PASSED",
    "TestPCreateCommand.test_run_no_scaffold_name": "PASSED",
    "TestPCreateCommand.test_run_show_scaffolds_exist": "PASSED",
    "TestPCreateCommand.test_run_show_scaffolds_none_exist": "PASSED",
    "TestPCreateCommand.test_unknown_scaffold_name": "PASSED",
    "Test_main.test_it": "PASSED",
    "TestPRequestCommand.test_command_has_bad_config_header": "PASSED",
    "TestPRequestCommand.test_command_not_enough_args": "PASSED",
    "TestPRequestCommand.test_command_response_has_no_charset": "PASSED",
    "TestPRoutesCommand.test__get_mapper": "PASSED",
    "TestPRoutesCommand.test_no_mapper": "PASSED",
    "TestPRoutesCommand.test_no_routes": "PASSED",
    "TestPRoutesCommand.test_route_with_no_slash_prefix": "PASSED",
    "TestPRoutesCommand.test_single_route_no_route_registered": "PASSED",
    "TestPRoutesCommand.test_single_route_no_views_registered": "PASSED",
    "TestPRoutesCommand.test_single_route_one_view_registered": "PASSED",
    "TestPRoutesCommand.test_single_route_one_view_registered_with_factory": "PASSED",
    "TestPServeCommand.test_parse_vars_bad": "PASSED",
    "TestPServeCommand.test_parse_vars_good": "PASSED",
    "TestPServeCommand.test_record_pid_not_verbose": "PASSED",
    "TestPServeCommand.test_record_pid_verbose": "PASSED",
    "TestPServeCommand.test_remove_pid_current_pid_is_not_pid_in_file": "PASSED",
    "TestPServeCommand.test_remove_pid_current_pid_is_not_written_pid": "PASSED",
    "TestPServeCommand.test_remove_pid_file_not_verbose": "PASSED",
    "TestPServeCommand.test_remove_pid_file_stale_pid_write_exception": "PASSED",
    "TestPServeCommand.test_remove_pid_file_unlink_exception": "PASSED",
    "TestPServeCommand.test_remove_pid_file_verbose": "PASSED",
    "TestPServeCommand.test_remove_pid_no_pid_file": "PASSED",
    "TestPServeCommand.test_remove_pid_not_a_number": "PASSED",
    "TestPServeCommand.test_run_no_args": "PASSED",
    "TestPServeCommand.test_run_stop_daemon_bad_pid_file": "PASSED",
    "TestPServeCommand.test_run_stop_daemon_invalid_pid_in_file": "PASSED",
    "TestPServeCommand.test_run_stop_daemon_no_such_pid_file": "PASSED",
    "Test_read_pidfile.test_read_pidfile": "PASSED",
    "Test_read_pidfile.test_read_pidfile_no_pid_file": "PASSED",
    "Test_read_pidfile.test_read_pidfile_not_a_number": "PASSED",
    "TestLazyWriter.test_flush": "PASSED",
    "TestLazyWriter.test_open": "PASSED",
    "TestLazyWriter.test_write": "PASSED",
    "TestLazyWriter.test_writeline": "PASSED",
    "Test__methodwrapper.test___call__fail": "PASSED",
    "Test__methodwrapper.test___call__succeed": "PASSED",
    "TestPShellCommand.test_command_custom_section_override": "PASSED",
    "TestPShellCommand.test_command_loads_bpython_shell": "PASSED",
    "TestPShellCommand.test_command_loads_check_variable_override_order": "PASSED",
    "TestPShellCommand.test_command_loads_custom_items": "PASSED",
    "TestPShellCommand.test_command_loads_default_shell": "PASSED",
    "TestPShellCommand.test_command_loads_default_shell_with_unknown_shell": "PASSED",
    "TestPShellCommand.test_command_loads_ipython_v0_10": "PASSED",
    "TestPShellCommand.test_command_loads_ipython_v0_11": "PASSED",
    "TestPShellCommand.test_command_loads_setup_from_options": "PASSED",
    "TestPShellCommand.test_command_setup": "PASSED",
    "TestPShellCommand.test_make_bpython_shell": "PASSED",
    "TestPShellCommand.test_make_default_shell": "PASSED",
    "TestPShellCommand.test_make_ipython_v0_10_shell": "PASSED",
    "TestPShellCommand.test_make_ipython_v0_11_shell": "PASSED",
    "TestPShellCommand.test_shell_ipython_ordering": "PASSED",
    "TestPShellCommand.test_shell_ordering": "PASSED",
    "TestPTweensCommand.test__get_tweens": "PASSED",
    "TestPTweensCommand.test_command_implicit_and_explicit_tweens": "PASSED",
    "TestPTweensCommand.test_command_implicit_tweens_only": "PASSED",
    "TestPTweensCommand.test_command_no_tweens": "PASSED",
    "TestPViewsCommand.test__find_multi_routes_all_match": "PASSED",
    "TestPViewsCommand.test__find_multi_routes_none_match": "PASSED",
    "TestPViewsCommand.test__find_multi_routes_some_match": "PASSED",
    "TestPViewsCommand.test__find_view_no_match": "PASSED",
    "TestPViewsCommand.test__find_view_no_match_multiview_registered": "PASSED",
    "TestPViewsCommand.test__find_view_route_multiview": "PASSED",
    "TestPViewsCommand.test__find_view_route_multiview_no_view_registered": "PASSED",
    "TestPViewsCommand.test__find_view_route_no_multiview": "PASSED",
    "TestPViewsCommand.test__find_view_traversal": "PASSED",
    "TestPViewsCommand.test__find_view_traversal_multiview": "PASSED",
    "TestPViewsCommand.test_views_command_multi_view_nested": "PASSED",
    "TestPViewsCommand.test_views_command_multiview": "PASSED",
    "TestPViewsCommand.test_views_command_multiview_with_permission": "PASSED",
    "TestPViewsCommand.test_views_command_multiview_with_predicates": "PASSED",
    "TestPViewsCommand.test_views_command_not_found": "PASSED",
    "TestPViewsCommand.test_views_command_not_found_url_starts_without_slash": "PASSED",
    "TestPViewsCommand.test_views_command_single_view_route": "PASSED",
    "TestPViewsCommand.test_views_command_single_view_route_with_route_predicates": "PASSED",
    "TestPViewsCommand.test_views_command_single_view_traversal": "PASSED",
    "TestPViewsCommand.test_views_command_single_view_traversal_with_permission": "PASSED",
    "TestPViewsCommand.test_views_command_single_view_traversal_with_predicates": "PASSED",
    "AdaptersConfiguratorMixinTests.test_add_resource_url_adapter_dotted_names": "FAILED",
    "AdaptersConfiguratorMixinTests.test_add_resource_url_adapter_introspectables": "FAILED",
    "AdaptersConfiguratorMixinTests.test_add_traverser_dotted_names": "FAILED",
    "TestOverrideProvider.test_get_resource_filename_no_overrides": "FAILED",
    "TestOverrideProvider.test_get_resource_filename_override_returns_None": "FAILED",
    "TestPackageOverrides.test_get_filename": "FAILED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_abspath": "FAILED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_asset_spec": "FAILED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_asset_spec_existing_translation_dirs": "FAILED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_multiple_specs": "FAILED",
    "TestI18NConfiguratorMixin.test_add_translation_dirs_multiple_specs_multiple_calls": "FAILED",
    "ConfiguratorTests.test_ctor_no_registry": "FAILED",
    "ConfiguratorTests.test_ctor_noreg_debug_logger_None_default": "FAILED",
    "ConfiguratorTests.test_scan_integration_conflict": "FAILED",
    "ConfiguratorTests.test_setup_registry_debug_logger_None_default": "FAILED",
    "TestConfigurator_add_directive.test_extend_with_dotted_name": "FAILED",
    "TestConfigurator_add_directive.test_extend_with_python_callable": "FAILED",
    "TestViewsConfigurationMixin.test_add_static_view_package_here_relative": "FAILED",
    "TestViewsConfigurationMixin.test_add_view_with_template_renderer": "FAILED",
    "TestViewsConfigurationMixin.test_add_view_with_template_renderer_no_callable": "FAILED",
    "TestViewDeriver.test_function_returns_non_adaptable": "FAILED",
    "TestViewDeriver.test_function_returns_non_adaptable_dict": "FAILED",
    "TestViewDeriver.test_instance_returns_non_adaptable": "FAILED",
    "TestViewDeriver.test_requestonly_default_method_returns_non_adaptable": "FAILED",
    "TestViewDeriver.test_requestonly_nondefault_method_returns_non_adaptable": "FAILED",
    "Test_view_description.test_without_text": "FAILED",
    "TestPRequestCommand.test_command_display_headers": "FAILED",
    "TestPRequestCommand.test_command_has_content_type_header_var": "FAILED",
    "TestPRequestCommand.test_command_has_good_header_var": "FAILED",
    "TestPRequestCommand.test_command_has_multiple_header_vars": "FAILED",
    "TestPRequestCommand.test_command_method_get": "FAILED",
    "TestPRequestCommand.test_command_method_post": "FAILED",
    "TestPRequestCommand.test_command_path_doesnt_start_with_slash": "FAILED",
    "TestPRequestCommand.test_command_two_args": "FAILED",
    "TestPRequestCommand.test_command_with_query_string": "FAILED",
    "TestPViewsCommand.test_views_command_single_view_function_traversal": "FAILED"
}
diff --git a/pyramid/session.py b/pyramid/session.py
index 76b2b30b1..40e21ddbc 100644
--- a/pyramid/session.py
+++ b/pyramid/session.py
@@ -33,6 +33,53 @@ def manage_accessed(wrapped):
     accessed.__doc__ = wrapped.__doc__
     return accessed
 
+def signed_serialize(data, secret):
+    """ Serialize any pickleable structure (``data``) and sign it
+    using the ``secret`` (must be a string).  Return the
+    serialization, which includes the signature as its first 40 bytes.
+    The ``signed_deserialize`` method will deserialize such a value.
+
+    This function is useful for creating signed cookies.  For example:
+
+    .. code-block:: python
+
+       cookieval = signed_serialize({'a':1}, 'secret')
+       response.set_cookie('signed_cookie', cookieval)
+    """
+    pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)
+    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()
+    return sig + native_(base64.b64encode(pickled))
+
+def signed_deserialize(serialized, secret, hmac=hmac):
+    """ Deserialize the value returned from ``signed_serialize``.  If
+    the value cannot be deserialized for any reason, a
+    :exc:`ValueError` exception will be raised.
+
+    This function is useful for deserializing a signed cookie value
+    created by ``signed_serialize``.  For example:
+
+    .. code-block:: python
+
+       cookieval = request.cookies['signed_cookie']
+       data = signed_deserialize(cookieval, 'secret')
+    """
+    # hmac parameterized only for unit tests
+    try:
+        input_sig, pickled = (serialized[:40],
+                              base64.b64decode(bytes_(serialized[40:])))
+    except (binascii.Error, TypeError) as e:
+        # Badly formed data can make base64 die
+        raise ValueError('Badly formed base64 data: %s' % e)
+
+    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()
+
+    # Avoid timing attacks (see
+    # http://seb.dbzteam.org/crypto/python-oauth-timing-hmac.pdf)
+    if strings_differ(sig, input_sig):
+        raise ValueError('Invalid signature')
+
+    return pickle.loads(pickled)
+
 def UnencryptedCookieSessionFactoryConfig(
     secret,
     timeout=1200,
@@ -43,6 +90,8 @@ def UnencryptedCookieSessionFactoryConfig(
     cookie_secure=False, 
     cookie_httponly=False,
     cookie_on_exception=True,
+    signed_serialize=signed_serialize,
+    signed_deserialize=signed_deserialize,
     ):
     """
     Configure a :term:`session factory` which will provide unencrypted
@@ -89,6 +138,15 @@ def UnencryptedCookieSessionFactoryConfig(
       If ``True``, set a session cookie even if an exception occurs
       while rendering a view.  Default: ``True``.
 
+    ``signed_serialize``
+      A callable which takes more or less arbitrary python data structure and
+      a secret and returns a signed serialization in bytes.
+      Default: ``signed_serialize`` (using pickle).
+
+    ``signed_deserialize``
+      A callable which takes a signed and serialized data structure in bytes
+      and a secret and returns the original data structure if the signature
+      is valid. Default: ``signed_deserialize`` (using pickle).
     """
 
     @implementer(ISession)
@@ -225,51 +283,3 @@ def UnencryptedCookieSessionFactoryConfig(
             return True
 
     return UnencryptedCookieSessionFactory
-
-def signed_serialize(data, secret):
-    """ Serialize any pickleable structure (``data``) and sign it
-    using the ``secret`` (must be a string).  Return the
-    serialization, which includes the signature as its first 40 bytes.
-    The ``signed_deserialize`` method will deserialize such a value.
-
-    This function is useful for creating signed cookies.  For example:
-
-    .. code-block:: python
-
-       cookieval = signed_serialize({'a':1}, 'secret')
-       response.set_cookie('signed_cookie', cookieval)
-    """
-    pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)
-    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()
-    return sig + native_(base64.b64encode(pickled))
-
-def signed_deserialize(serialized, secret, hmac=hmac):
-    """ Deserialize the value returned from ``signed_serialize``.  If
-    the value cannot be deserialized for any reason, a
-    :exc:`ValueError` exception will be raised.
-
-    This function is useful for deserializing a signed cookie value
-    created by ``signed_serialize``.  For example:
-
-    .. code-block:: python
-
-       cookieval = request.cookies['signed_cookie']
-       data = signed_deserialize(cookieval, 'secret')
-    """
-    # hmac parameterized only for unit tests
-    try:
-        input_sig, pickled = (serialized[:40],
-                              base64.b64decode(bytes_(serialized[40:])))
-    except (binascii.Error, TypeError) as e:
-        # Badly formed data can make base64 die
-        raise ValueError('Badly formed base64 data: %s' % e)
-
-    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()
-
-    # Avoid timing attacks (see
-    # http://seb.dbzteam.org/crypto/python-oauth-timing-hmac.pdf)
-    if strings_differ(sig, input_sig):
-        raise ValueError('Invalid signature')
-
-    return pickle.loads(pickled)
-

{"pyramid/session.py": "from hashlib import sha1\nimport base64\nimport binascii\nimport hmac\nimport time\nimport os\n\nfrom zope.interface import implementer\n\nfrom pyramid.compat import (\n    pickle,\n    PY3,\n    text_,\n    bytes_,\n    native_,\n    )\n\nfrom pyramid.interfaces import ISession\nfrom pyramid.util import strings_differ\n\ndef manage_accessed(wrapped):\n    \"\"\" Decorator which causes a cookie to be set when a wrapped\n    method is called\"\"\"\n    def accessed(session, *arg, **kw):\n        session.accessed = int(time.time())\n        if not session._dirty:\n            session._dirty = True\n            def set_cookie_callback(request, response):\n                session._set_cookie(response)\n                session.request = None # explicitly break cycle for gc\n            session.request.add_response_callback(set_cookie_callback)\n        return wrapped(session, *arg, **kw)\n    accessed.__doc__ = wrapped.__doc__\n    return accessed\n\ndef UnencryptedCookieSessionFactoryConfig(\n    secret,\n    timeout=1200,\n    cookie_name='session',\n    cookie_max_age=None,\n    cookie_path='/',\n    cookie_domain=None,\n    cookie_secure=False, \n    cookie_httponly=False,\n    cookie_on_exception=True,\n    ):\n    \"\"\"\n    Configure a :term:`session factory` which will provide unencrypted\n    (but signed) cookie-based sessions.  The return value of this\n    function is a :term:`session factory`, which may be provided as\n    the ``session_factory`` argument of a\n    :class:`pyramid.config.Configurator` constructor, or used\n    as the ``session_factory`` argument of the\n    :meth:`pyramid.config.Configurator.set_session_factory`\n    method.\n\n    The session factory returned by this function will create sessions\n    which are limited to storing fewer than 4000 bytes of data (as the\n    payload must fit into a single cookie).\n\n    Parameters:\n\n    ``secret``\n      A string which is used to sign the cookie.\n\n    ``timeout``\n      A number of seconds of inactivity before a session times out.\n\n    ``cookie_name``\n      The name of the cookie used for sessioning.  Default: ``session``.\n\n    ``cookie_max_age``\n      The maximum age of the cookie used for sessioning (in seconds).\n      Default: ``None`` (browser scope).\n\n    ``cookie_path``\n      The path used for the session cookie.  Default: ``/``.\n\n    ``cookie_domain``\n      The domain used for the session cookie.  Default: ``None`` (no domain).\n\n    ``cookie_secure``\n      The 'secure' flag of the session cookie.  Default: ``False``.\n\n    ``cookie_httponly``\n      The 'httpOnly' flag of the session cookie.  Default: ``False``.\n\n    ``cookie_on_exception``\n      If ``True``, set a session cookie even if an exception occurs\n      while rendering a view.  Default: ``True``.\n\n    \"\"\"\n\n    @implementer(ISession)\n    class UnencryptedCookieSessionFactory(dict):\n        \"\"\" Dictionary-like session object \"\"\"\n\n        # configuration parameters\n        _cookie_name = cookie_name\n        _cookie_max_age = cookie_max_age\n        _cookie_path = cookie_path\n        _cookie_domain = cookie_domain\n        _cookie_secure = cookie_secure\n        _cookie_httponly = cookie_httponly\n        _cookie_on_exception = cookie_on_exception\n        _secret = secret\n        _timeout = timeout\n\n        # dirty flag\n        _dirty = False\n\n        def __init__(self, request):\n            self.request = request\n            now = time.time()\n            created = accessed = now\n            new = True\n            value = None\n            state = {}\n            cookieval = request.cookies.get(self._cookie_name)\n            if cookieval is not None:\n                try:\n                    value = signed_deserialize(cookieval, self._secret)\n                except ValueError:\n                    value = None\n\n            if value is not None:\n                accessed, created, state = value\n                new = False\n                if now - accessed > self._timeout:\n                    state = {}\n\n            self.created = created\n            self.accessed = accessed\n            self.new = new\n            dict.__init__(self, state)\n\n        # ISession methods\n        def changed(self):\n            \"\"\" This is intentionally a noop; the session is\n            serialized on every access, so unnecessary\"\"\"\n            pass\n\n        def invalidate(self):\n            self.clear() # XXX probably needs to unset cookie\n\n        # non-modifying dictionary methods\n        get = manage_accessed(dict.get)\n        __getitem__ = manage_accessed(dict.__getitem__)\n        items = manage_accessed(dict.items)\n        values = manage_accessed(dict.values)\n        keys = manage_accessed(dict.keys)\n        __contains__ = manage_accessed(dict.__contains__)\n        __len__ = manage_accessed(dict.__len__)\n        __iter__ = manage_accessed(dict.__iter__)\n\n        if not PY3:\n            iteritems = manage_accessed(dict.iteritems)\n            itervalues = manage_accessed(dict.itervalues)\n            iterkeys = manage_accessed(dict.iterkeys)\n            has_key = manage_accessed(dict.has_key)\n\n        # modifying dictionary methods\n        clear = manage_accessed(dict.clear)\n        update = manage_accessed(dict.update)\n        setdefault = manage_accessed(dict.setdefault)\n        pop = manage_accessed(dict.pop)\n        popitem = manage_accessed(dict.popitem)\n        __setitem__ = manage_accessed(dict.__setitem__)\n        __delitem__ = manage_accessed(dict.__delitem__)\n\n        # flash API methods\n        @manage_accessed\n        def flash(self, msg, queue='', allow_duplicate=True):\n            storage = self.setdefault('_f_' + queue, [])\n            if allow_duplicate or (msg not in storage):\n                storage.append(msg)\n\n        @manage_accessed\n        def pop_flash(self, queue=''):\n            storage = self.pop('_f_' + queue, [])\n            return storage\n\n        @manage_accessed\n        def peek_flash(self, queue=''):\n            storage = self.get('_f_' + queue, [])\n            return storage\n\n        # CSRF API methods\n        @manage_accessed\n        def new_csrf_token(self):\n            token = text_(binascii.hexlify(os.urandom(20)))\n            self['_csrft_'] = token\n            return token\n\n        @manage_accessed\n        def get_csrf_token(self):\n            token = self.get('_csrft_', None)\n            if token is None:\n                token = self.new_csrf_token()\n            return token\n\n        # non-API methods\n        def _set_cookie(self, response):\n            if not self._cookie_on_exception:\n                exception = getattr(self.request, 'exception', None)\n                if exception is not None: # dont set a cookie during exceptions\n                    return False\n            cookieval = signed_serialize(\n                (self.accessed, self.created, dict(self)), self._secret\n                )\n            if len(cookieval) > 4064:\n                raise ValueError(\n                    'Cookie value is too long to store (%s bytes)' %\n                    len(cookieval)\n                    )\n            response.set_cookie(\n                self._cookie_name,\n                value=cookieval,\n                max_age = self._cookie_max_age,\n                path = self._cookie_path,\n                domain = self._cookie_domain,\n                secure = self._cookie_secure,\n                httponly = self._cookie_httponly,\n                )\n            return True\n\n    return UnencryptedCookieSessionFactory\n\ndef signed_serialize(data, secret):\n    \"\"\" Serialize any pickleable structure (``data``) and sign it\n    using the ``secret`` (must be a string).  Return the\n    serialization, which includes the signature as its first 40 bytes.\n    The ``signed_deserialize`` method will deserialize such a value.\n\n    This function is useful for creating signed cookies.  For example:\n\n    .. code-block:: python\n\n       cookieval = signed_serialize({'a':1}, 'secret')\n       response.set_cookie('signed_cookie', cookieval)\n    \"\"\"\n    pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)\n    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()\n    return sig + native_(base64.b64encode(pickled))\n\ndef signed_deserialize(serialized, secret, hmac=hmac):\n    \"\"\" Deserialize the value returned from ``signed_serialize``.  If\n    the value cannot be deserialized for any reason, a\n    :exc:`ValueError` exception will be raised.\n\n    This function is useful for deserializing a signed cookie value\n    created by ``signed_serialize``.  For example:\n\n    .. code-block:: python\n\n       cookieval = request.cookies['signed_cookie']\n       data = signed_deserialize(cookieval, 'secret')\n    \"\"\"\n    # hmac parameterized only for unit tests\n    try:\n        input_sig, pickled = (serialized[:40],\n                              base64.b64decode(bytes_(serialized[40:])))\n    except (binascii.Error, TypeError) as e:\n        # Badly formed data can make base64 die\n        raise ValueError('Badly formed base64 data: %s' % e)\n\n    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()\n\n    # Avoid timing attacks (see\n    # http://seb.dbzteam.org/crypto/python-oauth-timing-hmac.pdf)\n    if strings_differ(sig, input_sig):\n        raise ValueError('Invalid signature')\n\n    return pickle.loads(pickled)\n\n"}
A user will ask you to solve a task. You should first draft your thinking process (inner monologue). Then, generate the solution.

Your response format must follow the template below:
<think>
Your thoughts or/and draft, like working through an exercise on scratch paper. Be as casual and as long as you want until you are confident to generate a correct solution.
</think>
<solution>
Final solution presented to the user.
</solution>
system
We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
[ISSUE]

**Title:** Session Factory Fails to Accept 'signed_serialize' and 'signed_deserialize' Parameters

**Description:**
After merging the latest changes, attempting to configure the `UnencryptedCookieSessionFactoryConfig` with custom `signed_serialize` and `signed_deserialize` functions results in a `TypeError`. This prevents customization of the session serialization process.

**Example Buggy Code:**
```python
def dummy_signed_serialize(data, secret):
    import base64
    from pyramid.compat import pickle, bytes_
    pickled = pickle.dumps(data)
    return base64.b64encode(bytes_(secret)) + base64.b64encode(pickled)

def dummy_signed_deserialize(serialized, secret):
    import base64
    from pyramid.compat import pickle, bytes_
    serialized_data = base64.b64decode(
        serialized[len(base64.b64encode(bytes_(secret))):])
    return pickle.loads(serialized_data)

session = UnencryptedCookieSessionFactoryConfig('secret', 
    signed_serialize=dummy_signed_serialize,
    signed_deserialize=dummy_signed_deserialize)
```

**Expected Behavior:**
The `UnencryptedCookieSessionFactoryConfig` should accept the `signed_serialize` and `signed_deserialize` keyword arguments, allowing developers to provide custom serialization and deserialization functions for session data.

**Actual Behavior:**
A `TypeError` is raised stating that `UnencryptedCookieSessionFactoryConfig` received unexpected keyword arguments `'signed_serialize'` and `'signed_deserialize'`. This prevents the configuration of custom serialization methods.

**Error Message:**
```
TypeError: UnencryptedCookieSessionFactoryConfig() got an unexpected keyword argument 'signed_deserialize'
```

**Impact:**
This issue blocks developers from customizing the session serialization process, potentially limiting flexibility and security enhancements related to session management.

[/ISSUE]
--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.

--- BEGIN FILE ---
```
### pyramid/session.py
from hashlib import sha1
import base64
import binascii
import hmac
import time
import os

from zope.interface import implementer

from pyramid.compat import (
    pickle,
    PY3,
    text_,
    bytes_,
    native_,
    )

from pyramid.interfaces import ISession
from pyramid.util import strings_differ

def manage_accessed(wrapped):
    """ Decorator which causes a cookie to be set when a wrapped
    method is called"""
    def accessed(session, *arg, **kw):
        session.accessed = int(time.time())
        if not session._dirty:
            session._dirty = True
            def set_cookie_callback(request, response):
                session._set_cookie(response)
                session.request = None # explicitly break cycle for gc
            session.request.add_response_callback(set_cookie_callback)
        return wrapped(session, *arg, **kw)
    accessed.__doc__ = wrapped.__doc__
    return accessed

def UnencryptedCookieSessionFactoryConfig(
    secret,
    timeout=1200,
    cookie_name='session',
    cookie_max_age=None,
    cookie_path='/',
    cookie_domain=None,
    cookie_secure=False, 
    cookie_httponly=False,
    cookie_on_exception=True,
    ):
    """
    Configure a :term:`session factory` which will provide unencrypted
    (but signed) cookie-based sessions.  The return value of this
    function is a :term:`session factory`, which may be provided as
    the ``session_factory`` argument of a
    :class:`pyramid.config.Configurator` constructor, or used
    as the ``session_factory`` argument of the
    :meth:`pyramid.config.Configurator.set_session_factory`
    method.

    The session factory returned by this function will create sessions
    which are limited to storing fewer than 4000 bytes of data (as the
    payload must fit into a single cookie).

    Parameters:

    ``secret``
      A string which is used to sign the cookie.

    ``timeout``
      A number of seconds of inactivity before a session times out.

    ``cookie_name``
      The name of the cookie used for sessioning.  Default: ``session``.

    ``cookie_max_age``
      The maximum age of the cookie used for sessioning (in seconds).
      Default: ``None`` (browser scope).

    ``cookie_path``
      The path used for the session cookie.  Default: ``/``.

    ``cookie_domain``
      The domain used for the session cookie.  Default: ``None`` (no domain).

    ``cookie_secure``
      The 'secure' flag of the session cookie.  Default: ``False``.

    ``cookie_httponly``
      The 'httpOnly' flag of the session cookie.  Default: ``False``.

    ``cookie_on_exception``
      If ``True``, set a session cookie even if an exception occurs
      while rendering a view.  Default: ``True``.

    """

    @implementer(ISession)
    class UnencryptedCookieSessionFactory(dict):
        """ Dictionary-like session object """

        # configuration parameters
        _cookie_name = cookie_name
        _cookie_max_age = cookie_max_age
        _cookie_path = cookie_path
        _cookie_domain = cookie_domain
        _cookie_secure = cookie_secure
        _cookie_httponly = cookie_httponly
        _cookie_on_exception = cookie_on_exception
        _secret = secret
        _timeout = timeout

        # dirty flag
        _dirty = False

        def __init__(self, request):
            self.request = request
            now = time.time()
            created = accessed = now
            new = True
            value = None
            state = {}
            cookieval = request.cookies.get(self._cookie_name)
            if cookieval is not None:
                try:
                    value = signed_deserialize(cookieval, self._secret)
                except ValueError:
                    value = None

            if value is not None:
                accessed, created, state = value
                new = False
                if now - accessed > self._timeout:
                    state = {}

            self.created = created
            self.accessed = accessed
            self.new = new
            dict.__init__(self, state)

        # ISession methods
        def changed(self):
            """ This is intentionally a noop; the session is
            serialized on every access, so unnecessary"""
            pass

        def invalidate(self):
            self.clear() # XXX probably needs to unset cookie

        # non-modifying dictionary methods
        get = manage_accessed(dict.get)
        __getitem__ = manage_accessed(dict.__getitem__)
        items = manage_accessed(dict.items)
        values = manage_accessed(dict.values)
        keys = manage_accessed(dict.keys)
        __contains__ = manage_accessed(dict.__contains__)
        __len__ = manage_accessed(dict.__len__)
        __iter__ = manage_accessed(dict.__iter__)

        if not PY3:
            iteritems = manage_accessed(dict.iteritems)
            itervalues = manage_accessed(dict.itervalues)
            iterkeys = manage_accessed(dict.iterkeys)
            has_key = manage_accessed(dict.has_key)

        # modifying dictionary methods
        clear = manage_accessed(dict.clear)
        update = manage_accessed(dict.update)
        setdefault = manage_accessed(dict.setdefault)
        pop = manage_accessed(dict.pop)
        popitem = manage_accessed(dict.popitem)
        __setitem__ = manage_accessed(dict.__setitem__)
        __delitem__ = manage_accessed(dict.__delitem__)

        # flash API methods
        @manage_accessed
        def flash(self, msg, queue='', allow_duplicate=True):
            storage = self.setdefault('_f_' + queue, [])
            if allow_duplicate or (msg not in storage):
                storage.append(msg)

        @manage_accessed
        def pop_flash(self, queue=''):
            storage = self.pop('_f_' + queue, [])
            return storage

        @manage_accessed
        def peek_flash(self, queue=''):
            storage = self.get('_f_' + queue, [])
            return storage

        # CSRF API methods
        @manage_accessed
        def new_csrf_token(self):
            token = text_(binascii.hexlify(os.urandom(20)))
            self['_csrft_'] = token
            return token

        @manage_accessed
        def get_csrf_token(self):
            token = self.get('_csrft_', None)
            if token is None:
                token = self.new_csrf_token()
            return token

        # non-API methods
        def _set_cookie(self, response):
            if not self._cookie_on_exception:
                exception = getattr(self.request, 'exception', None)
                if exception is not None: # dont set a cookie during exceptions
                    return False
            cookieval = signed_serialize(
                (self.accessed, self.created, dict(self)), self._secret
                )
            if len(cookieval) > 4064:
                raise ValueError(
                    'Cookie value is too long to store (%s bytes)' %
                    len(cookieval)
                    )
            response.set_cookie(
                self._cookie_name,
                value=cookieval,
                max_age = self._cookie_max_age,
                path = self._cookie_path,
                domain = self._cookie_domain,
                secure = self._cookie_secure,
                httponly = self._cookie_httponly,
                )
            return True

    return UnencryptedCookieSessionFactory

def signed_serialize(data, secret):
    """ Serialize any pickleable structure (``data``) and sign it
    using the ``secret`` (must be a string).  Return the
    serialization, which includes the signature as its first 40 bytes.
    The ``signed_deserialize`` method will deserialize such a value.

    This function is useful for creating signed cookies.  For example:

    .. code-block:: python

       cookieval = signed_serialize({'a':1}, 'secret')
       response.set_cookie('signed_cookie', cookieval)
    """
    pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)
    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()
    return sig + native_(base64.b64encode(pickled))

def signed_deserialize(serialized, secret, hmac=hmac):
    """ Deserialize the value returned from ``signed_serialize``.  If
    the value cannot be deserialized for any reason, a
    :exc:`ValueError` exception will be raised.

    This function is useful for deserializing a signed cookie value
    created by ``signed_serialize``.  For example:

    .. code-block:: python

       cookieval = request.cookies['signed_cookie']
       data = signed_deserialize(cookieval, 'secret')
    """
    # hmac parameterized only for unit tests
    try:
        input_sig, pickled = (serialized[:40],
                              base64.b64decode(bytes_(serialized[40:])))
    except (binascii.Error, TypeError) as e:
        # Badly formed data can make base64 die
        raise ValueError('Badly formed base64 data: %s' % e)

    sig = hmac.new(bytes_(secret), pickled, sha1).hexdigest()

    # Avoid timing attacks (see
    # http://seb.dbzteam.org/crypto/python-oauth-timing-hmac.pdf)
    if strings_differ(sig, input_sig):
        raise ValueError('Invalid signature')

    return pickle.loads(pickled)


```
--- END FILE ---

Please first localize the bug based on the issue statement, and then generate *SEARCH/REPLACE* edits to fix the issue.

Every *SEARCH/REPLACE* edit must use this format:
1. The file path
2. The start of search block: <<<<<<< SEARCH
3. A contiguous chunk of lines to search for in the existing source code
4. The dividing line: =======
5. The lines to replace into the source code
6. The end of the replace block: >>>>>>> REPLACE

Here is an example:

```python
### mathweb/flask/app.py
<<<<<<< SEARCH
from flask import Flask
=======
import math
from flask import Flask
>>>>>>> REPLACE
```
</solution>

Please note that the *SEARCH/REPLACE* edit REQUIRES PROPER INDENTATION. If you would like to add the line '        print(x)', you must fully write that out, with all those spaces before the code!
Wrap each *SEARCH/REPLACE* edit in a code block as shown in the example above. If you have multiple *SEARCH/REPLACE* edits, use a separate code block for each one.
user