[Python-checkins] python/dist/src/Lib copy.py,1.42,1.43
rhettinger at users.sourceforge.net
rhettinger at users.sourceforge.net
Mon Mar 8 00:59:48 EST 2004
Update of /cvsroot/python/python/dist/src/Lib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31030
Modified Files:
copy.py
Log Message:
Refactor the copy dispatcher code in copy.py. Simplifies and shortens
the code by grouping common cases together.
Index: copy.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/copy.py,v
retrieving revision 1.42
retrieving revision 1.43
diff -C2 -d -r1.42 -r1.43
*** copy.py 14 Jun 2003 07:10:06 -0000 1.42
--- copy.py 8 Mar 2004 05:59:33 -0000 1.43
***************
*** 98,139 ****
_copy_dispatch = d = {}
! def _copy_atomic(x):
return x
! d[types.NoneType] = _copy_atomic
! d[types.IntType] = _copy_atomic
! d[types.LongType] = _copy_atomic
! d[types.FloatType] = _copy_atomic
! d[types.BooleanType] = _copy_atomic
! try:
! d[types.ComplexType] = _copy_atomic
! except AttributeError:
! pass
! d[types.StringType] = _copy_atomic
! try:
! d[types.UnicodeType] = _copy_atomic
! except AttributeError:
! pass
! try:
! d[types.CodeType] = _copy_atomic
! except AttributeError:
! pass
! d[types.TypeType] = _copy_atomic
! d[types.XRangeType] = _copy_atomic
! d[types.ClassType] = _copy_atomic
! d[types.BuiltinFunctionType] = _copy_atomic
!
! def _copy_list(x):
! return x[:]
! d[types.ListType] = _copy_list
! def _copy_tuple(x):
! return x[:]
! d[types.TupleType] = _copy_tuple
! def _copy_dict(x):
return x.copy()
- d[types.DictionaryType] = _copy_dict
if PyStringMap is not None:
! d[PyStringMap] = _copy_dict
def _copy_inst(x):
--- 98,121 ----
_copy_dispatch = d = {}
! def _copy_immutable(x):
return x
! for t in (types.NoneType, int, long, float, bool, str, tuple,
! frozenset, type, xrange, types.ClassType,
! types.BuiltinFunctionType):
! d[t] = _copy_immutable
! for name in ("ComplexType", "UnicodeType", "CodeType"):
! t = getattr(types, name, None)
! if t is not None:
! d[t] = _copy_immutable
! def _copy_with_constructor(x):
! return type(x)(x)
! for t in (list, dict, set):
! d[t] = _copy_with_constructor
! def _copy_with_copy_method(x):
return x.copy()
if PyStringMap is not None:
! d[PyStringMap] = _copy_with_copy_method
def _copy_inst(x):
More information about the Python-checkins
mailing list