Produce the __repr__() string based on the configured parameters.
(self)
| 827 | return self |
| 828 | |
| 829 | def __str__(self) -> str: |
| 830 | """Produce the __repr__() string based on the configured parameters.""" |
| 831 | obj = self._obj |
| 832 | to_inspect = self._to_inspect |
| 833 | additional_kw = self._additional_kw |
| 834 | omit_kwarg = self._omit_kwarg |
| 835 | |
| 836 | missing = object() |
| 837 | |
| 838 | pos_args = [] |
| 839 | kw_args: _collections.OrderedDict[str, Any] = ( |
| 840 | _collections.OrderedDict() |
| 841 | ) |
| 842 | vargs = None |
| 843 | for i, insp in enumerate(to_inspect): |
| 844 | try: |
| 845 | spec = compat.inspect_getfullargspec(insp.__init__) # type: ignore[misc] # noqa: E501 |
| 846 | except TypeError: |
| 847 | continue |
| 848 | else: |
| 849 | default_len = len(spec.defaults) if spec.defaults else 0 |
| 850 | if i == 0: |
| 851 | if spec.varargs: |
| 852 | vargs = spec.varargs |
| 853 | if default_len: |
| 854 | pos_args.extend(spec.args[1:-default_len]) |
| 855 | else: |
| 856 | pos_args.extend(spec.args[1:]) |
| 857 | else: |
| 858 | kw_args.update( |
| 859 | [(arg, missing) for arg in spec.args[1:-default_len]] |
| 860 | ) |
| 861 | |
| 862 | if default_len: |
| 863 | assert spec.defaults |
| 864 | kw_args.update( |
| 865 | [ |
| 866 | (arg, default) |
| 867 | for arg, default in zip( |
| 868 | spec.args[-default_len:], spec.defaults |
| 869 | ) |
| 870 | ] |
| 871 | ) |
| 872 | output: List[str] = [] |
| 873 | |
| 874 | output.extend(repr(getattr(obj, arg, None)) for arg in pos_args) |
| 875 | |
| 876 | if vargs is not None and hasattr(obj, vargs): |
| 877 | output.extend([repr(val) for val in getattr(obj, vargs)]) |
| 878 | |
| 879 | for arg, defval in kw_args.items(): |
| 880 | if arg in omit_kwarg: |
| 881 | continue |
| 882 | try: |
| 883 | val = getattr(obj, arg, missing) |
| 884 | if val is not missing and val != defval: |
| 885 | output.append("%s=%r" % (arg, val)) |
| 886 | except Exception: |