Best Python code snippet using robotframework-ioslibrary_python
base.py
Source:base.py  
...12#13##############################################################################14from pkg_resources import parse_version, Requirement15from setuptools import package_index16def _final_version(parsed_version):17    """Function copied from zc.buildout.easy_install._final_version."""18    return not parsed_version.is_prerelease19class Checker(object):20    """Base class for version checkers21    attributes:22    index_url: url of an alternative package index23    verbose: display every version, not only new ones,24             and display the previous version as a comment25    blacklist: filename of the blacklist26    incremental: suggest only one package upgrade27    """28    __custom_url = False29    def __init__(self,30                 index_url=None,31                 verbose=False,32                 blacklist=None,33                 incremental=False):34        self.verbose = verbose35        self.incremental = incremental36        if blacklist:37            # create a set of tuples with bad versions38            with open(blacklist) as b:39                self.blacklist = set([40                    tuple(map(lambda x: x.strip(), line.split('=')))41                    for line in b.readlines()42                    if '=' in line43                ])44        else:45            self.blacklist = set()46        self.pi = package_index.PackageIndex(search_path=())47        self._set_index_url(index_url)48        if index_url is not None:49            self.__custom_url = True50    def _set_index_url(self, url):51        """Set the index URL."""52        if url is not None:53            self.pi.index_url = url54        if not self.pi.index_url.endswith('/'):55            self.pi.index_url += '/'56    def check(self, level=0):57        """Search new versions in a version list58        versions must be a dict {'name': 'version'}59        The new version is limited to the given level:60        Example with version x.y.z61        level = 0: checks new version x62        level = 1: checks new version y63        level = 2: checks new version z64        By default, the highest version is found.65        """66        versions = self.get_versions()67        for name, version in sorted(versions.items()):68            if self.incremental == 'stop':69                # skip subsequent scans70                print("%s=%s" % (name, version))71                continue72            parsed_version = parse_version(version)73            req = Requirement.parse(name)74            self.pi.find_packages(req)75            new_dist = None76            # loop all index versions until we find the 1st newer version77            # that keeps the major versions (below level)78            # and is a final version79            # and is not in the blacklist80            for dist in self.pi[req.key]:81                if self.incremental == 'stop':82                    continue83                if (dist.project_name, dist.version) in self.blacklist:84                    continue85                if (_final_version(parsed_version)86                        and not _final_version(dist.parsed_version)):87                    # only skip non-final releases if the current release is88                    # a final one89                    continue90                # trunk the version tuple to the first `level` elements91                trunked_current = (92                    parsed_version.base_version.split('.')[:level])93                trunked_candidate = (94                    dist.parsed_version.base_version.split('.')[:level])95                while len(trunked_candidate) < level:96                    trunked_candidate.append('00000000')97                while len(trunked_current) < level:98                    trunked_current.append('00000000')99                # ok now we can compare: -> skip if we're still higher.100                if trunked_candidate > trunked_current:...pip.py
Source:pip.py  
1import os2import logging3import subprocess4from .base import UpdaterDomainBase5class PipDomain(UpdaterDomainBase):6    def __init__(self, **kwargs):7        self._env = kwargs.pop('env')8        self._packages = [x.strip() for x in kwargs.pop('packages').strip().split('\n')]9        super(PipDomain, self).__init__(**kwargs)10        for package in self.packages:11            self._register_package_name(package)12    @property13    def env(self):14        return self._env15    @property16    def packages(self):17        return self._packages18    @property19    def pip_path(self):20        if self.env:21            return os.path.join(self.env, 'bin', 'pip')22        else:23            return 'pip'24    def _execute(self, args):25        cmd = [self.pip_path]26        cmd.extend(args)27        result = subprocess.run(cmd, capture_output=True)28        return result.stdout29    def _get_package_information(self, package):30        result = self._execute(['show', package])31        lines = result.splitlines()32        rv = {}33        for line in lines:34            key, value = line.decode().split(':', 1)35            rv[key.strip()] = value.strip()36        return rv37    def _get_current_version(self, package):38        return self._get_package_information(package)['Version']39    def _get_target_version(self, package):40        return getattr(self._config, package).get('version', 'latest')41    def _update_package(self, package):42        _exclusions = ()43        if package in _exclusions:44            logging.info("Skipping '{}' package '{}' for update check."45                         "".format(self._name, package))46            return47        logging.debug("Checking '{}' package '{}' for updates"48                      "".format(self._name, package))49        _starting_version = self._get_current_version(package)50        logging.debug("Current version for '{}' : {}"51                      "".format(package, _starting_version))52        logging.debug("Target version for '{}' : {}"53                      "".format(package, self._get_target_version(package)))54        if self._get_target_version(package) == 'latest':55            self._execute(['install', '--upgrade', package])56        _final_version = self._get_current_version(package)57        logging.info("'{}' : {}".format(package, _final_version))58        if _final_version != _starting_version:59            logging.info("Upgraded package '{}' from '{}' to '{}'"60                         "".format(package, _starting_version, _final_version))61    def _update(self):62        for package in self._packages:63            self._update_package(package)64def install(manager):...test_installer_unit.py
Source:test_installer_unit.py  
1import pytest2import pkg_resources3from zc.buildout.easy_install import _final_version4from pkglib.setuptools.buildout import Installer5pytest_plugins = ['pkglib_testing.pytest']6class Dist(object):7    def __init__(self, version, identifier=None):8        self.version = version9        self.identifier = identifier  # used to differentiate dists with the10                                        # same version11        self.parsed_version = pkg_resources.parse_version(version)12    def __repr__(self):13        if self.identifier:14            return self.version + "-" + self.identifier15        return self.version16@pytest.mark.parametrize(("d1", "d2", "prefer_final", "expected"), [17    (Dist("2.0.dev1"), Dist("1.0.dev1"), True, "2.0.dev1"),18    (Dist("2.0.dev1"), Dist("1.0.dev1"), False, "2.0.dev1"),19    (Dist("2.0.dev1"), Dist("1.0"), True, "1.0"),20    (Dist("2.0.dev1"), Dist("1.0"), False, "2.0.dev1"),21    (Dist("2.0"), Dist("1.0.dev1"), True, "2.0"),22    (Dist("2.0"), Dist("1.0.dev1"), False, "1.0.dev1"),23    (Dist("2.0"), Dist("1.0"), True, "2.0"),24    (Dist("2.0"), Dist("1.0"), False, "2.0"),25])26def test_choose_between_different_versions(d1, d2, prefer_final, expected):27    """ Tests choosing between two different versions of a28        package in the installer29    """30    installer = Installer()31    if prefer_final:32        comparitor = _final_version33    else:34        comparitor = installer.is_dev_version35    choice = installer.choose_between(d1, d2, comparitor)36    assert repr(choice) == expected37    # Ordering shouldn't matter38    choice = installer.choose_between(d2, d1, comparitor)39    assert repr(choice) == expected40@pytest.mark.parametrize(("d1", "d2", "prefer_final", "expected"), [41    (Dist("2.0.dev1", 'a'), Dist("2.0.dev1", 'b'), True, "2.0.dev1-a"),42    (Dist("2.0.dev1", 'a'), Dist("2.0.dev1", 'b'), False, "2.0.dev1-a"),43    (Dist("2.0", 'a'), Dist("2.0", 'b'), True, "2.0-a"),44    (Dist("2.0", 'a'), Dist("2.0", 'b'), False, "2.0-a"),45])46def test_choose_between_same_versions(d1, d2, prefer_final, expected):47    """ Tests choosing between two distributions with the same48        version in the installer.49    """50    installer = Installer()51    if prefer_final:52        comparitor = _final_version53    else:54        comparitor = installer.is_dev_version55    # Ordering is important here - it should choose the first one56    choice = installer.choose_between(d1, d2, comparitor)...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
