Skip to content

Commit

Permalink
contrib: use raw string for a regular expression literal that contain…
Browse files Browse the repository at this point in the history
… backslashes in signet/miner

Running the miner under python < 3.11 triggered a DeprecationWarning (hidden by
default on those versions). Running under python >= 3.12 it generates a
SyntaxWarning, which is now shown by default.

The change is useful for future-proofing the code base, since future python
versions will start to exit with a runtime exception.

Command to see the warning at runtime under python3.11 (DeprecationWarning,
needs "-Walways"):
    $ python3.11 -Walways ./contrib/signet/miner
    <BASE>/contrib/signet/miner:33: DeprecationWarning: invalid escape sequence '\d'
      RE_MULTIMINER = re.compile("^(\d+)(-(\d+))?/(\d+)$")
    2023-11-15 16:02:49 ERROR Must specify command

Command to see the warning at runtime under python3.12 (SyntaxWarning, no
modifiers needed):
    $ python3.12 ./contrib/signet/miner
    <BASE>/contrib/signet/miner:33: SyntaxWarning: invalid escape sequence '\d'
      RE_MULTIMINER = re.compile("^(\d+)(-(\d+))?/(\d+)$")
    2023-11-15 16:03:00 ERROR Must specify command

References:

From https://docs.python.org/3.8/library/re.html :
    Regular expressions use the backslash character ('\') [...]. This collides
    with Python’s usage of the same character for the same purpose in string
    literals; [...]

    Also, please note that any invalid escape sequences in Python’s usage of the
    backslash in string literals now generate a DeprecationWarning and in the
    future this will become a SyntaxError.

    The solution is to use Python’s raw string notation for regular expression
    patterns;
  • Loading branch information
muxator committed Nov 15, 2023
1 parent a73715e commit 10d99c2
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion contrib/signet/miner
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ logging.basicConfig(

SIGNET_HEADER = b"\xec\xc7\xda\xa2"
PSBT_SIGNET_BLOCK = b"\xfc\x06signetb" # proprietary PSBT global field holding the block being signed
RE_MULTIMINER = re.compile("^(\d+)(-(\d+))?/(\d+)$")
RE_MULTIMINER = re.compile(r"^(\d+)(-(\d+))?/(\d+)$")

def create_coinbase(height, value, spk):
cb = CTransaction()
Expand Down

0 comments on commit 10d99c2

Please sign in to comment.