view 2to3-done.txt @ 5840:b68d3d8531d5 maint-1.6 1.6.1

Changes to prepare for 1.6.1 release.
author John Rouillard <rouilj@ieee.org>
date Wed, 10 Jul 2019 10:35:29 -0400
parents bc250b4fb4c5
children
line wrap: on
line source

CAN'T VERIFY

./roundup/backends/back_mysql.py

TODO

./roundup/cgi/exceptions.py
./roundup/cgi/form_parser.py
./roundup/cgi/MultiMapping.py
./roundup/cgi/PageTemplates/__init__.py
./roundup/cgi/PageTemplates/Expressions.py
./roundup/cgi/PageTemplates/GlobalTranslationService.py
./roundup/cgi/PageTemplates/MultiMapping.py
./roundup/cgi/PageTemplates/PageTemplate.py
./roundup/cgi/PageTemplates/PathIterator.py
./roundup/cgi/PageTemplates/PythonExpr.py
./roundup/cgi/PageTemplates/TALES.py
./roundup/cgi/TAL/__init__.py
./roundup/cgi/TAL/DummyEngine.py
./roundup/cgi/TAL/HTMLParser.py
./roundup/cgi/TAL/HTMLTALParser.py
./roundup/cgi/TAL/markupbase.py
./roundup/cgi/TAL/TALDefs.py
./roundup/cgi/TAL/TALGenerator.py
./roundup/cgi/TAL/talgettext.py
./roundup/cgi/TAL/TALInterpreter.py
./roundup/cgi/TAL/TALParser.py
./roundup/cgi/TAL/TranslationContext.py
./roundup/cgi/TAL/XMLParser.py
./roundup/cgi/templating.py
./roundup/cgi/TranslationService.py
./roundup/cgi/wsgi_handler.py
./roundup/cgi/zLOG.py
./roundup/cgi/ZTUtils/__init__.py
./roundup/cgi/ZTUtils/Batch.py
./roundup/cgi/ZTUtils/Iterator.py
./roundup/configuration.py
./roundup/date.py
./roundup/dist/__init__.py
./roundup/dist/command/__init__.py
./roundup/dist/command/bdist_rpm.py
./roundup/dist/command/build.py
./roundup/dist/command/build_doc.py
./roundup/dist/command/build_scripts.py
./roundup/exceptions.py
./roundup/hyperdb.py
./roundup/i18n.py
./roundup/init.py
./roundup/install_util.py
./roundup/instance.py
./roundup/mailer.py
./roundup/mailgw.py
./roundup/msgfmt.py
./roundup/password.py
./roundup/rfc2822.py
./roundup/roundupdb.py
./roundup/scripts/__init__.py
./roundup/scripts/roundup_admin.py
./roundup/scripts/roundup_demo.py
./roundup/scripts/roundup_gettext.py
./roundup/scripts/roundup_mailgw.py
./roundup/scripts/roundup_server.py
./roundup/scripts/roundup_xmlrpc_server.py
./roundup/security.py
./roundup/support.py
./roundup/token.py
./roundup/version_check.py
./roundup/xmlrpc.py
./run_tests.py
./scripts/copy-user.py
./scripts/imapServer.py
./scripts/import_sf.py
./scripts/schema_diagram.py
./setup.py
./share/roundup/templates/classic/detectors/messagesummary.py
./share/roundup/templates/classic/detectors/nosyreaction.py
./share/roundup/templates/classic/detectors/statusauditor.py
./share/roundup/templates/classic/detectors/userauditor.py
./share/roundup/templates/classic/initial_data.py
./share/roundup/templates/classic/schema.py
./share/roundup/templates/minimal/detectors/userauditor.py
./share/roundup/templates/minimal/initial_data.py
./share/roundup/templates/minimal/schema.py
./test/__init__.py
./test/benchmark.py
./test/db_test_base.py
./test/memorydb.py
./test/mocknull.py
./test/session_common.py
./test/test_actions.py
./test/test_anydbm.py
./test/test_cgi.py
./test/test_dates.py
./test/test_hyperdbvals.py
./test/test_indexer.py
./test/test_locking.py
./test/test_mailer.py
./test/test_mailgw.py
./test/test_mailsplit.py
./test/test_memorydb.py
./test/test_multipart.py
./test/test_mysql.py
./test/test_postgresql.py
./test/test_rfc2822.py
./test/test_schema.py
./test/test_security.py
./test/test_sqlite.py
./test/test_templating.py
./test/test_textfmt.py
./test/test_token.py
./test/test_userauditor.py
./test/test_xmlrpc.py
./test.py
./tools/fixroles.py
./tools/load_tracker.py
./tools/migrate-queries.py
./tools/pygettext.py
./frontends/ZRoundup/__init__.py
./frontends/ZRoundup/ZRoundup.py


DONE

./doc/conf.py
./roundup/admin.py
./roundup/backends/__init__.py
./roundup/backends/back_anydbm.py
./roundup/backends/back_postgresql.py
./roundup/backends/back_sqlite.py
./roundup/backends/indexer_common.py
./roundup/backends/indexer_dbm.py
./roundup/backends/indexer_rdbms.py
./roundup/backends/locking.py
./roundup/backends/portalocker.py
./roundup/backends/rdbms_common.py
./roundup/backends/sessions_dbm.py
./roundup/backends/sessions_rdbms.py
./roundup/cgi/accept_language.py
./roundup/cgi/actions.py
./roundup/cgi/cgitb.py


NOTHING DONE

./roundup/__init__.py
./roundup/actions.py
./roundup/anypy/__init__.py
./roundup/backends/blobfiles.py
./roundup/backends/indexer_xapian.py
./roundup/cgi/__init__.py
./roundup/cgi/apache.py
./roundup/cgi/client.py

Joseph S. Myers notes:
>The key difficulty is undoubtedly dealing with the changes to string types
>- combined with how the extensibility of Roundup means people will have
>Python code in their instances (detectors, etc.), both directly and
>embedded in HTML - which passes strings to Roundup interfaces and gets
>strings from Roundup interfaces.
>
>Roundup makes heavy use of string objects that really are text strings -
>logically, sequences of Unicode code points.  Right now, those strings,
>with Python 2, are str objects, encoded in UTF-8.  This means that
>people's Python code in their instances, running under Python 2, will
>expect str objects encoded in UTF-8 (and if their code is e.g. generating
>HTML text encoded in UTF-8 to be sent to the user, it never actually has
>to deal with the encoding explicitly, just passes the text through).
>(The experimental Jinja2 templating engine then explicitly converts those
>UTF-8 encoded str objects to unicode objects because that's what Jinja2
>expects to deal with.)
>
>It's quite plausible people's code in their instances will work fine with
>Python 3 if it gets str objects for both Python 2 and Python 3 (UTF-8
>encoded str for Python 2, ordinary Unicode string objects for Python 3).
>It's more likely to break if it gets Python 2 unicode objects, although
>using such objects in Python 2 seems to be how a lot of people do their
>porting to Python 3.  And certainly if when an instance is running with
>Python 3, it gets an object that's not a native sequence of Unicode code
>points, but has each UTF-8 byte as a separate element of the str object,
>things will break.
>
>(I have an instance that uses Unicode collation via PyICU on data from
>Roundup, for example.  That works fine with UTF-8 str objects in Python 2,
>would work fine with Python 2 unicode objects though I don't use those,
>works fine with Python 3 str objects when used in their native way - the
>same code has a large part also used outside of Roundup that works with
>both Python 2 and Python 3.  Actually, I'd like to have a way to make
>Roundup's built-in sorting of database objects use Unicode collation, or
>otherwise have a way of computing a sort key that isn't simply naming a
>particular property as the sort key, but that's another matter.)
>
>But Roundup *also* has strings that are sequences of bytes - String()
>database fields, which can be both.  Many are data displayed directly on
>web pages and edited there by the user - those are ordinary strings (UTF-8
>at present).  But FileClass objects have a String() content property which
>is arbitrary binary data such as an attached file - which logically should
>appear to the user as a bytes object in Python 3.  Except that some
>FileClass objects use that data to store text (e.g. the msg class in the
>classic scheme).  So you definitely need a Bytes() alternative to String()
>fields, for binary data, and may or may not also need separate text and
>binary variants of FileClass.
>
>I've found that for text-heavy code, always using str objects for text and
>having them be normal Unicode strings in Python 3 but UTF-8-encoded in
>Python 2 works well with the vast bulk of code being encoding-agnostic and
>just passing the strings around.  Obviously things are different for the
>sort of code that mixes text and binary data - that is, the sort of thing
>you describe as systems programs in your porting HOWTO.  I don't think
>Roundup really is such a systems program, except in limited areas such as
>dealing with attached files.

>For network data, Roundup is already careful about character sets -
>converting to UTF-8 on input (see e.g. "if client charset is different
>from the storage charset, recode form fields" in cgi/client.py, or the
>code in mailgw.py that checks the encoding of each MIME part and converts
>to UTF-8).  Presumably in such cases the decoding would remain unchanged
>for Python 3, but the encoding should be a function that's a no-op for
>Python 3 to get native str objects there (and likewise for the places
>where data is turned into Python 2 unicode objects, processed and
>converted back to UTF-8 - both steps should be no-ops for Python 3).
>
>For reading templates, database string data, etc., Roundup knows the
>storage format is UTF-8 so has no explicit conversions - those are places
>that will need to be found and made to decode as UTF-8 for Python 3 (or do
>a no-op for Python 2).

Roundup Issue Tracker: http://roundup-tracker.org/