Python 2 removal and thg packaging status

Raphaël Gomès raphael.gomes at octobus.net
Wed Sep 1 08:57:03 UTC 2021


Hi there,

It's been a few months, and Python 3 Windows support is in much better 
shape than it used to. The CI is still flaky, but at least we've got a 
decent coverage of core Mercurial.

Greg, what's the status regarding thg packaging? Next release cycle 
(6.1) will remove Python 3 support and we need thg to get up to speed by 
then.

On 4/15/21 12:08 AM, Gregory Szorc wrote:
> My plan of attack was to implement support for packaging in PyOxidizer 
> and have thg (and Mercurial) use this functionality (with or without 
> the traditional PyOxidizer-building-the-binary approach). However, 
> I've been sidetracked by various things. Ugh, COVID.
>
> I'll try to take a look at what features I still need to implement in 
> PyOxidizer to proceed with this plan in the next week or so.
>
> On Mon, Apr 12, 2021 at 11:52 AM Augie Fackler <raf at durin42.com 
> <mailto:raf at durin42.com>> wrote:
>
>
>
>>     On Apr 3, 2021, at 6:34 PM, Matt Harbison <mharbison72 at gmail.com
>>     <mailto:mharbison72 at gmail.com>> wrote:
>>
>>     On Sat, Apr 3, 2021 at 12:18 PM Raphaël Gomès
>>     <raphael.gomes at octobus.net <mailto:raphael.gomes at octobus.net>> wrote:
>>>
>>>     Hello all,
>>>
>>>     As you all know, Mercurial's codebase is still burdened by Python 2
>>>     support. Patches still
>>>     need to be adapted for backwards compat, some Python niceties still
>>>     cannot be used,
>>>     and the Heptapod CI which is used on a near majority of the
>>>     patches we
>>>     collectively land
>>>     is still putting in double shifts as well.
>>>
>>>     At the last (virtual) sprint, everybody present agreed that the
>>>     time had
>>>     long passed to drop
>>>     Python 2 support, but that it couldn't be done until
>>>     TortoiseHg's Python
>>>     3 Windows packaging
>>>     story was straightened out. Where are we standing on the matter?
>>>     Are we
>>>     close?
>>
>>     I've been making progress on adding type hints and fixing issues in
>>     the TortoiseHg code.  The good news is there are ~13 files left that
>>     are excluded.  The bad news is I know for a fact that some of the
>>     *included* files have type mismatches that pytype isn't detecting.
>>     Some of this could be helped by moving to py3.  (e.g. pytype seems to
>>     not recognize `foo[b'bar']` as calling `__getitem__()` on an object,
>>     and treats it as returning Any, even when there's type info on the
>>     function. Subclassing typing.Mapping seems to help in some cases, but
>>     classes like `config.config` and `localrepo.localrepository` really
>>     can't subclass that because they have functions like `items()` with a
>>     signature that differs from the base class.  It also seems to
>>     struggle
>>     with @annotations.)  IDK for sure how far I am through adding type
>>     hints, because it's so non linear by nature.  If I had to guess,
>>     maybe
>>     50%?
>>
>>     Stepping back from the thg work, there's also core work that still
>>     needs to be done.  I just ran the tests locally and got 19 failures
>>     (excluding fixes I'm about the send), and skipping 114 which are
>>     mostly never going to work on Windows because of symlink, executable
>>     bit, casefolding, etc.  Some of those skips are test-convert-* other
>>     than git, so I assume that's a mess.  I don't care about that, but
>>     somebody might.  Of the failures, 4 are test-gendoc-*, so IDK how
>>     important those are.  Some of the other failures are... concerning.
>>     But they may have simple fixes.  There are runtime issues that
>>     are not
>>     detected by tests, such as
>>     https://bz.mercurial-scm.org/show_bug.cgi?id=6446
>>     <https://bz.mercurial-scm.org/show_bug.cgi?id=6446>and getting no
>>     output for commands that spin up a pager.  (I *think* the latter is
>>     limited to running `hg` instead of `hg.exe` in a venv, so maybe this
>>     is fixable by compiling wrapper.exe and not installing the `hg`
>>     script
>>     when running `setup.py` on Windows.)  I also need to finish up
>>     the py3
>>     porting series for mercurial_keyring, as that still has a few issues.
>>
>>     I think that it would be beneficial to have a beta period for thg
>>     where both py2 and py3 are built (like we did with hg), to find some
>>     of the issues that pytype isn't catching.  I'll probably regret this
>>     because IDK how long I can sustain the current pace, but if we
>>     can get
>>     the Windows and Mac packaging done for 5.8, maybe 5.8 can be the beta
>>     period and 5.9 is py3 only?  (It might be OK if the packaging isn't
>>     ready until 5.8.1, since Yuya seems to be OK with landing packaging
>>     and py3 fixes on stable if they aren't crazy.)  I think Greg made
>>     some
>>     MSI related enhancement to PyOxidizer recently, but IDK what the
>>     means
>>     for the state of things, or how far away a macOS *.app bundle is.
>>     Worst case scenario, I can build thg 5.9 with hg 5.8.2 if thg
>>     progress
>>     can't keep pace.  I just don't want that going on forever.
>
>     I think this plan is sensible and you should proceed with it.
>
>>
>>>     I am CC'ing Greg who proposed to help at the time, as well as
>>>     Matt, the
>>>     maintainer, since they
>>>     might know better than anyone where we're currently standing.
>>>
>>>     Thanks,
>>>     Raphaël
>>>
>>     _______________________________________________
>>     Mercurial-devel mailing list
>>     Mercurial-devel at mercurial-scm.org
>>     <mailto:Mercurial-devel at mercurial-scm.org>
>>     https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
>>     <https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.mercurial-scm.org/pipermail/mercurial-devel/attachments/20210901/01963475/attachment.html>


More information about the Mercurial-devel mailing list