本文整理匯總了Python中zeroinstall.injector.policy.Policy.solve_and_download_impls方法的典型用法代碼示例。如果您正苦於以下問題:Python Policy.solve_and_download_impls方法的具體用法?Python Policy.solve_and_download_impls怎麽用?Python Policy.solve_and_download_impls使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類zeroinstall.injector.policy.Policy
的用法示例。
在下文中一共展示了Policy.solve_and_download_impls方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: testAbsMain
# 需要導入模塊: from zeroinstall.injector.policy import Policy [as 別名]
# 或者: from zeroinstall.injector.policy.Policy import solve_and_download_impls [as 別名]
def testAbsMain(self):
tmp = tempfile.NamedTemporaryFile(prefix = 'test-')
tmp.write(
"""<?xml version="1.0" ?>
<interface last-modified="1110752708"
uri="%s"
xmlns="http://zero-install.sourceforge.net/2004/injector/interface">
<name>Foo</name>
<summary>Foo</summary>
<description>Foo</description>
<group main='/bin/sh'>
<implementation id='.' version='1'/>
</group>
</interface>""" % foo_iface_uri)
tmp.flush()
policy = Policy(tmp.name, config = self.config)
try:
downloaded = policy.solve_and_download_impls()
if downloaded:
policy.handler.wait_for_blocker(downloaded)
run.execute_selections(policy.solver.selections, [], stores = policy.config.stores)
assert False
except SafeException, ex:
assert 'Command path must be relative' in str(ex), ex
示例2: get_selections
# 需要導入模塊: from zeroinstall.injector.policy import Policy [as 別名]
# 或者: from zeroinstall.injector.policy.Policy import solve_and_download_impls [as 別名]
def get_selections(config, options, iface_uri, select_only, download_only, test_callback):
"""Get selections for iface_uri, according to the options passed.
Will switch to GUI mode if necessary.
@param options: options from OptionParser
@param iface_uri: canonical URI of the interface
@param select_only: return immediately even if the selected versions aren't cached
@param download_only: wait for stale feeds, and display GUI button as Download, not Run
@return: the selected versions, or None if the user cancels
@rtype: L{selections.Selections} | None
"""
if options.offline:
config.network_use = model.network_offline
# Try to load it as a feed. If it is a feed, it'll get cached. If not, it's a
# selections document and we return immediately.
maybe_selections = config.iface_cache.get_feed(iface_uri, selections_ok = True)
if isinstance(maybe_selections, selections.Selections):
if not select_only:
blocker = maybe_selections.download_missing(config)
if blocker:
logging.info(_("Waiting for selected implementations to be downloaded..."))
config.handler.wait_for_blocker(blocker)
return maybe_selections
r = requirements.Requirements(iface_uri)
r.parse_options(options)
policy = Policy(config = config, requirements = r)
# Note that need_download() triggers a solve
if options.refresh or options.gui:
# We could run immediately, but the user asked us not to
can_run_immediately = False
else:
if select_only:
# --select-only: we only care that we've made a selection, not that we've cached the implementations
policy.need_download()
can_run_immediately = policy.ready
else:
can_run_immediately = not policy.need_download()
stale_feeds = [feed for feed in policy.solver.feeds_used if
not feed.startswith('distribution:') and # Ignore (memory-only) PackageKit feeds
policy.is_stale(config.iface_cache.get_feed(feed))]
if download_only and stale_feeds:
can_run_immediately = False
if can_run_immediately:
if stale_feeds:
if policy.network_use == model.network_offline:
logging.debug(_("No doing background update because we are in off-line mode."))
else:
# There are feeds we should update, but we can run without them.
# Do the update in the background while the program is running.
from zeroinstall.injector import background
background.spawn_background_update(policy, options.verbose > 0)
return policy.solver.selections
# If the user didn't say whether to use the GUI, choose for them.
if options.gui is None and os.environ.get('DISPLAY', None):
options.gui = True
# If we need to download anything, we might as well
# refresh all the feeds first.
options.refresh = True
logging.info(_("Switching to GUI mode... (use --console to disable)"))
if options.gui:
gui_args = policy.requirements.get_as_options()
if download_only:
# Just changes the button's label
gui_args.append('--download-only')
if options.refresh:
gui_args.append('--refresh')
if options.verbose:
gui_args.insert(0, '--verbose')
if options.verbose > 1:
gui_args.insert(0, '--verbose')
if options.with_store:
for x in options.with_store:
gui_args += ['--with-store', x]
if select_only:
gui_args.append('--select-only')
from zeroinstall import helpers
sels = helpers.get_selections_gui(iface_uri, gui_args, test_callback)
if not sels:
return None # Aborted
else:
# Note: --download-only also makes us stop and download stale feeds first.
downloaded = policy.solve_and_download_impls(refresh = options.refresh or download_only or False,
select_only = select_only)
if downloaded:
config.handler.wait_for_blocker(downloaded)
sels = selections.Selections(policy)
return sels