def __init__(self, whitelist: List[str], blacklist: List[str], arglist: List[str], verbosity: int, xfail: List[str]) -> None: self.whitelist = whitelist self.blacklist = blacklist self.arglist = arglist self.verbosity = verbosity self.waiter = Waiter(verbosity=verbosity, xfail=xfail) self.versions = get_versions() self.cwd = os.getcwd() self.mypy = os.path.join(self.cwd, 'scripts', 'mypy') self.env = dict(os.environ)
def __init__(self, *, whitelist: List[str], blacklist: List[str], lf: bool, ff: bool, arglist: List[str], pyt_arglist: List[str], verbosity: int, parallel_limit: int, xfail: List[str], coverage: bool) -> None: self.whitelist = whitelist self.blacklist = blacklist self.arglist = arglist self.pyt_arglist = pyt_arglist self.verbosity = verbosity self.waiter = Waiter(verbosity=verbosity, limit=parallel_limit, xfail=xfail, lf=lf, ff=ff) self.versions = get_versions() self.cwd = os.getcwd() self.mypy = os.path.join(self.cwd, 'scripts', 'mypy') self.env = dict(os.environ) self.coverage = coverage
def __init__(self, whitelist: List[str], blacklist: List[str], arglist: List[str], verbosity: int, xfail: List[str]) -> None: self.whitelist = whitelist or xfail self.blacklist = blacklist self.arglist = arglist self.verbosity = verbosity self.waiter = Waiter(verbosity=verbosity, xfail=xfail) self.versions = get_versions(DIALECT) self.cwd = os.getcwd() self.env = dict(os.environ) self.count = 0
def __init__( self, whitelist: List[str], blacklist: List[str], arglist: List[str], verbosity: int, parallel_limit: int, xfail: List[str], ) -> None: self.whitelist = whitelist self.blacklist = blacklist self.arglist = arglist self.verbosity = verbosity self.waiter = Waiter(verbosity=verbosity, limit=parallel_limit, xfail=xfail) self.versions = get_versions() self.cwd = os.getcwd() self.mypy = os.path.join(self.cwd, "scripts", "mypy") self.env = dict(os.environ)
class Driver: def __init__(self, whitelist: List[str], blacklist: List[str], arglist: List[str], verbosity: int, xfail: List[str]) -> None: self.whitelist = whitelist or xfail self.blacklist = blacklist self.arglist = arglist self.verbosity = verbosity self.waiter = Waiter(verbosity=verbosity, xfail=xfail) self.versions = get_versions(DIALECT) self.cwd = os.getcwd() self.env = dict(os.environ) self.count = 0 def prepend_path(self, name: str, paths: List[str]) -> None: assert not isinstance(paths, str) old_val = self.env.get(name) paths = [p for p in paths if isdir(p)] if not paths: return if old_val is not None: new_val = ':'.join(itertools.chain(paths, [old_val])) else: new_val = ':'.join(paths) self.env[name] = new_val def allow(self, name: str) -> bool: self.count += 1 if any(f in name for f in self.whitelist): if not any(f in name for f in self.blacklist): if self.verbosity >= 2: print('SELECT #%d %s' % (len(self.waiter.queue), name)) return True if self.verbosity >= 3: print('OMIT %s' % name) return False def add_mypy(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'check %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = ['mypy'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_python(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'run %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = [sys.executable] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_mypy_mod(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'check %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = ['mypy', '-m'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_python_mod(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'run %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = [sys.executable, '-m'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_mypy_string(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'check %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = ['mypy', '-c'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_python_string(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'run %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = [sys.executable, '-c'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_unittest2(self, name: str, *args: str, cwd: Optional[str] = None) -> None: if DIALECT.major != 2: return name = 'run2 %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = [IMPLEMENTATION.executable, '-m', 'pytest', '--pyargs'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_unittest(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'run %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = [sys.executable, '-m', 'pytest', '--pyargs'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_flake8(self, name: str, file: str, cwd: Optional[str] = None) -> None: name = 'lint %s' % name if not self.allow(name): return largs = ['flake8', file] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def list_tasks(self) -> None: for id, task in enumerate(self.waiter.queue): print('{id}:{task}'.format(id=id, task=task.name))
class Driver: def __init__(self, whitelist: List[str], blacklist: List[str], arglist: List[str], verbosity: int, parallel_limit: int, xfail: List[str]) -> None: self.whitelist = whitelist self.blacklist = blacklist self.arglist = arglist self.verbosity = verbosity self.waiter = Waiter(verbosity=verbosity, limit=parallel_limit, xfail=xfail) self.versions = get_versions() self.cwd = os.getcwd() self.mypy = os.path.join(self.cwd, 'scripts', 'mypy') self.env = dict(os.environ) def prepend_path(self, name: str, paths: List[str]) -> None: old_val = self.env.get(name) paths = [p for p in paths if isdir(p)] if not paths: return if old_val is not None: new_val = ':'.join(itertools.chain(paths, [old_val])) else: new_val = ':'.join(paths) self.env[name] = new_val def allow(self, name: str) -> bool: if any(f in name for f in self.whitelist): if not any(f in name for f in self.blacklist): if self.verbosity >= 2: print('SELECT #%d %s' % (len(self.waiter.queue), name)) return True if self.verbosity >= 3: print('OMIT %s' % name) return False def add_mypy_cmd(self, name: str, mypy_args: List[str], cwd: Optional[str] = None) -> None: full_name = 'check %s' % name if not self.allow(full_name): return args = [sys.executable, self.mypy, '-f'] + mypy_args self.waiter.add(LazySubprocess(full_name, args, cwd=cwd, env=self.env)) def add_mypy(self, name: str, *args: str, cwd: Optional[str] = None) -> None: self.add_mypy_cmd(name, list(args), cwd=cwd) def add_mypy_modules(self, name: str, modules: Iterable[str], cwd: Optional[str] = None) -> None: args = list(itertools.chain(*(['-m', mod] for mod in modules))) self.add_mypy_cmd(name, args, cwd=cwd) def add_mypy_package(self, name: str, packagename: str) -> None: self.add_mypy_cmd(name, ['-p', packagename]) def add_mypy_string(self, name: str, *args: str, cwd: Optional[str] = None) -> None: self.add_mypy_cmd(name, ['-c'] + list(args), cwd=cwd) def add_python(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'run %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = [sys.executable] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_python_mod(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'run %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = [sys.executable, '-m'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_python_string(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'run %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = [sys.executable, '-c'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_python2(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'run2 %s' % name if not self.allow(name): return largs = list(args) python2 = util.try_find_python2_interpreter() assert python2, "Couldn't find a Python 2.7 interpreter" largs[0:0] = [python2] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_flake8(self, name: str, file: str, cwd: Optional[str] = None) -> None: name = 'lint %s' % name if not self.allow(name): return largs = ['flake8', file] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def list_tasks(self) -> None: for id, task in enumerate(self.waiter.queue): print('{id}:{task}'.format(id=id, task=task.name))
class Driver: def __init__(self, *, whitelist: List[str], blacklist: List[str], lf: bool, ff: bool, arglist: List[str], pyt_arglist: List[str], verbosity: int, parallel_limit: int, xfail: List[str], coverage: bool) -> None: self.whitelist = whitelist self.blacklist = blacklist self.arglist = arglist self.pyt_arglist = pyt_arglist self.verbosity = verbosity self.waiter = Waiter(verbosity=verbosity, limit=parallel_limit, xfail=xfail, lf=lf, ff=ff) self.versions = get_versions() self.cwd = os.getcwd() self.mypy = os.path.join(self.cwd, 'scripts', 'mypy') self.env = dict(os.environ) self.coverage = coverage def prepend_path(self, name: str, paths: List[str]) -> None: old_val = self.env.get(name) paths = [p for p in paths if isdir(p)] if not paths: return if old_val is not None: new_val = os.pathsep.join(itertools.chain(paths, [old_val])) else: new_val = os.pathsep.join(paths) self.env[name] = new_val def allow(self, name: str) -> bool: if any(f in name for f in self.whitelist): if not any(f in name for f in self.blacklist): if self.verbosity >= 2: print('SELECT #%d %s' % (len(self.waiter.queue), name)) return True if self.verbosity >= 3: print('OMIT %s' % name) return False def add_mypy_cmd(self, name: str, mypy_args: List[str], cwd: Optional[str] = None) -> None: full_name = 'check %s' % name if not self.allow(full_name): return args = [sys.executable, self.mypy] + mypy_args args.append('--show-traceback') self.waiter.add(LazySubprocess(full_name, args, cwd=cwd, env=self.env)) def add_mypy(self, name: str, *args: str, cwd: Optional[str] = None) -> None: self.add_mypy_cmd(name, list(args), cwd=cwd) def add_mypy_modules(self, name: str, modules: Iterable[str], cwd: Optional[str] = None, extra_args: Optional[List[str]] = None) -> None: args = extra_args or [] args.extend(list(itertools.chain(*(['-m', mod] for mod in modules)))) self.add_mypy_cmd(name, args, cwd=cwd) def add_mypy_package(self, name: str, packagename: str, *flags: str) -> None: self.add_mypy_cmd(name, ['-p', packagename] + list(flags)) def add_mypy_string(self, name: str, *args: str, cwd: Optional[str] = None) -> None: self.add_mypy_cmd(name, ['-c'] + list(args), cwd=cwd) def add_pytest(self, files: List[Tuple[str, str]], coverage: bool = True) -> None: pytest_files = [ name for kind, name in files if self.allow('pytest {} {}'.format(kind, name)) ] if not pytest_files: return pytest_args = pytest_files + self.arglist + self.pyt_arglist if coverage and self.coverage: args = [sys.executable, '-m', 'pytest', '--cov=mypy'] + pytest_args else: args = [sys.executable, '-m', 'pytest'] + pytest_args self.waiter.add(LazySubprocess('pytest', args, env=self.env, passthrough=self.verbosity), sequential=True) def add_python(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'run %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = [sys.executable] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_python_mod(self, name: str, *args: str, cwd: Optional[str] = None, coverage: bool = False) -> None: name = 'run %s' % name if not self.allow(name): return largs = list(args) if coverage and self.coverage: largs[0:0] = ['coverage', 'run', '-m'] else: largs[0:0] = [sys.executable, '-m'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_python_string(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'run %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = [sys.executable, '-c'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_python2(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'run2 %s' % name if not self.allow(name): return largs = list(args) python2 = util.try_find_python2_interpreter() assert python2, "Couldn't find a Python 2.7 interpreter" largs[0:0] = [python2] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_flake8(self, cwd: Optional[str] = None) -> None: name = 'lint' if not self.allow(name): return largs = ['flake8', '-j0'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def list_tasks(self) -> None: for id, task in enumerate(self.waiter.queue): print('{id}:{task}'.format(id=id, task=task.name))
class Driver: def __init__(self, whitelist: List[str], blacklist: List[str], arglist: List[str], verbosity: int, xfail: List[str]) -> None: self.whitelist = whitelist self.blacklist = blacklist self.arglist = arglist self.verbosity = verbosity self.waiter = Waiter(verbosity=verbosity, xfail=xfail) self.versions = get_versions() self.cwd = os.getcwd() self.mypy = os.path.join(self.cwd, 'scripts', 'mypy') self.env = dict(os.environ) def prepend_path(self, name: str, paths: List[str]) -> None: old_val = self.env.get(name) paths = [p for p in paths if isdir(p)] if not paths: return if old_val is not None: new_val = ':'.join(itertools.chain(paths, [old_val])) else: new_val = ':'.join(paths) self.env[name] = new_val def allow(self, name: str) -> bool: if any(f in name for f in self.whitelist): if not any(f in name for f in self.blacklist): if self.verbosity >= 2: print('SELECT #%d %s' % (len(self.waiter.queue), name)) return True if self.verbosity >= 3: print('OMIT %s' % name) return False def add_mypy(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'check %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = [sys.executable, self.mypy] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_python(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'run %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = [sys.executable] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_both(self, name: str, *args: str, cwd: Optional[str] = None) -> None: self.add_mypy(name, *args, cwd=cwd) self.add_python(name, *args, cwd=cwd) def add_mypy_mod(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'check %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = [sys.executable, self.mypy, '-m'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_python_mod(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'run %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = [sys.executable, '-m'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_both_mod(self, name: str, *args: str, cwd: Optional[str] = None) -> None: self.add_mypy_mod(name, *args, cwd=cwd) self.add_python_mod(name, *args, cwd=cwd) def add_mypy_string(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'check %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = [sys.executable, self.mypy, '-c'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_python_string(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'run %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = [sys.executable, '-c'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_both_string(self, name: str, *args: str, cwd: Optional[str] = None) -> None: self.add_mypy_string(name, *args, cwd=cwd) self.add_python_string(name, *args, cwd=cwd) def add_python2(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'run2 %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = ['python2'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_flake8(self, name: str, file: str, cwd: Optional[str] = None) -> None: name = 'lint %s' % name if not self.allow(name): return largs = ['flake8', file] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def list_tasks(self) -> None: for id, task in enumerate(self.waiter.queue): print('{id}:{task}'.format(id=id, task=task.name))
class Driver: def __init__(self, *, whitelist: List[str], blacklist: List[str], lf: bool, ff: bool, arglist: List[str], pyt_arglist: List[str], verbosity: int, parallel_limit: int, xfail: List[str], coverage: bool) -> None: self.whitelist = whitelist self.blacklist = blacklist self.arglist = arglist self.pyt_arglist = pyt_arglist self.verbosity = verbosity self.waiter = Waiter(verbosity=verbosity, limit=parallel_limit, xfail=xfail, lf=lf, ff=ff) self.versions = get_versions() self.cwd = os.getcwd() self.mypy = os.path.join(self.cwd, 'scripts', 'mypy') self.env = dict(os.environ) self.coverage = coverage def prepend_path(self, name: str, paths: List[str]) -> None: old_val = self.env.get(name) paths = [p for p in paths if isdir(p)] if not paths: return if old_val is not None: new_val = os.pathsep.join(itertools.chain(paths, [old_val])) else: new_val = os.pathsep.join(paths) self.env[name] = new_val def allow(self, name: str) -> bool: if any(f in name for f in self.whitelist): if not any(f in name for f in self.blacklist): if self.verbosity >= 2: print('SELECT #%d %s' % (len(self.waiter.queue), name)) return True if self.verbosity >= 3: print('OMIT %s' % name) return False def add_mypy_cmd(self, name: str, mypy_args: List[str], cwd: Optional[str] = None) -> None: full_name = 'check %s' % name if not self.allow(full_name): return args = [sys.executable, self.mypy] + mypy_args args.append('--show-traceback') self.waiter.add(LazySubprocess(full_name, args, cwd=cwd, env=self.env)) def add_mypy(self, name: str, *args: str, cwd: Optional[str] = None) -> None: self.add_mypy_cmd(name, list(args), cwd=cwd) def add_mypy_modules(self, name: str, modules: Iterable[str], cwd: Optional[str] = None, extra_args: Optional[List[str]] = None) -> None: args = extra_args or [] args.extend(list(itertools.chain(*(['-m', mod] for mod in modules)))) self.add_mypy_cmd(name, args, cwd=cwd) def add_mypy_package(self, name: str, packagename: str, *flags: str) -> None: self.add_mypy_cmd(name, ['-p', packagename] + list(flags)) def add_mypy_string(self, name: str, *args: str, cwd: Optional[str] = None) -> None: self.add_mypy_cmd(name, ['-c'] + list(args), cwd=cwd) def add_pytest(self, files: List[Tuple[str, str]], coverage: bool = True) -> None: pytest_files = [name for kind, name in files if self.allow('pytest {} {}'.format(kind, name))] if not pytest_files: return pytest_args = pytest_files + self.arglist + self.pyt_arglist if coverage and self.coverage: args = [sys.executable, '-m', 'pytest', '--cov=mypy'] + pytest_args else: args = [sys.executable, '-m', 'pytest'] + pytest_args self.waiter.add(LazySubprocess('pytest', args, env=self.env, passthrough=self.verbosity), sequential=True) def add_python(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'run %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = [sys.executable] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_python_mod(self, name: str, *args: str, cwd: Optional[str] = None, coverage: bool = False) -> None: name = 'run %s' % name if not self.allow(name): return largs = list(args) if coverage and self.coverage: largs[0:0] = ['coverage', 'run', '-m'] else: largs[0:0] = [sys.executable, '-m'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_python_string(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'run %s' % name if not self.allow(name): return largs = list(args) largs[0:0] = [sys.executable, '-c'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_python2(self, name: str, *args: str, cwd: Optional[str] = None) -> None: name = 'run2 %s' % name if not self.allow(name): return largs = list(args) python2 = util.try_find_python2_interpreter() assert python2, "Couldn't find a Python 2.7 interpreter" largs[0:0] = [python2] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def add_flake8(self, cwd: Optional[str] = None) -> None: name = 'lint' if not self.allow(name): return largs = ['flake8', '-j0'] env = self.env self.waiter.add(LazySubprocess(name, largs, cwd=cwd, env=env)) def list_tasks(self) -> None: for id, task in enumerate(self.waiter.queue): print('{id}:{task}'.format(id=id, task=task.name))