[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