text: # - Generated by tools/entrypoint_compiler.py: do not edit by hand
  """
  Transforms.BinNormalizer
  """
  
  import numbers
  
  from ..utils.entrypoints import EntryPoint
  from ..utils.utils import try_set, unlist
  
  
  def transforms_binnormalizer(
          data,
          output_data=None,
          model=None,
          column=None,
          num_bins=1024,
          fix_zero=True,
          max_training_examples=1000000000,
          **params):
      """
      **Description**
          The values are assigned into equidensity bins and a value is mapped
          to its bin_number/number_of_bins.
  
      :param column: New column definition(s) (optional form: name:src)
          (inputs).
      :param data: Input dataset (inputs).
      :param num_bins: Max number of bins, power of 2 recommended
          (inputs).
      :param fix_zero: Whether to map zero to zero, preserving sparsity
          (inputs).
      :param max_training_examples: Max number of examples used to
          train the normalizer (inputs).
      :param output_data: Transformed dataset (outputs).
      :param model: Transform model (outputs).
      """
  
      entrypoint_name = 'Transforms.BinNormalizer'
      inputs = {}
      outputs = {}
  
      if column is not None:
          inputs['Column'] = try_set(
              obj=column,
              none_acceptable=True,
              is_of_type=list,
              is_column=True)
      if data is not None:
          inputs['Data'] = try_set(
              obj=data,
              none_acceptable=False,
              is_of_type=str)
      if num_bins is not None:
          inputs['NumBins'] = try_set(
              obj=num_bins,
              none_acceptable=True,
              is_of_type=numbers.Real)
      if fix_zero is not None:
          inputs['FixZero'] = try_set(
              obj=fix_zero,
              none_acceptable=True,
              is_of_type=bool)
      if max_training_examples is not None:
          inputs['MaxTrainingExamples'] = try_set(
              obj=max_training_examples,
              none_acceptable=True,
              is_of_type=numbers.Real)
      if output_data is not None:
          outputs['OutputData'] = try_set(
              obj=output_data,
              none_acceptable=False,
              is_of_type=str)
      if model is not None:
          outputs['Model'] = try_set(
              obj=model,
              none_acceptable=False,
              is_of_type=str)
  
      input_variables = {
          x for x in unlist(inputs.values())
          if isinstance(x, str) and x.startswith("$")}
      output_variables = {
          x for x in unlist(outputs.values())
          if isinstance(x, str) and x.startswith("$")}
  
      entrypoint = EntryPoint(
          name=entrypoint_name, inputs=inputs, outputs=outputs,
          input_variables=input_variables,
          output_variables=output_variables)
      return entrypoint
  