def _generate_signature_token()

in packages/python-packages/apiview-stub-generator/apistub/nodes/_function_node.py [0:0]


    def _generate_signature_token(self, review_lines, review_line, use_multi_line):
        review_line.add_punctuation("(", has_suffix_space=False)
        # if multi-line, then def tokens are parent tokens
        # to be used later when adding children
        def_line = review_line

        # If multi-line, then each param line will be a child.
        if use_multi_line:
            # render errors directly below definition line
            for err in self.pylint_errors:
                err.generate_tokens(self.apiview, self.namespace_id)
            param_lines = self.children
            review_line = review_lines.create_review_line(line_id=self.namespace_id)
        else:
            param_lines = review_lines

        # If length of positional args is less than total args, then all items should end with commas
        # as end of args list hasn't been reached. Else, last item reached, so no comma.
        current_count = len(self.posargs)
        final_item = current_count >= self.arg_count

        review_line = self._generate_args_for_collection(
            self.posargs,
            review_lines=param_lines,
            review_line=review_line,
            use_multi_line=use_multi_line,
            final_item=final_item,
        )
        # add postional-only marker if any posargs
        if self.posargs:
            # add extra indent manually for multi-line args
            indent = ""
            if use_multi_line:
                indent = " " * 4
            review_line.add_text(f"{indent}/", has_suffix_space=False)
            review_line.add_punctuation(",")
            current_count += 1  # account for /

            review_line = self._reviewline_if_needed(
                param_lines, review_line, use_multi_line
            )

        current_count += len(self.args)
        final_item = current_count >= self.arg_count

        review_line = self._generate_args_for_collection(
            self.args,
            review_lines=param_lines,
            review_line=review_line,
            use_multi_line=use_multi_line,
            final_item=final_item,
        )
        current_count += 1
        final_item = current_count >= self.arg_count
        if self.special_vararg:
            self.special_vararg.generate_tokens(
                self.namespace_id,
                namespace=self.namespace,
                review_line=review_line,
                add_line_marker=use_multi_line,
                prefix="*",
            )
            if not final_item:
                review_line.add_punctuation(",")
            review_line = self._reviewline_if_needed(
                param_lines, review_line, use_multi_line
            )

        # add keyword argument marker
        if self.kwargs:
            # TODO: https://github.com/Azure/azure-sdk-tools/issues/8574
            indent = ""
            if use_multi_line:
                indent = " " * 4
            review_line.add_text(f"{indent}*", has_suffix_space=False)
            review_line.add_punctuation(",")
            review_line = self._reviewline_if_needed(
                param_lines, review_line, use_multi_line
            )

        current_count += len(self.kwargs)
        final_item = current_count >= self.arg_count
        review_line = self._generate_args_for_collection(
            self.kwargs,
            review_lines=param_lines,
            review_line=review_line,
            use_multi_line=use_multi_line,
            final_item=final_item,
        )
        if self.special_kwarg:
            # if **kwargs is present, then no comma needed
            self.special_kwarg.generate_tokens(
                self.namespace_id,
                self.namespace,
                review_line,
                add_line_marker=use_multi_line,
                prefix="**",
            )
            review_line = self._reviewline_if_needed(
                param_lines, review_line, use_multi_line
            )

        review_line.add_punctuation(")", has_suffix_space=False)

        if self.return_type:
            review_line.add_punctuation("->", has_prefix_space=True)
            # Add line marker id if signature is displayed in multi lines
            if use_multi_line:
                line_id = f"{self.namespace_id}.returntype"
                review_line.add_line_marker(line_id)
            review_line.add_type(
                self.return_type, apiview=self.apiview, has_suffix_space=False
            )

        review_line = self._reviewline_if_needed(
            param_lines, review_line, use_multi_line
        )

        # after children are added, add the review line
        def_line.add_children(self.children)
        def_line.line_id = self.namespace_id
        review_lines.append(def_line)