docs: def _parse_project_version(version=''):
      """
      Returns the significant part of the version excluding the build
         
      The final forms returned can be
      
      major.minor
      major.minor stage (spaces will be replaced with '-')
      major.minor.stage
      major.minor-stage
      major.minorstage (eg 1.0rc1)
      major.minor.maintenance
      major.minor.maintenance-stage
      major.minor.maintenancestage
      
      Anything beyond the maintenance or stage whichever is last is ignored 
      """
      
      def mm_version(vers):
          stage = ''
          stage_sep = ''
          finalvers = ''
          if not vers.isdigit():
              for num,char in enumerate(vers):
                  if char.isdigit():
                      finalvers += str(char)
                  elif char.isalpha():
                      stage = vers[num:]
                      break
                  elif char in [' ','-']: #sep
                      #We will strip spaces to avoid needing to 'quote' paths
                      stage_sep = '-'
                      stage = vers[num+1:]
                      break
          else:
              finalvers = vers
          #remove any final build numbers
          if ' ' in stage:
              stage = stage.split(' ')[0]
          elif '-' in stage:
              stage = stage.split('-')[0]
          return (finalvers,stage,stage_sep)
          
      v = version.split('.')
      if len(v)==1: return v[0]
      major = v[0]
      minor = v[1]
      maint = ''
      stage = ''
      if len(v)>2 and v[2]<>'0': #(1.0.0 == 1.0)
          maint = v[2]
      if len(v)>3 and v[3][0].isalpha():
          stage = v[3]
          project_version = '.'.join([major,minor,maint,stage])
      else:
          #Detect stage in minor
          minor,stage_minor,stage_minor_sep = mm_version(minor)
          if maint: #may be maint = ''
              maint, stage_maint, stage_maint_sep = mm_version(maint)
          else:
              stage_maint = ''; stage_maint_sep = ''
          if stage_minor:
              stage = stage_minor
              stage_sep = stage_minor_sep
          elif stage_maint:
              stage = stage_maint
              stage_sep = stage_maint_sep
          finalvers = [major,minor]
          if maint: finalvers.append(maint)
          finalvers = '.'.join(finalvers)
          if stage:
              finalvers = stage_sep.join([finalvers,stage])
          project_version = finalvers
     
      return project_version