| """A small set of utilities for parsing pip args.""" | |
| def _get_pip_args(args, *arg_names, value = None, repeated = False): | |
| set_next = False | |
| if repeated: | |
| value = [] + (value or []) | |
| for arg in (args or []): | |
| if arg in arg_names: | |
| set_next = True | |
| continue | |
| val = None | |
| if set_next: | |
| set_next = False | |
| val = arg | |
| else: | |
| for arg_name in arg_names: | |
| start = "{}=".format(arg_name) | |
| if arg.startswith(start): | |
| val = arg[len(start):] | |
| break | |
| if val == None: | |
| continue | |
| if repeated: | |
| if val not in value: | |
| value.append(val) | |
| else: | |
| value = val | |
| return value | |
| argparse = struct( | |
| index_url = lambda args, default: _get_pip_args(args, "-i", "--index-url", value = default), | |
| extra_index_url = lambda args, default: _get_pip_args(args, "--extra-index-url", value = default, repeated = True), | |
| platform = lambda args, default: _get_pip_args(args, "--platform", value = default, repeated = True), | |
| ) |