code: def parse_version_strs(
      lhs: str, rhs: str
  ) -> tuple[Iterable[int | str], Iterable[int | str]]:
      """
      Parse the version strings.
      """
  
      def _try_cast(val: str) -> int | str:
          val = val.strip()
          try:
              m = match("(\\d+)(.*)", val)
              if m is not None:
                  val = m.groups()[0]
                  return int(val)
              return val
          except ValueError:
              return val
  
      # remove git version suffixes if present
      lhs = lhs.split("+", 1)[0]
      rhs = rhs.split("+", 1)[0]
  
      # parse the version strings in this basic way without `packaging` package
      lhs_ = map(_try_cast, lhs.split("."))
      rhs_ = map(_try_cast, rhs.split("."))
      return lhs_, rhs_
  
imports: from __future__ import annotations
  import enum
  import functools
  import os
  import pdb
  import re
  import sys
  import warnings
  from collections.abc import Callable, Collection, Hashable, Mapping
  from functools import partial, wraps
  from importlib import import_module
  from pkgutil import walk_packages
  from pydoc import locate
  from re import match
  from types import FunctionType, ModuleType
  from typing import Any, Iterable, cast
  import torch
label_desc: Use image node_id 13 for calling a global function with example usage: parse_version_strs(lhs, rhs) and returns: lhs_,  rhs_, val, int, val