New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FileExistsError: [Errno 17] File exists: '/tmp/pytest-of-jenkins/pytest-0/.lock' #4181

Closed
zzzeek opened this Issue Oct 17, 2018 · 14 comments

Comments

Projects
None yet
5 participants
@zzzeek

zzzeek commented Oct 17, 2018

Hi there -

Just need to know what's happening on this one, this seems to be new code in py.test in version 3.9.1, my other build server running 3.8.2 doesn't have this issue.

is there....some kind of revolving numeric scheme such that more than one runner (I'm using pytest-xdist, 1.23.2 on both environments) is conflicting on this?

this is SQLAlchemy's test suite running on jenkins.

stack trace:


INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/_pytest/pathlib.py", line 127, in create_cleanup_lock
INTERNALERROR>     fd = os.open(str(lock_path), os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o644)
INTERNALERROR> FileExistsError: [Errno 17] File exists: '/tmp/pytest-of-jenkins/pytest-0/.lock'
INTERNALERROR> 
INTERNALERROR> The above exception was the direct cause of the following exception:
INTERNALERROR> 
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/_pytest/main.py", line 179, in wrap_session
INTERNALERROR>     config.hook.pytest_sessionstart(session=session)
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/pluggy/hooks.py", line 284, in __call__
INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/pluggy/manager.py", line 67, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/pluggy/manager.py", line 61, in <lambda>
INTERNALERROR>     firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/xdist/dsession.py", line 81, in pytest_sessionstart
INTERNALERROR>     nodes = self.nodemanager.setup_nodes(putevent=self.queue.put)
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/xdist/workermanage.py", line 67, in setup_nodes
INTERNALERROR>     nodes.append(self.setup_node(spec, putevent))
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/xdist/workermanage.py", line 76, in setup_node
INTERNALERROR>     node.setup()
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/xdist/workermanage.py", line 242, in setup
INTERNALERROR>     basetemp = self.config._tmpdirhandler.getbasetemp()
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/_pytest/tmpdir.py", line 107, in getbasetemp
INTERNALERROR>     return py.path.local(self._tmppath_factory.getbasetemp().resolve())
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/_pytest/tmpdir.py", line 66, in getbasetemp
INTERNALERROR>     prefix="pytest-", root=rootdir, keep=3, lock_timeout=LOCK_TIMEOUT
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/_pytest/pathlib.py", line 235, in make_numbered_dir_with_cleanup
INTERNALERROR>     consider_lock_dead_if_created_before=consider_lock_dead_if_created_before,
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/_pytest/pathlib.py", line 214, in cleanup_numbered_dir
INTERNALERROR>     try_cleanup(path, consider_lock_dead_if_created_before)
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/_pytest/pathlib.py", line 196, in try_cleanup
INTERNALERROR>     delete_a_numbered_dir(path)
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/_pytest/pathlib.py", line 166, in delete_a_numbered_dir
INTERNALERROR>     create_cleanup_lock(path)
INTERNALERROR>   File "/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/_pytest/pathlib.py", line 131, in create_cleanup_lock
INTERNALERROR>     EnvironmentError("cannot create lockfile in {path}".format(path=p)), e
INTERNALERROR>   File "<string>", line 3, in raise_from
INTERNALERROR> OSError: cannot create lockfile in /tmp/pytest-of-jenkins/pytest-0
/home/jenkins/workspace/sqlalchemy_gerrit/b3d9d1a2/.tox/py37-cext-sqlite-postgresql/lib/python3.7/site-packages/psycopg2
@nicoddemus

This comment has been minimized.

Member

nicoddemus commented Oct 17, 2018

Thanks @zzzeek for the report!

It is likely to be related to the new pathlib.Path implementation for creating temporary directories.

cc @RonnyPfannschmidt

zzzeek added a commit to zzzeek/sqlalchemy that referenced this issue Oct 17, 2018

block py.test 3.9.1
references:

pytest-dev/pytest#4181

Change-Id: I216fde19dd0f5c4910d76c08400f2329b09ad584

zzzeek added a commit to zzzeek/sqlalchemy that referenced this issue Oct 17, 2018

block py.test 3.9.1
references:

pytest-dev/pytest#4181

Change-Id: I216fde19dd0f5c4910d76c08400f2329b09ad584
(cherry picked from commit b4d42a8)
@RonnyPfannschmidt

This comment has been minimized.

Member

RonnyPfannschmidt commented Oct 17, 2018

indeed there seems to be a conflict i'll try to come up with a test for the situation

zzzeek added a commit to zzzeek/alembic that referenced this issue Oct 17, 2018

block py.test 3.9.1
references:

pytest-dev/pytest#4181

Change-Id: Iad3b6845e94753c55771419ccd1f99852bc89159
@otrejoso

This comment has been minimized.

otrejoso commented Oct 17, 2018

I have the same issue happening in both Mac and Windows. Pretty much the backtrace for mac is the same on as @zzzeek pointed out, but in windows the backtrace differs a little. This started to happen as soon as I got pytest 3.9.1.

INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\_pytest\main.py", line 177, in wrap_session
INTERNALERROR>     config._do_configure()
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\_pytest\config\__init__.py", line 610, in _do_configure
INTERNALERROR>     self.hook.pytest_configure.call_historic(kwargs=dict(config=self))
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\pluggy\hooks.py", line 306, in call_historic
INTERNALERROR>     res = self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\pluggy\manager.py", line 67, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\pluggy\manager.py", line 61, in <lambda>
INTERNALERROR>     firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\pluggy\callers.py", line 208, in _multicall
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\pluggy\callers.py", line 81, in get_result
INTERNALERROR>     _reraise(*ex)  # noqa
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\pluggy\callers.py", line 187, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\testdriver\plugin.py", line 151, in pytest_configure
INTERNALERROR>     base_tmp_dir = str(config._tmpdirhandler.getbasetemp())
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\_pytest\tmpdir.py", line 107, in getbasetemp
INTERNALERROR>     return py.path.local(self._tmppath_factory.getbasetemp().resolve())
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\_pytest\tmpdir.py", line 66, in getbasetemp
INTERNALERROR>     prefix="pytest-", root=rootdir, keep=3, lock_timeout=LOCK_TIMEOUT
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\_pytest\pathlib.py", line 235, in make_numbered_dir_with_cleanup
INTERNALERROR>     consider_lock_dead_if_created_before=consider_lock_dead_if_created_before,
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\_pytest\pathlib.py", line 216, in cleanup_numbered_dir
INTERNALERROR>     try_cleanup(path, consider_lock_dead_if_created_before)
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\_pytest\pathlib.py", line 196, in try_cleanup
INTERNALERROR>     delete_a_numbered_dir(path)
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\_pytest\pathlib.py", line 170, in delete_a_numbered_dir
INTERNALERROR>     path.rename(garbage)
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\pathlib2\__init__.py", line 1518, in rename
INTERNALERROR>     self._accessor.rename(self, target)
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\pathlib2\__init__.py", line 547, in wrapped
INTERNALERROR>     return strfunc(str(pathobjA), str(pathobjB), *args)
INTERNALERROR> WindowsError: [Error 5] Access is denied```

@RonnyPfannschmidt RonnyPfannschmidt self-assigned this Oct 17, 2018

zzzeek added a commit to zzzeek/sqlalchemy that referenced this issue Oct 24, 2018

Pin pytest *before* 3.9.1 totally
Unfortunately they have released
3.9.2 before fixing issue 4181, which means we will have to
re-pin a third time after they eventually release with
a fix

Change-Id: I9b6fab1b535f883a035f002264c41ad0166790ab
Reference: pytest-dev/pytest#4181
@obestwalter

This comment has been minimized.

Member

obestwalter commented Oct 24, 2018

I have a similar error on Linux with an internal project (no internal error interestingly though), so 'll add my info here:

pytest 3.9.2, no pytest-xdist or other parallel execution - no installed plugins at all actually. The production code uses asyncio, but the tests only make sure that every test gets a new event loop.

The error occured consistently in the folder "pytest-14"

$ ls -1 /tmp/pytest-of-ob
pytest-1
pytest-14
pytest-27
pytest-28
pytest-29
pytest-4
pytest-current
pytest-ob

The lockfile in pytest-14 was a broken symlink.

$ file .lock
.lock: broken symbolic link to 1463

I deleted only the .lock in pytest-14 to see what happens and then the same error occured in pytest-4 with a broken symlink to another inode.

After deleting the complete pytest temp folder, the error did not occur again (at least after 3 runs now).

Here is the error from before I started tampering with the tmp files:

==================================== ERRORS =====================================
_______ ERROR at setup of TestWithAlwaysUpload.test_detection_with_eicar ________

p = PosixPath('/tmp/pytest-of-ob/pytest-14')

    def create_cleanup_lock(p):
        """crates a lock to prevent premature folder cleanup"""
        lock_path = get_lock_path(p)
        try:
>           fd = os.open(str(lock_path), os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o644)
E           FileExistsError: [Errno 17] File exists: '/tmp/pytest-of-ob/pytest-14/.lock'

lock_path  = PosixPath('/tmp/pytest-of-ob/pytest-14/.lock')
p          = PosixPath('/tmp/pytest-of-ob/pytest-14')

.tox/test/lib/python3.6/site-packages/_pytest/pathlib.py:148: FileExistsError

The above exception was the direct cause of the following exception:

self = <CallInfo when='setup' exception: cannot create lockfile in /tmp/pytest-of-ob/pytest-14>
func = <function call_runtest_hook.<locals>.<lambda> at 0x7f4da97d4a60>
when = 'setup', treat_keyboard_interrupt_as_exception = False

    def __init__(self, func, when, treat_keyboard_interrupt_as_exception=False):
        #: context of invocation: one of "setup", "call",
        #: "teardown", "memocollect"
        self.when = when
        self.start = time()
        try:
>           self.result = func()

func       = <function call_runtest_hook.<locals>.<lambda> at 0x7f4da97d4a60>
self       = <CallInfo when='setup' exception: cannot create lockfile in /tmp/pytest-of-ob/pytest-14>
treat_keyboard_interrupt_as_exception = False
when       = 'setup'

.tox/test/lib/python3.6/site-packages/_pytest/runner.py:206: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/test/lib/python3.6/site-packages/_pytest/runner.py:188: in <lambda>
    lambda: ihook(item=item, **kwds),
.tox/test/lib/python3.6/site-packages/pluggy/hooks.py:284: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/test/lib/python3.6/site-packages/pluggy/manager.py:67: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/test/lib/python3.6/site-packages/pluggy/manager.py:61: in <lambda>
    firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
.tox/test/lib/python3.6/site-packages/_pytest/runner.py:109: in pytest_runtest_setup
    item.session._setupstate.prepare(item)
.tox/test/lib/python3.6/site-packages/_pytest/runner.py:375: in prepare
    col.setup()
.tox/test/lib/python3.6/site-packages/_pytest/python.py:1439: in setup
    fixtures.fillfixtures(self)
.tox/test/lib/python3.6/site-packages/_pytest/fixtures.py:294: in fillfixtures
    request._fillfixtures()
.tox/test/lib/python3.6/site-packages/_pytest/fixtures.py:467: in _fillfixtures
    item.funcargs[argname] = self.getfixturevalue(argname)
.tox/test/lib/python3.6/site-packages/_pytest/fixtures.py:514: in getfixturevalue
    return self._get_active_fixturedef(argname).cached_result[0]
.tox/test/lib/python3.6/site-packages/_pytest/fixtures.py:537: in _get_active_fixturedef
    self._compute_fixture_value(fixturedef)
.tox/test/lib/python3.6/site-packages/_pytest/fixtures.py:623: in _compute_fixture_value
    fixturedef.execute(request=subrequest)
.tox/test/lib/python3.6/site-packages/_pytest/fixtures.py:924: in execute
    return hook.pytest_fixture_setup(fixturedef=self, request=request)
.tox/test/lib/python3.6/site-packages/pluggy/hooks.py:284: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/test/lib/python3.6/site-packages/pluggy/manager.py:67: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/test/lib/python3.6/site-packages/pluggy/manager.py:61: in <lambda>
    firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
.tox/test/lib/python3.6/site-packages/_pytest/fixtures.py:966: in pytest_fixture_setup
    result = call_fixture_func(fixturefunc, request, kwargs)
.tox/test/lib/python3.6/site-packages/_pytest/fixtures.py:825: in call_fixture_func
    res = fixturefunc(**kwargs)
.tox/test/lib/python3.6/site-packages/_pytest/tmpdir.py:170: in tmpdir
    return _mk_tmp(request, tmpdir_factory)
.tox/test/lib/python3.6/site-packages/_pytest/tmpdir.py:157: in _mk_tmp
    return factory.mktemp(name, numbered=True)
.tox/test/lib/python3.6/site-packages/_pytest/tmpdir.py:103: in mktemp
    return py.path.local(self._tmppath_factory.mktemp(basename, numbered).resolve())
.tox/test/lib/python3.6/site-packages/_pytest/tmpdir.py:47: in mktemp
    p = make_numbered_dir(root=self.getbasetemp(), prefix=basename)
.tox/test/lib/python3.6/site-packages/_pytest/tmpdir.py:66: in getbasetemp
    prefix="pytest-", root=rootdir, keep=3, lock_timeout=LOCK_TIMEOUT
.tox/test/lib/python3.6/site-packages/_pytest/pathlib.py:256: in make_numbered_dir_with_cleanup
    consider_lock_dead_if_created_before=consider_lock_dead_if_created_before,
.tox/test/lib/python3.6/site-packages/_pytest/pathlib.py:235: in cleanup_numbered_dir
    try_cleanup(path, consider_lock_dead_if_created_before)
.tox/test/lib/python3.6/site-packages/_pytest/pathlib.py:217: in try_cleanup
    delete_a_numbered_dir(path)
.tox/test/lib/python3.6/site-packages/_pytest/pathlib.py:187: in delete_a_numbered_dir
    create_cleanup_lock(path)
.tox/test/lib/python3.6/site-packages/_pytest/pathlib.py:152: in create_cleanup_lock
    EnvironmentError("cannot create lockfile in {path}".format(path=p)), e
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

value = None, from_value = FileExistsError(17, 'File exists')

>   ???
E   OSError: cannot create lockfile in /tmp/pytest-of-ob/pytest-14

from_value = FileExistsError(17, 'File exists')
value      = None

<string>:3: OSError
------------------------------ Captured log setup -------------------------------
selector_events.py          65 DEBUG    Using selector: EpollSelector
___ ERROR at setup of TestWithAlwaysUpload.test_detection_with_autodump_hash ____

p = PosixPath('/tmp/pytest-of-ob/pytest-14')

    def create_cleanup_lock(p):
        """crates a lock to prevent premature folder cleanup"""
        lock_path = get_lock_path(p)
        try:
>           fd = os.open(str(lock_path), os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o644)
E           FileExistsError: [Errno 17] File exists: '/tmp/pytest-of-ob/pytest-14/.lock'

lock_path  = PosixPath('/tmp/pytest-of-ob/pytest-14/.lock')
p          = PosixPath('/tmp/pytest-of-ob/pytest-14')

.tox/test/lib/python3.6/site-packages/_pytest/pathlib.py:148: FileExistsError

The above exception was the direct cause of the following exception:

self = <CallInfo when='setup' exception: cannot create lockfile in /tmp/pytest-of-ob/pytest-14>
func = <function call_runtest_hook.<locals>.<lambda> at 0x7f4da7836d90>
when = 'setup', treat_keyboard_interrupt_as_exception = False

    def __init__(self, func, when, treat_keyboard_interrupt_as_exception=False):
        #: context of invocation: one of "setup", "call",
        #: "teardown", "memocollect"
        self.when = when
        self.start = time()
        try:
>           self.result = func()

func       = <function call_runtest_hook.<locals>.<lambda> at 0x7f4da7836d90>
self       = <CallInfo when='setup' exception: cannot create lockfile in /tmp/pytest-of-ob/pytest-14>
treat_keyboard_interrupt_as_exception = False
when       = 'setup'

.tox/test/lib/python3.6/site-packages/_pytest/runner.py:206: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.tox/test/lib/python3.6/site-packages/_pytest/runner.py:188: in <lambda>
    lambda: ihook(item=item, **kwds),
.tox/test/lib/python3.6/site-packages/pluggy/hooks.py:284: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/test/lib/python3.6/site-packages/pluggy/manager.py:67: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/test/lib/python3.6/site-packages/pluggy/manager.py:61: in <lambda>
    firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
.tox/test/lib/python3.6/site-packages/_pytest/runner.py:109: in pytest_runtest_setup
    item.session._setupstate.prepare(item)
.tox/test/lib/python3.6/site-packages/_pytest/runner.py:375: in prepare
    col.setup()
.tox/test/lib/python3.6/site-packages/_pytest/python.py:1439: in setup
    fixtures.fillfixtures(self)
.tox/test/lib/python3.6/site-packages/_pytest/fixtures.py:294: in fillfixtures
    request._fillfixtures()
.tox/test/lib/python3.6/site-packages/_pytest/fixtures.py:467: in _fillfixtures
    item.funcargs[argname] = self.getfixturevalue(argname)
.tox/test/lib/python3.6/site-packages/_pytest/fixtures.py:514: in getfixturevalue
    return self._get_active_fixturedef(argname).cached_result[0]
.tox/test/lib/python3.6/site-packages/_pytest/fixtures.py:537: in _get_active_fixturedef
    self._compute_fixture_value(fixturedef)
.tox/test/lib/python3.6/site-packages/_pytest/fixtures.py:623: in _compute_fixture_value
    fixturedef.execute(request=subrequest)
.tox/test/lib/python3.6/site-packages/_pytest/fixtures.py:924: in execute
    return hook.pytest_fixture_setup(fixturedef=self, request=request)
.tox/test/lib/python3.6/site-packages/pluggy/hooks.py:284: in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
.tox/test/lib/python3.6/site-packages/pluggy/manager.py:67: in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
.tox/test/lib/python3.6/site-packages/pluggy/manager.py:61: in <lambda>
    firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
.tox/test/lib/python3.6/site-packages/_pytest/fixtures.py:966: in pytest_fixture_setup
    result = call_fixture_func(fixturefunc, request, kwargs)
.tox/test/lib/python3.6/site-packages/_pytest/fixtures.py:825: in call_fixture_func
    res = fixturefunc(**kwargs)
.tox/test/lib/python3.6/site-packages/_pytest/tmpdir.py:170: in tmpdir
    return _mk_tmp(request, tmpdir_factory)
.tox/test/lib/python3.6/site-packages/_pytest/tmpdir.py:157: in _mk_tmp
    return factory.mktemp(name, numbered=True)
.tox/test/lib/python3.6/site-packages/_pytest/tmpdir.py:103: in mktemp
    return py.path.local(self._tmppath_factory.mktemp(basename, numbered).resolve())
.tox/test/lib/python3.6/site-packages/_pytest/tmpdir.py:47: in mktemp
    p = make_numbered_dir(root=self.getbasetemp(), prefix=basename)
.tox/test/lib/python3.6/site-packages/_pytest/tmpdir.py:66: in getbasetemp
    prefix="pytest-", root=rootdir, keep=3, lock_timeout=LOCK_TIMEOUT
.tox/test/lib/python3.6/site-packages/_pytest/pathlib.py:256: in make_numbered_dir_with_cleanup
    consider_lock_dead_if_created_before=consider_lock_dead_if_created_before,
.tox/test/lib/python3.6/site-packages/_pytest/pathlib.py:235: in cleanup_numbered_dir
    try_cleanup(path, consider_lock_dead_if_created_before)
.tox/test/lib/python3.6/site-packages/_pytest/pathlib.py:217: in try_cleanup
    delete_a_numbered_dir(path)
.tox/test/lib/python3.6/site-packages/_pytest/pathlib.py:187: in delete_a_numbered_dir
    create_cleanup_lock(path)
.tox/test/lib/python3.6/site-packages/_pytest/pathlib.py:152: in create_cleanup_lock
    EnvironmentError("cannot create lockfile in {path}".format(path=p)), e
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

value = None, from_value = FileExistsError(17, 'File exists')

>   ???
E   OSError: cannot create lockfile in /tmp/pytest-of-ob/pytest-14

from_value = FileExistsError(17, 'File exists')
value      = None

<string>:3: OSError
@RonnyPfannschmidt

This comment has been minimized.

Member

RonnyPfannschmidt commented Oct 24, 2018

@obestwalter the symlink target is negligible - please take a look if my open or fixes the issue in part

i believe part of the issue you are seeing is trying to break py.path.make_numbered_dir based locks with behave different in different platforms - it may require more sophisticated lock breaking

@obestwalter

This comment has been minimized.

Member

obestwalter commented Oct 24, 2018

@RonnyPfannschmidt, I reckon you mean this one: #4222

Will try this tomorrow.

zzzeek added a commit to zzzeek/alembic that referenced this issue Oct 24, 2018

block all py.test 3.9.1 or greater until
pytest-dev/pytest#4181 is fixed

Change-Id: I867e2b36122f578e69f2444ef9712cd73995cce3
@RonnyPfannschmidt

This comment has been minimized.

Member

RonnyPfannschmidt commented Oct 24, 2018

correct

@nicoddemus nicoddemus closed this Oct 26, 2018

@nicoddemus

This comment has been minimized.

Member

nicoddemus commented Oct 26, 2018

Fixed by #4222

pdonorio added a commit to proof-media/rchain-grpc that referenced this issue Oct 28, 2018

Update pytest to 3.9.3 (#16)
This PR updates [pytest](https://pypi.org/project/pytest) from **3.9.2** to **3.9.3**.



<details>
  <summary>Changelog</summary>
  
  
   ### 3.9.3
   ```
   =========================

Bug Fixes
---------

- `4174 &lt;https://github.com/pytest-dev/pytest/issues/4174&gt;`_: Fix &quot;ValueError: Plugin already registered&quot; with conftest plugins via symlink.


- `4181 &lt;https://github.com/pytest-dev/pytest/issues/4181&gt;`_: Handle race condition between creation and deletion of temporary folders.


- `4221 &lt;https://github.com/pytest-dev/pytest/issues/4221&gt;`_: Fix bug where the warning summary at the end of the test session was not showing the test where the warning was originated.


- `4243 &lt;https://github.com/pytest-dev/pytest/issues/4243&gt;`_: Fix regression when ``stacklevel`` for warnings was passed as positional argument on python2.



Improved Documentation
----------------------

- `3851 &lt;https://github.com/pytest-dev/pytest/issues/3851&gt;`_: Add reference to ``empty_parameter_set_mark`` ini option in documentation of ``pytest.mark.parametrize``



Trivial/Internal Changes
------------------------

- `4028 &lt;https://github.com/pytest-dev/pytest/issues/4028&gt;`_: Revert patching of ``sys.breakpointhook`` since it appears to do nothing.


- `4233 &lt;https://github.com/pytest-dev/pytest/issues/4233&gt;`_: Apply an import sorter (``reorder-python-imports``) to the codebase.


- `4248 &lt;https://github.com/pytest-dev/pytest/issues/4248&gt;`_: Remove use of unnecessary compat shim, six.binary_type
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/pytest
  - Changelog: https://pyup.io/changelogs/pytest/
  - Homepage: https://docs.pytest.org/en/latest/
</details>

peterbe added a commit to peterbe/django-peterbecom that referenced this issue Oct 28, 2018

Update pytest to 3.9.3 (#400)
This PR updates [pytest](https://pypi.org/project/pytest) from **3.9.2** to **3.9.3**.



<details>
  <summary>Changelog</summary>
  
  
   ### 3.9.3
   ```
   =========================

Bug Fixes
---------

- `4174 &lt;https://github.com/pytest-dev/pytest/issues/4174&gt;`_: Fix &quot;ValueError: Plugin already registered&quot; with conftest plugins via symlink.


- `4181 &lt;https://github.com/pytest-dev/pytest/issues/4181&gt;`_: Handle race condition between creation and deletion of temporary folders.


- `4221 &lt;https://github.com/pytest-dev/pytest/issues/4221&gt;`_: Fix bug where the warning summary at the end of the test session was not showing the test where the warning was originated.


- `4243 &lt;https://github.com/pytest-dev/pytest/issues/4243&gt;`_: Fix regression when ``stacklevel`` for warnings was passed as positional argument on python2.



Improved Documentation
----------------------

- `3851 &lt;https://github.com/pytest-dev/pytest/issues/3851&gt;`_: Add reference to ``empty_parameter_set_mark`` ini option in documentation of ``pytest.mark.parametrize``



Trivial/Internal Changes
------------------------

- `4028 &lt;https://github.com/pytest-dev/pytest/issues/4028&gt;`_: Revert patching of ``sys.breakpointhook`` since it appears to do nothing.


- `4233 &lt;https://github.com/pytest-dev/pytest/issues/4233&gt;`_: Apply an import sorter (``reorder-python-imports``) to the codebase.


- `4248 &lt;https://github.com/pytest-dev/pytest/issues/4248&gt;`_: Remove use of unnecessary compat shim, six.binary_type
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/pytest
  - Changelog: https://pyup.io/changelogs/pytest/
  - Homepage: https://docs.pytest.org/en/latest/
</details>
@otrejoso

This comment has been minimized.

otrejoso commented Oct 29, 2018

I am still having the same issue in windows running 3.9.3. Unless, the windows issue is totally different cause?

INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\_pytest\main.py", line 180, in wrap_session
INTERNALERROR>     config._do_configure()
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\_pytest\config\__init__.py", line 617, in _do_configure
INTERNALERROR>     self.hook.pytest_configure.call_historic(kwargs=dict(config=self))
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\pluggy\hooks.py", line 306, in call_historic
INTERNALERROR>     res = self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\pluggy\manager.py", line 67, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\pluggy\manager.py", line 61, in <lambda>
INTERNALERROR>     firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\pluggy\callers.py", line 208, in _multicall
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\pluggy\callers.py", line 81, in get_result
INTERNALERROR>     _reraise(*ex)  # noqa
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\pluggy\callers.py", line 187, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\testdriver\plugin.py", line 151, in pytest_configure
INTERNALERROR>     base_tmp_dir = str(config._tmpdirhandler.getbasetemp())
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\_pytest\tmpdir.py", line 108, in getbasetemp
INTERNALERROR>     return py.path.local(self._tmppath_factory.getbasetemp().resolve())
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\_pytest\tmpdir.py", line 67, in getbasetemp
INTERNALERROR>     prefix="pytest-", root=rootdir, keep=3, lock_timeout=LOCK_TIMEOUT
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\_pytest\pathlib.py", line 265, in make_numbered_dir_with_cleanup
INTERNALERROR>     consider_lock_dead_if_created_before=consider_lock_dead_if_created_before,
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\_pytest\pathlib.py", line 246, in cleanup_numbered_dir
INTERNALERROR>     try_cleanup(path, consider_lock_dead_if_created_before)
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\_pytest\pathlib.py", line 226, in try_cleanup
INTERNALERROR>     maybe_delete_a_numbered_dir(path)
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\_pytest\pathlib.py", line 200, in maybe_delete_a_numbered_dir
INTERNALERROR>     path.rename(garbage)
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\pathlib2\__init__.py", line 1518, in rename
INTERNALERROR>     self._accessor.rename(self, target)
INTERNALERROR>   File "C:\src\ptiinstaller0\venv\lib\site-packages\pathlib2\__init__.py", line 547, in wrapped
INTERNALERROR>     return strfunc(str(pathobjA), str(pathobjB), *args)
INTERNALERROR> WindowsError: [Error 5] Access is denied
@nicoddemus

This comment has been minimized.

Member

nicoddemus commented Oct 29, 2018

@otrejoso is definitely related, but is blowing up in a different place now it seems. Could you please open a new issue? Thanks!

@otrejoso

This comment has been minimized.

otrejoso commented Oct 29, 2018

@nicoddemus Issue filed. #4262 Thanks.

@nicoddemus

This comment has been minimized.

Member

nicoddemus commented Oct 29, 2018

Thanks, appreciate it!

bors bot added a commit to rehandalal/therapist that referenced this issue Oct 30, 2018

Merge #43
43: Update pytest to 3.9.3 r=rehandalal a=pyup-bot


This PR updates [pytest](https://pypi.org/project/pytest) from **3.8.2** to **3.9.3**.



<details>
  <summary>Changelog</summary>
  
  
   ### 3.9.3
   ```
   =========================

Bug Fixes
---------

- `4174 &lt;https://github.com/pytest-dev/pytest/issues/4174&gt;`_: Fix &quot;ValueError: Plugin already registered&quot; with conftest plugins via symlink.


- `4181 &lt;https://github.com/pytest-dev/pytest/issues/4181&gt;`_: Handle race condition between creation and deletion of temporary folders.


- `4221 &lt;https://github.com/pytest-dev/pytest/issues/4221&gt;`_: Fix bug where the warning summary at the end of the test session was not showing the test where the warning was originated.


- `4243 &lt;https://github.com/pytest-dev/pytest/issues/4243&gt;`_: Fix regression when ``stacklevel`` for warnings was passed as positional argument on python2.



Improved Documentation
----------------------

- `3851 &lt;https://github.com/pytest-dev/pytest/issues/3851&gt;`_: Add reference to ``empty_parameter_set_mark`` ini option in documentation of ``pytest.mark.parametrize``



Trivial/Internal Changes
------------------------

- `4028 &lt;https://github.com/pytest-dev/pytest/issues/4028&gt;`_: Revert patching of ``sys.breakpointhook`` since it appears to do nothing.


- `4233 &lt;https://github.com/pytest-dev/pytest/issues/4233&gt;`_: Apply an import sorter (``reorder-python-imports``) to the codebase.


- `4248 &lt;https://github.com/pytest-dev/pytest/issues/4248&gt;`_: Remove use of unnecessary compat shim, six.binary_type
   ```
   
  
  
   ### 3.9.2
   ```
   =========================

Bug Fixes
---------

- `2909 &lt;https://github.com/pytest-dev/pytest/issues/2909&gt;`_: Improve error message when a recursive dependency between fixtures is detected.


- `3340 &lt;https://github.com/pytest-dev/pytest/issues/3340&gt;`_: Fix logging messages not shown in hooks ``pytest_sessionstart()`` and ``pytest_sessionfinish()``.


- `3533 &lt;https://github.com/pytest-dev/pytest/issues/3533&gt;`_: Fix unescaped XML raw objects in JUnit report for skipped tests


- `3691 &lt;https://github.com/pytest-dev/pytest/issues/3691&gt;`_: Python 2: safely format warning message about passing unicode strings to ``warnings.warn``, which may cause
  surprising ``MemoryError`` exception when monkey patching ``warnings.warn`` itself.


- `4026 &lt;https://github.com/pytest-dev/pytest/issues/4026&gt;`_: Improve error message when it is not possible to determine a function&#39;s signature.


- `4177 &lt;https://github.com/pytest-dev/pytest/issues/4177&gt;`_: Pin ``setuptools&gt;=40.0`` to support ``py_modules`` in ``setup.cfg``


- `4179 &lt;https://github.com/pytest-dev/pytest/issues/4179&gt;`_: Restore the tmpdir behaviour of symlinking the current test run.


- `4192 &lt;https://github.com/pytest-dev/pytest/issues/4192&gt;`_: Fix filename reported by ``warnings.warn`` when using ``recwarn`` under python2.
   ```
   
  
  
   ### 3.9.1
   ```
   =========================

Features
--------

- `4159 &lt;https://github.com/pytest-dev/pytest/issues/4159&gt;`_: For test-suites containing test classes, the information about the subclassed
  module is now output only if a higher verbosity level is specified (at least
  &quot;-vv&quot;).
   ```
   
  
  
   ### 3.9.0
   ```
   =========================================================================

Deprecations
------------

- `3616 &lt;https://github.com/pytest-dev/pytest/issues/3616&gt;`_: The following accesses have been documented as deprecated for years, but are now actually emitting deprecation warnings.

  * Access of ``Module``, ``Function``, ``Class``, ``Instance``, ``File`` and ``Item`` through ``Node`` instances. Now
    users will this warning::

          usage of Function.Module is deprecated, please use pytest.Module instead

    Users should just ``import pytest`` and access those objects using the ``pytest`` module.

  * ``request.cached_setup``, this was the precursor of the setup/teardown mechanism available to fixtures. You can
    consult `funcarg comparison section in the docs &lt;https://docs.pytest.org/en/latest/funcarg_compare.html&gt;`_.

  * Using objects named ``&quot;Class&quot;`` as a way to customize the type of nodes that are collected in ``Collector``
    subclasses has been deprecated. Users instead should use ``pytest_collect_make_item`` to customize node types during
    collection.

    This issue should affect only advanced plugins who create new collection types, so if you see this warning
    message please contact the authors so they can change the code.

  * The warning that produces the message below has changed to ``RemovedInPytest4Warning``::

          getfuncargvalue is deprecated, use getfixturevalue


- `3988 &lt;https://github.com/pytest-dev/pytest/issues/3988&gt;`_: Add a Deprecation warning for pytest.ensuretemp as it was deprecated since a while.



Features
--------

- `2293 &lt;https://github.com/pytest-dev/pytest/issues/2293&gt;`_: Improve usage errors messages by hiding internal details which can be distracting and noisy.

  This has the side effect that some error conditions that previously raised generic errors (such as
  ``ValueError`` for unregistered marks) are now raising ``Failed`` exceptions.


- `3332 &lt;https://github.com/pytest-dev/pytest/issues/3332&gt;`_: Improve the error displayed when a ``conftest.py`` file could not be imported.

  In order to implement this, a new ``chain`` parameter was added to ``ExceptionInfo.getrepr``
  to show or hide chained tracebacks in Python 3 (defaults to ``True``).


- `3849 &lt;https://github.com/pytest-dev/pytest/issues/3849&gt;`_: Add ``empty_parameter_set_mark=fail_at_collect`` ini option for raising an exception when parametrize collects an empty set.


- `3964 &lt;https://github.com/pytest-dev/pytest/issues/3964&gt;`_: Log messages generated in the collection phase are shown when
  live-logging is enabled and/or when they are logged to a file.


- `3985 &lt;https://github.com/pytest-dev/pytest/issues/3985&gt;`_: Introduce ``tmp_path`` as a fixture providing a Path object.


- `4013 &lt;https://github.com/pytest-dev/pytest/issues/4013&gt;`_: Deprecation warnings are now shown even if you customize the warnings filters yourself. In the previous version
  any customization would override pytest&#39;s filters and deprecation warnings would fall back to being hidden by default.


- `4073 &lt;https://github.com/pytest-dev/pytest/issues/4073&gt;`_: Allow specification of timeout for ``Testdir.runpytest_subprocess()`` and ``Testdir.run()``.


- `4098 &lt;https://github.com/pytest-dev/pytest/issues/4098&gt;`_: Add returncode argument to pytest.exit() to exit pytest with a specific return code.


- `4102 &lt;https://github.com/pytest-dev/pytest/issues/4102&gt;`_: Reimplement ``pytest.deprecated_call`` using ``pytest.warns`` so it supports the ``match=&#39;...&#39;`` keyword argument.

  This has the side effect that ``pytest.deprecated_call`` now raises ``pytest.fail.Exception`` instead
  of ``AssertionError``.


- `4149 &lt;https://github.com/pytest-dev/pytest/issues/4149&gt;`_: Require setuptools&gt;=30.3 and move most of the metadata to ``setup.cfg``.



Bug Fixes
---------

- `2535 &lt;https://github.com/pytest-dev/pytest/issues/2535&gt;`_: Improve error message when test functions of ``unittest.TestCase`` subclasses use a parametrized fixture.


- `3057 &lt;https://github.com/pytest-dev/pytest/issues/3057&gt;`_: ``request.fixturenames`` now correctly returns the name of fixtures created by ``request.getfixturevalue()``.


- `3946 &lt;https://github.com/pytest-dev/pytest/issues/3946&gt;`_: Warning filters passed as command line options using ``-W`` now take precedence over filters defined in ``ini``
  configuration files.


- `4066 &lt;https://github.com/pytest-dev/pytest/issues/4066&gt;`_: Fix source reindenting by using ``textwrap.dedent`` directly.


- `4102 &lt;https://github.com/pytest-dev/pytest/issues/4102&gt;`_: ``pytest.warn`` will capture previously-warned warnings in Python 2. Previously they were never raised.


- `4108 &lt;https://github.com/pytest-dev/pytest/issues/4108&gt;`_: Resolve symbolic links for args.

  This fixes running ``pytest tests/test_foo.py::test_bar``, where ``tests``
  is a symlink to ``project/app/tests``:
  previously ``project/app/conftest.py`` would be ignored for fixtures then.


- `4132 &lt;https://github.com/pytest-dev/pytest/issues/4132&gt;`_: Fix duplicate printing of internal errors when using ``--pdb``.


- `4135 &lt;https://github.com/pytest-dev/pytest/issues/4135&gt;`_: pathlib based tmpdir cleanup now correctly handles symlinks in the folder.


- `4152 &lt;https://github.com/pytest-dev/pytest/issues/4152&gt;`_: Display the filename when encountering ``SyntaxWarning``.



Improved Documentation
----------------------

- `3713 &lt;https://github.com/pytest-dev/pytest/issues/3713&gt;`_: Update usefixtures documentation to clarify that it can&#39;t be used with fixture functions.


- `4058 &lt;https://github.com/pytest-dev/pytest/issues/4058&gt;`_: Update fixture documentation to specify that a fixture can be invoked twice in the scope it&#39;s defined for.


- `4064 &lt;https://github.com/pytest-dev/pytest/issues/4064&gt;`_: According to unittest.rst, setUpModule and tearDownModule were not implemented, but it turns out they are. So updated the documentation for unittest.


- `4151 &lt;https://github.com/pytest-dev/pytest/issues/4151&gt;`_: Add tempir testing example to CONTRIBUTING.rst guide



Trivial/Internal Changes
------------------------

- `2293 &lt;https://github.com/pytest-dev/pytest/issues/2293&gt;`_: The internal ``MarkerError`` exception has been removed.


- `3988 &lt;https://github.com/pytest-dev/pytest/issues/3988&gt;`_: Port the implementation of tmpdir to pathlib.


- `4063 &lt;https://github.com/pytest-dev/pytest/issues/4063&gt;`_: Exclude 0.00 second entries from ``--duration`` output unless ``-vv`` is passed on the command-line.


- `4093 &lt;https://github.com/pytest-dev/pytest/issues/4093&gt;`_: Fixed formatting of string literals in internal tests.
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/pytest
  - Changelog: https://pyup.io/changelogs/pytest/
  - Homepage: https://docs.pytest.org/en/latest/
</details>



Co-authored-by: pyup-bot <github-bot@pyup.io>

bors bot added a commit to mozilla/normandy that referenced this issue Oct 31, 2018

Merge #1605
1605: Scheduled weekly dependency update for week 43 r=peterbe a=pyup-bot






### Update [botocore](https://pypi.org/project/botocore) from **1.12.28** to **1.12.33**.


<details>
  <summary>Changelog</summary>
  
  
   ### 1.12.33
   ```
   =======

* api-change:``sagemaker``: Update sagemaker client to latest version
* api-change:``alexaforbusiness``: Update alexaforbusiness client to latest version
* api-change:``ssm``: Update ssm client to latest version
   ```
   
  
  
   ### 1.12.32
   ```
   =======

* api-change:``ec2``: Update ec2 client to latest version
   ```
   
  
  
   ### 1.12.31
   ```
   =======

* api-change:``codestar``: Update codestar client to latest version
* api-change:``alexaforbusiness``: Update alexaforbusiness client to latest version
   ```
   
  
  
   ### 1.12.30
   ```
   =======

* api-change:``ec2``: Update ec2 client to latest version
   ```
   
  
  
   ### 1.12.29
   ```
   =======

* api-change:``inspector``: Update inspector client to latest version
* api-change:``shield``: Update shield client to latest version
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/botocore
  - Changelog: https://pyup.io/changelogs/botocore/
  - Repo: https://github.com/boto/botocore
</details>





### Update [future](https://pypi.org/project/future) from **0.16.0** to **0.17.0**.


*The bot wasn't able to find a changelog for this release. [Got an idea?](https://github.com/pyupio/changelogs/issues/new)*

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/future
  - Changelog: https://pyup.io/changelogs/future/
  - Homepage: https://python-future.org
  - Docs: https://pythonhosted.org/future/
</details>





### Update [python-dateutil](https://pypi.org/project/python-dateutil) from **2.7.3** to **2.7.5**.


<details>
  <summary>Changelog</summary>
  
  
   ### 2.7.4
   ```
   ==========================

Data updates
------------

- Updated tzdata version to 2018f.
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/python-dateutil
  - Changelog: https://pyup.io/changelogs/python-dateutil/
  - Docs: https://dateutil.readthedocs.io
</details>





### Update [pytz](https://pypi.org/project/pytz) from **2018.5** to **2018.7**.


*The bot wasn't able to find a changelog for this release. [Got an idea?](https://github.com/pyupio/changelogs/issues/new)*

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/pytz
  - Homepage: http://pythonhosted.org/pytz
  - Docs: https://pythonhosted.org/pytz/
</details>





### Update [setuptools](https://pypi.org/project/setuptools) from **40.4.3** to **40.5.0**.


<details>
  <summary>Changelog</summary>
  
  
   ### 40.5.0
   ```
   -------

* 1335: In ``pkg_resources.normalize_path``, fix issue on Cygwin when cwd contains symlinks.
* 1502: Deprecated support for downloads from Subversion in package_index/easy_install.
* 1517: Dropped use of six.u in favor of `u&quot;&quot;` literals.
* 1520: Added support for ``data_files`` in ``setup.cfg``.
* 1525: Fixed rendering of the deprecation warning in easy_install doc.
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/setuptools
  - Changelog: https://pyup.io/changelogs/setuptools/
  - Repo: https://github.com/pypa/setuptools
</details>





### Update [urllib3](https://pypi.org/project/urllib3) from **1.23** to **1.24**.


<details>
  <summary>Changelog</summary>
  
  
   ### 1.24
   ```
   -----------------

* Allow key_server_hostname to be specified when initializing a PoolManager to allow custom SNI to be overridden. (Pull 1449)

* Test against Python 3.7 on AppVeyor. (Pull 1453)

* Early-out ipv6 checks when running on App Engine. (Pull 1450)

* Change ambiguous description of backoff_factor (Pull 1436)

* Add ability to handle multiple Content-Encodings (Issue 1441 and Pull 1442)

* Skip DNS names that can&#39;t be idna-decoded when using pyOpenSSL (Issue 1405).

* Add a server_hostname parameter to HTTPSConnection which allows for
  overriding the SNI hostname sent in the handshake. (Pull 1397)

* Drop support for EOL Python 2.6 (Pull 1429 and Pull 1430)

* Fixed bug where responses with header Content-Type: message/* erroneously
  raised HeaderParsingError, resulting in a warning being logged. (Pull 1439)

* Move urllib3 to src/urllib3 (Pull 1409)
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/urllib3
  - Changelog: https://pyup.io/changelogs/urllib3/
  - Docs: https://urllib3.readthedocs.io/
</details>





### Update [boto3](https://pypi.org/project/boto3) from **1.9.28** to **1.9.33**.


<details>
  <summary>Changelog</summary>
  
  
   ### 1.9.33
   ```
   ======

* api-change:``sagemaker``: [``botocore``] Update sagemaker client to latest version
* api-change:``alexaforbusiness``: [``botocore``] Update alexaforbusiness client to latest version
* api-change:``ssm``: [``botocore``] Update ssm client to latest version
   ```
   
  
  
   ### 1.9.32
   ```
   ======

* api-change:``ec2``: [``botocore``] Update ec2 client to latest version
   ```
   
  
  
   ### 1.9.31
   ```
   ======

* api-change:``codestar``: [``botocore``] Update codestar client to latest version
* api-change:``alexaforbusiness``: [``botocore``] Update alexaforbusiness client to latest version
   ```
   
  
  
   ### 1.9.30
   ```
   ======

* api-change:``ec2``: [``botocore``] Update ec2 client to latest version
   ```
   
  
  
   ### 1.9.29
   ```
   ======

* api-change:``inspector``: [``botocore``] Update inspector client to latest version
* api-change:``shield``: [``botocore``] Update shield client to latest version
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/boto3
  - Changelog: https://pyup.io/changelogs/boto3/
  - Repo: https://github.com/boto/boto3
</details>





### Update [flake8](https://pypi.org/project/flake8) from **3.5.0** to **3.6.0**.


<details>
  <summary>Changelog</summary>
  
  
   ### 3.6.0
   ```
   -------------------

You can view the `3.6.0 milestone`_ on GitLab for more details.

New Dependency Information
~~~~~~~~~~~~~~~~~~~~~~~~~~

- pycodestyle has been updated to &gt;= 2.4.0, &lt; 2.5.0 (See also `GitLab381`_,
  `GitLab415`_, `GitLab!212`_, `GitLab!230`_, `GitLab!231`_)

- Pyflakes has been updated to &gt;= 2.0.0, &lt; 2.1.0 (See also `GitLab422`_,
  `GitLab!239`_)

- flake8 requires python 2.x &gt;= 2.7 or python 3.x &gt;= 3.4 (See also
  `GitLab!225`_)

Features
~~~~~~~~

- Add ``paths`` to allow local plugins to exist outside of ``sys.path`` (See
  also `GitLab379`_, `GitLab!211`_)

- Copy ``setup.cfg`` files to the temporary git hook execution directory (See
  also `GitLab!215`_)

- Only skip a file if `` flake8: noqa`` is on a line by itself (See also
  `GitLab453`_, `GitLab!219`_)

- Provide a better user experience for broken plugins (See also `GitLab!221`_)

- Report ``E902`` when a file passed on the command line does not exist (See
  also `GitLab405`_, `GitLab!227`_)

- Add ``--extend-ignore`` for extending the default ``ignore`` instead of
  overriding it (See also `GitLab!233`_)

Bugs Fixed
~~~~~~~~~~

- Respect a formatter&#39;s newline setting when printing (See also `GitLab!222`_)

- Fix leaking of processes in the legacy api (See also `GitLab410`_,
  `GitLab!228`_)

- Fix a ``SyntaxWarning`` for an invalid escape sequence (See also
  `GitLab!244`_)

- Fix ``DeprecationWarning`` due to import of ``abc`` classes from the
  ``collections`` module (See also `GitLab!249`_)

- Defer ``setuptools`` import to improve flake8 startup time (See also
  `GitLab365`_, `GitLab!250`_)

- Fix inconsistent line endings in ``FileProcessor.lines`` when running under
  python 3.x (See also `GitLab457`_, `GitLab!255`_)


.. all links
.. _3.6.0 milestone:
    https://gitlab.com/pycqa/flake8/milestones/21

.. issue links
.. _GitLab365:
    https://gitlab.com/pycqa/flake8/issues/365
.. _GitLab379:
    https://gitlab.com/pycqa/flake8/issues/379
.. _GitLab381:
    https://gitlab.com/pycqa/flake8/issues/381
.. _GitLab405:
    https://gitlab.com/pycqa/flake8/issues/405
.. _GitLab410:
    https://gitlab.com/pycqa/flake8/issues/410
.. _GitLab415:
    https://gitlab.com/pycqa/flake8/issues/415
.. _GitLab422:
    https://gitlab.com/pycqa/flake8/issues/422
.. _GitLab453:
    https://gitlab.com/pycqa/flake8/issues/453
.. _GitLab457:
    https://gitlab.com/pycqa/flake8/issues/457

.. merge request links
.. _GitLab!211:
    https://gitlab.com/pycqa/flake8/merge_requests/211
.. _GitLab!212:
    https://gitlab.com/pycqa/flake8/merge_requests/212
.. _GitLab!215:
    https://gitlab.com/pycqa/flake8/merge_requests/215
.. _GitLab!219:
    https://gitlab.com/pycqa/flake8/merge_requests/219
.. _GitLab!221:
    https://gitlab.com/pycqa/flake8/merge_requests/221
.. _GitLab!222:
    https://gitlab.com/pycqa/flake8/merge_requests/222
.. _GitLab!225:
    https://gitlab.com/pycqa/flake8/merge_requests/225
.. _GitLab!227:
    https://gitlab.com/pycqa/flake8/merge_requests/227
.. _GitLab!228:
    https://gitlab.com/pycqa/flake8/merge_requests/228
.. _GitLab!230:
    https://gitlab.com/pycqa/flake8/merge_requests/230
.. _GitLab!231:
    https://gitlab.com/pycqa/flake8/merge_requests/231
.. _GitLab!233:
    https://gitlab.com/pycqa/flake8/merge_requests/233
.. _GitLab!239:
    https://gitlab.com/pycqa/flake8/merge_requests/239
.. _GitLab!244:
    https://gitlab.com/pycqa/flake8/merge_requests/244
.. _GitLab!249:
    https://gitlab.com/pycqa/flake8/merge_requests/249
.. _GitLab!250:
    https://gitlab.com/pycqa/flake8/merge_requests/250
.. _GitLab!255:
    https://gitlab.com/pycqa/flake8/merge_requests/255
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/flake8
  - Changelog: https://pyup.io/changelogs/flake8/
  - Repo: https://gitlab.com/pycqa/flake8
</details>





### Update [pytest](https://pypi.org/project/pytest) from **3.9.1** to **3.9.3**.


<details>
  <summary>Changelog</summary>
  
  
   ### 3.9.3
   ```
   =========================

Bug Fixes
---------

- `4174 &lt;https://github.com/pytest-dev/pytest/issues/4174&gt;`_: Fix &quot;ValueError: Plugin already registered&quot; with conftest plugins via symlink.


- `4181 &lt;https://github.com/pytest-dev/pytest/issues/4181&gt;`_: Handle race condition between creation and deletion of temporary folders.


- `4221 &lt;https://github.com/pytest-dev/pytest/issues/4221&gt;`_: Fix bug where the warning summary at the end of the test session was not showing the test where the warning was originated.


- `4243 &lt;https://github.com/pytest-dev/pytest/issues/4243&gt;`_: Fix regression when ``stacklevel`` for warnings was passed as positional argument on python2.



Improved Documentation
----------------------

- `3851 &lt;https://github.com/pytest-dev/pytest/issues/3851&gt;`_: Add reference to ``empty_parameter_set_mark`` ini option in documentation of ``pytest.mark.parametrize``



Trivial/Internal Changes
------------------------

- `4028 &lt;https://github.com/pytest-dev/pytest/issues/4028&gt;`_: Revert patching of ``sys.breakpointhook`` since it appears to do nothing.


- `4233 &lt;https://github.com/pytest-dev/pytest/issues/4233&gt;`_: Apply an import sorter (``reorder-python-imports``) to the codebase.


- `4248 &lt;https://github.com/pytest-dev/pytest/issues/4248&gt;`_: Remove use of unnecessary compat shim, six.binary_type
   ```
   
  
  
   ### 3.9.2
   ```
   =========================

Bug Fixes
---------

- `2909 &lt;https://github.com/pytest-dev/pytest/issues/2909&gt;`_: Improve error message when a recursive dependency between fixtures is detected.


- `3340 &lt;https://github.com/pytest-dev/pytest/issues/3340&gt;`_: Fix logging messages not shown in hooks ``pytest_sessionstart()`` and ``pytest_sessionfinish()``.


- `3533 &lt;https://github.com/pytest-dev/pytest/issues/3533&gt;`_: Fix unescaped XML raw objects in JUnit report for skipped tests


- `3691 &lt;https://github.com/pytest-dev/pytest/issues/3691&gt;`_: Python 2: safely format warning message about passing unicode strings to ``warnings.warn``, which may cause
  surprising ``MemoryError`` exception when monkey patching ``warnings.warn`` itself.


- `4026 &lt;https://github.com/pytest-dev/pytest/issues/4026&gt;`_: Improve error message when it is not possible to determine a function&#39;s signature.


- `4177 &lt;https://github.com/pytest-dev/pytest/issues/4177&gt;`_: Pin ``setuptools&gt;=40.0`` to support ``py_modules`` in ``setup.cfg``


- `4179 &lt;https://github.com/pytest-dev/pytest/issues/4179&gt;`_: Restore the tmpdir behaviour of symlinking the current test run.


- `4192 &lt;https://github.com/pytest-dev/pytest/issues/4192&gt;`_: Fix filename reported by ``warnings.warn`` when using ``recwarn`` under python2.
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/pytest
  - Changelog: https://pyup.io/changelogs/pytest/
  - Homepage: https://docs.pytest.org/en/latest/
</details>





### Update [pytest-testrail](https://pypi.org/project/pytest-testrail) from **1.1.6** to **2.3.0**.


<details>
  <summary>Changelog</summary>
  
  
  
  
  
  
  
  
  
  
  
  
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/pytest-testrail
  - Changelog: https://pyup.io/changelogs/pytest-testrail/
  - Repo: http://github.com/allankp/pytest-testrail/
</details>







Co-authored-by: pyup-bot <github-bot@pyup.io>
Co-authored-by: Mike Cooper <mythmon@gmail.com>

peterbe added a commit to mozilla-services/tecken that referenced this issue Oct 31, 2018

Update pytest to 3.9.3 (#1273)
This PR updates [pytest](https://pypi.org/project/pytest) from **3.9.2** to **3.9.3**.



<details>
  <summary>Changelog</summary>
  
  
   ### 3.9.3
   ```
   =========================

Bug Fixes
---------

- `4174 &lt;https://github.com/pytest-dev/pytest/issues/4174&gt;`_: Fix &quot;ValueError: Plugin already registered&quot; with conftest plugins via symlink.


- `4181 &lt;https://github.com/pytest-dev/pytest/issues/4181&gt;`_: Handle race condition between creation and deletion of temporary folders.


- `4221 &lt;https://github.com/pytest-dev/pytest/issues/4221&gt;`_: Fix bug where the warning summary at the end of the test session was not showing the test where the warning was originated.


- `4243 &lt;https://github.com/pytest-dev/pytest/issues/4243&gt;`_: Fix regression when ``stacklevel`` for warnings was passed as positional argument on python2.



Improved Documentation
----------------------

- `3851 &lt;https://github.com/pytest-dev/pytest/issues/3851&gt;`_: Add reference to ``empty_parameter_set_mark`` ini option in documentation of ``pytest.mark.parametrize``



Trivial/Internal Changes
------------------------

- `4028 &lt;https://github.com/pytest-dev/pytest/issues/4028&gt;`_: Revert patching of ``sys.breakpointhook`` since it appears to do nothing.


- `4233 &lt;https://github.com/pytest-dev/pytest/issues/4233&gt;`_: Apply an import sorter (``reorder-python-imports``) to the codebase.


- `4248 &lt;https://github.com/pytest-dev/pytest/issues/4248&gt;`_: Remove use of unnecessary compat shim, six.binary_type
   ```
   
  
</details>


 

<details>
  <summary>Links</summary>
  
  - PyPI: https://pypi.org/project/pytest
  - Changelog: https://pyup.io/changelogs/pytest/
  - Homepage: https://docs.pytest.org/en/latest/
</details>
@obestwalter

This comment has been minimized.

Member

obestwalter commented Nov 2, 2018

Thanks @nicoddemus! Sorry for not following up on this - I wasn't able to provoke the race condition on my first tries and now wanted to try some ways to provoke it, but life got in the way.

@nicoddemus

This comment has been minimized.

Member

nicoddemus commented Nov 2, 2018

@obestwalter no worries! Hopefully things are sorted out now. 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment