Submitter | phabricator |
---|---|
Date | March 30, 2020, 1:30 a.m. |
Message ID | <differential-rev-PHID-DREV-iu7w2fyewhztmxnewpiw-req@mercurial-scm.org> |
Download | mbox | patch |
Permalink | /patch/45945/ |
State | New |
Headers | show |
Comments
marmoute added a comment. marmoute accepted this revision. Urg, this make me sad, but seems a reasonable way to move forward. REPOSITORY rHG Mercurial CHANGES SINCE LAST ACTION https://phab.mercurial-scm.org/D8347/new/ REVISION DETAIL https://phab.mercurial-scm.org/D8347 To: indygreg, #hg-reviewers, marmoute Cc: marmoute, mercurial-devel
Herald added a subscriber: mercurial-patches. This revision now requires changes to proceed. baymax added a comment. baymax requested changes to this revision. There seems to have been no activities on this Diff for the past 3 Months. By policy, we are automatically moving it out of the `need-review` state. Please, move it back to `need-review` without hesitation if this diff should still be discussed. :baymax:need-review-idle: REPOSITORY rHG Mercurial CHANGES SINCE LAST ACTION https://phab.mercurial-scm.org/D8347/new/ REVISION DETAIL https://phab.mercurial-scm.org/D8347 To: indygreg, #hg-reviewers, marmoute, baymax Cc: mercurial-patches, marmoute, mercurial-devel
Patch
diff --git a/mercurial/encoding.py b/mercurial/encoding.py --- a/mercurial/encoding.py +++ b/mercurial/encoding.py @@ -290,6 +290,42 @@ for k, v in os.environ.items() # re-exports } +# Environment variables are normalized to uppercase on Windows. So wrap +# in a custom type to emulate what the standard library does. +if pycompat.ispy3 and pycompat.iswindows: + + class UppercaseDict(dict): + def __init__(self, values): + super(UppercaseDict, self).__init__() + for k, v in values.items(): + self[k] = v + + def __setitem__(self, key, value): + super(UppercaseDict, self).__setitem__(key.upper(), value) + + def __getitem__(self, key): + return super(UppercaseDict, self).__getitem__(key.upper()) + + def __delitem__(self, key): + super(UppercaseDict, self).__delitem__(key.upper()) + + def __contains__(self, key): + return super(UppercaseDict, self).__contains__(key.upper()) + + def get(self, key, *args): + return super(UppercaseDict, self).get(key.upper(), *args) + + def pop(self, key, *args): + return super(UppercaseDict, self).pop(key.upper(), *args) + + def update(self): + raise NotImplementedError + + def setdefault(self, key, *args): + return super(UppercaseDict, self).setdefault(key.upper(), *args) + + environ = UppercaseDict(environ) + if pycompat.ispy3: # os.getcwd() on Python 3 returns string, but it has os.getcwdb() which # returns bytes.