code: def _cmpkey(epoch, release, pre, post, dev, local):
      # When we compare a release version, we want to compare it with all of the
      # trailing zeros removed. So we'll use a reverse the list, drop all the now
      # leading zeros until we come to something non zero, then take the rest
      # re-reverse it back into the correct order and make it a tuple and use
      # that for our sorting key.
      # release = tuple(
      #     reversed(list(itertools.dropwhile(lambda x: x == 0, reversed(release))))
      # )
  
      # Versions without a pre-release (except as noted above) should sort after
      # those with one.
      if not pre:
          pre = inf
      elif pre:
          pre = pre[1]
  
      # Versions without a post segment should sort before those with one.
      if not post:
          post = -inf
      else:
          post = post[1]
  
      # Versions without a development segment should sort after those with one.
      if not dev:
          dev = inf
      else:
          dev = dev[1]
  
      if not local:
          # Versions without a local segment should sort before those with one.
          local = inf
      else:
          # Versions with a local segment need that segment parsed to implement
          # the sorting rules in PEP440.
          # - Alpha numeric segments sort before numeric segments
          # - Alpha numeric segments sort lexicographically
          # - Numeric segments sort numerically
          # - Shorter versions sort before longer versions when the prefixes
          #   match exactly
          local = local[1]
  
      return epoch, release, pre, post, dev, local
  
imports: from __future__ import absolute_import, division, print_function
  from copy import deepcopy
  from attr import attrs, attrib
  import re
  import six
label_desc: Use image node_id 19 for calling the Version obj's underlying member method code with example usage: obj._cmpkey(epoch, release, pre, post, dev, local) and returns: epoch,  release,  pre,  post,  dev,  local