I'm using the ClearCase Automation Library and I'm getting different behaviors between Python (via the PyWin32 library) and PERL (via the OLE library). In the examples below, I'm trying to get a list of views and purposely ensuring that I am not in a directory associated with a view. So, starting in new command window and in the same non-view directory, when I execute the PERL example from IBM , I get a list of views (command is "perl C:\Python31\view.pl"). When I execute the Python script from the same directory and with command of "C:\Python31\python C:\Python31\comtest.py", I get the following exception:
Traceback (most recent call last): File "C:\Python31\comtest.py", line 13, in <module> allViews = ccApp.Views("False", "local") File "C:\Python31\lib\site-packages\win32com\client\__init__.py", line 463, in __getattr__ return self._ApplyTypes_(*args) File "C:\Python31\lib\site-packages\win32com\client\__init__.py", line 456, in _ApplyTypes_ self._oleobj_.InvokeTypes(dispid, 0, wFlags, retType, argTypes, *args), pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'ClearCase.Application.1', 'No view is set, and current working directory is not in a view.\r\n', None, 0, -2147 467259), None) So, is there a difference/limitation using the COM interface via Python windows extensions and the OLE interface in PERL? =============================================================== use Win32::OLE; $DEBUG = 1; print "Instantiating CAL CC\n" if $DEBUG; my $cal_cc = Win32::OLE->new('ClearCase.Application') or die "Could not create the ClearCase Application object\n"; $cclsview = $cal_cc->Views("False","local"); $Views_Entries = $cclsview->Count; print "nbViews $Views_Entries\n"; $Views_Index = 1; while ($Views_Index <= $Views_Entries) { print "Processing View entry $CS_Index\n" if $DEBUG; $View = $cclsview->Item($Views_Index); $ViewName = $View->TagName; $ViewIsSnapshot = $View->IsSnapShot; print "View $ViewName $ViewIsSnapshot\n"; $Views_Index++; } And use the following Python (ver 3.1, using Python extensions version 214) script, import win32com.client import sys ccApp = win32com.client.Dispatch("ClearCase.Application") allViews = ccApp.Views("False", "local") vob = ccApp.VOB("\MYVOB") print ("TagName = ", vob.TagName) print ("IsMounted = ", vob.IsMounted) view = ccApp.View print ("Tag = ", view.TagName) list = view.ConfigSpec
_______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32