code: def semver_newer(v1, v2):
      
      v1_parts = v1.split('.')
      v2_parts = v2.split('.')
      if len(v1_parts) < 3 or len(v2_parts) < 3:
          # one isn't a semantic version
          return False
  
      v1_major, v1_minor, v1_patch = get_version_parts(v1_parts, int)
      v2_major, v2_minor, v2_patch = get_version_parts(v2_parts, int)
  
      if v1_major > v2_major:
          return False
  
      if v1_major == v2_major and v1_minor >= v2_minor:
          return False
  
      return True
docs: Verify (as semantic versions) if v1 < v2
      Patch versions can be different