Hi, I've been trying update one of our libraries which uses that uses a GenerateDS generated module to Python 3 (it saved so much time when originally writing this - thank you). I had a couple of problems.
First was running under Python3 due to a bytes/string mismatch in process_includes.py: resolve_ref returned a string if the reference was a local file and bytes if it was loaded from a remote URL. I fixed this by patching it as --- a/process_includes.py Thu Nov 17 09:53:36 2016 -0800 +++ b/process_includes.py Tue Nov 22 11:19:43 2016 +0000 @@ -208,7 +208,7 @@ else: if os.path.exists(locn): infile = open(locn) - content = infile.read() + content = infile.read().encode() infile.close() params.parent_url = locn params.base_url = os.path.split(locn)[0] @@ -240,11 +240,7 @@ save_base_url = params.base_url string_content = resolve_ref(child, params, options) if string_content is not None: - if sys.version_info.major == 2: - root = etree.fromstring(string_content, base_url=params.base_url) - else: - root = etree.fromstring( - string_content.encode(), base_url=params.base_url) + root = etree.fromstring(string_content, base_url=params.base_url) roots.append(root) for child1 in root: if not isinstance(child1, etree._Comment): The second was that the generated code used the renamed StringIO library in one place. I fixed this as --- a/generateDS.py Thu Nov 17 09:53:36 2016 -0800 +++ b/generateDS.py Tue Nov 22 11:19:43 2016 +0000 @@ -5761,8 +5761,12 @@ def parseString(inString, silence=False): - from StringIO import StringIO -%(preserve_cdata_tags)s doc = parsexml_(StringIO(inString), parser) + if sys.version_info.major == 2: + from StringIO import StringIO as IOBuffer + else: + from io import BytesIO as IOBuffer + +%(preserve_cdata_tags)s doc = parsexml_(IOBuffer(inString), parser) rootNode = doc.getroot() rootTag, rootClass = get_root_tag(rootNode) if rootClass is None: When I made these changes I was able to get our libraries tests to pass under Python 2 and 3 with the generated code. Hope this is useful. Let me know if there's anything I can do to improve these changes or make them easier to integrate. Best Regards, Ian ------------------------------------------------------------------------------ _______________________________________________ generateds-users mailing list generateds-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/generateds-users