mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-06 21:21:15 -07:00
Add future 0.18.2
This commit is contained in:
parent
08c8ee0774
commit
fa97d3f88d
210 changed files with 43159 additions and 0 deletions
48
lib/libpasteurize/fixes/fix_annotations.py
Normal file
48
lib/libpasteurize/fixes/fix_annotations.py
Normal file
|
@ -0,0 +1,48 @@
|
|||
u"""
|
||||
Fixer to remove function annotations
|
||||
"""
|
||||
|
||||
from lib2to3 import fixer_base
|
||||
from lib2to3.pgen2 import token
|
||||
from lib2to3.fixer_util import syms
|
||||
|
||||
warning_text = u"Removing function annotations completely."
|
||||
|
||||
def param_without_annotations(node):
|
||||
return node.children[0]
|
||||
|
||||
class FixAnnotations(fixer_base.BaseFix):
|
||||
|
||||
warned = False
|
||||
|
||||
def warn_once(self, node, reason):
|
||||
if not self.warned:
|
||||
self.warned = True
|
||||
self.warning(node, reason=reason)
|
||||
|
||||
PATTERN = u"""
|
||||
funcdef< 'def' any parameters< '(' [params=any] ')' > ['->' ret=any] ':' any* >
|
||||
"""
|
||||
|
||||
def transform(self, node, results):
|
||||
u"""
|
||||
This just strips annotations from the funcdef completely.
|
||||
"""
|
||||
params = results.get(u"params")
|
||||
ret = results.get(u"ret")
|
||||
if ret is not None:
|
||||
assert ret.prev_sibling.type == token.RARROW, u"Invalid return annotation"
|
||||
self.warn_once(node, reason=warning_text)
|
||||
ret.prev_sibling.remove()
|
||||
ret.remove()
|
||||
if params is None: return
|
||||
if params.type == syms.typedargslist:
|
||||
# more than one param in a typedargslist
|
||||
for param in params.children:
|
||||
if param.type == syms.tname:
|
||||
self.warn_once(node, reason=warning_text)
|
||||
param.replace(param_without_annotations(param))
|
||||
elif params.type == syms.tname:
|
||||
# one param
|
||||
self.warn_once(node, reason=warning_text)
|
||||
params.replace(param_without_annotations(params))
|
Loading…
Add table
Add a link
Reference in a new issue