17db96d56Sopenharmony_ci"""Fixer that turns 1L into 1, 0755 into 0o755. 27db96d56Sopenharmony_ci""" 37db96d56Sopenharmony_ci# Copyright 2007 Georg Brandl. 47db96d56Sopenharmony_ci# Licensed to PSF under a Contributor Agreement. 57db96d56Sopenharmony_ci 67db96d56Sopenharmony_ci# Local imports 77db96d56Sopenharmony_cifrom ..pgen2 import token 87db96d56Sopenharmony_cifrom .. import fixer_base 97db96d56Sopenharmony_cifrom ..fixer_util import Number 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ciclass FixNumliterals(fixer_base.BaseFix): 137db96d56Sopenharmony_ci # This is so simple that we don't need the pattern compiler. 147db96d56Sopenharmony_ci 157db96d56Sopenharmony_ci _accept_type = token.NUMBER 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_ci def match(self, node): 187db96d56Sopenharmony_ci # Override 197db96d56Sopenharmony_ci return (node.value.startswith("0") or node.value[-1] in "Ll") 207db96d56Sopenharmony_ci 217db96d56Sopenharmony_ci def transform(self, node, results): 227db96d56Sopenharmony_ci val = node.value 237db96d56Sopenharmony_ci if val[-1] in 'Ll': 247db96d56Sopenharmony_ci val = val[:-1] 257db96d56Sopenharmony_ci elif val.startswith('0') and val.isdigit() and len(set(val)) > 1: 267db96d56Sopenharmony_ci val = "0o" + val[1:] 277db96d56Sopenharmony_ci 287db96d56Sopenharmony_ci return Number(val, prefix=node.prefix) 29