]> git.madduck.net Git - etc/vim.git/commitdiff

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Uppercase digits in hex literals (#530)
authorZsolt Dollenstein <zsol.zsol@gmail.com>
Tue, 25 Sep 2018 15:01:56 +0000 (16:01 +0100)
committerŁukasz Langa <lukasz@langa.pl>
Tue, 25 Sep 2018 15:01:56 +0000 (16:01 +0100)
README.md
black.py
tests/data/numeric_literals.py
tests/data/numeric_literals_py2.py

index 244f60d776c06df92ac15f02bc3dc4ecf43471f6..a23cb61f359bcf1a8d8924baad676bfd6e578800 100644 (file)
--- a/README.md
+++ b/README.md
@@ -374,7 +374,8 @@ an adoption helper, avoid using this for new projects.
 
 ### Numeric literals
 
-*Black* standardizes most numeric literals to use lowercase letters: `0xab`
+*Black* standardizes most numeric literals to use lowercase letters for the
+syntactic parts and uppercase letters for the digits themselves: `0xAB`
 instead of `0XAB` and `1e10` instead of `1E10`. Python 2 long literals are
 styled as `2L` instead of `2l` to avoid confusion between `l` and `1`. In
 Python 3.6+, *Black* adds underscores to long numeric literals to aid
index f2c450c33876a615472e5d28ec641cc1a4ccfb83..522474123092e46c6d3d3bf26b7fe0211141d634 100644 (file)
--- a/black.py
+++ b/black.py
@@ -2542,9 +2542,13 @@ def normalize_numeric_literal(leaf: Leaf, allow_underscores: bool) -> None:
     in Python 2 long literals), and long number literals are split using underscores.
     """
     text = leaf.value.lower()
-    if text.startswith(("0o", "0x", "0b")):
-        # Leave octal, hex, and binary literals alone.
+    if text.startswith(("0o", "0b")):
+        # Leave octal and binary literals alone.
         pass
+    elif text.startswith("0x"):
+        # Change hex literals to upper case.
+        before, after = text[:2], text[2:]
+        text = f"{before}{after.upper()}"
     elif "e" in text:
         before, after = text.split("e")
         sign = ""
index b812ebfa82429f7c7a47da12c41633d139f8c4e6..9a49dfa32c91ce254df25b7b33a6d98affabb24c 100644 (file)
@@ -34,7 +34,7 @@ x = 123_456_789.123_456_789e123_456_789
 x = 123_456_789e123_456_789
 x = 123_456_789j
 x = 123_456_789.123_456_789j
-x = 0xb1acc
+x = 0xB1ACC
 x = 0b1011
 x = 0o777
 x = 0.000_000_006
index d2db7b0ccc474f785c6eb515c3ae8ad29e9f02f4..8f85c43f2653cf009c772522cb281bad9e73ba25 100644 (file)
@@ -3,6 +3,7 @@
 x = 123456789L
 x = 123456789l
 x = 123456789
+x = 0xb1acc
 
 # output
 
@@ -12,3 +13,4 @@ x = 123456789
 x = 123456789L
 x = 123456789L
 x = 123456789
+x = 0xB1ACC