Differences between revisions 1 and 12 (spanning 11 versions)
Revision 1 as of 2014-02-03 21:26:12
Size: 948
Editor: AugieFackler
Comment:
Revision 12 as of 2016-03-01 05:45:11
Size: 1528
Editor: Mathiasdm
Comment: Rename test.
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
This is a status page for keeping track of what needs to be done to make progress on Mercurial on Python 3. Nobody is actively working on this - AugieFackler works on it sporadically, and would be happy to see patches on this topic flagged with Py3 on the mailing list. = Python 3 =
To see a summary of our current position on Python 3 support, see SupportedPythonVersions#Python_3.x_support.
Line 5: Line 6:
This is a status page for keeping track of what needs to be done to make progress on Mercurial on Python 3.
Line 6: Line 8:
The most significant problem at the moment is some lingering cyclic imports in the codebase: Nobody is actively working on this - AugieFackler works on it sporadically, and would be happy to see patches on this topic flagged with Py3 on the mailing list. The work in progress is visible at http://hg.durin42.com/hg-py3k/ - note that ChangesetEvolution is in use on that repository, and so hashes will change over time as the patchset is rebased.
Line 8: Line 10:
==== cmdutil -> subrepo -> cmdutil ==== == What Works ==
run-tests.py can pass its own tests (test-run-tests.py and test-run-tests.t) under 2.6, 2.7 and 3.5.
Line 10: Line 13:
The easiest fix for this would be to move hgsubrepo to a new file, and then fix the registration mechanism to be dependency injected somehow.

==== mercurial.repoview -> mercurial.revset -> mercurial.repoview ====


==== mercurial.fileset -> mercurial.merge -> mercurial.subrepo -> mercurial.match -> mercurial.fileset ====
If hgsubrepo moved out of subrepo, this would also be resolve.d


==== mercurial.filemerge -> mercurial.match -> mercurial.fileset -> mercurial.merge -> mercurial.filemerge ====
== Next Steps ==
 * Eliminate all Python 3 compatibility warnings from [[https://selenic.com/repo/hg/file/default/tests/test-check-py3-compat.t|test-check-py3-compat.t]]
 * Get the entire codebase working with 'from future import absolute_import'
  * This requires fixing some cyclic imports. See [[https://selenic.com/repo/hg/file/default/tests/test-check-module-imports.t|test-check-module-imports.t]] for currently whitelisted cyclic imports.
 * Make existing modules at least parse with Python 3 (still some Python 2.x syntax)
 * Remove 2to3 and have the source be 2.6/2.7/3.5 compatible
 * Conditionalize imports for renamed modules
 * Get the C extensions compiling correctly in Python 3
 * Start adding b'' and u'' everywhere and using 'from future import unicode_literals'

Note:

This page is primarily intended for developers of Mercurial.

Python 3

To see a summary of our current position on Python 3 support, see SupportedPythonVersions#Python_3.x_support.

This is a status page for keeping track of what needs to be done to make progress on Mercurial on Python 3.

Nobody is actively working on this - AugieFackler works on it sporadically, and would be happy to see patches on this topic flagged with Py3 on the mailing list. The work in progress is visible at http://hg.durin42.com/hg-py3k/ - note that ChangesetEvolution is in use on that repository, and so hashes will change over time as the patchset is rebased.

1. What Works

run-tests.py can pass its own tests (test-run-tests.py and test-run-tests.t) under 2.6, 2.7 and 3.5.

2. Next Steps

  • Eliminate all Python 3 compatibility warnings from test-check-py3-compat.t

  • Get the entire codebase working with 'from future import absolute_import'
  • Make existing modules at least parse with Python 3 (still some Python 2.x syntax)
  • Remove 2to3 and have the source be 2.6/2.7/3.5 compatible
  • Conditionalize imports for renamed modules
  • Get the C extensions compiling correctly in Python 3
  • Start adding b and u everywhere and using 'from future import unicode_literals'

Python3 (last edited 2023-02-19 16:08:38 by AntonShestakov)