On Tue, Sep 9, 2008 at 12:42 PM, Thomas Heller <[EMAIL PROTECTED]> wrote: >>>>> I have comitted an implementation as svn revision 407. >>>> >>>> I took a look. Much better. :-) >>>> >>>> Just one further question: is there any reason why you have the code >>>> inside the generated module to raise an error if the generated number >>>> does not match when you are already performing that check after you >>>> import the module successfully? I think you can quite safely remove >>>> that code. In other words, all you want in the generated code is >>>> >>>> __codegen_version__ = 42 >>>> >>>> Then in the importing code >>>> >>>> module = __import__() >>>> if module.__codegen_version__ != comtypes.tools.codegenerator.version: >>>> raise ImportError("version mismatch") >>>> >>> >>> I think that the version check inside the modules MUST be done. >>> >>> The only purpose of the version checks from outside, in >>> comtypes.client._generate, >>> is to catch cases where wrappers are already present in comtypes.gen, but >>> from a previous >>> version that has not inserted version checks into the modules. Since >>> comtypes 0.5.1 will >>> probably be the last release that does not generate version checks, this >>> code can probably go. >> >> Ah, I see that you are intending to keep the code in the generated >> module and I was intending to keep the code outside the generated >> module. I think we both agree that only one check is needed. :-) The >> only reason I would keep the code outside the generated module is >> "safety" (that code is completely under your control) and "clarity" >> (the code that performs the check is "in your face" when you are >> looking at the code that does the import) -- but I have no difficulty >> with your plans either if you prefer. > > I agree that version checking outside would be nicer. I tried to hack > the comtypes.client._generate module and the codegenerator to implement this, > but there is one place where an outside version check does not work. For > example, the InternetExplorer typelib generated module contains this > statement: > import comtypes.gen._00020430_0000_0000_C000_000000000046_0_2_0 > which imports the stdole2.tlb typelib wrapper code. So this import is not > done with some code in the _generate module and cannot be checked from there.
Good point. So adding the code to the generated module makes the most sense. So I guess you'll remove the code outside of the module, then. >> BTW, the code that checks for the existence of the __codegen_version__ >> attribute will already confirm anything earlier than 0.5.1 anyway >> since that attribute is new, right? > > Yes (if I understand you correctly; I'm not a native english speaker) Really? I would never have guessed. Your English is perfectly understandable to me. > it would invalidate modules generated with earlier codegenerator versions. > And this is the only place where an additional outside check makes sense > when otherwise only inside checks were used. But this problem will > go away after the next comtypes version anyway so maybe the check > can be removed. Yes, it can be removed completely -- but only after this release is considered the baseline and support for all older versions is no longer being considered. So it may be there for a while.... > -- > Thanks, > Thomas > > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > comtypes-users mailing list > comtypes-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/comtypes-users > ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ comtypes-users mailing list comtypes-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/comtypes-users