code: def conclude_assumptions(
      values: list[int | float],
  ) -> dict[str, bool]:
      """Conclude some sympy assumptions based on the examples in values.
  
      Support assumptions are: positive, negative, nonpositive, nonnegative,
      zero, nonzero, odd, even, real.
      """
      if not values:
          return {}
  
      assumptions = {}
      assumptions["real"] = all(
          isinstance(v, (float, int)) for v in values
      )
      if not assumptions["real"]:
          return assumptions
  
      assumptions["integer"] = all(isinstance(v, int) for v in values)
      if all(v > 0 for v in values):
          assumptions["positive"] = True
      if all(v < 0 for v in values):
          assumptions["negative"] = True
      if all(v >= 0 for v in values):
          assumptions["nonnegative"] = True
      if all(v <= 0 for v in values):
          assumptions["nonpositive"] = True
      if all(v == 0 for v in values):
          assumptions["zero"] = True
      if all(v != 0 for v in values):
          assumptions["nonzero"] = True
  
      if not assumptions["integer"]:
          return assumptions
  
      if all(v % 2 == 0 for v in values):
          assumptions["even"] = True
      if all(v % 2 == 1 for v in values):
          assumptions["odd"] = True
  
      return assumptions
  
file_path: nni/nni/nas/profiler/pytorch/utils/_expression.py
imports: from __future__ import annotations
  import logging
  import traceback
  from typing import Any
  from nni.mutable import MutableExpression, Categorical, Numerical
label_desc: Use image node_id 1 for calling a global function with example usage: conclude_assumptions(values) and returns: assumptions, dict, assumptions, assumptions