code: def FromString(cls, range_string):
          
  
          disjuncts = None
  
          range_string = range_string.strip()
  
          if len(range_string) == 0:
              raise ArgumentError("You must pass a finite string to SemanticVersionRange.FromString",
                                  range_string=range_string)
  
          # Check for *
          if len(range_string) == 1 and range_string[0] == '*':
              conj = (None, None, True, True)
              disjuncts = [[conj]]
  
          # Check for ^X.Y.Z
          elif range_string[0] == '^':
              ver = range_string[1:]
  
              try:
                  ver = SemanticVersion.FromString(ver)
              except DataError as err:
                  raise ArgumentError("Could not parse ^X.Y.Z version", parse_error=str(err), range_string=range_string)
  
              lower = ver
              upper = ver.inc_first_nonzero()
  
              conj = (lower, upper, True, False)
              disjuncts = [[conj]]
  
          elif range_string[0] == '=':
              ver = range_string[1:]
  
              try:
                  ver = SemanticVersion.FromString(ver)
              except DataError as err:
                  raise ArgumentError("Could not parse =X.Y.Z version", parse_error=str(err), range_string=range_string)
  
              conj = (ver, ver, True, True)
              disjuncts = [[conj]]
  
          if disjuncts is None:
              raise ArgumentError("Invalid range specification that could not be parsed", range_string=range_string)
  
          return SemanticVersionRange(disjuncts)
docs: Parse a version range string into a SemanticVersionRange
  
          Currently, the only possible range strings are:
  
          ^X.Y.Z - matches all versions with the same leading nonzero digit
              greater than or equal the given range.
          * - matches everything
          =X.Y.Z - matches only the exact version given
  
          Args:
              range_string (string): A string specifying the version range
  
          Returns:
              SemanticVersionRange: The resulting version range object
  
          Raises:
              ArgumentError: if the range string does not define a valid range.