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