本文整理汇总了Python中twitter.pants.base.parse_context.ParseContext类的典型用法代码示例。如果您正苦于以下问题:Python ParseContext类的具体用法?Python ParseContext怎么用?Python ParseContext使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ParseContext类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_locate
def test_locate(self):
with pytest.raises(ParseContext.ContextError):
ParseContext.locate()
with temporary_dir() as root_dir:
a_context = ParseContext(create_buildfile(root_dir, 'a'))
b_context = ParseContext(create_buildfile(root_dir, 'b'))
def test_in_a():
self.assertEquals(a_context, ParseContext.locate())
return b_context.do_in_context(lambda: ParseContext.locate())
self.assertEquals(b_context, a_context.do_in_context(test_in_a))
示例2: __init__
def __init__(self, spec, exclusives=None):
"""
:param string spec: target address. E.g., `src/java/com/twitter/common/util/BUILD\:util`
"""
# it's critical the spec is parsed 1st, the results are needed elsewhere in constructor flow
parse_context = ParseContext.locate()
def parse_address():
if spec.startswith(':'):
# the :[target] could be in a sibling BUILD - so parse using the canonical address
pathish = "%s:%s" % (parse_context.buildfile.canonical_relpath,
spec[1:])
return Address.parse(parse_context.buildfile.root_dir, pathish,
False)
else:
return Address.parse(parse_context.buildfile.root_dir, spec,
False)
try:
self.address = parse_address()
except IOError as e:
self.address = parse_context.buildfile.relpath
raise TargetDefinitionException(
self, '%s%s' % (self._DEFINITION_ERROR_MSG, e))
# We must disable the re-init check, because our funky __getattr__ breaks it.
# We're not involved in any multiple inheritance, so it's OK to disable it here.
super(Pants, self).__init__(
self.address.target_name,
reinit_check=False,
exclusives=exclusives)
示例3: extract_target
def extract_target(java_targets, is_classpath):
primary_target = InternalTarget.sort_targets(java_targets)[0]
with ParseContext.temp(primary_target.target_base):
internal_deps, jar_deps = _extract_target(java_targets, is_classpath)
# TODO(John Sirois): make an empty source set work in ant/compile.xml
sources = [ '__no_source__' ]
all_deps = OrderedSet()
all_deps.update(internal_deps)
all_deps.update(jar_deps)
if is_java(primary_target):
return JavaLibrary('ide',
sources,
dependencies = all_deps,
is_meta = True)
elif is_scala(primary_target):
return ScalaLibrary('ide',
sources,
dependencies = all_deps,
is_meta = True)
else:
raise TypeError("Cannot generate IDE configuration for targets: %s" % java_targets)
示例4: test_binary_target_injected_into_minified_dependencies
def test_binary_target_injected_into_minified_dependencies(self):
with ParseContext.temp():
foo = python_library(
name = 'foo',
provides = setup_py(
name = 'foo',
version = '0.0.0',
).with_binaries(
foo_binary = pants(':foo_bin')
)
)
foo_bin = python_binary(
name = 'foo_bin',
entry_point = 'foo.bin.foo',
dependencies = [ pants(':foo_bin_dep') ]
)
foo_bin_dep = python_library(
name = 'foo_bin_dep'
)
assert SetupPy.minified_dependencies(foo) == OrderedSet([foo_bin, foo_bin_dep])
entry_points = dict(SetupPy.iter_entry_points(foo))
assert entry_points == {'foo_binary': 'foo.bin.foo'}
with self.run_execute(foo, recursive=False) as setup_py_command:
setup_py_command.run_one.assert_called_with(foo)
with self.run_execute(foo, recursive=True) as setup_py_command:
setup_py_command.run_one.assert_called_with(foo)
示例5: PythonEgg
def PythonEgg(glob, name=None):
"""Refers to pre-built Python eggs in the file system. (To instead fetch
eggs in a ``pip``/``easy_install`` way, use ``python_requirement``)
E.g., ``egg(name='foo', glob='foo-0.1-py2.6.egg')`` would pick up the
file ``foo-0.1-py2.6.egg`` from the ``BUILD`` file's directory; targets
could depend on it by name ``foo``.
:param string glob: File glob pattern.
:param string name: Target name; by default uses the egg's project name.
"""
# TODO(John Sirois): Rationalize with globs handling in ParseContext
eggs = fsglob(ParseContext.path(glob))
requirements = set()
for egg in eggs:
if os.path.isdir(egg):
metadata = PathMetadata(egg, os.path.join(egg, 'EGG-INFO'))
else:
metadata = EggMetadata(zipimporter(egg))
dist = Distribution.from_filename(egg, metadata=metadata)
requirements.add(dist.as_requirement())
if len(requirements) > 1:
raise ValueError('Got multiple egg versions! => %s' % requirements)
return PythonRequirement(str(requirements.pop()), name=name)
示例6: test_python_binary_with_entry_point_and_source
def test_python_binary_with_entry_point_and_source(self):
with ParseContext.temp('src'):
assert 'blork' == PythonBinary(
name = 'binary1', entry_point = 'blork', source='blork.py').entry_point
assert 'blork:main' == PythonBinary(
name = 'binary2', entry_point = 'blork:main', source='blork.py').entry_point
assert 'bin.blork:main' == PythonBinary(
name = 'binary3', entry_point = 'bin.blork:main', source='bin/blork.py').entry_point
示例7: test_validation
def test_validation(self):
with ParseContext.temp('InternalTargetTest/test_validation'):
InternalTarget(name="valid", dependencies=None)
self.assertRaises(TargetDefinitionException, InternalTarget,
name=1, dependencies=None)
InternalTarget(name="valid2", dependencies=Target(name='mybird'))
self.assertRaises(TargetDefinitionException, InternalTarget,
name='valid3', dependencies=1)
示例8: __init__
def __init__(self, target, msg):
address = getattr(target, 'address', None)
if address is None:
try:
location = ParseContext.locate().current_buildfile
except ParseContext.ContextError:
location = 'unknown location'
address = 'unknown target of type %s in %s' % (target.__class__.__name__, location)
super(Exception, self).__init__('Error with %s: %s' % (address, msg))
示例9: dump
def dump(self):
self.debug("Building PythonBinary %s:" % self._target)
targets = self.resolve([self._target] + self._extra_targets)
for lib in targets["libraries"] | targets["binaries"]:
self._dump_library(lib)
generated_reqs = OrderedSet()
if targets["thrifts"]:
for thr in set(targets["thrifts"]):
if thr not in self.MEMOIZED_THRIFTS:
self.MEMOIZED_THRIFTS[thr] = self._generate_thrift_requirement(thr)
generated_reqs.add(self.MEMOIZED_THRIFTS[thr])
with ParseContext.temp():
# trick pants into letting us add this python requirement, otherwise we get
# TargetDefinitionException: Error in target BUILD.temp:thrift: duplicate to
# PythonRequirement(thrift)
#
# TODO(wickman) Instead of just blindly adding a PythonRequirement for thrift, we
# should first detect if any explicit thrift requirements have been added and use
# those. Only if they have not been supplied should we auto-inject it.
generated_reqs.add(
PythonRequirement(
"thrift", use_2to3=True, name="thrift-" + "".join(random.sample("0123456789abcdef" * 8, 8))
)
)
for antlr in targets["antlrs"]:
generated_reqs.add(self._generate_antlr_requirement(antlr))
targets["reqs"] |= generated_reqs
reqs_to_build = OrderedSet()
for req in targets["reqs"]:
if not req.should_build(self._interpreter.python, Platform.current()):
self.debug("Skipping %s based upon version filter" % req)
continue
reqs_to_build.add(req)
self._dump_requirement(req._requirement, False, req._repository)
platforms = self._platforms
if isinstance(self._target, PythonBinary):
platforms = self._target.platforms
distributions = resolve_multi(self._config, reqs_to_build, interpreter=self._interpreter, platforms=platforms)
locations = set()
for platform, dist_set in distributions.items():
for dist in dist_set:
if dist.location not in locations:
self._dump_distribution(dist)
locations.add(dist.location)
if len(targets["binaries"]) > 1:
print("WARNING: Target has multiple python_binary targets!", file=sys.stderr)
return self._builder
示例10: execute
def execute(self):
if self.options.pex and self.options.ipython:
self.error('Cannot specify both --pex and --ipython!')
if self.options.entry_point and self.options.ipython:
self.error('Cannot specify both --entry_point and --ipython!')
if self.options.verbose:
print('Build operating on target: %s %s' % (self.target,
'Extra targets: %s' % ' '.join(map(str, self.extra_targets)) if self.extra_targets else ''))
builder = PEXBuilder(tempfile.mkdtemp(), interpreter=self.interpreter,
pex_info=self.target.pexinfo if isinstance(self.target, PythonBinary) else None)
if self.options.entry_point:
builder.set_entry_point(self.options.entry_point)
if self.options.ipython:
if not self.config.has_section('python-ipython'):
self.error('No python-ipython sections defined in your pants.ini!')
builder.info.entry_point = self.config.get('python-ipython', 'entry_point')
if builder.info.entry_point is None:
self.error('Must specify entry_point for IPython in the python-ipython section '
'of your pants.ini!')
requirements = self.config.getlist('python-ipython', 'requirements', default=[])
with ParseContext.temp():
for requirement in requirements:
self.extra_targets.append(PythonRequirement(requirement))
executor = PythonChroot(
self.target,
self.root_dir,
builder=builder,
interpreter=self.interpreter,
extra_targets=self.extra_targets,
conn_timeout=self.options.conn_timeout)
executor.dump()
if self.options.pex:
pex_name = os.path.join(self.root_dir, 'dist', '%s.pex' % self.target.name)
builder.build(pex_name)
print('Wrote %s' % pex_name)
return 0
else:
builder.freeze()
pex = PEX(builder.path(), interpreter=self.interpreter)
po = pex.run(args=list(self.args), blocking=False)
try:
return po.wait()
except KeyboardInterrupt:
po.send_signal(signal.SIGINT)
raise
示例11: test_python_binary_with_entry_point_and_source_mismatch
def test_python_binary_with_entry_point_and_source_mismatch(self):
with ParseContext.temp('src'):
with pytest.raises(TargetDefinitionException):
PythonBinary(name = 'binary1', entry_point = 'blork', source='hork.py')
with pytest.raises(TargetDefinitionException):
PythonBinary(name = 'binary2', entry_point = 'blork:main', source='hork.py')
with pytest.raises(TargetDefinitionException):
PythonBinary(name = 'binary3', entry_point = 'bin.blork', source='blork.py')
with pytest.raises(TargetDefinitionException):
PythonBinary(name = 'binary4', entry_point = 'bin.blork', source='bin.py')
示例12: generate_test_targets
def generate_test_targets(cls):
if cls.TESTING_TARGETS is None:
with ParseContext.temp():
cls.TESTING_TARGETS = [
PythonRequirement('pytest'),
PythonRequirement('pytest-cov'),
PythonRequirement('unittest2', version_filter=lambda py, pl: py.startswith('2')),
PythonRequirement('unittest2py3k', version_filter=lambda py, pl: py.startswith('3'))
]
return cls.TESTING_TARGETS
示例13: __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
示例14: create_dependencies
def create_dependencies(depmap):
target_map = {}
with ParseContext.temp():
for name, deps in depmap.items():
target_map[name] = python_library(
name=name,
provides=setup_py(name=name, version='0.0.0'),
dependencies=[pants(':%s' % dep) for dep in deps]
)
return target_map
示例15: get_syms
def get_syms():
r = {}
vc = ParseContext.default_globals()
for s in vc:
if s in PREDEFS:
continue
if s[0].isupper():
continue # REMIND see both jvm_binary and JvmBinary??
o = vc[s]
r[s] = o
return r