code: def infer_shapes_path(
      model_path: str,
      output_path: str = "",
      check_type: bool = False,
      strict_mode: bool = False,
      data_prop: bool = False,
  ) -> None:
      """
      Take model path for shape_inference same as infer_shape; it support >2GB models
      Directly output the inferred model to the output_path; Default is the original model path
      """
      if isinstance(model_path, ModelProto):
          raise TypeError(
              "infer_shapes_path only accepts model Path (String),"
              "you can use infer_shapes for the ModelProto."
          )
      # Directly output the inferred model into the specified path, return nothing
      if isinstance(model_path, str):
          # If output_path is not defined, default output_path would be the original model path
          if output_path == "":
              output_path = model_path
          C.infer_shapes_path(
              model_path,
              output_path,
              check_type,
              strict_mode,
              data_prop,
          )
      else:
          raise TypeError(
              "infer_shapes_path only accepts model path (String), "
              f"incorrect type: {type(model_path)}"
          )
  
file_path: catboost/contrib/libs/onnx/onnx/shape_inference.py
imports: from typing import Dict, List, Optional, Sequence, Union
  import onnx
  from onnx.onnx_cpp2py_export import shape_inference
  from onnx import AttributeProto, FunctionProto, ModelProto, TypeProto
label_desc: Use image node_id 2 for calling a global function with example usage: infer_shapes_path(model_path, output_path, check_type, strict_mode, data_prop) without return types