"""Docstring.""" # leading comment def f(): NO = '' SPACE = ' ' DOUBLESPACE = ' ' t = leaf.type p = leaf.parent # trailing comment v = leaf.value if t in ALWAYS_NO_SPACE: pass if t == token.COMMENT: # another trailing comment return DOUBLESPACE assert p is not None, f"INTERNAL ERROR: hand-made leaf without parent: {leaf!r}" prev = leaf.prev_sibling if not prev: prevp = preceding_leaf(p) if not prevp or prevp.type in OPENING_BRACKETS: return NO if prevp.type == token.EQUAL: if prevp.parent and prevp.parent.type in { syms.typedargslist, syms.varargslist, syms.parameters, syms.arglist, syms.argument, }: return NO elif prevp.type == token.DOUBLESTAR: if prevp.parent and prevp.parent.type in { syms.typedargslist, syms.varargslist, syms.parameters, syms.arglist, syms.dictsetmaker, }: return NO ############################################################################### # SECTION BECAUSE SECTIONS ############################################################################### def g(): NO = '' SPACE = ' ' DOUBLESPACE = ' ' t = leaf.type p = leaf.parent v = leaf.value # Comment because comments if t in ALWAYS_NO_SPACE: pass if t == token.COMMENT: return DOUBLESPACE # Another comment because more comments assert p is not None, f'INTERNAL ERROR: hand-made leaf without parent: {leaf!r}' prev = leaf.prev_sibling if not prev: prevp = preceding_leaf(p) if not prevp or prevp.type in OPENING_BRACKETS: # Start of the line or a bracketed expression. # More than one line for the comment. return NO if prevp.type == token.EQUAL: if prevp.parent and prevp.parent.type in { syms.typedargslist, syms.varargslist, syms.parameters, syms.arglist, syms.argument, }: return NO # output """Docstring.""" # leading comment def f(): NO = "" SPACE = " " DOUBLESPACE = " " t = leaf.type p = leaf.parent # trailing comment v = leaf.value if t in ALWAYS_NO_SPACE: pass if t == token.COMMENT: # another trailing comment return DOUBLESPACE assert p is not None, f"INTERNAL ERROR: hand-made leaf without parent: {leaf!r}" prev = leaf.prev_sibling if not prev: prevp = preceding_leaf(p) if not prevp or prevp.type in OPENING_BRACKETS: return NO if prevp.type == token.EQUAL: if prevp.parent and prevp.parent.type in { syms.typedargslist, syms.varargslist, syms.parameters, syms.arglist, syms.argument, }: return NO elif prevp.type == token.DOUBLESTAR: if prevp.parent and prevp.parent.type in { syms.typedargslist, syms.varargslist, syms.parameters, syms.arglist, syms.dictsetmaker, }: return NO ############################################################################### # SECTION BECAUSE SECTIONS ############################################################################### def g(): NO = "" SPACE = " " DOUBLESPACE = " " t = leaf.type p = leaf.parent v = leaf.value # Comment because comments if t in ALWAYS_NO_SPACE: pass if t == token.COMMENT: return DOUBLESPACE # Another comment because more comments assert p is not None, f"INTERNAL ERROR: hand-made leaf without parent: {leaf!r}" prev = leaf.prev_sibling if not prev: prevp = preceding_leaf(p) if not prevp or prevp.type in OPENING_BRACKETS: # Start of the line or a bracketed expression. # More than one line for the comment. return NO if prevp.type == token.EQUAL: if prevp.parent and prevp.parent.type in { syms.typedargslist, syms.varargslist, syms.parameters, syms.arglist, syms.argument, }: return NO