code: def dehydrate(self, values):
          
  
          def dehydrate_(obj):
              try:
                  f = self.dehydration_functions[type(obj)]
              except KeyError:
                  pass
              else:
                  return f(obj)
              if obj is None:
                  return None
              elif isinstance(obj, bool):
                  return obj
              elif isinstance(obj, int):
                  if INT64_MIN <= obj <= INT64_MAX:
                      return obj
                  raise ValueError("Integer out of bounds (64-bit signed integer values only)")
              elif isinstance(obj, float):
                  return obj
              elif isinstance(obj, str):
                  return obj
              elif isinstance(obj, (bytes, bytearray)):  # order is important here - bytes must be checked after string
                  if self.supports_bytes:
                      return obj
                  else:
                      raise TypeError("This PackSteam channel does not support BYTES (consider upgrading to Neo4j 3.2+)")
              elif isinstance(obj, (list, map_type)):
                  return list(map(dehydrate_, obj))
              elif isinstance(obj, dict):
                  if any(not isinstance(key, str) for key in obj.keys()):
                      raise TypeError("Non-string dictionary keys are not supported")
                  return {key: dehydrate_(value) for key, value in obj.items()}
              else:
                  raise TypeError(obj)
  
          return tuple(map(dehydrate_, values))
docs: Convert native values into PackStream values.