本文整理汇总了Python中zeroinstall.injector.model.parse_version函数的典型用法代码示例。如果您正苦于以下问题:Python parse_version函数的具体用法?Python parse_version怎么用?Python parse_version使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了parse_version函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: __init__
def __init__(self, config, requirements):
"""
@param config: The configuration settings to use
@type config: L{config.Config}
@param requirements: Details about the program we want to run
@type requirements: L{requirements.Requirements}
@since: 0.53
"""
self.watchers = []
assert config
self.config = config
assert requirements
self.requirements = requirements
self.target_arch = arch.get_architecture(requirements.os, requirements.cpu)
from zeroinstall.injector.solver import DefaultSolver
self.solver = DefaultSolver(self.config)
logger.debug(_("Supported systems: '%s'"), arch.os_ranks)
logger.debug(_("Supported processors: '%s'"), arch.machine_ranks)
if requirements.before or requirements.not_before:
self.solver.extra_restrictions[config.iface_cache.get_interface(requirements.interface_uri)] = [
model.VersionRangeRestriction(
model.parse_version(requirements.before), model.parse_version(requirements.not_before)
)
]
开发者ID:timdiels,项目名称:0install,代码行数:31,代码来源:driver.py
示例2: update_element
def update_element(self, element, widgets):
element.setAttribute('interface', widgets.get_widget('requires_uri').get_active_text())
before = widgets.get_widget('before').get_text() or None
not_before = widgets.get_widget('not_before').get_text() or None
if before: model.parse_version(before)
if not_before: model.parse_version(not_before)
if before or not_before:
if not self.version_element:
self.version_element = create_element(element, 'version')
set_or_remove(self.version_element, 'before', before)
set_or_remove(self.version_element, 'not-before', not_before)
elif self.version_element:
remove_element(self.version_element)
self.version_element = None
env_name = widgets.get_widget('env_name').get_active_text()
env_insert = widgets.get_widget('env_insert').get_active_text()
env_mode = widgets.get_widget('env_mode').get_active_text().lower()
env_default = widgets.get_widget('env_default').get_text()
if env_name:
if not self.env_element:
self.env_element = create_element(element, 'environment')
self.env_element.setAttribute('name', env_name)
self.env_element.setAttribute('insert', env_insert)
self.env_element.setAttribute('mode', env_mode)
set_or_remove(self.env_element, 'default', env_default)
elif env_insert or env_default:
raise Exception('Missing environment variable name!')
elif self.env_element:
remove_element(self.env_element)
self.env_element = None
开发者ID:dabrahams,项目名称:0publish-gui,代码行数:35,代码来源:requires.py
示例3: build
def build(selections_xml):
# Get the chosen versions
sels = selections.Selections(qdom.parse(BytesIO(selections_xml)))
impl = sels.selections[interface_uri]
min_version = impl.attrs.get(XMLNS_0COMPILE + " min-version", our_min_version)
# Check the syntax is valid and the version is high enough
if model.parse_version(min_version) < model.parse_version(our_min_version):
min_version = our_min_version
# Do the whole build-and-register-feed
c = Command()
c.run(
(
"0launch",
"--message",
_("Download the 0compile tool, to compile the source code"),
"--not-before=" + min_version,
"http://0install.net/2006/interfaces/0compile.xml",
"gui",
interface_uri,
),
lambda unused: on_success(),
)
开发者ID:timdiels,项目名称:0install,代码行数:25,代码来源:compile.py
示例4: get_package_info
def get_package_info(self, package, factory):
# Add any already-installed package...
"""@type package: str"""
installed_cached_info = self._get_dpkg_info(package)
if installed_cached_info != '-':
installed_version, machine = installed_cached_info.split('\t')
impl = factory('package:deb:%s:%s:%s' % (package, installed_version, machine))
impl.version = model.parse_version(installed_version)
if machine != '*':
impl.machine = machine
else:
installed_version = None
# Add any uninstalled candidates (note: only one of these two methods will add anything)
# From PackageKit...
self.packagekit.get_candidates(package, factory, 'package:deb')
# From apt-cache...
cached = self.apt_cache.get(package, None)
if cached:
candidate_version = cached['version']
candidate_arch = cached['arch']
if candidate_version and candidate_version != installed_version:
impl = factory('package:deb:%s:%s:%s' % (package, candidate_version, candidate_arch), installed = False)
impl.version = model.parse_version(candidate_version)
if candidate_arch != '*':
impl.machine = candidate_arch
impl.download_sources.append(model.DistributionSource(package, cached['size'], needs_confirmation = False))
开发者ID:afb,项目名称:0install,代码行数:30,代码来源:distro.py
示例5: get_package_info
def get_package_info(self, package, factory):
# Add any already-installed package...
installed_cached_info = self._get_dpkg_info(package)
if installed_cached_info != '-':
installed_version, machine = installed_cached_info.split('\t')
impl = factory('package:deb:%s:%s:%s' % (package, installed_version, machine))
impl.version = model.parse_version(installed_version)
if machine != '*':
impl.machine = machine
else:
installed_version = None
# Add any uninstalled candidates (note: only one of these two methods will add anything)
# From PackageKit...
self.packagekit.get_candidates(package, factory, 'package:deb')
# From apt-cache...
cached = self.apt_cache.get(package, None)
if cached:
candidate_version = cached['version']
candidate_arch = cached['arch']
if candidate_version and candidate_version != installed_version:
impl = factory('package:deb:%s:%s:%s' % (package, candidate_version, candidate_arch), installed = False)
impl.version = model.parse_version(candidate_version)
if candidate_arch != '*':
impl.machine = candidate_arch
def install(handler):
raise model.SafeException(_("This program depends on '%s', which is a package that is available through your distribution. "
"Please install it manually using your distribution's tools and try again. Or, install 'packagekit' and I can "
"use that to install it.") % package)
impl.download_sources.append(model.DistributionSource(package, cached['size'], install, needs_confirmation = False))
开发者ID:dsqmoore,项目名称:0install,代码行数:33,代码来源:distro.py
示例6: testConstraints
def testConstraints(self):
self.cache_iface('http://bar',
"""<?xml version="1.0" ?>
<interface last-modified="1110752708"
uri="http://bar"
xmlns="http://zero-install.sourceforge.net/2004/injector/interface">
<name>Bar</name>
<summary>Bar</summary>
<description>Bar</description>
<implementation id='sha1=100' version='1.0'>
<archive href='foo' size='10'/>
</implementation>
<implementation id='sha1=150' stability='developer' version='1.5'>
<archive href='foo' size='10'/>
</implementation>
<implementation id='sha1=200' version='2.0'>
<archive href='foo' size='10'/>
</implementation>
</interface>""")
self.cache_iface(foo_iface_uri,
"""<?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='dummy'>
<requires interface='http://bar'>
<version/>
</requires>
<implementation id='sha1=123' version='1.0'>
<archive href='foo' size='10'/>
</implementation>
</group>
</interface>""" % foo_iface_uri)
policy = Policy(foo_iface_uri, config = self.config)
policy.network_use = model.network_full
policy.freshness = 0
#logger.setLevel(logging.DEBUG)
recalculate(policy)
#logger.setLevel(logging.WARN)
foo_iface = self.config.iface_cache.get_interface(foo_iface_uri)
bar_iface = self.config.iface_cache.get_interface('http://bar')
assert policy.implementation[bar_iface].id == 'sha1=200'
dep = policy.implementation[foo_iface].dependencies['http://bar']
assert len(dep.restrictions) == 1
restriction = dep.restrictions[0]
restriction.before = model.parse_version('2.0')
recalculate(policy)
assert policy.implementation[bar_iface].id == 'sha1=100'
restriction.not_before = model.parse_version('1.5')
recalculate(policy)
assert policy.implementation[bar_iface].id == 'sha1=150'
开发者ID:gvsurenderreddy,项目名称:zeroinstall,代码行数:57,代码来源:testautopolicy.py
示例7: get_previous_release
def get_previous_release(this_version):
"""Return the highest numbered verison in the master feed before this_version.
@return: version, or None if there wasn't one"""
parsed_release_version = model.parse_version(this_version)
versions = [model.parse_version(version) for version in scm.get_tagged_versions()]
versions = [version for version in versions if version < parsed_release_version]
if versions:
return model.format_version(max(versions))
return None
开发者ID:0install,项目名称:0release,代码行数:11,代码来源:release.py
示例8: __init__
def __init__(self, root = None, handler = None, src = None, command = -1, config = None, requirements = None):
"""
@param requirements: Details about the program we want to run
@type requirements: L{requirements.Requirements}
@param config: The configuration settings to use, or None to load from disk.
@type config: L{ConfigParser.ConfigParser}
Note: all other arguments are deprecated (since 0launch 0.52)
"""
self.watchers = []
if requirements is None:
from zeroinstall.injector.requirements import Requirements
requirements = Requirements(root)
requirements.source = bool(src) # Root impl must be a "src" machine type
if command == -1:
if src:
command = 'compile'
else:
command = 'run'
requirements.command = command
self.target_arch = arch.get_host_architecture()
else:
assert root == src == None
assert command == -1
self.target_arch = arch.get_architecture(requirements.os, requirements.cpu)
self.requirements = requirements
self.stale_feeds = set()
if config is None:
self.config = load_config(handler or Handler())
else:
assert handler is None, "can't pass a handler and a config"
self.config = config
from zeroinstall.injector.solver import DefaultSolver
self.solver = DefaultSolver(self.config)
# If we need to download something but can't because we are offline,
# warn the user. But only the first time.
self._warned_offline = False
debug(_("Supported systems: '%s'"), arch.os_ranks)
debug(_("Supported processors: '%s'"), arch.machine_ranks)
if requirements.before or requirements.not_before:
self.solver.extra_restrictions[config.iface_cache.get_interface(requirements.interface_uri)] = [
model.VersionRangeRestriction(model.parse_version(requirements.before),
model.parse_version(requirements.not_before))]
开发者ID:pombredanne,项目名称:zero-install,代码行数:48,代码来源:policy.py
示例9: get_candidates
def get_candidates(self, package_name, factory, prefix):
"""Add any cached candidates.
The candidates are those discovered by a previous call to L{fetch_candidates}.
@param package_name: the distribution's name for the package
@type package_name: str
@param factory: a function to add a new implementation to the feed
@param prefix: the prefix for the implementation's ID
@type prefix: str"""
candidates = self._candidates.get(package_name, None)
if candidates is None:
return
if isinstance(candidates, tasks.Blocker):
return # Fetch still in progress
for candidate in candidates:
impl_name = '%s:%s:%s:%s' % (prefix, package_name, candidate['version'], candidate['arch'])
impl = factory(impl_name, only_if_missing = True, installed = candidate['installed'])
if impl is None:
# (checking this way because the cached candidate['installed'] may be stale)
return # Already installed
impl.version = model.parse_version(candidate['version'])
if candidate['arch'] != '*':
impl.machine = candidate['arch']
impl.download_sources.append(model.DistributionSource(package_name, candidate['size'], packagekit_id = candidate['packagekit_id']))
开发者ID:afb,项目名称:0install,代码行数:28,代码来源:packagekit.py
示例10: get_candidates
def get_candidates(self, package_name, factory, prefix):
"""Add any cached candidates.
The candidates are those discovered by a previous call to L{fetch_candidates}.
@param package_name: the distribution's name for the package
@param factory: a function to add a new implementation to the feed
@param prefix: the prefix for the implementation's ID
"""
candidate = self._candidates.get(package_name, None)
if candidate is None:
return
if isinstance(candidate, tasks.Blocker):
return # Fetch still in progress
impl_name = '%s:%s:%s:%s' % (prefix, package_name, candidate['version'], candidate['arch'])
impl = factory(impl_name, only_if_missing = True, installed = candidate['installed'])
if impl is None:
# (checking this way because the cached candidate['installed'] may be stale)
return # Already installed
impl.version = model.parse_version(candidate['version'])
if candidate['arch'] != '*':
impl.machine = candidate['arch']
def install(handler):
packagekit_id = candidate['packagekit_id']
def download_factory(url, hint):
return PackageKitDownload(url, hint, pk = self.pk, packagekit_id = packagekit_id)
dl = handler.get_download('packagekit:' + packagekit_id, factory = download_factory, hint = impl)
dl.expected_size = candidate['size']
return dl.downloaded
impl.download_sources.append(model.DistributionSource(package_name, candidate['size'], install))
开发者ID:pombredanne,项目名称:zero-install,代码行数:33,代码来源:packagekit.py
示例11: testLocalPath
def testLocalPath(self):
# 0launch --get-selections Local.xml
iface = os.path.join(mydir, "Local.xml")
driver = Driver(requirements = Requirements(iface), config = self.config)
driver.need_download()
assert driver.solver.ready
s1 = driver.solver.selections
xml = s1.toDOM().toxml("utf-8")
# Reload selections and check they're the same
root = qdom.parse(BytesIO(xml))
s2 = selections.Selections(root)
local_path = s2.selections[iface].local_path
assert os.path.isdir(local_path), local_path
assert not s2.selections[iface].digests, s2.selections[iface].digests
# Add a newer implementation and try again
feed = self.config.iface_cache.get_feed(iface)
impl = model.ZeroInstallImplementation(feed, "foo bar=123", local_path = None)
impl.version = model.parse_version('1.0')
impl.commands["run"] = model.Command(qdom.Element(namespaces.XMLNS_IFACE, 'command', {'path': 'dummy', 'name': 'run'}), None)
impl.add_download_source('http://localhost/bar.tgz', 1000, None)
feed.implementations = {impl.id: impl}
assert driver.need_download()
assert driver.solver.ready, driver.solver.get_failure_reason()
s1 = driver.solver.selections
xml = s1.toDOM().toxml("utf-8")
root = qdom.parse(BytesIO(xml))
s2 = selections.Selections(root)
xml = s2.toDOM().toxml("utf-8")
qdom.parse(BytesIO(xml))
assert s2.selections[iface].local_path is None
assert not s2.selections[iface].digests, s2.selections[iface].digests
assert s2.selections[iface].id == 'foo bar=123'
开发者ID:AlexanderRyzhko,项目名称:0install-TUF,代码行数:34,代码来源:testselections.py
示例12: get_package_info
def get_package_info(self, package, factory):
# Add installed versions...
for entry in os.listdir(self._packages_dir):
name, version, build = entry.rsplit('-', 2)
if name == package:
gotarch = False
with open(os.path.join(self._packages_dir, entry, "desc"), 'rt') as stream:
for line in stream:
if line == "%ARCH%\n":
gotarch = True
continue
if gotarch:
arch = line.strip()
break
zi_arch = canonical_machine(arch)
clean_version = try_cleanup_distro_version("%s-%s" % (version, build))
if not clean_version:
logger.warn(_("Can't parse distribution version '%(version)s' for package '%(package)s'"), {'version': version, 'package': name})
continue
impl = factory('package:arch:%s:%s:%s' % \
(package, clean_version, zi_arch))
impl.version = model.parse_version(clean_version)
if zi_arch != '*':
impl.machine = zi_arch
# Add any uninstalled candidates found by PackageKit
self.packagekit.get_candidates(package, factory, 'package:arch')
开发者ID:gvsurenderreddy,项目名称:0install,代码行数:28,代码来源:distro.py
示例13: testLocalPath
def testLocalPath(self):
# 0launch --get-selections Local.xml
iface = os.path.join(mydir, "Local.xml")
p = policy.Policy(iface, config=self.config)
p.need_download()
assert p.ready
s1 = selections.Selections(p)
xml = s1.toDOM().toxml("utf-8")
# Reload selections and check they're the same
root = qdom.parse(StringIO(xml))
s2 = selections.Selections(root)
local_path = s2.selections[iface].local_path
assert os.path.isdir(local_path), local_path
assert not s2.selections[iface].digests, s2.selections[iface].digests
# Add a newer implementation and try again
feed = self.config.iface_cache.get_feed(iface)
impl = model.ZeroInstallImplementation(feed, "foo bar=123", local_path=None)
impl.version = model.parse_version("1.0")
impl.commands["run"] = model.Command(qdom.Element(namespaces.XMLNS_IFACE, "command", {"path": "dummy"}), None)
impl.add_download_source("http://localhost/bar.tgz", 1000, None)
feed.implementations = {impl.id: impl}
assert p.need_download()
assert p.ready, p.solver.get_failure_reason()
s1 = selections.Selections(p)
xml = s1.toDOM().toxml("utf-8")
root = qdom.parse(StringIO(xml))
s2 = selections.Selections(root)
xml = s2.toDOM().toxml("utf-8")
qdom.parse(StringIO(xml))
assert s2.selections[iface].local_path is None
assert not s2.selections[iface].digests, s2.selections[iface].digests
assert s2.selections[iface].id == "foo bar=123"
开发者ID:timdiels,项目名称:zeroinstall,代码行数:34,代码来源:testselections.py
示例14: get_feed
def get_feed(self, master_feed):
"""Generate a feed containing information about distribution packages.
This should immediately return a feed containing an implementation for the
package if it's already installed. Information about versions that could be
installed using the distribution's package manager can be added asynchronously
later (see L{fetch_candidates}).
@param master_feed: feed containing the <package-implementation> elements
@type master_feed: L{model.ZeroInstallFeed}
@rtype: L{model.ZeroInstallFeed}"""
feed = model.ZeroInstallFeed(None)
feed.url = 'distribution:' + master_feed.url
for item, item_attrs in master_feed.get_package_impls(self):
package = item_attrs.get('package', None)
if package is None:
raise model.InvalidInterface(_("Missing 'package' attribute on %s") % item)
def factory(id, only_if_missing = False, installed = True):
assert id.startswith('package:')
if id in feed.implementations:
if only_if_missing:
return None
warn(_("Duplicate ID '%s' for DistributionImplementation"), id)
impl = model.DistributionImplementation(feed, id, self, item)
feed.implementations[id] = impl
impl.installed = installed
impl.metadata = item_attrs
if 'run' not in impl.commands:
item_main = item_attrs.get('main', None)
if item_main:
if item_main.startswith('/'):
impl.main = item_main
else:
raise model.InvalidInterface(_("'main' attribute must be absolute, but '%s' doesn't start with '/'!") %
item_main)
impl.upstream_stability = model.packaged
return impl
self.get_package_info(package, factory)
if master_feed.url == 'http://repo.roscidus.com/python/python' and all(not impl.installed for impl in feed.implementations.values()):
# Hack: we can support Python on platforms with unsupported package managers
# by adding the implementation of Python running us now to the list.
python_version = '.'.join([str(v) for v in sys.version_info if isinstance(v, int)])
impl_id = 'package:host:python:' + python_version
assert impl_id not in feed.implementations
impl = model.DistributionImplementation(feed, impl_id, self)
impl.installed = True
impl.version = model.parse_version(python_version)
impl.main = sys.executable
impl.upstream_stability = model.packaged
impl.machine = host_machine # (hopefully)
feed.implementations[impl_id] = impl
return feed
开发者ID:dabrahams,项目名称:zeroinstall,代码行数:59,代码来源:distro.py
示例15: add_versions
def add_versions(parent, version):
for x in child_elements(parent):
if x.namespaceURI != XMLNS_INTERFACE: continue
if x.hasAttribute('version'): version = x.getAttribute('version')
if x.localName == 'group':
add_versions(x, version)
elif x.localName == 'implementation':
versions.append((model.parse_version(version), x))
开发者ID:dabrahams,项目名称:0publish-gui,代码行数:8,代码来源:main.py
示例16: fixup
def fixup(self, package, impl):
"""@type package: str
@type impl: L{zeroinstall.injector.model.DistributionImplementation}"""
if impl.id.startswith('package:deb:openjdk-6-jre:') or \
impl.id.startswith('package:deb:openjdk-7-jre:'):
# Debian marks all Java versions as pre-releases
# See: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=685276
impl.version = model.parse_version(impl.get_version().replace('-pre', '.'))
开发者ID:afb,项目名称:0install,代码行数:8,代码来源:distro.py
示例17: find_java
def find_java(part, jvm_version, zero_version):
for arch in ['i386', 'x86_64']:
home = java_home(jvm_version, arch)
if os.path.isfile(home + "/bin/java"):
impl = factory('package:darwin:%s:%s:%s' % (package, zero_version, arch))
impl.machine = arch
impl.version = model.parse_version(zero_version)
impl.upstream_stability = model.packaged
impl.main = home + "/bin/java"
开发者ID:dsqmoore,项目名称:0install,代码行数:9,代码来源:distro.py
示例18: get_version
def get_version(x):
root = x.ownerDocument.documentElement
while x is not root:
version = x.getAttribute('version')
if version:
mod = x.getAttribute('version-modifier')
if mod: version += mod
return model.parse_version(version)
x = x.parentNode
raise Exception("No version on %s" % x)
开发者ID:timdiels,项目名称:0publish,代码行数:10,代码来源:stable.py
示例19: find_program
def find_program(file):
if os.path.isfile(file) and os.access(file, os.X_OK):
program_version = try_cleanup_distro_version(get_version(file))
impl = factory('package:darwin:%s:%s' % (package, program_version), True)
if impl:
impl.installed = True
impl.version = model.parse_version(program_version)
impl.upstream_stability = model.packaged
impl.machine = host_machine # (hopefully)
impl.main = file
开发者ID:dsqmoore,项目名称:0install,代码行数:10,代码来源:distro.py
示例20: find_netfx
def find_netfx(win_version, zero_version):
reg_path = r"SOFTWARE\Microsoft\NET Framework Setup\NDP\{win_version}".format(win_version = win_version)
(netfx32_install, netfx64_install) = _read_hklm_reg(reg_path, "Install")
for (install, arch) in [(netfx32_install, 'i486'), (netfx64_install, 'x86_64')]:
impl = factory('package:windows:%s:%s:%s' % (package, zero_version, arch))
impl.installed = (install == 1)
impl.machine = arch
impl.version = model.parse_version(zero_version)
impl.upstream_stability = model.packaged
impl.main = "" # .NET executables do not need a runner on Windows but they need one elsewhere
开发者ID:afb,项目名称:0install,代码行数:11,代码来源:distro.py
注:本文中的zeroinstall.injector.model.parse_version函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论