code: def _version_from_git_describe():
      
      if not os.path.isdir(os.path.join(os.path.dirname(_SCAPY_PKG_DIR), '.git')):  # noqa: E501
          raise ValueError('not in scapy git repo')
  
      process = subprocess.Popen(['git', 'describe', '--always'],
                                 cwd=_SCAPY_PKG_DIR,
                                 stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  
      out, err = process.communicate()
  
      if process.returncode == 0:
          tag = out.decode().strip()
          match = re.match('^v?(.+?)-(\\d+)-g[a-f0-9]+$', tag)
          if match:
              # remove the 'v' prefix and add a '.devN' suffix
              return '%s.dev%s' % (match.group(1), match.group(2))
          else:
              # just remove the 'v' prefix
              return re.sub('^v', '', tag)
      else:
          raise subprocess.CalledProcessError(process.returncode, err)
docs: Read the version from ``git describe``. It returns the latest tag with an
      optional suffix if the current directory is not exactly on the tag.
  
      Example::
  
          $ git describe --always
          v2.3.2-346-g164a52c075c8
  
      The tag prefix (``v``) and the git commit sha1 (``-g164a52c075c8``) are
      removed if present.
  
      If the current directory is not exactly on the tag, a ``.devN`` suffix is
      appended where N is the number of commits made after the last tag.
  
      Example::
  
          >>> _version_from_git_describe()
          '2.3.2.dev346'