code: def add_basic_configvars():
      config.add(
          "floatX",
          "Default floating-point precision for python casts.\n"
          "\n"
          "Note: float16 support is experimental, use at your own risk.",
          EnumStr("float64", ["float32", "float16"]),
          # TODO: see gh-4466 for how to remove it.
          in_c_key=True,
      )
  
      config.add(
          "warn_float64",
          "Do an action when a tensor variable with float64 dtype is created.",
          EnumStr("ignore", ["warn", "raise", "pdb"]),
          in_c_key=False,
      )
  
      config.add(
          "pickle_test_value",
          "Dump test values while pickling model. "
          "If True, test values will be dumped with model.",
          BoolParam(True),
          in_c_key=False,
      )
  
      config.add(
          "cast_policy",
          "Rules for implicit type casting",
          EnumStr(
              "custom",
              ["numpy+floatX"],
              # The 'numpy' policy was originally planned to provide a
              # smooth transition from numpy. It was meant to behave the
              # same as numpy+floatX, but keeping float64 when numpy
              # would. However the current implementation of some cast
              # mechanisms makes it a bit more complex to add than what
              # was expected, so it is currently not available.
              # numpy,
          ),
      )
  
      config.add(
          "deterministic",
          "If `more`, sometimes we will select some implementation that "
          "are more deterministic, but slower.  Also see "
          "the dnn.conv.algo* flags to cover more cases.",
          EnumStr("default", ["more"]),
          in_c_key=False,
      )
  
      config.add(
          "device",
          (
              "Default device for computations. only cpu is supported for now"
          ),
          DeviceParam("cpu", mutable=False),
          in_c_key=False,
      )
  
      config.add(
          "force_device",
          "Raise an error if we can't use the specified device",
          BoolParam(False, mutable=False),
          in_c_key=False,
      )
  
      config.add(
          "conv__assert_shape",
          "If True, AbstractConv* ops will verify that user-provided"
          " shapes match the runtime shapes (debugging option,"
          " may slow down compilation)",
          BoolParam(False),
          in_c_key=False,
      )
  
      config.add(
          "print_global_stats",
          "Print some global statistics (time spent) at the end",
          BoolParam(False),
          in_c_key=False,
      )
  
      # This flag determines whether or not to raise error/warning message if
      # there is a CPU Op in the computational graph.
      config.add(
          "assert_no_cpu_op",
          "Raise an error/warning if there is a CPU op in the computational graph.",
          EnumStr("ignore", ["warn", "raise", "pdb"], mutable=True),
          in_c_key=False,
      )
      config.add(
          "unpickle_function",
          (
              "Replace unpickled PyTensor functions with None. "
              "This is useful to unpickle old graphs that pickled"
              " them when it shouldn't"
          ),
          BoolParam(True),
          in_c_key=False,
      )
  
imports: import errno
  import logging
  import os
  import platform
  import re
  import socket
  import sys
  import textwrap
  import numpy
  from setuptools._distutils.spawn import find_executable
  import pytensor
  from pytensor.configparser import BoolParam, ConfigParam, DeviceParam, EnumStr, FloatParam, IntParam, StrParam, _create_default_config
  from pytensor.utils import LOCAL_BITWIDTH, PYTHON_INT_BITWIDTH, call_subprocess_Popen, maybe_add_to_os_environ_pathlist, output_subprocess_Popen
label_desc: Use image node_id 16 for calling a global function with example usage: add_basic_configvars() without return types