code: def encode_abi(self, types: Iterable[TypeStr], args: Iterable[Any]) -> bytes:
          
          encoders = [
              self._registry.get_encoder(type_str)
              for type_str in types
          ]
  
          encoder = TupleEncoder(encoders=encoders)
  
          return encoder(args)
docs: Encodes the python values in ``args`` as a sequence of binary values of
          the ABI types in ``types`` via the head-tail mechanism.
  
          :param types: An iterable of string representations of the ABI types
              that will be used for encoding e.g.  ``('uint256', 'bytes[]',
              '(int,int)')``
          :param args: An iterable of python values to be encoded.
  
          :returns: The head-tail encoded binary representation of the python
              values in ``args`` as values of the ABI types in ``types``.