class_docstr: Backport from deprecated distutils
  
  We maintain this backport to avoid introducing a new dependency on
  `packaging`.
  
  We might rexplore this choice in the future if all major Python projects
  introduce a dependency on packaging anyway.
class_docstr_tok: ["Backport","from","deprecated","distutils","We","maintain","this","backport","to","avoid","introducing","a","new","dependency","on","`","packaging","`",".","We","might","rexplore","this","choice","in","the","future","if","all","major","Python","projects","introduce","a","dependency","on","packaging","anyway","."]
code: def parse(self, vstring):
      # I've given up on thinking I can reconstruct the version string
      # from the parsed tuple -- so I just store the string here for
      # use by __str__
      self.vstring = vstring
      components = [
          x for x in self.component_re.split(vstring) if x and x != "."
      ]
      for i, obj in enumerate(components):
          try:
              components[i] = int(obj)
          except ValueError:
              pass
  
      self.version = components
  
file_path: catboost/contrib/python/joblib/joblib/backports.py
imports: import os
  import re
  import time
  from os.path import basename
  from multiprocessing import util
label_desc: Use image node_id 2 for calling the LooseVersion obj's underlying member method code with example usage: obj.parse(vstring) without return types