From ee9c620963553a3a959cdfc517f1e0818a21e9c0 Mon Sep 17 00:00:00 2001 From: Michael Merickel Date: Mon, 23 Nov 2015 12:59:55 -0600 Subject: expose the PickleSerializer --- docs/api/session.rst | 1 + pyramid/session.py | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/docs/api/session.rst b/docs/api/session.rst index dde9d20e9..474e2bb32 100644 --- a/docs/api/session.rst +++ b/docs/api/session.rst @@ -17,4 +17,5 @@ .. autofunction:: BaseCookieSessionFactory + .. autoclass:: PickleSerializer diff --git a/pyramid/session.py b/pyramid/session.py index fa85fe69c..51f9de620 100644 --- a/pyramid/session.py +++ b/pyramid/session.py @@ -133,13 +133,25 @@ def check_csrf_token(request, return True class PickleSerializer(object): - """ A Webob cookie serializer that uses the pickle protocol to dump Python - data to bytes.""" + """ A serializer that uses the pickle protocol to dump Python + data to bytes. + + This is the default serializer used by Pyramid. + + ``protocol`` may be specified to control the version of pickle used. + Defaults to :attr:`pickle.HIGHEST_PROTOCOL`. + + """ + def __init__(self, protocol=pickle.HIGHEST_PROTOCOL): + self.protocol = protocol + def loads(self, bstruct): + """Accept bytes and return a Python object.""" return pickle.loads(bstruct) def dumps(self, appstruct): - return pickle.dumps(appstruct, pickle.HIGHEST_PROTOCOL) + """Accept a Python object and return bytes.""" + return pickle.dumps(appstruct, self.protocol) def BaseCookieSessionFactory( serializer, -- cgit v1.2.3 From a708d359ff123084ea64b2e53c3ad32a74711219 Mon Sep 17 00:00:00 2001 From: Michael Merickel Date: Wed, 25 Nov 2015 18:52:54 -0600 Subject: remove py2-docs from tox.ini and reorder so coverage is last --- HACKING.txt | 2 +- builddocs.sh | 2 +- tox.ini | 87 ++++++++++++++++++++++++++++-------------------------------- 3 files changed, 43 insertions(+), 48 deletions(-) diff --git a/HACKING.txt b/HACKING.txt index d0f9a769e..c838fda22 100644 --- a/HACKING.txt +++ b/HACKING.txt @@ -217,7 +217,7 @@ changed to reflect the bug fix, ideally in the same commit that fixes the bug or adds the feature. To build and review docs, use the following steps. 1. In the main Pyramid checkout directory, run ``./builddocs.sh`` (which just - turns around and runs ``tox -e py2-docs,py3-docs``):: + turns around and runs ``tox -e docs``):: $ ./builddocs.sh diff --git a/builddocs.sh b/builddocs.sh index eaf02fc1d..0859fe268 100755 --- a/builddocs.sh +++ b/builddocs.sh @@ -1,3 +1,3 @@ #!/bin/bash -tox -epy2-docs,py3-docs +tox -e docs diff --git a/tox.ini b/tox.ini index 20a9ee5b1..626931faf 100644 --- a/tox.ini +++ b/tox.ini @@ -1,7 +1,7 @@ [tox] envlist = - py26,py27,py32,py33,py34,py35,pypy,pypy3,pep8, - {py2,py3}-docs, + py26,py27,py32,py33,py34,py35,pypy,pypy3, + docs,pep8, {py2,py3}-cover,coverage, [testenv] @@ -23,49 +23,6 @@ commands = pip install pyramid[testing] nosetests --with-xunit --xunit-file=nosetests-{envname}.xml {posargs:} -# we separate coverage into its own testenv because a) "last run wins" wrt -# cobertura jenkins reporting and b) pypy and jython can't handle any -# combination of versions of coverage and nosexcover that i can find. -[testenv:py2-cover] -commands = - pip install pyramid[testing] - coverage run --source=pyramid {envbindir}/nosetests - coverage xml -o coverage-py2.xml -setenv = - COVERAGE_FILE=.coverage.py2 - -[testenv:py3-cover] -commands = - pip install pyramid[testing] - coverage run --source=pyramid {envbindir}/nosetests - coverage xml -o coverage-py3.xml -setenv = - COVERAGE_FILE=.coverage.py3 - -[testenv:coverage] -basepython = python3.4 -commands = - coverage erase - coverage combine - coverage xml - coverage report --show-missing --fail-under=100 -deps = - coverage -setenv = - COVERAGE_FILE=.coverage - -[testenv:py2-docs] -whitelist_externals = make -commands = - pip install pyramid[docs] - make -C docs html epub BUILDDIR={envdir} "SPHINXOPTS=-W -E" - -[testenv:py3-docs] -whitelist_externals = make -commands = - pip install pyramid[docs] - make -C docs html epub BUILDDIR={envdir} "SPHINXOPTS=-W -E" - [testenv:py26-scaffolds] basepython = python2.6 commands = @@ -109,8 +66,46 @@ commands = deps = virtualenv [testenv:pep8] -basepython = python3.4 +basepython = python3.5 commands = flake8 pyramid/ deps = flake8 + +[testenv:docs] +basepython = python3.5 +whitelist_externals = make +commands = + pip install pyramid[docs] + make -C docs html epub BUILDDIR={envdir} "SPHINXOPTS=-W -E" + +# we separate coverage into its own testenv because a) "last run wins" wrt +# cobertura jenkins reporting and b) pypy and jython can't handle any +# combination of versions of coverage and nosexcover that i can find. +[testenv:py2-cover] +commands = + pip install pyramid[testing] + coverage run --source=pyramid {envbindir}/nosetests + coverage xml -o coverage-py2.xml +setenv = + COVERAGE_FILE=.coverage.py2 + +[testenv:py3-cover] +commands = + pip install pyramid[testing] + coverage run --source=pyramid {envbindir}/nosetests + coverage xml -o coverage-py3.xml +setenv = + COVERAGE_FILE=.coverage.py3 + +[testenv:coverage] +basepython = python3.5 +commands = + coverage erase + coverage combine + coverage xml + coverage report --show-missing --fail-under=100 +deps = + coverage +setenv = + COVERAGE_FILE=.coverage -- cgit v1.2.3 From 0030fba497a48e596167ceffb6dd499d67c91765 Mon Sep 17 00:00:00 2001 From: Michael Merickel Date: Wed, 25 Nov 2015 18:54:39 -0600 Subject: add docs to travis builds --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 79d9fa09d..2163eb8fd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,6 +22,8 @@ matrix: env: TOXENV=pypy3 - python: 3.5 env: TOXENV=py2-cover,py3-cover,coverage + - python: 3.5 + env: TOXENV=docs - python: 3.5 env: TOXENV=pep8 -- cgit v1.2.3