def __init__(self, context, workdir): """Subclass __init__ methods, if defined, *must* follow this idiom: class MyTask(Task): def __init__(self, *args, **kwargs): super(MyTask, self).__init__(*args, **kwargs) ... This allows us to change Task.__init__()'s arguments without changing every subclass. If the subclass does not need its own initialization, this method can (and should) be omitted entirely. """ super(TaskBase, self).__init__() self.context = context self._workdir = workdir # TODO: It would be nice to use self.get_options().cache_key_gen_version here, because then # we could have a separate value for each scope if we really wanted to. However we can't # access per-task options in Task.__init__ because GroupTask.__init__ calls it with the # group task's scope, which isn't currently in the known scopes we generate options for. self._cache_key_generator = CacheKeyGenerator( self.context.options.for_global_scope().cache_key_gen_version) self._cache_key_errors = set() self._build_invalidator_dir = os.path.join( self.context.options.for_global_scope().pants_workdir, 'build_invalidator', self.stable_name()) self._cache_factory = CacheSetup.create_cache_factory_for_task(self) self._options_fingerprinter = OptionsFingerprinter(self.context.build_graph) self._fingerprint = None
def __init__(self, context, workdir): """Subclass __init__ methods, if defined, *must* follow this idiom: class MyTask(Task): def __init__(self, *args, **kwargs): super(MyTask, self).__init__(*args, **kwargs) ... This allows us to change Task.__init__()'s arguments without changing every subclass. """ self.context = context self._workdir = workdir self._cache_key_generator = CacheKeyGenerator( context.config.getdefault('cache_key_gen_version', default='200')) self._read_artifact_cache_spec = None self._write_artifact_cache_spec = None self._artifact_cache = None self._artifact_cache_setup_lock = threading.Lock() self._cache_key_errors = set() default_invalidator_root = os.path.join( self.context.options.for_global_scope().pants_workdir, 'build_invalidator') suffix_type = self.__class__.__name__ self._build_invalidator_dir = os.path.join( context.config.get('tasks', 'build_invalidator', default=default_invalidator_root), suffix_type)
def __init__(self, target, root_dir, extra_targets=None, extra_requirements=None, builder=None, platforms=None, interpreter=None, conn_timeout=None): self._config = Config.load() self._target = target self._root = root_dir self._platforms = platforms self._interpreter = interpreter or PythonInterpreter.get() self._extra_targets = list( extra_targets) if extra_targets is not None else [] self._extra_requirements = list( extra_requirements) if extra_requirements is not None else [] self._builder = builder or PEXBuilder(tempfile.mkdtemp(), interpreter=self._interpreter) # Note: unrelated to the general pants artifact cache. self._egg_cache_root = os.path.join( PythonSetup(self._config).scratch_dir('artifact_cache', default_name='artifacts'), str(self._interpreter.identity)) self._key_generator = CacheKeyGenerator() self._build_invalidator = BuildInvalidator(self._egg_cache_root)
def __init__(self, python_setup, python_repos, ivy_bootstrapper, thrift_binary_factory, interpreter, builder, targets, platforms, extra_requirements=None): self._python_setup = python_setup self._python_repos = python_repos self._ivy_bootstrapper = ivy_bootstrapper self._thrift_binary_factory = thrift_binary_factory self._interpreter = interpreter self._builder = builder self._targets = targets self._platforms = platforms self._extra_requirements = list( extra_requirements) if extra_requirements else [] # Note: unrelated to the general pants artifact cache. self._artifact_cache_root = os.path.join( self._python_setup.artifact_cache_dir, str(self._interpreter.identity)) self._key_generator = CacheKeyGenerator() self._build_invalidator = BuildInvalidator(self._artifact_cache_root)
def __init__(self, context, workdir): """Subclass __init__ methods, if defined, *must* follow this idiom: class MyTask(Task): def __init__(self, *args, **kwargs): super(MyTask, self).__init__(*args, **kwargs) ... This allows us to change Task.__init__()'s arguments without changing every subclass. """ self.context = context self._workdir = workdir # TODO: It would be nice to use self.get_options().cache_key_gen_version here, because then # we could have a separate value for each scope if we really wanted to. However we can't # access per-task options in Task.__init__ because GroupTask.__init__ calls it with the # group task's scope, which isn't currently in the known scopes we generate options for. self._cache_key_generator = CacheKeyGenerator( self.context.options.for_global_scope().cache_key_gen_version) self._read_artifact_cache_spec = None self._write_artifact_cache_spec = None self._artifact_cache = None self._artifact_cache_setup_lock = threading.Lock() self._cache_key_errors = set() self._build_invalidator_dir = os.path.join( self.context.options.for_global_scope().pants_workdir, 'build_invalidator', self.__class__.__name__)
def __init__(self, context, workdir): self.context = context self._workdir = workdir self._cache_key_generator = CacheKeyGenerator( context.config.getdefault('cache_key_gen_version', default=None)) self._read_artifact_cache_spec = None self._write_artifact_cache_spec = None self._artifact_cache = None self._artifact_cache_setup_lock = threading.Lock() default_invalidator_root = os.path.join(self.context.config.getdefault('pants_workdir'), 'build_invalidator') self._build_invalidator_dir = os.path.join( context.config.get('tasks', 'build_invalidator', default=default_invalidator_root), self.product_type())
def test_env(content=TEST_CONTENT): with temporary_dir() as d: with tempfile.NamedTemporaryFile() as f: f.write(content) f.flush() yield f, CacheKeyGenerator(), BuildInvalidator(d)