本文整理汇总了Python中twitter.pants.targets.InternalTarget类的典型用法代码示例。如果您正苦于以下问题:Python InternalTarget类的具体用法?Python InternalTarget怎么用?Python InternalTarget使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了InternalTarget类的17个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: run
def run(self, lock):
with self.check_errors("Target contains a dependency cycle") as error:
for target in self.targets:
try:
InternalTarget.check_cycles(target)
except InternalTarget.CycleException as e:
error(target.id)
timer = None
if self.options.time:
class Timer(object):
def now(self):
return time.time()
def log(self, message):
print(message)
timer = Timer()
logger = None
if self.options.log or self.options.log_level:
from twitter.common.log import init
from twitter.common.log.options import LogOptions
LogOptions.set_stderr_log_level((self.options.log_level or 'info').upper())
logdir = self.options.logdir or self.config.get('goals', 'logdir', default=None)
if logdir:
safe_mkdir(logdir)
LogOptions.set_log_dir(logdir)
init('goals')
else:
init()
logger = log
if self.options.recursive_directory:
log.warn('--all-recursive is deprecated, use a target spec with the form [dir]:: instead')
for dir in self.options.recursive_directory:
self.add_target_recursive(dir)
if self.options.target_directory:
log.warn('--all is deprecated, use a target spec with the form [dir]: instead')
for dir in self.options.target_directory:
self.add_target_directory(dir)
context = Context(self.config, self.options, self.targets, lock=lock, log=logger)
unknown = []
for phase in self.phases:
if not phase.goals():
unknown.append(phase)
if unknown:
print('Unknown goal(s): %s' % ' '.join(phase.name for phase in unknown))
print('')
return Phase.execute(context, 'goals')
if logger:
logger.debug('Operating on targets: %s', self.targets)
return Phase.attempt(context, self.phases, timer=timer)
开发者ID:soheilhy,项目名称:commons,代码行数:57,代码来源:goal.py
示例2: testSort
def testSort(self):
a = MockTarget('a', [])
b = MockTarget('b', [a])
c = MockTarget('c', [b])
d = MockTarget('d', [c, a])
e = MockTarget('e', [d])
self.assertEquals(InternalTarget.sort_targets([a,b,c,d,e]), [e,d,c,b,a])
self.assertEquals(InternalTarget.sort_targets([b,d,a,e,c]), [e,d,c,b,a])
self.assertEquals(InternalTarget.sort_targets([e,d,c,b,a]), [e,d,c,b,a])
开发者ID:BabyDuncan,项目名称:commons,代码行数:10,代码来源:test_internal.py
示例3: __init__
def __init__(self, name, dependencies=None, num_sources=0, exclusives=None):
with ParseContext.temp():
InternalTarget.__init__(self, name, dependencies, exclusives=exclusives)
TargetWithSources.__init__(self, name, exclusives=exclusives)
self.num_sources = num_sources
self.declared_exclusives = defaultdict(set)
if exclusives is not None:
for k in exclusives:
self.declared_exclusives[k] = set([exclusives[k]])
self.exclusives = None
开发者ID:BabyDuncan,项目名称:commons,代码行数:10,代码来源:mock_target.py
示例4: run
def run(self, lock):
with self.check_errors("Target contains a dependency cycle") as error:
with self.timer.timing("parse:check_cycles"):
for target in self.targets:
try:
InternalTarget.check_cycles(target)
except InternalTarget.CycleException as e:
error(target.id)
logger = None
if self.options.log or self.options.log_level:
from twitter.common.log import init
from twitter.common.log.options import LogOptions
LogOptions.set_stderr_log_level((self.options.log_level or "info").upper())
logdir = self.options.logdir or self.config.get("goals", "logdir", default=None)
if logdir:
safe_mkdir(logdir)
LogOptions.set_log_dir(logdir)
init("goals")
else:
init()
logger = log
if self.options.recursive_directory:
log.warn("--all-recursive is deprecated, use a target spec with the form [dir]:: instead")
for dir in self.options.recursive_directory:
self.add_target_recursive(dir)
if self.options.target_directory:
log.warn("--all is deprecated, use a target spec with the form [dir]: instead")
for dir in self.options.target_directory:
self.add_target_directory(dir)
context = Context(self.config, self.options, self.targets, lock=lock, log=logger)
unknown = []
for phase in self.phases:
if not phase.goals():
unknown.append(phase)
if unknown:
print("Unknown goal(s): %s" % " ".join(phase.name for phase in unknown))
print("")
return Phase.execute(context, "goals")
if logger:
logger.debug("Operating on targets: %s", self.targets)
ret = Phase.attempt(context, self.phases, timer=self.timer if self.options.time else None)
if self.options.time:
print("Timing report")
print("=============")
self.timer.print_timings()
return ret
开发者ID:nsanch,项目名称:commons,代码行数:55,代码来源:goal.py
示例5: test_detect_cycle_direct
def test_detect_cycle_direct(self):
a = MockTarget('a')
# no cycles yet
InternalTarget.sort_targets([a])
a.update_dependencies([a])
try:
InternalTarget.sort_targets([a])
self.fail("Expected a cycle to be detected")
except InternalTarget.CycleException:
# expected
pass
开发者ID:CodeWarltz,项目名称:commons,代码行数:12,代码来源:test_internal.py
示例6: testDetectCycleDirect
def testDetectCycleDirect(self):
a = MockTarget('a')
# no cycles yet
InternalTarget.sort_targets([a])
a.internal_dependencies = [a]
try:
InternalTarget.sort_targets([a])
self.fail("Expected a cycle to be detected")
except InternalTarget.CycleException:
# expected
pass
开发者ID:bonifaido,项目名称:commons,代码行数:12,代码来源:test-internal.py
示例7: testDetectCycleDirect
def testDetectCycleDirect(self):
a = MockTarget("a")
# no cycles yet
InternalTarget.check_cycles(a)
a.internal_dependencies = [a]
try:
InternalTarget.check_cycles(a)
self.fail("Expected a cycle to be detected")
except InternalTarget.CycleException:
# expected
pass
开发者ID:nsanch,项目名称:commons,代码行数:12,代码来源:test-internal.py
示例8: testDetectIndirect
def testDetectIndirect(self):
c = MockTarget('c')
b = MockTarget('b', c)
a = MockTarget('a', c, b)
# no cycles yet
InternalTarget.sort_targets([a])
c.internal_dependencies = [a]
try:
InternalTarget.sort_targets([a])
self.fail("Expected a cycle to be detected")
except InternalTarget.CycleException:
# expected
pass
开发者ID:bonifaido,项目名称:commons,代码行数:15,代码来源:test-internal.py
示例9: testDetectIndirect
def testDetectIndirect(self):
c = MockTarget("c")
b = MockTarget("b", c)
a = MockTarget("a", c, b)
# no cycles yet
InternalTarget.check_cycles(a)
c.internal_dependencies = [a]
try:
InternalTarget.check_cycles(a)
self.fail("Expected a cycle to be detected")
except InternalTarget.CycleException:
# expected
pass
开发者ID:nsanch,项目名称:commons,代码行数:15,代码来源:test-internal.py
示例10: create_chunks
def create_chunks(context, goals):
def discriminator(target):
for i, goal in enumerate(goals):
if goal.group.predicate(target):
return i
return 'other'
# TODO(John Sirois): coalescing should be made available in another spot, InternalTarget is jvm
# specific, and all we care is that the Targets have dependencies defined
coalesced = InternalTarget.coalesce_targets(context.targets(is_internal), discriminator)
coalesced = list(reversed(coalesced))
def not_internal(target):
return not is_internal(target)
rest = OrderedSet(context.targets(not_internal))
chunks = [rest] if rest else []
flavor = None
chunk_start = 0
for i, target in enumerate(coalesced):
target_flavor = discriminator(target)
if target_flavor != flavor and i > chunk_start:
chunks.append(OrderedSet(coalesced[chunk_start:i]))
chunk_start = i
flavor = target_flavor
if chunk_start < len(coalesced):
chunks.append(OrderedSet(coalesced[chunk_start:]))
context.log.debug('::: created chunks(%d)' % len(chunks))
for i, chunk in enumerate(chunks):
context.log.debug(' chunk(%d):\n\t%s' % (i, '\n\t'.join(sorted(map(str, chunk)))))
return chunks
开发者ID:lxwuchang,项目名称:commons,代码行数:33,代码来源:group.py
示例11: _create_chunks
def _create_chunks(context, goals):
def discriminator(target):
for i, goal in enumerate(goals):
if goal.group.predicate(target):
return i
return 'other'
# First, divide the set of all targets to be built into compatible chunks, based
# on their declared exclusives. Then, for each chunk of compatible exclusives, do
# further subchunking. At the end, we'll have a list of chunks to be built,
# which will go through the chunks of each exclusives-compatible group separately.
# TODO(markcc); chunks with incompatible exclusives require separate ivy resolves.
# Either interleave the ivy task in this group so that it runs once for each batch of
# chunks with compatible exclusives, or make the compilation tasks do their own ivy resolves
# for each batch of targets they're asked to compile.
exclusives = Group._get_exclusives_product(context)
sorted_excl_group_keys = exclusives.get_ordered_group_keys()
all_chunks = []
for excl_group_key in sorted_excl_group_keys:
# TODO(John Sirois): coalescing should be made available in another spot, InternalTarget is jvm
# specific, and all we care is that the Targets have dependencies defined
chunk_targets = exclusives.get_targets_for_group_key(excl_group_key)
# need to extract the targets for this chunk that are internal.
## TODO(markcc): right here, we're using "context.targets", which doesn't respect any of the
## exclusives rubbish going on around here.
#coalesced = InternalTarget.coalesce_targets(context.targets(is_internal), discriminator)
coalesced = InternalTarget.coalesce_targets(filter(is_internal, chunk_targets), discriminator)
coalesced = list(reversed(coalesced))
def not_internal(target):
return not is_internal(target)
# got targets that aren't internal.
#rest = OrderedSet(context.targets(not_internal))
rest = OrderedSet(filter(not_internal, chunk_targets))
chunks = [rest] if rest else []
flavor = None
chunk_start = 0
for i, target in enumerate(coalesced):
target_flavor = discriminator(target)
if target_flavor != flavor and i > chunk_start:
chunks.append(OrderedSet(coalesced[chunk_start:i]))
chunk_start = i
flavor = target_flavor
if chunk_start < len(coalesced):
chunks.append(OrderedSet(coalesced[chunk_start:]))
all_chunks += chunks
context.log.debug('::: created chunks(%d)' % len(all_chunks))
for i, chunk in enumerate(all_chunks):
context.log.debug(' chunk(%d):\n\t%s' % (i, '\n\t'.join(sorted(map(str, chunk)))))
return all_chunks
开发者ID:patricklaw,项目名称:twitter-commons,代码行数:60,代码来源:group.py
示例12: exported_targets
def exported_targets(self):
candidates = set()
if self.transitive:
candidates.update(self.context.targets())
else:
candidates.update(self.context.target_roots)
def get_synthetic(lang, target):
mappings = self.context.products.get(lang).get(target)
if mappings:
for generated in mappings.itervalues():
for synthetic in generated:
yield synthetic
# Handle the case where a code gen target is in the listed roots and the thus the publishable
# target is a synthetic twin generated by a code gen task upstream.
for candidate in self.context.target_roots:
candidates.update(get_synthetic('java', candidate))
candidates.update(get_synthetic('scala', candidate))
def exportable(tgt):
return tgt in candidates and tgt.is_exported
return OrderedSet(filter(exportable,
reversed(InternalTarget.sort_targets(filter(exportable, candidates)))))
开发者ID:CodeWarltz,项目名称:commons,代码行数:25,代码来源:jar_publish.py
示例13: __init__
def __init__(self, root_dir, parser, argv):
Command.__init__(self, root_dir, parser, argv)
if not self.args:
self.error("A spec argument is required")
try:
specs_end = self.args.index('--')
if len(self.args) > specs_end:
self.build_args = self.args.__getslice__(specs_end + 1, len(self.args) + 1)
else:
self.build_args = []
except ValueError:
specs_end = 1
self.build_args = self.args[1:] if len(self.args) > 1 else []
self.targets = OrderedSet()
for spec in self.args.__getslice__(0, specs_end):
try:
address = Address.parse(root_dir, spec)
except:
self.error("Problem parsing spec %s: %s" % (spec, traceback.format_exc()))
try:
target = Target.get(address)
except:
self.error("Problem parsing BUILD target %s: %s" % (address, traceback.format_exc()))
try:
InternalTarget.check_cycles(target)
except CycleException as e:
self.error("Target contains an internal dependency cycle: %s" % e)
if not target:
self.error("Target %s does not exist" % address)
if not target.address.is_meta:
target.address.is_meta = self.options.is_meta or address.is_meta
self.targets.add(target)
self.is_ide = self.options.is_ide
self.ide_transitivity = self.options.ide_transitivity
开发者ID:DikangGu,项目名称:commons,代码行数:41,代码来源:build.py
示例14: _compute_transitive_deps_by_target
def _compute_transitive_deps_by_target(self):
# Sort from least to most dependent.
sorted_targets = reversed(InternalTarget.sort_targets(self._context.targets()))
transitive_deps_by_target = defaultdict(set)
# Iterate in dep order, to accumulate the transitive deps for each target.
for target in sorted_targets:
transitive_deps = set()
if hasattr(target, 'dependencies'):
for dep in target.dependencies:
transitive_deps.update(transitive_deps_by_target.get(dep, []))
transitive_deps.add(dep)
transitive_deps_by_target[target] = transitive_deps
return transitive_deps_by_target
开发者ID:theyelllowdart,项目名称:commons,代码行数:13,代码来源:jvm_dependency_analyzer.py
示例15: exported_targets
def exported_targets(self):
candidates = set(self.context.targets() if self.transitive else self.context.target_roots)
def exportable(target):
return target in candidates and is_exported(target) and is_internal(target)
return OrderedSet(filter(exportable,
reversed(InternalTarget.sort_targets(filter(exportable, candidates)))))
开发者ID:steliokontos,项目名称:commons,代码行数:6,代码来源:jar_publish.py
示例16: extract_target
def extract_target(java_targets, name = None):
"""Extracts a minimal set of linked targets from the given target's internal transitive dependency
set. The root target in the extracted target set is returned. The algorithm does a topological
sort of the internal targets and then tries to coalesce targets of a given type. Any target with
a custom ant build xml will be excluded from the coalescing."""
# TODO(John Sirois): this is broken - representative_target is not necessarily representative
representative_target = list(java_targets)[0]
meta_target_base_name = "fast-%s" % (name if name else representative_target.name)
provides = None
deployjar = hasattr(representative_target, 'deployjar') and representative_target.deployjar
buildflags = representative_target.buildflags
def discriminator(tgt):
# Chunk up our targets by (type, src base) - the javac task in the ant build relies upon a
# single srcdir that points to the root of a package tree to ensure differential compilation
# works.
return type(tgt), tgt.target_base
def create_target(category, target_name, target_index, targets):
def name(name):
return "%s-%s-%d" % (target_name, name, target_index)
# TODO(John Sirois): JavaLibrary and ScalaLibrary can float here between src/ and tests/ - add
# ant build support to allow the same treatment for JavaThriftLibrary and JavaProtobufLibrary
# so that tests can house test IDL in tests/
target_type, base = category
if target_type == JavaProtobufLibrary:
return JavaProtobufLibrary._aggregate(name('protobuf'), provides, buildflags, targets)
elif target_type == JavaThriftLibrary:
return JavaThriftLibrary._aggregate(name('thrift'), provides, buildflags, targets)
elif target_type == AnnotationProcessor:
return AnnotationProcessor._aggregate(name('apt'), provides, targets)
elif target_type == JavaLibrary:
return JavaLibrary._aggregate(name('java'), provides, deployjar, buildflags, targets, base)
elif target_type == ScalaLibrary:
return ScalaLibrary._aggregate(name('scala'), provides, deployjar, buildflags, targets, base)
elif target_type == JavaTests:
return JavaTests._aggregate(name('java-tests'), buildflags, targets)
elif target_type == ScalaTests:
return ScalaTests._aggregate(name('scala-tests'), buildflags, targets)
else:
raise Exception("Cannot aggregate targets of type: %s" % target_type)
# TODO(John Sirois): support a flag that selects conflict resolution policy - this currently
# happens to mirror the ivy policy we use
def resolve_conflicts(target):
dependencies = {}
for dependency in target.resolved_dependencies:
for jar in dependency._as_jar_dependencies():
key = jar.org, jar.name
previous = dependencies.get(key, jar)
if jar.rev >= previous.rev:
if jar != previous:
print "WARNING: replacing %s with %s for %s" % (previous, jar, target._id)
target.resolved_dependencies.remove(previous)
target.jar_dependencies.remove(previous)
dependencies[key] = jar
return target
# chunk up our targets by type & custom build xml
coalesced = InternalTarget.coalesce_targets(java_targets, discriminator)
coalesced = list(reversed(coalesced))
start_type = discriminator(coalesced[0])
start = 0
descriptors = []
for current in range(0, len(coalesced)):
current_target = coalesced[current]
current_type = discriminator(current_target)
if current_target.custom_antxml_path:
if start < current:
# if we have a type chunk to our left, record it
descriptors.append((start_type, coalesced[start:current]))
# record a chunk containing just the target that has the custom build xml to be conservative
descriptors.append((current_type, [current_target]))
start = current + 1
if current < (len(coalesced) - 1):
start_type = discriminator(coalesced[start])
elif start_type != current_type:
# record the type chunk we just left
descriptors.append((start_type, coalesced[start:current]))
start = current
start_type = current_type
if start < len(coalesced):
# record the tail chunk
descriptors.append((start_type, coalesced[start:]))
# build meta targets aggregated from the chunks and keep track of which targets end up in which
# meta targets
meta_targets_by_target_id = dict()
targets_by_meta_target = []
for (ttype, targets), index in zip(descriptors, reversed(range(0, len(descriptors)))):
meta_target = resolve_conflicts(create_target(ttype, meta_target_base_name, index, targets))
#.........这里部分代码省略.........
开发者ID:crnt,项目名称:commons,代码行数:101,代码来源:bang.py
示例17: __init__
def __init__(self, name, dependencies=None, num_sources=0):
with ParseContext.temp():
InternalTarget.__init__(self, name, dependencies)
TargetWithSources.__init__(self, name)
self.num_sources = num_sources
开发者ID:benhuang-zh,项目名称:commons,代码行数:5,代码来源:mock_target.py
注:本文中的twitter.pants.targets.InternalTarget类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论