Re: Python 3.x progress

Peter Cock <[email protected]>
Newsgroups gmane.comp.python.reportlab.user
Message-ID <CAKVJ-_7Na6b+pDPjb0vgkC+vRGNA6JSJHghHHS0RZqMrPU38-Q@mail.gmail.com>
On Wed, Jan 8, 2014 at 11:07 AM, Andy Robinson <[email protected]> wrote:
>
> Dinu, thanks for this.  It's probably "too late" since the code is now
> working 100% on both Python 2.7 and Python 3.3
>
> I should have announced this at the weekend, but we have also removed
> the temporary dependency on pyRXP which we introduced during the port.
>   All pararaphs are now parsed by html.parser.HTMLParser in the
> standard library, with xmllib gone forever.
>
> This week and next are rather crazy with year-end reporting projects
> for clients, but in the second half of the month we will switch this
> to default somehow, create the 'whant's new' page, create alpha
> releases and start updating the docs.  For now, if anyone wants to
> pull and update to the py33 branch, we would welcome feedback.
>
> - Andy

Hi Andy,

Is this expected to work on Mac OS X yet? Or, does it require a
specific revision of Python 3.3 - as I'm running into some problems:

Mac OS X, using hg from Mercurial-2.8.2-py2.7-macosx10.9.zip
and Apple Xcode from App Store, using a self compiled Python
version 3.3.0 under $HOME/bin,

$ hg clone ssh://[email protected]/rptlab/reportlab
$ cd reportlab
$ hg checkout py33
$ hg log -b py33 | head
changeset:   3972:b5870c0f3eb4
branch:      py33
tag:         tip
user:        robin
date:        Wed Jan 08 17:56:06 2014 +0000
summary:     patches from Matthias Klose

$ python3 setup.py build
...
$ python3 setup.py test
...
error: invalid command 'test'

Hmm. Pressing on,

$ python3 -c "import reportlab; print(reportlab.__file__);
print(reportlab.__version__)"
/Users/peterjc/lib/python3.3/site-packages/reportlab/__init__.py
 $Id$

Actually installing it,

$ python3 setup.py install
$ cd
$ python3 -c "import reportlab; print(reportlab.__file__);
print(reportlab.__version__)"
/Users/peterjc/lib/python3.3/site-packages/reportlab/__init__.py
 $Id$

So far so good, although there are some unicode related glitches
causing failures in the Biopython unit tests using ReportLab, which
I will look into (they may be problems on the Biopython side).

However, there is a problem trying to use Python interactively:

$ python3
Python 3.3.0 (default, Sep 29 2012, 19:41:44)
[GCC 4.2.1 Compatible Apple Clang 4.0 ((tags/Apple/clang-421.0.60))] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import reportlab
>>> reportlab.__version__
Segmentation fault: 11


Weird. Also,

$ python3
Python 3.3.0 (default, Sep 29 2012, 19:41:44)
[GCC 4.2.1 Compatible Apple Clang 4.0 ((tags/Apple/clang-421.0.60))] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import reportlab
>>> import sys
Segmentation fault: 11

Clearly something is badly amiss. There are some potentially
important warnings from the compilation step, including type
conversion (ssize_t, integers and longs), plus:

/Users/peterjc/repositories/reportlab/src/rl_addons/renderPM/gt1/gt1-parset1.c:604:28:
warning: for loop has empty body [-Wempty-body]
        for (i = 0; i < size; i++);
                                  ^
/Users/peterjc/repositories/reportlab/src/rl_addons/renderPM/gt1/gt1-parset1.c:604:28:
note: put the semicolon on a separate line to silence this warning

That looks like a real bug in the debug function print_string, possible
fix at end of email.

More worrying - perhaps (header problem?):

/Users/peterjc/repositories/reportlab/src/rl_addons/renderPM/gt1/gt1-namecontext.c:100:9:
warning: implicitly declaring library function 'strlen' with
      type 'unsigned long (const char *)'
  len = strlen (s);
        ^
/Users/peterjc/repositories/reportlab/src/rl_addons/renderPM/gt1/gt1-namecontext.c:100:9:
note: please include the header <string.h> or explicitly
      provide a declaration for 'strlen'
/Users/peterjc/repositories/reportlab/src/rl_addons/renderPM/gt1/gt1-namecontext.c:102:3:
warning: implicitly declaring library function 'memcpy' with
      type 'void *(void *, const void *, unsigned long)'
  memcpy (new, s, len);
  ^
/Users/peterjc/repositories/reportlab/src/rl_addons/renderPM/gt1/gt1-namecontext.c:102:3:
note: please include the header <string.h> or explicitly
      provide a declaration for 'memcpy'


This is odd, since it should be included via
src/rl_addons/renderPM/gt1/gt1-misc.h

#ifdef macintosh
#include <string.h> /* for memcpy() */
#endif

However, manually adding the include does not alter the
segmentation fault.

Any thoughts? Do you want the full build output?

Regards,

Peter

--

Trivial proposed fix to the print_string function,

$ hg diff src/rl_addons/renderPM/gt1/gt1-parset1.c
diff -r b5870c0f3eb4 src/rl_addons/renderPM/gt1/gt1-parset1.c
--- a/src/rl_addons/renderPM/gt1/gt1-parset1.c Wed Jan 08 17:56:06 2014 +0000
+++ b/src/rl_addons/renderPM/gt1/gt1-parset1.c Thu Jan 09 11:22:44 2014 +0000
@@ -601,7 +601,7 @@
  start = str->start;
  size = str->size;

- for (i = 0; i < size; i++);
+ for (i = 0; i < size; i++)
  printf ("%c", start[i]);
 }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.