class_docstr: A generic Estimator to train using any algorithm object (with an ``algorithm_arn``).
  
  The Algorithm can be your own, or any Algorithm from AWS
  Marketplace that you have a valid subscription for. This class will perform
  client-side validation on all the inputs.
docstr: Placeholder docstring.
code: def _hyperparameter_range_and_class(
      self, parameter_type, hyperparameter
  ):
      """Placeholder docstring."""
      if parameter_type in self._hyperpameters_with_range:
          range_name = parameter_type + "ParameterRangeSpecification"
  
      parameter_class = None
      parameter_range = None
  
      if parameter_type in ("Integer", "Continuous"):
          # Integer and Continuous are handled the same way. We get the min and max values
          # and just create an Instance of Parameter. Note that the range is optional for all
          # the Parameter Types.
          if parameter_type == "Integer":
              parameter_class = sagemaker.parameter.IntegerParameter
          else:
              parameter_class = sagemaker.parameter.ContinuousParameter
  
          if "Range" in hyperparameter:
              min_value = parameter_class.cast_to_type(
                  hyperparameter["Range"][range_name]["MinValue"]
              )
              max_value = parameter_class.cast_to_type(
                  hyperparameter["Range"][range_name]["MaxValue"]
              )
              parameter_range = parameter_class(min_value, max_value)
  
      elif parameter_type == "Categorical":
          parameter_class = sagemaker.parameter.CategoricalParameter
          if "Range" in hyperparameter:
              values = hyperparameter["Range"][range_name]["Values"]
              parameter_range = (
                  sagemaker.parameter.CategoricalParameter(values)
              )
      elif parameter_type == "FreeText":
          pass
      else:
          raise ValueError(
              "Invalid Hyperparameter type: %s. Valid ones are:"
              "(Integer, Continuous, Categorical, FreeText)"
              % parameter_type
          )
  
      return parameter_class, parameter_range
  
imports: from __future__ import absolute_import
  from typing import Optional, Union, Dict, List
  import sagemaker
  import sagemaker.parameter
  from sagemaker import vpc_utils
  from sagemaker.deserializers import BytesDeserializer
  from sagemaker.deprecations import removed_kwargs
  from sagemaker.estimator import EstimatorBase
  from sagemaker.inputs import TrainingInput, FileSystemInput
  from sagemaker.serializers import IdentitySerializer
  from sagemaker.transformer import Transformer
  from sagemaker.predictor import Predictor
  from sagemaker.session import Session
  from sagemaker.workflow.entities import PipelineVariable
  from sagemaker.workflow.pipeline_context import runnable_by_pipeline
  from sagemaker.utils import format_tags, Tags
  from sagemaker.workflow import is_pipeline_variable
label_desc: Use image node_id 17 for calling the AlgorithmEstimator obj's underlying member method code with example usage: obj._hyperparameter_range_and_class(parameter_type, hyperparameter) and returns: parameter_class,  parameter_range