code: def parse_version(ver, pre=False):
      
  
      m = RE_VER.match(ver)
  
      # Handle major, minor, micro
      major = int(m.group('major'))
      minor = int(m.group('minor')) if m.group('minor') else 0
      micro = int(m.group('micro')) if m.group('micro') else 0
  
      # Handle pre releases
      if m.group('type'):
          release = PRE_REL_MAP[m.group('type')]
          pre = int(m.group('pre'))
      else:
          release = "final"
          pre = 0
  
      # Handle development releases
      dev = m.group('dev') if m.group('dev') else 0
      if m.group('dev'):
          dev = int(m.group('dev'))
          release = '.dev-' + release if pre else '.dev'
      else:
          dev = 0
  
      # Handle post
      post = int(m.group('post')) if m.group('post') else 0
  
      return Version(major, minor, micro, release, pre, post, dev)
docs: Parse version into a comparable Version tuple.