本文整理汇总了Python中pants.option.options_fingerprinter.OptionsFingerprinter.fingerprint方法的典型用法代码示例。如果您正苦于以下问题:Python OptionsFingerprinter.fingerprint方法的具体用法?Python OptionsFingerprinter.fingerprint怎么用?Python OptionsFingerprinter.fingerprint使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pants.option.options_fingerprinter.OptionsFingerprinter
的用法示例。
在下文中一共展示了OptionsFingerprinter.fingerprint方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: OptionsFingerprinterTest
# 需要导入模块: from pants.option.options_fingerprinter import OptionsFingerprinter [as 别名]
# 或者: from pants.option.options_fingerprinter.OptionsFingerprinter import fingerprint [as 别名]
class OptionsFingerprinterTest(BaseTest):
def setUp(self):
super(OptionsFingerprinterTest, self).setUp()
self.options_fingerprinter = OptionsFingerprinter(self.context().build_graph)
def test_fingerprint_dict(self):
d1 = {'b': 1, 'a': 2}
d2 = {'a': 2, 'b': 1}
d3 = {'a': 1, 'b': 2}
fp1, fp2, fp3 = (self.options_fingerprinter.fingerprint(dict_option, d)
for d in (d1, d2, d3))
self.assertEquals(fp1, fp2)
self.assertNotEquals(fp1, fp3)
def test_fingerprint_list(self):
l1 = [1, 2, 3]
l2 = [1, 3, 2]
fp1, fp2 = (self.options_fingerprinter.fingerprint(list_option, l)
for l in (l1, l2))
self.assertNotEquals(fp1, fp2)
def test_fingerprint_target_specs(self):
specs = [':t1', ':t2', ':t3']
payloads = [Payload() for i in range(3)]
for i, (s, p) in enumerate(zip(specs, payloads)):
p.add_field('foo', PrimitiveField(i))
self.make_target(s, payload=p)
s1, s2, s3 = specs
fp_specs = lambda specs: self.options_fingerprinter.fingerprint(target_list_option, specs)
fp1 = fp_specs([s1, s2])
fp2 = fp_specs([s2, s1])
fp3 = fp_specs([s1, s3])
self.assertEquals(fp1, fp2)
self.assertNotEquals(fp1, fp3)
def test_fingerprint_file(self):
fp1, fp2, fp3 = (self.options_fingerprinter.fingerprint(file_option,
self.create_file(f, contents=c))
for (f, c) in (('foo/bar.config', 'blah blah blah'),
('foo/bar.config', 'meow meow meow'),
('spam/egg.config', 'blah blah blah')))
self.assertNotEquals(fp1, fp2)
self.assertNotEquals(fp1, fp3)
self.assertNotEquals(fp2, fp3)
def test_fingerprint_primitive(self):
fp1, fp2 = (self.options_fingerprinter.fingerprint('', v) for v in ('foo', 5))
self.assertNotEquals(fp1, fp2)
示例2: TaskBase
# 需要导入模块: from pants.option.options_fingerprinter import OptionsFingerprinter [as 别名]
# 或者: from pants.option.options_fingerprinter.OptionsFingerprinter import fingerprint [as 别名]
#.........这里部分代码省略.........
Typically a task that requires products from other goals would register interest in those
products here and then retrieve the requested product mappings when executed.
:API: public
"""
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.
:API: public
"""
super(TaskBase, self).__init__()
self.context = context
self._workdir = workdir
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)
def get_options(self):
"""Returns the option values for this task's scope.
:API: public
"""
return self.context.options.for_scope(self.options_scope)
def get_passthru_args(self):
"""
:API: public
"""
if not self.supports_passthru_args():
raise TaskError('{0} Does not support passthru args.'.format(self.stable_name()))
else:
return self.context.options.passthru_args_for_scope(self.options_scope)
@property
def workdir(self):
"""A scratch-space for this task that will be deleted by `clean-all`.
It's not guaranteed that the workdir exists, just that no other task has been given this
workdir path to use.
:API: public
"""
return self._workdir
def _options_fingerprint(self, scope):
pairs = self.context.options.get_fingerprintable_for_scope(scope)
hasher = sha1()
for (option_type, option_val) in pairs:
示例3: TaskBase
# 需要导入模块: from pants.option.options_fingerprinter import OptionsFingerprinter [as 别名]
# 或者: from pants.option.options_fingerprinter.OptionsFingerprinter import fingerprint [as 别名]
#.........这里部分代码省略.........
"""
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 get_options(self):
"""Returns the option values for this task's scope."""
return self.context.options.for_scope(self.options_scope)
def get_passthru_args(self):
if not self.supports_passthru_args():
raise TaskError('{0} Does not support passthru args.'.format(self.stable_name()))
else:
return self.context.options.passthru_args_for_scope(self.options_scope)
@property
def workdir(self):
"""A scratch-space for this task that will be deleted by `clean-all`.
It's not guaranteed that the workdir exists, just that no other task has been given this
workdir path to use.
"""
return self._workdir
def _options_fingerprint(self, scope):
pairs = self.context.options.get_fingerprintable_for_scope(scope)
hasher = sha1()
for (option_type, option_val) in pairs:
fp = self._options_fingerprinter.fingerprint(option_type, option_val)
if fp is not None:
hasher.update(fp)
return hasher.hexdigest()
@property
def fingerprint(self):
示例4: OptionsFingerprinterTest
# 需要导入模块: from pants.option.options_fingerprinter import OptionsFingerprinter [as 别名]
# 或者: from pants.option.options_fingerprinter.OptionsFingerprinter import fingerprint [as 别名]
class OptionsFingerprinterTest(TestBase):
def setUp(self):
super(OptionsFingerprinterTest, self).setUp()
self.options_fingerprinter = OptionsFingerprinter(self.context().build_graph)
def test_fingerprint_dict(self):
d1 = {'b': 1, 'a': 2}
d2 = {'a': 2, 'b': 1}
d3 = {'a': 1, 'b': 2}
fp1, fp2, fp3 = (self.options_fingerprinter.fingerprint(dict_option, d)
for d in (d1, d2, d3))
self.assertEquals(fp1, fp2)
self.assertNotEquals(fp1, fp3)
def test_fingerprint_list(self):
l1 = [1, 2, 3]
l2 = [1, 3, 2]
fp1, fp2 = (self.options_fingerprinter.fingerprint(list_option, l)
for l in (l1, l2))
self.assertNotEquals(fp1, fp2)
def test_fingerprint_target_spec(self):
specs = [':t1', ':t2']
payloads = [Payload() for i in range(2)]
for i, (s, p) in enumerate(zip(specs, payloads)):
p.add_field('foo', PrimitiveField(i))
self.make_target(s, payload=p)
s1, s2 = specs
fp_spec = lambda spec: self.options_fingerprinter.fingerprint(target_option, spec)
fp1 = fp_spec(s1)
fp2 = fp_spec(s2)
self.assertNotEquals(fp1, fp2)
def test_fingerprint_target_spec_list(self):
specs = [':t1', ':t2', ':t3']
payloads = [Payload() for i in range(3)]
for i, (s, p) in enumerate(zip(specs, payloads)):
p.add_field('foo', PrimitiveField(i))
self.make_target(s, payload=p)
s1, s2, s3 = specs
fp_specs = lambda specs: self.options_fingerprinter.fingerprint(target_option, specs)
fp1 = fp_specs([s1, s2])
fp2 = fp_specs([s2, s1])
fp3 = fp_specs([s1, s3])
self.assertEquals(fp1, fp2)
self.assertNotEquals(fp1, fp3)
def test_fingerprint_file(self):
fp1, fp2, fp3 = (self.options_fingerprinter.fingerprint(file_option,
self.create_file(f, contents=c))
for (f, c) in (('foo/bar.config', 'blah blah blah'),
('foo/bar.config', 'meow meow meow'),
('spam/egg.config', 'blah blah blah')))
self.assertNotEquals(fp1, fp2)
self.assertNotEquals(fp1, fp3)
self.assertNotEquals(fp2, fp3)
def test_fingerprint_file_outside_buildroot(self):
with temporary_dir() as tmp:
outside_buildroot = self.create_file(os.path.join(tmp, 'foobar'), contents='foobar')
with self.assertRaises(ValueError):
self.options_fingerprinter.fingerprint(file_option, outside_buildroot)
def test_fingerprint_file_list(self):
f1, f2, f3 = (self.create_file(f, contents=c) for (f, c) in
(('foo/bar.config', 'blah blah blah'),
('foo/bar.config', 'meow meow meow'),
('spam/egg.config', 'blah blah blah')))
fp1 = self.options_fingerprinter.fingerprint(file_option, [f1, f2])
fp2 = self.options_fingerprinter.fingerprint(file_option, [f2, f1])
fp3 = self.options_fingerprinter.fingerprint(file_option, [f1, f3])
self.assertEquals(fp1, fp2)
self.assertNotEquals(fp1, fp3)
def test_fingerprint_primitive(self):
fp1, fp2 = (self.options_fingerprinter.fingerprint('', v) for v in ('foo', 5))
self.assertNotEquals(fp1, fp2)
def test_fingerprint_unset_bool(self):
fp1 = self.options_fingerprinter.fingerprint(UnsetBool, UnsetBool)
fp2 = self.options_fingerprinter.fingerprint(UnsetBool, UnsetBool)
self.assertEqual(fp1, fp2)
def test_fingerprint_dir(self):
d1 = self.create_dir('a')
d2 = self.create_dir('b')
d3 = self.create_dir('c')
f1, f2, f3, f4, f5 = (self.create_file(f, contents=c) for (f, c) in (
('a/bar/bar.config', 'blah blah blah'),
('a/foo/foo.config', 'meow meow meow'),
('b/foo/foo.config', 'meow meow meow'),
('b/bar/bar.config', 'blah blah blah'),
('c/bar/bar.config', 'blah meow blah')))
dp1 = self.options_fingerprinter.fingerprint(dir_option, [d1])
dp2 = self.options_fingerprinter.fingerprint(dir_option, [d1, d2])
dp3 = self.options_fingerprinter.fingerprint(dir_option, [d2, d1])
#.........这里部分代码省略.........