code: def _make_key(
      args,
      kwds,
      typed,
      kwd_mark=(object(),),
      fasttypes=set([int, str, frozenset, type(None)]),
      sorted=sorted,
      tuple=tuple,
      type=type,
      len=len,
  ):
      "Make a cache key from optionally typed positional and keyword arguments"
      key = args
      if kwds:
          sorted_items = sorted(kwds.items())
          key += kwd_mark
          for item in sorted_items:
              key += item
      if typed:
          key += tuple(type(v) for v in args)
          if kwds:
              key += tuple(type(v) for k, v in sorted_items)
      elif len(key) == 1 and type(key[0]) in fasttypes:
          return key[0]
      return _HashedSeq(key)
  
file_path: catboost/contrib/deprecated/python/backports.functools-lru-cache/backports/functools_lru_cache.py
imports: from __future__ import absolute_import
  import functools
  from collections import namedtuple
  from threading import RLock
label_desc: Use image node_id 2 for calling a global function with example usage: _make_key(args, kwds, typed, kwd_mark, fasttypes, sorted, tuple, type, len) and returns: _HashedSeq, key