Skip to content

Conversation

@dependabot-preview
Copy link
Contributor

Bumps dependency-injector from 3.23.2 to 4.3.6.

Commits
  • 4120afd Merge branch 'release/4.3.6' into master
  • 3ff5c8c Bump version to 4.3.6
  • 02acaba Merge branch 'release/4.3.5' into master
  • 6b93c2e Bump version to 4.3.5
  • 3c71ba4 Fix wiring multiple imports, issue #320
  • 4579e35 Merge branch 'release/4.3.4' into master
  • f3ec74a Bump version to 4.3.4
  • 18ef566 Fix issue #319 resulting in configuration.reset_override() not working properly
  • e847c35 Merge branch 'release/4.3.3' into master
  • 25549d7 Bump version to 4.3.3
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
  • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot dashboard:

  • Update frequency (including time of day and day of week)
  • Pull request limits (per update run and/or open at any time)
  • Out-of-range updates (receive only lockfile updates, if desired)
  • Security updates (receive only security updates, if desired)

Bumps [dependency-injector](https://github.com/ets-labs/python-dependency-injector) from 3.23.2 to 4.3.6.
- [Release notes](https://github.com/ets-labs/python-dependency-injector/releases)
- [Commits](ets-labs/python-dependency-injector@3.23.2...4.3.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
@dependabot-preview dependabot-preview bot added the dependencies Pull requests that update a dependency file label Nov 5, 2020
@dependabot-preview dependabot-preview bot requested a review from ezh November 5, 2020 22:14
@TravisBuddy
Copy link

Travis tests have failed

Hey @dependabot-preview[bot],
Please read the following log in order to understand the failure reason.
It'll be awesome if you fix what's wrong and commit the changes.

2nd Build

View build log

tox
Collecting codecov
  Downloading codecov-2.1.10-py2.py3-none-any.whl (16 kB)
Collecting tox
  Downloading tox-3.20.1-py2.py3-none-any.whl (83 kB)
Collecting coverage
  Downloading coverage-5.3-cp36-cp36m-manylinux1_x86_64.whl (229 kB)
Collecting requests>=2.7.9
  Downloading requests-2.24.0-py2.py3-none-any.whl (61 kB)
Collecting filelock>=3.0.0
  Downloading filelock-3.0.12-py3-none-any.whl (7.6 kB)
Requirement already satisfied: packaging>=14 in /home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages (from tox) (19.0)
Requirement already satisfied: virtualenv!=20.0.0,!=20.0.1,!=20.0.2,!=20.0.3,!=20.0.4,!=20.0.5,!=20.0.6,!=20.0.7,>=16.0.0 in /home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages (from tox) (16.0.0)
Requirement already satisfied: importlib-metadata<3,>=0.12; python_version < "3.8" in /home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages (from tox) (0.18)
Requirement already satisfied: py>=1.4.17 in /home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages (from tox) (1.7.0)
Collecting six>=1.14.0
  Downloading six-1.15.0-py2.py3-none-any.whl (10 kB)
Collecting toml>=0.9.4
  Downloading toml-0.10.2-py2.py3-none-any.whl (16 kB)
Requirement already satisfied: pluggy>=0.12.0 in /home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages (from tox) (0.12.0)
Collecting idna<3,>=2.5
  Downloading idna-2.10-py2.py3-none-any.whl (58 kB)
Requirement already satisfied: certifi>=2017.4.17 in /home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages (from requests>=2.7.9->codecov) (2018.10.15)
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
  Downloading urllib3-1.25.11-py2.py3-none-any.whl (127 kB)
Collecting chardet<4,>=3.0.2
  Downloading chardet-3.0.4-py2.py3-none-any.whl (133 kB)
Requirement already satisfied: pyparsing>=2.0.2 in /home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages (from packaging>=14->tox) (2.4.0)
Requirement already satisfied: zipp>=0.5 in /home/travis/virtualenv/python3.6.7/lib/python3.6/site-packages (from importlib-metadata<3,>=0.12; python_version < "3.8"->tox) (0.5.1)
Installing collected packages: coverage, idna, urllib3, chardet, requests, codecov, filelock, six, toml, tox
  Attempting uninstall: six
    Found existing installation: six 1.11.0
    Uninstalling six-1.11.0:
      Successfully uninstalled six-1.11.0
Successfully installed chardet-3.0.4 codecov-2.1.10 coverage-5.3 filelock-3.0.12 idna-2.10 requests-2.24.0 six-1.15.0 toml-0.10.2 tox-3.20.1 urllib3-1.25.11
$ git clone https://github.com/junegunn/fzf/
Cloning into 'fzf'...
$ fzf/install --bin
Downloading bin/fzf ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   653  100   653    0     0   2023      0 --:--:-- --:--:-- --:--:--  2027
100 1106k  100 1106k    0     0  1546k      0 --:--:-- --:--:-- --:--:-- 5884k
  - Checking fzf executable ... 0.24.2
$ sudo ln -s $PWD/fzf/bin/fzf /usr/bin
$ tox
GLOB sdist-make: /home/travis/build/ezh/cloudselect/setup.py
py36 create: /home/travis/build/ezh/cloudselect/.tox/py36
py36 installdeps: codecov, PyTest, pytest-console-scripts, pytest-cov, pytest-mock, appdirs, boto3, chardet, dependency_injector, hcloud, kubernetes, pyyaml
py36 inst: /home/travis/build/ezh/cloudselect/.tox/.tmp/package/1/cloudselect-20.1.14.zip
py36 installed: appdirs==1.4.4,attrs==20.1.0,boto3==1.14.45,botocore==1.17.63,cachetools==4.1.1,certifi==2020.6.20,chardet==3.0.4,cloudselect==20.1.14,codecov==2.1.10,coverage==5.3,dependency-injector==4.3.6,docutils==0.15.2,future==0.18.2,google-auth==1.23.0,hcloud==1.9.1,idna==2.10,importlib-metadata==2.0.0,iniconfig==1.1.1,jmespath==0.10.0,kubernetes==11.0.0,mock==4.0.2,oauthlib==3.1.0,packaging==20.4,pluggy==0.13.1,py==1.9.0,pyasn1==0.4.8,pyasn1-modules==0.2.8,pyparsing==2.4.7,pytest==6.1.2,pytest-console-scripts==1.0.0,pytest-cov==2.10.1,pytest-mock==3.3.1,python-dateutil==2.8.1,PyYAML==5.3.1,requests==2.24.0,requests-oauthlib==1.3.0,rsa==4.6,s3transfer==0.3.3,six==1.15.0,toml==0.10.2,urllib3==1.25.11,websocket-client==0.57.0,zipp==3.4.0
py36 run-test-pre: PYTHONHASHSEED='2115566141'
py36 run-test: commands[0] | py.test
============================= test session starts ==============================
platform linux -- Python 3.6.7, pytest-6.1.2, py-1.9.0, pluggy-0.13.1 -- /home/travis/build/ezh/cloudselect/.tox/py36/bin/python
cachedir: .tox/py36/.pytest_cache
rootdir: /home/travis/build/ezh/cloudselect, configfile: tox.ini
plugins: cov-2.10.1, mock-3.3.1, console-scripts-1.0.0
collecting ... collected 36 items

test/test_cloudselect.py::test_cli_incorrect_configuration[inprocess] # Running console script: cloudselect something_that_does_not_exist
FAILED
test/test_cloudselect.py::test_cli_version[inprocess] # Running console script: cloudselect --version
FAILED
test/test_cloudselect.py::test_cli_verbose PASSED
test/test_cloudselect.py::test_cli_query PASSED
test/test_cloudselect.py::test_cli_profile PASSED
test/test_cloudselect.py::test_cli_configuration_read PASSED
test/test_cloudselect.py::test_resolve PASSED
test/test_cloudselect.py::test_factory_load_plugin PASSED
test/test_cloudselect.py::test_factory_load_discovery PASSED
test/test_cloudselect.py::test_factory_load_group PASSED
test/test_cloudselect.py::test_factory_load_pathfinder PASSED
test/test_cloudselect.py::test_factory_load_report PASSED
test/test_options.py::test_options PASSED
test/test_selector.py::test_completer PASSED
test/test_selector.py::test_profile_list PASSED
test/test_selector.py::test_select_edit PASSED
test/test_selector.py::test_select_edit_json_profile PASSED
test/test_selector.py::test_select_edit_yaml_profile PASSED
test/test_selector.py::test_select_edit_yml_profile PASSED
test/test_selector.py::test_select_edit_non_existent_profile PASSED
test/test_selector.py::test_select_empty PASSED
test/test_selector.py::test_select_single {'instances': [{'host': 'my.cloud.instance',
                'id': '0',
                'jumphost': None,
                'key': None,
                'metadata': {'host': 'my.cloud.instance'},
                'port': None,
                'user': None}],
 'option': {}}
PASSED
test/discovery/test_kubernetes.py::test_kubernetes_discovery PASSED
test/discovery/test_stub.py::test_stub_discovery PASSED
test/discovery/test_stub.py::test_stub_behaviour PASSED
test/group/test_simple.py::test_options FAILED
test/group/test_simple.py::test_options_errors PASSED
test/group/test_simple.py::test_options_regex PASSED
test/group/test_stub.py::test_stub_group 2020-11-06 02:11:11,982 cloudselect.CloudSelect DEBUG    Logging is initialized
2020-11-06 02:11:11,982 cloudselect.CloudSelect DEBUG    Configuration:
{
    "log": {
        "formatters": {
            "f": {
                "format": "%(asctime)s %(name)-12s %(levelname)-8s %(message)s"
            }
        },
        "handlers": {
            "h": {
                "class": "logging.StreamHandler",
                "formatter": "f",
                "level": 10
            }
        },
        "root": {
            "handlers": [
                "h"
            ],
            "level": 10
        },
        "version": 1
    },
    "plugin": {
        "discovery": {
            "aws": "cloudselect.discovery.aws",
            "hetzner": "cloudselect.discovery.hetzner",
            "kubernetes": "cloudselect.discovery.kubernetes",
            "local": "cloudselect.discovery.local"
        },
        "group": {
            "simple": "cloudselect.group.simple"
        },
        "pathfinder": {
            "bastion": "cloudselect.pathfinder.bastion"
        },
        "report": {
            "json": "cloudselect.report.json",
            "json_pp": "cloudselect.report.json_pp",
            "yaml": "cloudselect.report.yaml"
        }
    }
}
PASSED
test/group/test_stub.py::test_stub_behaviour PASSED
test/pathfinder/test_bastion.py::test_bastion_initialization 2020-11-06 02:11:11,991 cloudselect.CloudSelect DEBUG    Logging is initialized
2020-11-06 02:11:11,991 cloudselect.CloudSelect DEBUG    Configuration:
{
    "log": {
        "version": 1
    },
    "pathfinder": {
        "type": "bastion"
    },
    "plugin": {
        "discovery": {
            "aws": "cloudselect.discovery.aws",
            "hetzner": "cloudselect.discovery.hetzner",
            "kubernetes": "cloudselect.discovery.kubernetes",
            "local": "cloudselect.discovery.local"
        },
        "group": {
            "simple": "cloudselect.group.simple"
        },
        "pathfinder": {
            "bastion": "cloudselect.pathfinder.bastion"
        },
        "report": {
            "json": "cloudselect.report.json",
            "json_pp": "cloudselect.report.json_pp",
            "yaml": "cloudselect.report.yaml"
        }
    }
}
PASSED
test/pathfinder/test_bastion.py::test_bastion_behaviour 2020-11-06 02:11:11,995 cloudselect.CloudSelect DEBUG    Logging is initialized
2020-11-06 02:11:11,995 cloudselect.CloudSelect DEBUG    Configuration:
{
    "log": {
        "version": 1
    },
    "pathfinder": {
        "host": "my-bastion-hostname",
        "type": "bastion"
    },
    "plugin": {
        "discovery": {
            "aws": "cloudselect.discovery.aws",
            "hetzner": "cloudselect.discovery.hetzner",
            "kubernetes": "cloudselect.discovery.kubernetes",
            "local": "cloudselect.discovery.local"
        },
        "group": {
            "simple": "cloudselect.group.simple"
        },
        "pathfinder": {
            "bastion": "cloudselect.pathfinder.bastion"
        },
        "report": {
            "json": "cloudselect.report.json",
            "json_pp": "cloudselect.report.json_pp",
            "yaml": "cloudselect.report.yaml"
        }
    }
}
PASSED
test/pathfinder/test_stub.py::test_stub_pathfinder 2020-11-06 02:11:11,999 cloudselect.CloudSelect DEBUG    Logging is initialized
2020-11-06 02:11:12,000 cloudselect.CloudSelect DEBUG    Configuration:
{
    "log": {
        "version": 1
    },
    "plugin": {
        "discovery": {
            "aws": "cloudselect.discovery.aws",
            "hetzner": "cloudselect.discovery.hetzner",
            "kubernetes": "cloudselect.discovery.kubernetes",
            "local": "cloudselect.discovery.local"
        },
        "group": {
            "simple": "cloudselect.group.simple"
        },
        "pathfinder": {
            "bastion": "cloudselect.pathfinder.bastion"
        },
        "report": {
            "json": "cloudselect.report.json",
            "json_pp": "cloudselect.report.json_pp",
            "yaml": "cloudselect.report.yaml"
        }
    }
}
PASSED
test/pathfinder/test_stub.py::test_stub_behaviour PASSED
test/report/test_stub.py::test_stub_report 2020-11-06 02:11:12,007 cloudselect.CloudSelect DEBUG    Logging is initialized
2020-11-06 02:11:12,008 cloudselect.CloudSelect DEBUG    Configuration:
{
    "log": {
        "version": 1
    },
    "plugin": {
        "discovery": {
            "aws": "cloudselect.discovery.aws",
            "hetzner": "cloudselect.discovery.hetzner",
            "kubernetes": "cloudselect.discovery.kubernetes",
            "local": "cloudselect.discovery.local"
        },
        "group": {
            "simple": "cloudselect.group.simple"
        },
        "pathfinder": {
            "bastion": "cloudselect.pathfinder.bastion"
        },
        "report": {
            "json": "cloudselect.report.json",
            "json_pp": "cloudselect.report.json_pp",
            "yaml": "cloudselect.report.yaml"
        }
    }
}
{'instances': [], 'option': {}}
PASSED
test/report/test_stub.py::test_stub_behaviour PASSED

=================================== FAILURES ===================================
_________________ test_cli_incorrect_configuration[inprocess] __________________

script_runner = <ScriptRunner inprocess>

    def test_cli_incorrect_configuration(script_runner):
        """Testing cloudselect invocation with non existing profile."""
>       ret = script_runner.run("cloudselect", "something_that_does_not_exist")

test/test_cloudselect.py:33: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/py36/lib/python3.6/site-packages/pytest_console_scripts.py:126: in run
    return self.run_inprocess(command, *arguments, **options)
.tox/py36/lib/python3.6/site-packages/pytest_console_scripts.py:191: in run_inprocess
    script = self._load_script(command, **options)
.tox/py36/lib/python3.6/site-packages/pytest_console_scripts.py:177: in _load_script
    return entry_points[0].load()
.tox/py36/lib/python3.6/site-packages/pkg_resources/__init__.py:2321: in load
    self.require(*args, **kwargs)
.tox/py36/lib/python3.6/site-packages/pkg_resources/__init__.py:2344: in require
    items = working_set.resolve(reqs, env, installer, extras=self.extras)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pkg_resources.WorkingSet object at 0x7f4d2312c358>
requirements = [Requirement.parse('cachetools<5.0,>=2.0.0'), Requirement.parse('pyasn1-modules>=0.2.1'), Requirement.parse('six>=1.5'), Requirement.parse('six'), Requirement.parse('idna<3,>=2.5'), Requirement.parse('chardet<4,>=3.0.2'), ...]
env = None, installer = None, replace_conflicting = False, extras = ()

    def resolve(self, requirements, env=None, installer=None,
                replace_conflicting=False, extras=None):
        """List all distributions needed to (recursively) meet `requirements`
    
        `requirements` must be a sequence of ``Requirement`` objects.  `env`,
        if supplied, should be an ``Environment`` instance.  If
        not supplied, it defaults to all distributions available within any
        entry or distribution in the working set.  `installer`, if supplied,
        will be invoked with each requirement that cannot be met by an
        already-installed distribution; it should return a ``Distribution`` or
        ``None``.
    
        Unless `replace_conflicting=True`, raises a VersionConflict exception
        if
        any requirements are found on the path that have the correct name but
        the wrong version.  Otherwise, if an `installer` is supplied it will be
        invoked to obtain the correct version of the requirement and activate
        it.
    
        `extras` is a list of the extras to be used with these requirements.
        This is important because extra requirements may look like `my_req;
        extra = "my_extra"`, which would otherwise be interpreted as a purely
        optional requirement.  Instead, we want to be able to assert that these
        requirements are truly required.
        """
    
        # set up the stack
        requirements = list(requirements)[::-1]
        # set of processed requirements
        processed = {}
        # key -> dist
        best = {}
        to_activate = []
    
        req_extras = _ReqExtras()
    
        # Mapping of requirement to set of distributions that required it;
        # useful for reporting info about conflicts.
        required_by = collections.defaultdict(set)
    
        while requirements:
            # process dependencies breadth-first
            req = requirements.pop(0)
            if req in processed:
                # Ignore cyclic or redundant dependencies
                continue
    
            if not req_extras.markers_pass(req, extras):
                continue
    
            dist = best.get(req.key)
            if dist is None:
                # Find the best distribution and add it to the map
                dist = self.by_key.get(req.key)
                if dist is None or (dist not in req and replace_conflicting):
                    ws = self
                    if env is None:
                        if dist is None:
                            env = Environment(self.entries)
                        else:
                            # Use an empty environment and workingset to avoid
                            # any further conflicts with the conflicting
                            # distribution
                            env = Environment([])
                            ws = WorkingSet([])
                    dist = best[req.key] = env.best_match(
                        req, ws, installer,
                        replace_conflicting=replace_conflicting
                    )
                    if dist is None:
                        requirers = required_by.get(req, None)
                        raise DistributionNotFound(req, requirers)
                to_activate.append(dist)
            if dist not in req:
                # Oops, the "best" so far conflicts with a dependency
                dependent_req = required_by[req]
>               raise VersionConflict(dist, req).with_context(dependent_req)
E               pkg_resources.ContextualVersionConflict: (setuptools 39.1.0 (/home/travis/build/ezh/cloudselect/.tox/py36/lib/python3.6/site-packages), Requirement.parse('setuptools>=40.3.0'), {'google-auth'})

.tox/py36/lib/python3.6/site-packages/pkg_resources/__init__.py:783: ContextualVersionConflict
_________________________ test_cli_version[inprocess] __________________________

cfgdir = local('/tmp/pytest-of-travis/pytest-0/cloudselect0')
script_runner = <ScriptRunner inprocess>

    def test_cli_version(cfgdir, script_runner):
        """Testing that cloudselect has expected version."""
>       ret = script_runner.run("cloudselect", "--version")

test/test_cloudselect.py:41: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.tox/py36/lib/python3.6/site-packages/pytest_console_scripts.py:126: in run
    return self.run_inprocess(command, *arguments, **options)
.tox/py36/lib/python3.6/site-packages/pytest_console_scripts.py:191: in run_inprocess
    script = self._load_script(command, **options)
.tox/py36/lib/python3.6/site-packages/pytest_console_scripts.py:177: in _load_script
    return entry_points[0].load()
.tox/py36/lib/python3.6/site-packages/pkg_resources/__init__.py:2321: in load
    self.require(*args, **kwargs)
.tox/py36/lib/python3.6/site-packages/pkg_resources/__init__.py:2344: in require
    items = working_set.resolve(reqs, env, installer, extras=self.extras)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <pkg_resources.WorkingSet object at 0x7f4d2312c358>
requirements = [Requirement.parse('cachetools<5.0,>=2.0.0'), Requirement.parse('pyasn1-modules>=0.2.1'), Requirement.parse('six>=1.5'), Requirement.parse('six'), Requirement.parse('idna<3,>=2.5'), Requirement.parse('chardet<4,>=3.0.2'), ...]
env = None, installer = None, replace_conflicting = False, extras = ()

    def resolve(self, requirements, env=None, installer=None,
                replace_conflicting=False, extras=None):
        """List all distributions needed to (recursively) meet `requirements`
    
        `requirements` must be a sequence of ``Requirement`` objects.  `env`,
        if supplied, should be an ``Environment`` instance.  If
        not supplied, it defaults to all distributions available within any
        entry or distribution in the working set.  `installer`, if supplied,
        will be invoked with each requirement that cannot be met by an
        already-installed distribution; it should return a ``Distribution`` or
        ``None``.
    
        Unless `replace_conflicting=True`, raises a VersionConflict exception
        if
        any requirements are found on the path that have the correct name but
        the wrong version.  Otherwise, if an `installer` is supplied it will be
        invoked to obtain the correct version of the requirement and activate
        it.
    
        `extras` is a list of the extras to be used with these requirements.
        This is important because extra requirements may look like `my_req;
        extra = "my_extra"`, which would otherwise be interpreted as a purely
        optional requirement.  Instead, we want to be able to assert that these
        requirements are truly required.
        """
    
        # set up the stack
        requirements = list(requirements)[::-1]
        # set of processed requirements
        processed = {}
        # key -> dist
        best = {}
        to_activate = []
    
        req_extras = _ReqExtras()
    
        # Mapping of requirement to set of distributions that required it;
        # useful for reporting info about conflicts.
        required_by = collections.defaultdict(set)
    
        while requirements:
            # process dependencies breadth-first
            req = requirements.pop(0)
            if req in processed:
                # Ignore cyclic or redundant dependencies
                continue
    
            if not req_extras.markers_pass(req, extras):
                continue
    
            dist = best.get(req.key)
            if dist is None:
                # Find the best distribution and add it to the map
                dist = self.by_key.get(req.key)
                if dist is None or (dist not in req and replace_conflicting):
                    ws = self
                    if env is None:
                        if dist is None:
                            env = Environment(self.entries)
                        else:
                            # Use an empty environment and workingset to avoid
                            # any further conflicts with the conflicting
                            # distribution
                            env = Environment([])
                            ws = WorkingSet([])
                    dist = best[req.key] = env.best_match(
                        req, ws, installer,
                        replace_conflicting=replace_conflicting
                    )
                    if dist is None:
                        requirers = required_by.get(req, None)
                        raise DistributionNotFound(req, requirers)
                to_activate.append(dist)
            if dist not in req:
                # Oops, the "best" so far conflicts with a dependency
                dependent_req = required_by[req]
>               raise VersionConflict(dist, req).with_context(dependent_req)
E               pkg_resources.ContextualVersionConflict: (setuptools 39.1.0 (/home/travis/build/ezh/cloudselect/.tox/py36/lib/python3.6/site-packages), Requirement.parse('setuptools>=40.3.0'), {'google-auth'})

.tox/py36/lib/python3.6/site-packages/pkg_resources/__init__.py:783: ContextualVersionConflict
_________________________________ test_options _________________________________

cfgdir = local('/tmp/pytest-of-travis/pytest-0/cloudselect0')

    def test_options(cfgdir):
        """
        Test options behaviour of simple plugin.
    
        It should returns {} if there is no options.
        It should returns shared dictionary if there is no any matched filters.
        It should returns clarified dictionary if there is matched filter.
        """
        cloud = CloudSelect(cfgdir)
        configuration = cloud.configuration_read()
        args = cloud.parse_args([])
        configuration["group"] = {"type": "simple"}
        cloud.fabric(configuration, args)
    
        assert isinstance(Container.group(), Simple)
    
        assert Container.options("test") == {}
        assert Container.options("plugin") == configuration["plugin"]
        assert Container.options("log") == configuration["log"]
    
        assert Container.options("option") == {}
        options_a = {"ssh": "-t", "ssh_command": "sudo -i"}
        options_b = {"ssh": "-t", "ssh_command": "su"}
        options_c = {"ssh": "-t", "ssh_command": None}
        configuration["option"] = options_a
>       assert Container.options("option") == options_a
E       AssertionError: assert {} == {'ssh': '-t',...d': 'sudo -i'}
E         Right contains 2 more items:
E         {'ssh': '-t', 'ssh_command': 'sudo -i'}
E         Full diff:
E         - {'ssh': '-t', 'ssh_command': 'sudo -i'}
E         + {}

test/group/test_simple.py:43: AssertionError
------------------------------ Captured log call -------------------------------
WARNING  cloudselect.group.Simple:simple.py:27 test: 'options' block not found in {'type': 'simple'}
WARNING  cloudselect.group.Simple:simple.py:27 plugin: 'options' block not found in {'type': 'simple'}
WARNING  cloudselect.group.Simple:simple.py:27 log: 'options' block not found in {'type': 'simple'}
WARNING  cloudselect.group.Simple:simple.py:27 option: 'options' block not found in {'type': 'simple'}
WARNING  cloudselect.group.Simple:simple.py:27 option: 'options' block not found in {'type': 'simple'}

----------- coverage: platform linux, python 3.6.7-final-0 -----------
Name                                   Stmts   Miss  Cover   Missing
--------------------------------------------------------------------
cloudselect/__init__.py                   17      2    88%   30-31
cloudselect/__main__.py                    2      2     0%   3-5
cloudselect/cloudselect.py               195     51    74%   59-66, 90, 105-112, 180, 182, 185-193, 207, 269-271, 280-285, 291-301, 306-319
cloudselect/discovery/__init__.py          3      0   100%
cloudselect/discovery/aws.py             106     87    18%   30-34, 39-63, 68-84, 92-117, 121-134, 138-142, 149-162, 166-169, 174-175
cloudselect/discovery/discovery.py        57     12    79%   37-48, 55-58
cloudselect/discovery/hetzner.py          65     65     0%   8-149
cloudselect/discovery/kubernetes.py       70      8    89%   93, 97, 133-144
cloudselect/discovery/local.py            39      1    97%   57
cloudselect/discovery/stub.py              3      0   100%
cloudselect/group/__init__.py              3      0   100%
cloudselect/group/group.py                10      0   100%
cloudselect/group/simple.py               46      8    83%   41-44, 46-52, 60-61, 75-76
cloudselect/group/stub.py                  3      0   100%
cloudselect/instance.py                   29      2    93%   24, 68
cloudselect/pathfinder/__init__.py         3      0   100%
cloudselect/pathfinder/bastion.py         44     23    48%   30, 46-53, 60-73
cloudselect/pathfinder/pathfinder.py      10      1    90%   25
cloudselect/pathfinder/stub.py             3      0   100%
cloudselect/report/__init__.py             3      0   100%
cloudselect/report/json.py                 9      4    56%   19-22
cloudselect/report/json_pp.py              9      9     0%   8-22
cloudselect/report/report.py              18      0   100%
cloudselect/report/stub.py                 3      0   100%
cloudselect/report/yaml.py                 9      9     0%   8-22
cloudselect/selector.py                  118     34    71%   60-64, 94-95, 101-102, 109, 111, 118-132, 152, 172-180, 199, 201
--------------------------------------------------------------------
TOTAL                                    877    318    64%

=========================== short test summary info ============================
FAILED test/test_cloudselect.py::test_cli_incorrect_configuration[inprocess]
FAILED test/test_cloudselect.py::test_cli_version[inprocess] - pkg_resources....
FAILED test/group/test_simple.py::test_options - AssertionError: assert {} ==...
========================= 3 failed, 33 passed in 1.83s =========================
ERROR: InvocationError for command /home/travis/build/ezh/cloudselect/.tox/py36/bin/py.test (exited with code 1)
___________________________________ summary ____________________________________
ERROR:   py36: commands failed

4th Build

View build log

tox
Collecting codecov
  Downloading https://files.pythonhosted.org/packages/45/6e/7cef3272e08eaec17083e9ee3cda5a574b373b36058ba338569950395227/codecov-2.1.10-py2.py3-none-any.whl
Collecting tox
  Downloading https://files.pythonhosted.org/packages/e0/79/5915b9dad867e89bb6495456acfe5d4e2287e74dfa29c059f7b127d5480e/tox-3.20.1-py2.py3-none-any.whl (83kB)
Collecting requests>=2.7.9
  Downloading https://files.pythonhosted.org/packages/45/1e/0c169c6a5381e241ba7404532c16a21d86ab872c9bed8bdcd4c423954103/requests-2.24.0-py2.py3-none-any.whl (61kB)
Collecting coverage
  Downloading https://files.pythonhosted.org/packages/e4/6a/fa167da3ac886b4777bfe37a86a2d664637dff12837dd6187ce9cdd5eb70/coverage-5.3-cp38-cp38-manylinux1_x86_64.whl (230kB)
Collecting six>=1.14.0
  Downloading https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl
Requirement already satisfied: virtualenv!=20.0.0,!=20.0.1,!=20.0.2,!=20.0.3,!=20.0.4,!=20.0.5,!=20.0.6,!=20.0.7,>=16.0.0 in /home/travis/virtualenv/python3.8.0/lib/python3.8/site-packages (from tox) (16.7.5)
Requirement already satisfied: packaging>=14 in /home/travis/virtualenv/python3.8.0/lib/python3.8/site-packages (from tox) (19.2)
Collecting filelock>=3.0.0
  Downloading https://files.pythonhosted.org/packages/93/83/71a2ee6158bb9f39a90c0dea1637f81d5eef866e188e1971a1b1ab01a35a/filelock-3.0.12-py3-none-any.whl
Collecting toml>=0.9.4
  Downloading https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl
Requirement already satisfied: pluggy>=0.12.0 in /home/travis/virtualenv/python3.8.0/lib/python3.8/site-packages (from tox) (0.13.0)
Requirement already satisfied: py>=1.4.17 in /home/travis/virtualenv/python3.8.0/lib/python3.8/site-packages (from tox) (1.8.0)
Collecting idna<3,>=2.5
  Downloading https://files.pythonhosted.org/packages/a2/38/928ddce2273eaa564f6f50de919327bf3a00f091b5baba8dfa9460f3a8a8/idna-2.10-py2.py3-none-any.whl (58kB)
Collecting chardet<4,>=3.0.2
  Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
Requirement already satisfied: certifi>=2017.4.17 in /home/travis/virtualenv/python3.8.0/lib/python3.8/site-packages (from requests>=2.7.9->codecov) (2019.9.11)
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
  Downloading https://files.pythonhosted.org/packages/56/aa/4ef5aa67a9a62505db124a5cb5262332d1d4153462eb8fd89c9fa41e5d92/urllib3-1.25.11-py2.py3-none-any.whl (127kB)
Requirement already satisfied: pyparsing>=2.0.2 in /home/travis/virtualenv/python3.8.0/lib/python3.8/site-packages (from packaging>=14->tox) (2.4.2)
Installing collected packages: idna, chardet, urllib3, requests, coverage, codecov, six, filelock, toml, tox
  Found existing installation: six 1.12.0
    Uninstalling six-1.12.0:
      Successfully uninstalled six-1.12.0
Successfully installed chardet-3.0.4 codecov-2.1.10 coverage-5.3 filelock-3.0.12 idna-2.10 requests-2.24.0 six-1.15.0 toml-0.10.2 tox-3.20.1 urllib3-1.25.11
$ git clone https://github.com/junegunn/fzf/
Cloning into 'fzf'...
$ fzf/install --bin
Downloading bin/fzf ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   653  100   653    0     0   2780      0 --:--:-- --:--:-- --:--:--  2790
100 1106k  100 1106k    0     0  1719k      0 --:--:-- --:--:-- --:--:-- 1719k
  - Checking fzf executable ... 0.24.2
$ sudo ln -s $PWD/fzf/bin/fzf /usr/bin
$ tox
GLOB sdist-make: /home/travis/build/ezh/cloudselect/setup.py
py38 create: /home/travis/build/ezh/cloudselect/.tox/py38
py38 installdeps: codecov, PyTest, pytest-console-scripts, pytest-cov, pytest-mock, appdirs, boto3, chardet, dependency_injector, hcloud, kubernetes, pyyaml
py38 inst: /home/travis/build/ezh/cloudselect/.tox/.tmp/package/1/cloudselect-20.1.14.zip
py38 installed: appdirs==1.4.4,attrs==20.1.0,boto3==1.14.45,botocore==1.17.63,cachetools==4.1.1,certifi==2020.6.20,chardet==3.0.4,cloudselect==20.1.14,codecov==2.1.10,coverage==5.3,dependency-injector==4.3.6,docutils==0.15.2,future==0.18.2,google-auth==1.23.0,hcloud==1.9.1,idna==2.10,iniconfig==1.1.1,jmespath==0.10.0,kubernetes==11.0.0,mock==4.0.2,oauthlib==3.1.0,packaging==20.4,pluggy==0.13.1,py==1.9.0,pyasn1==0.4.8,pyasn1-modules==0.2.8,pyparsing==2.4.7,pytest==6.1.2,pytest-console-scripts==1.0.0,pytest-cov==2.10.1,pytest-mock==3.3.1,python-dateutil==2.8.1,PyYAML==5.3.1,requests==2.24.0,requests-oauthlib==1.3.0,rsa==4.6,s3transfer==0.3.3,six==1.15.0,toml==0.10.2,urllib3==1.25.11,websocket-client==0.57.0
py38 run-test-pre: PYTHONHASHSEED='2770022120'
py38 run-test: commands[0] | py.test
============================= test session starts ==============================
platform linux -- Python 3.8.0, pytest-6.1.2, py-1.9.0, pluggy-0.13.1 -- /home/travis/build/ezh/cloudselect/.tox/py38/bin/python
cachedir: .tox/py38/.pytest_cache
rootdir: /home/travis/build/ezh/cloudselect, configfile: tox.ini
plugins: cov-2.10.1, mock-3.3.1, console-scripts-1.0.0
collecting ... collected 36 items

test/test_cloudselect.py::test_cli_incorrect_configuration[inprocess] # Running console script: cloudselect something_that_does_not_exist
# Script return code: 1
# Script stdout:

# Script stderr:
Error: Profile "something_that_does_not_exist" not found

PASSED
test/test_cloudselect.py::test_cli_version[inprocess] # Running console script: cloudselect --version
# Script return code: 0
# Script stdout:
cloudselect version 20.1.14

# Script stderr:

cloudselect version 20.1.14
PASSED
test/test_cloudselect.py::test_cli_verbose PASSED
test/test_cloudselect.py::test_cli_query PASSED
test/test_cloudselect.py::test_cli_profile PASSED
test/test_cloudselect.py::test_cli_configuration_read PASSED
test/test_cloudselect.py::test_resolve PASSED
test/test_cloudselect.py::test_factory_load_plugin PASSED
test/test_cloudselect.py::test_factory_load_discovery PASSED
test/test_cloudselect.py::test_factory_load_group PASSED
test/test_cloudselect.py::test_factory_load_pathfinder PASSED
test/test_cloudselect.py::test_factory_load_report PASSED
test/test_options.py::test_options PASSED
test/test_selector.py::test_completer PASSED
test/test_selector.py::test_profile_list PASSED
test/test_selector.py::test_select_edit PASSED
test/test_selector.py::test_select_edit_json_profile PASSED
test/test_selector.py::test_select_edit_yaml_profile PASSED
test/test_selector.py::test_select_edit_yml_profile PASSED
test/test_selector.py::test_select_edit_non_existent_profile PASSED
test/test_selector.py::test_select_empty PASSED
test/test_selector.py::test_select_single {'instances': [{'host': 'my.cloud.instance',
                'id': '0',
                'jumphost': None,
                'key': None,
                'metadata': {'host': 'my.cloud.instance'},
                'port': None,
                'user': None}],
 'option': {}}
PASSED
test/discovery/test_kubernetes.py::test_kubernetes_discovery PASSED
test/discovery/test_stub.py::test_stub_discovery PASSED
test/discovery/test_stub.py::test_stub_behaviour PASSED
test/group/test_simple.py::test_options FAILED
test/group/test_simple.py::test_options_errors PASSED
test/group/test_simple.py::test_options_regex PASSED
test/group/test_stub.py::test_stub_group 2020-11-06 02:12:44,946 cloudselect.CloudSelect DEBUG    Logging is initialized
2020-11-06 02:12:44,947 cloudselect.CloudSelect DEBUG    Configuration:
{
    "log": {
        "formatters": {
            "f": {
                "format": "%(asctime)s %(name)-12s %(levelname)-8s %(message)s"
            }
        },
        "handlers": {
            "h": {
                "class": "logging.StreamHandler",
                "formatter": "f",
                "level": 10
            }
        },
        "root": {
            "handlers": [
                "h"
            ],
            "level": 10
        },
        "version": 1
    },
    "plugin": {
        "discovery": {
            "aws": "cloudselect.discovery.aws",
            "hetzner": "cloudselect.discovery.hetzner",
            "kubernetes": "cloudselect.discovery.kubernetes",
            "local": "cloudselect.discovery.local"
        },
        "group": {
            "simple": "cloudselect.group.simple"
        },
        "pathfinder": {
            "bastion": "cloudselect.pathfinder.bastion"
        },
        "report": {
            "json": "cloudselect.report.json",
            "json_pp": "cloudselect.report.json_pp",
            "yaml": "cloudselect.report.yaml"
        }
    }
}
PASSED
test/group/test_stub.py::test_stub_behaviour PASSED
test/pathfinder/test_bastion.py::test_bastion_initialization 2020-11-06 02:12:44,958 cloudselect.CloudSelect DEBUG    Logging is initialized
2020-11-06 02:12:44,958 cloudselect.CloudSelect DEBUG    Configuration:
{
    "log": {
        "version": 1
    },
    "pathfinder": {
        "type": "bastion"
    },
    "plugin": {
        "discovery": {
            "aws": "cloudselect.discovery.aws",
            "hetzner": "cloudselect.discovery.hetzner",
            "kubernetes": "cloudselect.discovery.kubernetes",
            "local": "cloudselect.discovery.local"
        },
        "group": {
            "simple": "cloudselect.group.simple"
        },
        "pathfinder": {
            "bastion": "cloudselect.pathfinder.bastion"
        },
        "report": {
            "json": "cloudselect.report.json",
            "json_pp": "cloudselect.report.json_pp",
            "yaml": "cloudselect.report.yaml"
        }
    }
}
PASSED
test/pathfinder/test_bastion.py::test_bastion_behaviour 2020-11-06 02:12:44,962 cloudselect.CloudSelect DEBUG    Logging is initialized
2020-11-06 02:12:44,963 cloudselect.CloudSelect DEBUG    Configuration:
{
    "log": {
        "version": 1
    },
    "pathfinder": {
        "host": "my-bastion-hostname",
        "type": "bastion"
    },
    "plugin": {
        "discovery": {
            "aws": "cloudselect.discovery.aws",
            "hetzner": "cloudselect.discovery.hetzner",
            "kubernetes": "cloudselect.discovery.kubernetes",
            "local": "cloudselect.discovery.local"
        },
        "group": {
            "simple": "cloudselect.group.simple"
        },
        "pathfinder": {
            "bastion": "cloudselect.pathfinder.bastion"
        },
        "report": {
            "json": "cloudselect.report.json",
            "json_pp": "cloudselect.report.json_pp",
            "yaml": "cloudselect.report.yaml"
        }
    }
}
PASSED
test/pathfinder/test_stub.py::test_stub_pathfinder 2020-11-06 02:12:44,967 cloudselect.CloudSelect DEBUG    Logging is initialized
2020-11-06 02:12:44,968 cloudselect.CloudSelect DEBUG    Configuration:
{
    "log": {
        "version": 1
    },
    "plugin": {
        "discovery": {
            "aws": "cloudselect.discovery.aws",
            "hetzner": "cloudselect.discovery.hetzner",
            "kubernetes": "cloudselect.discovery.kubernetes",
            "local": "cloudselect.discovery.local"
        },
        "group": {
            "simple": "cloudselect.group.simple"
        },
        "pathfinder": {
            "bastion": "cloudselect.pathfinder.bastion"
        },
        "report": {
            "json": "cloudselect.report.json",
            "json_pp": "cloudselect.report.json_pp",
            "yaml": "cloudselect.report.yaml"
        }
    }
}
PASSED
test/pathfinder/test_stub.py::test_stub_behaviour PASSED
test/report/test_stub.py::test_stub_report 2020-11-06 02:12:44,977 cloudselect.CloudSelect DEBUG    Logging is initialized
2020-11-06 02:12:44,977 cloudselect.CloudSelect DEBUG    Configuration:
{
    "log": {
        "version": 1
    },
    "plugin": {
        "discovery": {
            "aws": "cloudselect.discovery.aws",
            "hetzner": "cloudselect.discovery.hetzner",
            "kubernetes": "cloudselect.discovery.kubernetes",
            "local": "cloudselect.discovery.local"
        },
        "group": {
            "simple": "cloudselect.group.simple"
        },
        "pathfinder": {
            "bastion": "cloudselect.pathfinder.bastion"
        },
        "report": {
            "json": "cloudselect.report.json",
            "json_pp": "cloudselect.report.json_pp",
            "yaml": "cloudselect.report.yaml"
        }
    }
}
{'instances': [], 'option': {}}
PASSED
test/report/test_stub.py::test_stub_behaviour PASSED

=================================== FAILURES ===================================
_________________________________ test_options _________________________________

cfgdir = local('/tmp/pytest-of-travis/pytest-0/cloudselect0')

    def test_options(cfgdir):
        """
        Test options behaviour of simple plugin.
    
        It should returns {} if there is no options.
        It should returns shared dictionary if there is no any matched filters.
        It should returns clarified dictionary if there is matched filter.
        """
        cloud = CloudSelect(cfgdir)
        configuration = cloud.configuration_read()
        args = cloud.parse_args([])
        configuration["group"] = {"type": "simple"}
        cloud.fabric(configuration, args)
    
        assert isinstance(Container.group(), Simple)
    
        assert Container.options("test") == {}
        assert Container.options("plugin") == configuration["plugin"]
        assert Container.options("log") == configuration["log"]
    
        assert Container.options("option") == {}
        options_a = {"ssh": "-t", "ssh_command": "sudo -i"}
        options_b = {"ssh": "-t", "ssh_command": "su"}
        options_c = {"ssh": "-t", "ssh_command": None}
        configuration["option"] = options_a
>       assert Container.options("option") == options_a
E       AssertionError: assert {} == {'ssh': '-t',...d': 'sudo -i'}
E         Right contains 2 more items:
E         {'ssh': '-t', 'ssh_command': 'sudo -i'}
E         Full diff:
E         - {'ssh': '-t', 'ssh_command': 'sudo -i'}
E         + {}

test/group/test_simple.py:43: AssertionError
------------------------------ Captured log call -------------------------------
WARNING  cloudselect.group.Simple:simple.py:27 test: 'options' block not found in {'type': 'simple'}
WARNING  cloudselect.group.Simple:simple.py:27 plugin: 'options' block not found in {'type': 'simple'}
WARNING  cloudselect.group.Simple:simple.py:27 log: 'options' block not found in {'type': 'simple'}
WARNING  cloudselect.group.Simple:simple.py:27 option: 'options' block not found in {'type': 'simple'}
WARNING  cloudselect.group.Simple:simple.py:27 option: 'options' block not found in {'type': 'simple'}
=============================== warnings summary ===============================
test/discovery/test_kubernetes.py::test_kubernetes_discovery
  /home/travis/build/ezh/cloudselect/cloudselect/discovery/discovery.py:72: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.9 it will stop working
    if isinstance(value, collections.Mapping):

-- Docs: https://docs.pytest.org/en/stable/warnings.html

----------- coverage: platform linux, python 3.8.0-final-0 -----------
Name                                   Stmts   Miss  Cover   Missing
--------------------------------------------------------------------
cloudselect/__init__.py                   17      2    88%   30-31
cloudselect/__main__.py                    2      2     0%   3-5
cloudselect/cloudselect.py               196     39    80%   61, 65, 105-112, 180, 182, 185-193, 207, 269-271, 280-285, 291-301, 314-319
cloudselect/discovery/__init__.py          3      0   100%
cloudselect/discovery/aws.py             110     87    21%   30-34, 39-63, 68-84, 92-117, 121-134, 138-142, 149-162, 166-169, 174-175
cloudselect/discovery/discovery.py        60     12    80%   37-48, 55-58
cloudselect/discovery/hetzner.py          72     72     0%   8-149
cloudselect/discovery/kubernetes.py       72      8    89%   93, 97, 133-144
cloudselect/discovery/local.py            39      1    97%   57
cloudselect/discovery/stub.py              3      0   100%
cloudselect/group/__init__.py              3      0   100%
cloudselect/group/group.py                12      0   100%
cloudselect/group/simple.py               46      8    83%   41-44, 46-52, 60-61, 75-76
cloudselect/group/stub.py                  3      0   100%
cloudselect/instance.py                   30      2    93%   24, 68
cloudselect/pathfinder/__init__.py         3      0   100%
cloudselect/pathfinder/bastion.py         44     23    48%   30, 46-53, 60-73
cloudselect/pathfinder/pathfinder.py      12      1    92%   25
cloudselect/pathfinder/stub.py             3      0   100%
cloudselect/report/__init__.py             3      0   100%
cloudselect/report/json.py                 9      4    56%   19-22
cloudselect/report/json_pp.py              9      9     0%   8-22
cloudselect/report/report.py              20      0   100%
cloudselect/report/stub.py                 3      0   100%
cloudselect/report/yaml.py                 9      9     0%   8-22
cloudselect/selector.py                  121     34    72%   60-64, 94-95, 101-102, 109, 111, 118-132, 152, 172-180, 199, 201
--------------------------------------------------------------------
TOTAL                                    904    313    65%

=========================== short test summary info ============================
FAILED test/group/test_simple.py::test_options - AssertionError: assert {} ==...
=================== 1 failed, 35 passed, 1 warning in 1.48s ====================
ERROR: InvocationError for command /home/travis/build/ezh/cloudselect/.tox/py38/bin/py.test (exited with code 1)
___________________________________ summary ____________________________________
ERROR:   py38: commands failed
TravisBuddy Request Identifier: 925f3420-1fd5-11eb-9dab-419bf2960c30

@dependabot-preview
Copy link
Contributor Author

Superseded by #343.

@dependabot-preview dependabot-preview bot deleted the dependabot/pip/dependency-injector-4.3.6 branch November 10, 2020 22:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants