def parse_decorators(self, definition, content):
        lines = content.split('\n')
        excluded_decorators = ['classmethod', 'staticmethod', 'property']
        decorators = []

        for line in lines:
            if line == definition:
                break

            match = re.findall(r'^\s*@([a-zA-Z0-9_\.]*)(\(.*\)|$)', line)

            if len(match) == 0:
                continue

            decorator = match[0][0]
            if decorator in excluded_decorators:
                continue

            decorators.append(decorator)

        return decorators
Called when the application model is changed that
dataset/ETHPy150Open adambullmer/sublime_docblockr_python/parsers/parser.py/PythonParser.parse_decorators--crossover with--dataset/ETHPy150Open williballenthin/INDXParse/MFTView.py/DiskGeometryWarningPanel._updated_volume_offset