Returns a an arg list string, e.g. `(_foo:=23)` for a func. :param func is a FunctionMetadata object :param usage is 'call', 'call_display' or 'signature'
(self, func, usage)
| 712 | ) |
| 713 | |
| 714 | def _arg_list(self, func, usage): |
| 715 | """Returns a an arg list string, e.g. `(_foo:=23)` for a func. |
| 716 | |
| 717 | :param func is a FunctionMetadata object |
| 718 | :param usage is 'call', 'call_display' or 'signature' |
| 719 | |
| 720 | """ |
| 721 | template = { |
| 722 | "call": self.call_arg_style, |
| 723 | "call_display": self.call_arg_display_style, |
| 724 | "signature": self.signature_arg_style, |
| 725 | }[usage] |
| 726 | args = func.args() |
| 727 | if not template: |
| 728 | return "()" |
| 729 | elif usage == "call" and len(args) < 2: |
| 730 | return "()" |
| 731 | elif usage == "call" and func.has_variadic(): |
| 732 | return "()" |
| 733 | multiline = usage == "call" and len(args) > self.call_arg_oneliner_max |
| 734 | max_arg_len = max(len(a.name) for a in args) if multiline else 0 |
| 735 | args = (self._format_arg(template, arg, arg_num + 1, max_arg_len) for arg_num, arg in enumerate(args)) |
| 736 | if multiline: |
| 737 | return "(" + ",".join("\n " + a for a in args if a) + "\n)" |
| 738 | else: |
| 739 | return "(" + ", ".join(a for a in args if a) + ")" |
| 740 | |
| 741 | def _format_arg(self, template, arg, arg_num, max_arg_len): |
| 742 | if not template: |
no test coverage detected