PHP 8.2.30
Preview: fix_annotations.py Size: 1.54 KB
//opt/alt/python37/lib/python3.7/site-packages/libpasteurize/fixes/fix_annotations.py

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))

Directory Contents

Dirs: 1 × Files: 23

Name Size Perms Modified Actions
- drwxr-xr-x 2024-03-03 23:10:26
Edit Download
1.68 KB lrw-r--r-- 2018-10-25 22:21:01
Edit Download
1.24 KB lrw-r--r-- 2018-10-25 22:21:01
Edit Download
676 B lrw-r--r-- 2018-10-25 22:21:01
Edit Download
663 B lrw-r--r-- 2018-10-25 22:21:01
Edit Download
1.54 KB lrw-r--r-- 2018-10-25 22:21:01
Edit Download
904 B lrw-r--r-- 2018-10-25 22:21:01
Edit Download
2.61 KB lrw-r--r-- 2018-10-25 22:21:01
Edit Download
438 B lrw-r--r-- 2018-10-25 22:21:01
Edit Download
1.42 KB lrw-r--r-- 2018-10-25 22:21:01
Edit Download
873 B lrw-r--r-- 2018-10-25 22:21:01
Edit Download
4.83 KB lrw-r--r-- 2018-10-25 22:21:01
Edit Download
8.38 KB lrw-r--r-- 2018-10-25 22:21:01
Edit Download
5.85 KB lrw-r--r-- 2018-10-25 22:21:01
Edit Download
551 B lrw-r--r-- 2018-10-25 22:21:01
Edit Download
3.18 KB lrw-r--r-- 2018-10-25 22:21:01
Edit Download
888 B lrw-r--r-- 2018-10-25 22:21:01
Edit Download
1.20 KB lrw-r--r-- 2018-10-25 22:21:01
Edit Download
401 B lrw-r--r-- 2018-10-25 22:21:01
Edit Download
1.07 KB lrw-r--r-- 2018-10-25 22:21:01
Edit Download
1.20 KB lrw-r--r-- 2018-10-25 22:21:01
Edit Download
835 B lrw-r--r-- 2018-10-25 22:21:01
Edit Download
5.81 KB lrw-r--r-- 2018-10-25 22:21:01
Edit Download
3.63 KB lrw-r--r-- 2018-10-25 22:21:01
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).