MCPcopy Create free account
hub / github.com/numpy/numpy / _parse_target_tokens

Method _parse_target_tokens

numpy/distutils/ccompiler_opt.py:1952–2066  ·  view source on GitHub ↗
(self, tokens)

Source from the content-addressed store, hash-verified

1950
1951 _parse_regex_target = re.compile(r'\s|[*,/]|([()])')
1952 def _parse_target_tokens(self, tokens):
1953 assert(isinstance(tokens, str))
1954 final_targets = [] # to keep it sorted as specified
1955 extra_flags = []
1956 has_baseline = False
1957
1958 skipped = set()
1959 policies = set()
1960 multi_target = None
1961
1962 tokens = list(filter(None, re.split(self._parse_regex_target, tokens)))
1963 if not tokens:
1964 self.dist_fatal("expected one token at least")
1965
1966 for tok in tokens:
1967 TOK = tok.upper()
1968 ch = tok[0]
1969 if ch in ('+', '-'):
1970 self.dist_fatal(
1971 "+/- are 'not' allowed from target's groups or @targets, "
1972 "only from cpu_baseline and cpu_dispatch parms"
1973 )
1974 elif ch == '$':
1975 if multi_target is not None:
1976 self.dist_fatal(
1977 "policies aren't allowed inside multi-target '()'"
1978 ", only CPU features"
1979 )
1980 policies.add(self._parse_token_policy(TOK))
1981 elif ch == '#':
1982 if multi_target is not None:
1983 self.dist_fatal(
1984 "target groups aren't allowed inside multi-target '()'"
1985 ", only CPU features"
1986 )
1987 has_baseline, final_targets, extra_flags = \
1988 self._parse_token_group(TOK, has_baseline, final_targets, extra_flags)
1989 elif ch == '(':
1990 if multi_target is not None:
1991 self.dist_fatal("unclosed multi-target, missing ')'")
1992 multi_target = set()
1993 elif ch == ')':
1994 if multi_target is None:
1995 self.dist_fatal("multi-target opener '(' wasn't found")
1996 targets = self._parse_multi_target(multi_target)
1997 if targets is None:
1998 skipped.add(tuple(multi_target))
1999 else:
2000 if len(targets) == 1:
2001 targets = targets[0]
2002 if targets and targets not in final_targets:
2003 final_targets.append(targets)
2004 multi_target = None # back to default
2005 else:
2006 if TOK == "BASELINE":
2007 if multi_target is not None:
2008 self.dist_fatal("baseline isn't allowed inside multi-target '()'")
2009 has_baseline = True

Callers 2

__init__Method · 0.95
parse_targetsMethod · 0.95

Calls 11

_parse_token_policyMethod · 0.95
_parse_token_groupMethod · 0.95
_parse_multi_targetMethod · 0.95
dist_fatalMethod · 0.80
upperMethod · 0.80
feature_is_existMethod · 0.80
feature_untiedMethod · 0.80
funcFunction · 0.50
splitMethod · 0.45
addMethod · 0.45
dist_logMethod · 0.45

Tested by

no test coverage detected