Cool - that's what I love about the open source community. You can see
the code, fix the code, and share the fix.
Massa, Harald Armin wrote:
Grant,
for your problems with the assertion there is a patch...
-
-----------------------------------------------------------------------------------------------
in Version 213 of pywin32 within
win32com\client\genpy.py
on line 814, within def do_gen_file_header(self): there is the assertion:
# You must provide a file correctly configured for writing unicode.
# We assert this is it may indicate somewhere in pywin32 that needs
# upgrading.
assert self.file.encoding, self.file
But using makepy.py via
makepy.py -v -o OLE_Excel11.py "Microsoft Excel 11.0 Object Library"
this assertion fails ... as self.file.encoding is None
The culprit is makepy.py itself:
starting at line 367ff there is:
if outputName is not None:
path = os.path.dirname(outputName)
if path is not '' and not os.path.exists(path):
os.makedirs(path)
f = open(outputName, "w")
else:
f = None
and this "f" will have encoding=None
I patched this to:
if outputName is not None:
path = os.path.dirname(outputName)
if path is not '' and not os.path.exists(path):
os.makedirs(path)
#~ f = open(outputName, "w")
import codecs
f= codecs.open(outputName, mode="w",encoding="mbcs")
else:
f = None
use codecs to create a file with mbcs encoding. After this, I get a
nice create ole_excel11.py file, with the good line
# -*- coding: mbcs -*-
at the beginning.
I propose to put this fix into makepy.py for everybody; (any rights
you need are hereby granted)
-
-----------------------------------------------------------------------------------------------
(of which you could not know; I guess it got lost somewhere between
Europe and Australia, where Mark Hammond, the master of pywin32, was
before)
Now I have put out this patch to the public, for others to enjoy
untill it may or may not be worked into makepy.py
best wishes,
Harald
On Thu, Aug 27, 2009 at 1:51 PM, Grant Paton-Simpson <gr...@p-s.co.nz
<mailto:gr...@p-s.co.nz>> wrote:
Hi Harald,
I managed to make a file containing everything I needed. NB the
command
is makepy.py not makepy. There was, however, an issue with genpy.py
asserting there had to be a self.file.encoding even though I couldn't
see where that was set. I temporarily commented that assert out.
File
creation then worked. I then took out the small portion of the
script I
needed - all the data type constants - and put those in my own
module. Success!
For the benefit of others, the reason you don't have to specify the
library e.g. ActiveX 2.8, is that you will be prompted for it via
a pop
up GUI.
All the best, Grant
Massa, Harald Armin wrote:
> Grant,
>
> that is possible. Just read the makepy.py script within
> win32com.client, and you will find that someway down main() there is
>
> ---------
> GenerateFromTypeLibSpec(arg, f, verboseLevel = verboseLevel,
> bForDemand = bForDemand, bBuildHidden = hiddenSpec)
> ---------
>
> which does this.
>
> BUT, for "static" usage of makepy-COM-Mappings I suggest to make
> makepy output it's results in a named file
>
> makepy -o ADO28.py
>
> and furtheron import that ADO28 file to access the variables. That
> does also work with Excel and Word, and I am used to
>
> import ExcelXX as Excel
> ec=Excel.constants
>
> and further on us ec.* for excel constants.
>
> Best wishes,
>
> HArald
>
> On Thu, Aug 27, 2009 at 2:51 AM, Grant Paton-Simpson
<gr...@p-s.co.nz <mailto:gr...@p-s.co.nz>
> <mailto:gr...@p-s.co.nz <mailto:gr...@p-s.co.nz>>> wrote:
>
> Hi,
>
> Basically I want to have an installation package
automatically run the
> COM MakePy utility for the ADO 2.8 library. I believe I need
to do
> this
> so that constants like win32com.client.constants.adTinyInt
will be
> available when my application (http://www.sofastatistics.com)
> connects to
> MS Access and MS SQL Server databases.
>
> Ideally I would have a line doing something like this:
>
> win32com.runmakepy("Microsoft ActiveX Data Objects 2.8
Library (2.8)")
>
> Is it possible to do this programmatically?
>
>
> All the best, Grant
> _______________________________________________
> python-win32 mailing list
> python-win32@python.org <mailto:python-win32@python.org>
<mailto:python-win32@python.org <mailto:python-win32@python.org>>
> http://mail.python.org/mailman/listinfo/python-win32
>
>
>
>
> --
> GHUM Harald Massa
> persuadere et programmare
> Harald Armin Massa
> Spielberger Straße 49
> 70435 Stuttgart
> 0173/9409607
> no fx, no carrier pigeon
> -
> LASIK good, steroids bad?
_______________________________________________
python-win32 mailing list
python-win32@python.org <mailto:python-win32@python.org>
http://mail.python.org/mailman/listinfo/python-win32
--
GHUM Harald Massa
persuadere et programmare
Harald Armin Massa
Spielberger Straße 49
70435 Stuttgart
0173/9409607
no fx, no carrier pigeon
-
LASIK good, steroids bad?
_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32