docs: def capability(cap, *wrap_exceptions):
  		""" Return a decorator, that registers function as capability. Also, all specified exceptions are
  		caught and instead of them the :class:`.WClientCapabilityError` exception is raised
  
  		:param cap: target function capability (may be a str or :class:`.WNetworkClientCapabilities` class )
  		:param wrap_exceptions: exceptions to caught
  
  		:return: decorator
  		"""
  		if isinstance(cap, WNetworkClientCapabilities) is True:
  			cap = cap.value
  		elif isinstance(cap, str) is False:
  			raise TypeError('Invalid capability type')
  
  		def first_level_decorator(decorated_function):
  			def second_level_decorator(original_function, *args, **kwargs):
  
  				if len(wrap_exceptions) == 0:
  					return original_function(*args, **kwargs)
  				try:
  					return original_function(*args, **kwargs)
  				except wrap_exceptions as e:
  					raise WClientCapabilityError(
  						'Error during "%s" capability execution' % cap
  					) from e
  			result_fn = decorator(second_level_decorator)(decorated_function)
  			result_fn.__capability_name__ = cap
  			return result_fn
  		return first_level_decorator