def collectDataFromRoot(self, data): # Make sure we're processing data for our server, and not some other # server that happened to be at the same IP. if self.uuid != data.attrib.get('machineIdentifier'): util.LOG( "Got a reachability response, but from a different server") return False self.serverClass = data.attrib.get('serverClass') self.supportsAudioTranscoding = data.attrib.get( 'transcoderAudio') == '1' self.supportsVideoTranscoding = data.attrib.get( 'transcoderVideo') == '1' or data.attrib.get( 'transcoderVideoQualities') self.supportsVideoRemuxOnly = data.attrib.get( 'transcoderVideoRemuxOnly') == '1' self.supportsPhotoTranscoding = data.attrib.get( 'transcoderPhoto') == '1' or ( not data.attrib.get('transcoderPhoto') and not self.synced and not self.isSecondary()) self.allowChannelAccess = data.attrib.get( 'allowChannelAccess') == '1' or ( not data.attrib.get('allowChannelAccess') and self.owned and not self.synced and not self.isSecondary()) self.supportsScrobble = not self.isSecondary() or self.synced self.allowsMediaDeletion = not self.synced and self.owned and data.attrib.get( 'allowMediaDeletion') == '1' self.multiuser = data.attrib.get('multiuser') == '1' self.name = data.attrib.get('friendlyName') or self.name self.platform = data.attrib.get('platform') # TODO(schuyler): Process transcoder qualities self.rawVersion = data.attrib.get('version') if self.rawVersion: self.versionNorm = util.normalizedVersion(self.rawVersion) features = { 'mkvTranscode': '0.9.11.11', 'themeTranscode': '0.9.14.0', 'allPartsStreamSelection': '0.9.12.5', 'claimServer': '0.9.14.2', 'streamingBrain': '1.2.0' } for f, v in features.items(): if verlib.suggest_normalized_version(v) <= self.versionNorm: self.features[f] = True appMinVer = plexapp.INTERFACE.getGlobal('minServerVersionArr', '0.0.0.0') self.isSupported = self.isSecondary( ) or verlib.suggest_normalized_version(appMinVer) <= self.versionNorm util.DEBUG_LOG( "Server information updated from reachability check: {0}".format( self)) return True
def normalizedVersion(ver): try: modv = '.'.join(ver.split('.')[:4]).rsplit( '-', 1)[0] # Clean the version i.e. Turn 1.2.3.4-asdf8 into 1.2.3.4 return verlib.suggest_normalized_version(modv) except: if ver: ERROR() return verlib.suggest_normalized_version('0.0.0')
def nextversion(current_version): """Returns incremented module version number. :param current_version: version string to increment :returns: Next version string (PEP 386 compatible) if possible. If impossible (since `current_version` is too far from PEP 386), `None` is returned. """ norm_ver = verlib.suggest_normalized_version(current_version) if norm_ver is None: return None norm_ver = verlib.NormalizedVersion(norm_ver) # increment last version figure parts = norm_ver.parts # see comments of `verlib.py` to get the idea of `parts` assert(len(parts) == 3) if len(parts[2]) > 1: # postdev if parts[2][-1] == 'f': # when `post` exists but `dev` doesn't parts = _mk_incremented_parts(parts, part_idx=2, in_part_idx=-2, incval=1) else: # when both `post` and `dev` exist parts = _mk_incremented_parts(parts, part_idx=2, in_part_idx=-1, incval=1) elif len(parts[1]) > 1: # prerel parts = _mk_incremented_parts(parts, part_idx=1, in_part_idx=-1, incval=1) else: # version & extraversion parts = _mk_incremented_parts(parts, part_idx=0, in_part_idx=-1, incval=1) norm_ver.parts = parts return str(norm_ver)
def validate_version(version): rversion = suggest_normalized_version(version) if rversion is None: raise ValueError('Cannot work with "%s"' % version) if rversion != version: warnings.warn('"%s" is not a normalized version.\n' 'It has been transformed into "%s" ' 'for interoperability.' % (version, rversion)) return NormalizedVersion(rversion)
def validate_version(version): rversion = suggest_normalized_version(version) if rversion is None: raise ValueError('Cannot work with "%s"' % version) if rversion != version: warnings.warn('"%s" is not a normalized version.\n' 'It has been transformed into "%s" ' 'for interoperability.' % (version, rversion)) return NormalizedVersion(rversion)
def get_normalized_version(_description=_get_description()): """Return the normalized version or None. Normalized versions are defined by PEP 386, and are what should go in the module's __version__ variable. """ tag, additional, commit = _parse_description(_description) if additional == '0': s = tag else: s = tag + '.post' + additional return verlib.suggest_normalized_version(s)
def get_normalized_version(_description=_get_description()): """Return the normalized version or None. Normalized versions are defined by PEP 386, and are what should go in the module's __version__ variable. """ tag, additional, commit = _parse_description(_description) if additional == '0': s = tag else: s = tag + '.post' + additional return verlib.suggest_normalized_version(s)
def nextversion(current_version): """Returns incremented module version number. :param current_version: version string to increment :returns: Next version string (PEP 386 compatible) if possible. If impossible (since `current_version` is too far from PEP 386), `None` is returned. """ norm_ver = verlib.suggest_normalized_version(current_version) if norm_ver is None: return None norm_ver = verlib.NormalizedVersion(norm_ver) # increment last version figure parts = norm_ver.parts # see comments of `verlib.py` to get the idea of `parts` assert (len(parts) == 3) if len(parts[2]) > 1: # postdev if parts[2][-1] == 'f': # when `post` exists but `dev` doesn't parts = _mk_incremented_parts(parts, part_idx=2, in_part_idx=-2, incval=1) else: # when both `post` and `dev` exist parts = _mk_incremented_parts(parts, part_idx=2, in_part_idx=-1, incval=1) elif len(parts[1]) > 1: # prerel parts = _mk_incremented_parts(parts, part_idx=1, in_part_idx=-1, incval=1) else: # version & extraversion parts = _mk_incremented_parts(parts, part_idx=0, in_part_idx=-1, incval=1) norm_ver.parts = parts return str(norm_ver)
def Version(ver_string): return verlib.NormalizedVersion( verlib.suggest_normalized_version(ver_string))
def is_valid_version(version_number): return suggest_normalized_version(version_number) is not None
def __init__(self, version_number, edition=None): sugg_ver = suggest_normalized_version(version_number) super(MongoDBVersionInfo,self).__init__(sugg_ver) self.version_number = version_number self.edition = edition or MongoDBEdition.COMMUNITY
def is_valid_version(version_str): return suggest_normalized_version(version_str) is not None
def __init__(self, version_str): sugg_ver = suggest_normalized_version(version_str) super(MongoctlNormalizedVersion, self).__init__(sugg_ver) self.version_str = version_str
def normalize_version(self, v): return suggest_normalized_version(v)
def suggest_from_string(cls, s): return cls(verlib.suggest_normalized_version(s))
def Version(ver_string): return verlib.NormalizedVersion(verlib.suggest_normalized_version(ver_string))
def __init__(self, version_number, edition=None): sugg_ver = suggest_normalized_version(version_number) super(MongoDBVersionInfo, self).__init__(sugg_ver) self.version_number = version_number self.edition = edition or MongoDBEdition.COMMUNITY
def __init__(self, version_str): sugg_ver = suggest_normalized_version(version_str) super(MongoNormalizedVersion,self).__init__(sugg_ver) self.version_str = version_str
def normalize_version(self, v): return suggest_normalized_version(v)