Hello, everyone:
Work has gone well in porting adodbapi to work in Python 3.0. The result
should be posted in a beta version in pywin32 v.213 real soon now.
I have patched the standards compliance test as discussed earlier in this
forum.
There is one last error I am getting, but I believe that should be left
intact, as a protection when porting to 3.0.
The PEP says:
>
> Binary(string)
>
> This function constructs an object capable of holding a
> binary (long) string value.
Given that Python 3.0 no longer uses a string for this purpose, the routine
should really accept an object of data type "byte".
My 3.0 ready code looks like this:
<Python>
> if sys.version[0] == '3':
> makeByteBuffer = bytes
> else:
> makeByteBuffer = buffer
def Binary(aString):
> """This function constructs an object capable of holding a binary
> (long) string value. """
> return makeByteBuffer(aString)
</Python>
The python 3.0 built in function "bytes" insists that, if it is fed a
unicode string, it must also have an encoding.
So when I run the compliance test, I get:
> C:\adodbapi_225\adodbapi30\tests>test_adodbapi_dbapi20.py
> This module depends on the dbapi20 compliance tests created by Stuart
> Bishop
> (see db-sig mailing list history for info)
> adodbapi v2.2.5
> Tested with dbapi20 1.1.1.1.2.1
> ...Testing MS-SQL login...
> ..E.................................
> ======================================================================
> ERROR: test_Binary (__main__.test_adodbapi)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "C:\adodbapi_225\adodbapi30\tests\dbapi20.py", line 835, in
> test_Binary
> b = self.driver.Binary('Something')
> File "C:\adodbapi_225\adodbapi30\adodbapi.py", line 972, in Binary
> return makeByteBuffer(aString)
> TypeError: string argument without an encoding
>
> ----------------------------------------------------------------------
> Ran 36 tests in 14.208s
>
> FAILED (errors=1)
>
IMHO, in Python 3.0, this is exactly what should happen, so that the
programmer will be aware that the interface has changed.
What do you all think?
--
Vernon Cole
_______________________________________________
DB-SIG maillist - [email protected]
http://mail.python.org/mailman/listinfo/db-sig