code: def param(
      validator=None,
      range=None,
      type=None,
      desc=None,
      metadata=None,
      *args,
      **kwargs,
  ):
      """
      A parameter inside a TaskParameters class.
  
      See TaskParameters for more information.
  
      :param validator: A validator or validators list.
          Any validator from attr.validators is applicable.
  
      :param range: The legal values range of the parameter.
          A tuple (min_limit, max_limit). None for no limitation.
  
      :param type: The type of the parameter.
          Supported types are int, str and float. None to place no limit of the type
  
      :param desc: A string description of the parameter, for future use.
  
      :param metadata: A dictionary metadata of the parameter, for future use.
  
      :param args: Additional arguments to pass to attr.attrib constructor.
      :param kwargs: Additional keyword arguments to pass to attr.attrib constructor.
  
      :return: An attr.attrib instance to use with TaskParameters class.
  
      Warning: Do not create an immutable param using args or kwargs. It will cause
      connect method of the TaskParameters class to fail.
      """
  
      metadata = metadata or {}
      metadata["desc"] = desc
  
      validator = _canonize_validator(validator)
  
      if type:
          validator.append(
              validators.optional(validators.instance_of(type))
          )
  
      if range:
          validator.append(range_validator(*range))
  
      return attr.ib(
          validator=validator,
          type=type,
          metadata=metadata,
          *args,
          **kwargs,
      )
  
file_path: clearml/clearml/task_parameters.py
imports: import six
  import attr
  from attr import validators
label_desc: Use image node_id 3 for calling a global function with example usage: param(validator, range, type, desc, metadata) and returns: attr