[Checkins] SVN: zope.copy/trunk/ Add support for Python 3.2.
Tres Seaver
cvs-admin at zope.org
Wed Jun 13 21:00:15 UTC 2012
Log message for revision 126855:
Add support for Python 3.2.
Changed:
_U zope.copy/trunk/
U zope.copy/trunk/CHANGES.txt
U zope.copy/trunk/setup.py
U zope.copy/trunk/src/zope/copy/__init__.py
A zope.copy/trunk/src/zope/copy/_compat.py
U zope.copy/trunk/src/zope/copy/examples.py
U zope.copy/trunk/tox.ini
-=-
Modified: zope.copy/trunk/CHANGES.txt
===================================================================
--- zope.copy/trunk/CHANGES.txt 2012-06-13 20:06:12 UTC (rev 126854)
+++ zope.copy/trunk/CHANGES.txt 2012-06-13 21:00:11 UTC (rev 126855)
@@ -5,6 +5,8 @@
4.0.0 (unreleased)
------------------
+- Added support for Python 3.2.
+
- Dropped ``zope.component`` as a testing requirement. Instead, register
explicit (dummy) adapter hooks where needed.
Modified: zope.copy/trunk/setup.py
===================================================================
--- zope.copy/trunk/setup.py 2012-06-13 20:06:12 UTC (rev 126854)
+++ zope.copy/trunk/setup.py 2012-06-13 21:00:11 UTC (rev 126855)
@@ -45,7 +45,10 @@
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
+ 'Programming Language :: Python :: 3',
+ 'Programming Language :: Python :: 3.2',
'Programming Language :: Python :: Implementation :: CPython',
+ 'Programming Language :: Python :: Implementation :: PyPy',
'Topic :: Database',
],
url='http://pypi.python.org/pypi/zope.copy',
Modified: zope.copy/trunk/src/zope/copy/__init__.py
===================================================================
--- zope.copy/trunk/src/zope/copy/__init__.py 2012-06-13 20:06:12 UTC (rev 126854)
+++ zope.copy/trunk/src/zope/copy/__init__.py 2012-06-13 21:00:11 UTC (rev 126855)
@@ -12,9 +12,12 @@
#
##############################################################################
import tempfile
-import cPickle
from zope.copy import interfaces
+from zope.copy._compat import Pickler
+from zope.copy._compat import Unpickler
+from zope.copy._compat import _get_pid
+from zope.copy._compat import _get_obj
def clone(obj):
"""Clone an object by pickling and unpickling it"""
@@ -22,23 +25,23 @@
persistent = CopyPersistent(obj)
# Pickle the object to a temporary file
- pickler = cPickle.Pickler(tmp, 2)
+ pickler = Pickler(tmp, 2)
pickler.persistent_id = persistent.id
pickler.dump(obj)
# Now load it back
tmp.seek(0)
- unpickler = cPickle.Unpickler(tmp)
+ unpickler = Unpickler(tmp)
unpickler.persistent_load = persistent.load
res = unpickler.load()
# run the registered cleanups
def convert(obj):
- pid = pickler.memo[id(obj)][0]
+ pid = _get_pid(pickler, id(obj))
try:
- return unpickler.memo[pid]
+ return _get_obj(unpickler, pid)
except KeyError: #pragma NO COVER pypy
- return unpickler.memo[str(pid)]
+ return _get_obj(unpickler, str(pid))
for call in persistent.registered:
call(convert)
return res
Added: zope.copy/trunk/src/zope/copy/_compat.py
===================================================================
--- zope.copy/trunk/src/zope/copy/_compat.py (rev 0)
+++ zope.copy/trunk/src/zope/copy/_compat.py 2012-06-13 21:00:11 UTC (rev 126855)
@@ -0,0 +1,42 @@
+##############################################################################
+#
+# Copyright (c) 2012 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+
+import sys
+
+PY3 = sys.version_info[0] >= 3
+
+if PY3: #pragma NO COVER
+ from pickle import Pickler
+ from pickle import Unpickler
+
+ def _get_pid(pickler, oid):
+ return pickler.memo.copy()[oid][0] #stupid proxy
+
+ def _get_obj(unpickler, pid):
+ return unpickler.memo.copy()[pid]
+
+else: #pragma NO COVER
+ from cPickle import Pickler
+ from cPickle import Unpickler
+
+ def _get_pid(pickler, oid):
+ return pickler.memo[oid][0]
+
+ def _get_obj(unpickler, pid):
+ return unpickler.memo[pid]
+
+def _apply(func, args=(), kw=None): # 'apply' is missing in Py3k
+ if kw is None:
+ kw = {}
+ return func(*args, **kw)
Modified: zope.copy/trunk/src/zope/copy/examples.py
===================================================================
--- zope.copy/trunk/src/zope/copy/examples.py 2012-06-13 20:06:12 UTC (rev 126854)
+++ zope.copy/trunk/src/zope/copy/examples.py 2012-06-13 21:00:11 UTC (rev 126855)
@@ -15,6 +15,8 @@
"""
import zope.location.location
+from zope.copy._compat import _apply
+
class Demo(object): #pragma NO COVER
_frozen = None
@@ -49,14 +51,14 @@
class Other(object): #pragma NO COVER
- @apply
+ @_apply
def __name__():
def fget(self):
return 'something'
def fset(self, value):
raise AttributeError
return property(fget, fset)
- @apply
+ @_apply
def __parent__():
def fget(self):
return root
Modified: zope.copy/trunk/tox.ini
===================================================================
--- zope.copy/trunk/tox.ini 2012-06-13 20:06:12 UTC (rev 126854)
+++ zope.copy/trunk/tox.ini 2012-06-13 21:00:11 UTC (rev 126855)
@@ -3,8 +3,7 @@
# Jython support pending 2.7 support, due 2012-07-15 or so. See:
# http://fwierzbicki.blogspot.com/2012/03/adconion-to-fund-jython-27.html
# py26,py27,py32,pypy,jython,coverage
-# py26,py27,py32,pypy,coverage,docs
- py26,py27,pypy,coverage,docs
+ py26,py27,py32,pypy,coverage,docs
[testenv]
commands =
More information about the checkins
mailing list