Mercurial > hg
annotate contrib/casesmash.py @ 52088:51057ab0dffa stable
py-3-13: stabilize the docstring output across all supported Python versions
Python 3.13 now trims indents from docstrings at compilation time
(to save space in .pyc), so all of our helptext is affected.
The indentation has never served a user-facing purpose and was more here
because nobody cared enough to remove it: we gain some screen space this way.
Rather than undo the transformation (which isn't really possible since the
transform also deletes leading/trailing whitespace), we align the behavior
of older Python versions with that of 3.13.
Unfortunately, this means breaking some of the translations. I've only
touched the ones that need to work for some tooling tests to pass, but
I do not have the time to fix the rest of them across all languages, since
they cannot be done in an automated way. i18n updates have been basically
abandonned for a good while now, hopefully someone cares enough to bring them
back.
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Thu, 24 Oct 2024 15:23:52 +0200 |
parents | 6000f5b25c9b |
children |
rev | line source |
---|---|
28351
42a7301fb4d5
casesmash: use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
19378
diff
changeset
|
1 import __builtin__ |
42a7301fb4d5
casesmash: use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
19378
diff
changeset
|
2 import os |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
28351
diff
changeset
|
3 from mercurial import util |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
28351
diff
changeset
|
4 |
14730 | 5 |
6 def lowerwrap(scope, funcname): | |
7 f = getattr(scope, funcname) | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
28351
diff
changeset
|
8 |
14730 | 9 def wrap(fname, *args, **kwargs): |
10 d, base = os.path.split(fname) | |
11 try: | |
12 files = os.listdir(d or '.') | |
19378
9de689d20230
cleanup: drop unused variables and an unused import
Simon Heimberg <simohe@besonet.ch>
parents:
19322
diff
changeset
|
13 except OSError: |
14730 | 14 files = [] |
15 if base in files: | |
16 return f(fname, *args, **kwargs) | |
17 for fn in files: | |
18 if fn.lower() == base.lower(): | |
19 return f(os.path.join(d, fn), *args, **kwargs) | |
20 return f(fname, *args, **kwargs) | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
28351
diff
changeset
|
21 |
14730 | 22 scope.__dict__[funcname] = wrap |
23 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
28351
diff
changeset
|
24 |
14730 | 25 def normcase(path): |
26 return path.lower() | |
27 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
28351
diff
changeset
|
28 |
14730 | 29 os.path.normcase = normcase |
30 | |
31 for f in 'file open'.split(): | |
32 lowerwrap(__builtin__, f) | |
33 | |
34 for f in "chmod chown open lstat stat remove unlink".split(): | |
35 lowerwrap(os, f) | |
36 | |
37 for f in "exists lexists".split(): | |
38 lowerwrap(os.path, f) | |
39 | |
40 lowerwrap(util, 'posixfile') |