| Update of /cvsroot/pywin32/pywin32/com/win32com/client
In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv18841/com/win32com/client
Modified Files:
      Tag: py3k
	build.py 
Log Message:
merge datetime changes from trunk (and other misc trunk changes)
Index: build.py
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32com/client/build.py,v
retrieving revision 1.31.2.9
retrieving revision 1.31.2.10
diff -C2 -d -r1.31.2.9 -r1.31.2.10
*** build.py	25 Jan 2009 04:52:20 -0000	1.31.2.9
--- build.py	27 Jan 2009 07:55:31 -0000	1.31.2.10
***************
*** 24,27 ****
--- 24,28 ----
  from pywintypes import TimeType
  import winerror
+ import datetime
  
  # A string ending with a quote can not be safely triple-quoted.
***************
*** 558,568 ****
  
    if inOut & pythoncom.PARAMFLAG_FHASDEFAULT:
!     # hack for Unicode until it repr's better.
      val = defArgVal[2]
      if type(val) is TimeType:
        year=val.year; month=val.month; day=val.day; hour=val.hour; minute=val.minute; second=val.second; msec=val.msec
        return "pywintypes.Time((%(year)d, %(month)d, %(day)d, %(hour)d, %(minute)d, %(second)d,0,0,0,%(msec)d))" % locals()
!     else:
!       return repr(val)
    return None
  
--- 559,573 ----
  
    if inOut & pythoncom.PARAMFLAG_FHASDEFAULT:
!     # times need special handling...
      val = defArgVal[2]
+     if isinstance(val, datetime.datetime):
+       # VARIANT <-> SYSTEMTIME conversions always lose any sub-second
+       # resolution, so just use a 'timetuple' here.
+       return repr(tuple(val.utctimetuple()))
      if type(val) is TimeType:
+       # must be the 'old' pywintypes time object...
        year=val.year; month=val.month; day=val.day; hour=val.hour; minute=val.minute; second=val.second; msec=val.msec
        return "pywintypes.Time((%(year)d, %(month)d, %(day)d, %(hour)d, %(minute)d, %(second)d,0,0,0,%(msec)d))" % locals()
!     return repr(val)
    return None
  
 |