Skip to content
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

Fix #220: Allow filelock test thread to catch any exceptions #221

Merged
merged 3 commits into from
Apr 5, 2023

Conversation

TheMatt2
Copy link
Contributor

@TheMatt2 TheMatt2 commented Apr 5, 2023

Fixes a potential issue in test_filelock.py in #220

If someone where to introduce a bug (such as reintroducing #31 ) that caused file locking
not to secure exclusive access, no test actually fails. Instead, a warning is shown by Pytest.

This fixes the issue by catching any error in a thread while testing, and reraising it in the main thread.


tests/test_error.py ....                                                                                                                                [  8%]
tests/test_filelock.py ....................F.........................                                                                                   [100%]

========================================================================== FAILURES ===========================================================================
_____________________________________________________ test_threaded_lock_different_lock_obj[UnixFileLock] _____________________________________________________

self = <ExThread(t1_0, stopped 123145355259904)>

    def run(self) -> None:
        try:
>           super().run()

tests/test_filelock.py:187: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <ExThread(t1_0, stopped 123145355259904)>

    def run(self):
        """Method representing the thread's activity.
    
        You may override this method in a subclass. The standard run() method
        invokes the callable object passed to the object's constructor as the
        target argument, if any, with sequential and keyword arguments taken
        from the args and kwargs arguments, respectively.
    
        """
        try:
            if self._target is not None:
>               self._target(*self._args, **self._kwargs)

.../threading.py:975: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

    def t_1() -> None:
        for _ in range(1000):
            with lock_1:
                assert lock_1.is_locked
>               assert not lock_2.is_locked
E               assert not True
E                +  where True = <filelock._unix.UnixFileLock object at 0x102083990>.is_locked

tests/test_filelock.py:229: AssertionError

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

lock_type = <class 'filelock._unix.UnixFileLock'>
tmp_path = PosixPath('.../pytest-18/test_threaded_lock_different_l0')

    @pytest.mark.parametrize("lock_type", [FileLock, SoftFileLock])
    @pytest.mark.skipif(hasattr(sys, "pypy_version_info") and sys.platform == "win32", reason="deadlocks randomly")
    def test_threaded_lock_different_lock_obj(lock_type: type[BaseFileLock], tmp_path: Path) -> None:
        # Runs multiple threads, which acquire the same lock file with a different FileLock object. When thread group 1
        # acquired the lock, thread group 2 must not hold their lock.
    
        def t_1() -> None:
            for _ in range(1000):
                with lock_1:
                    assert lock_1.is_locked
                    assert not lock_2.is_locked
    
        def t_2() -> None:
            for _ in range(1000):
                with lock_2:
                    assert not lock_1.is_locked
                    assert lock_2.is_locked
    
        lock_path = tmp_path / "a"
        lock_1, lock_2 = lock_type(str(lock_path)), lock_type(str(lock_path))
        threads = [(ExThread(t_1, f"t1_{i}"), ExThread(t_2, f"t2_{i}")) for i in range(10)]
    
        for thread_1, thread_2 in threads:
            thread_1.start()
            thread_2.start()
        for thread_1, thread_2 in threads:
>           thread_1.join()

tests/test_filelock.py:245: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <ExThread(t1_0, stopped 123145355259904)>, timeout = None

    def join(self, timeout: float | None = None) -> None:
        super().join(timeout=timeout)
        if self.ex is not None:
            print(f"fail from thread {self.name}")  # pragma: no cover
>           raise RuntimeError from self.ex[1]  # pragma: no cover
E           RuntimeError

tests/test_filelock.py:195: RuntimeError
-------------------------------------------------------------------- Captured stdout call ---------------------------------------------------------------------
fail from thread t1_0
=================================================================== short test summary info ===================================================================
FAILED tests/test_filelock.py::test_threaded_lock_different_lock_obj[UnixFileLock] - RuntimeError
================================================================ 1 failed, 49 passed in 2.65s =================================================================

@TheMatt2
Copy link
Contributor Author

TheMatt2 commented Apr 5, 2023

tests/test_filelock.py:188:9: B001 Do not use bare `except:`, it also catches unexpected events like memory errors, interrupts, system exit, and so on.  Prefer `except Exception:`.  If you're sure what you're doing, be explicit and write `except BaseException:`.
tests/test_filelock.py:188:9: E722 do not use bare 'except'

Oh flake...

@gaborbernat
Copy link
Member

Oh flake...

This is a feature 😊

@gaborbernat gaborbernat merged commit abcc19f into tox-dev:main Apr 5, 2023
matfax referenced this pull request in matfax/mutapath Jul 9, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [filelock](https://github.com/tox-dev/py-filelock) | `3.0.12` ->
`3.12.2` |
[![age](https://badges.renovateapi.com/packages/pypi/filelock/3.12.2/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/pypi/filelock/3.12.2/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/pypi/filelock/3.12.2/compatibility-slim/3.0.12)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/pypi/filelock/3.12.2/confidence-slim/3.0.12)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>tox-dev/py-filelock (filelock)</summary>

###
[`v3.12.2`](https://github.com/tox-dev/py-filelock/releases/tag/3.12.2)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.12.1...3.12.2)

#### What's Changed

- Restore 'if TYPE_CHECKING' syntax for FileLock definition by
[@&#8203;dlax](https://github.com/dlax) in
[https://github.com/tox-dev/py-filelock/pull/245](https://github.com/tox-dev/py-filelock/pull/245)

#### New Contributors

- [@&#8203;dlax](https://github.com/dlax) made their first
contribution in
[https://github.com/tox-dev/py-filelock/pull/245](https://github.com/tox-dev/py-filelock/pull/245)

**Full Changelog**:
tox-dev/filelock@3.12.1...3.12.2

###
[`v3.12.1`](https://github.com/tox-dev/py-filelock/releases/tag/3.12.1)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.12.0...3.12.1)

##### What's Changed

- Add trusted-publish by
[@&#8203;gaborbernat](https://github.com/gaborbernat) in
[https://github.com/tox-dev/py-filelock/pull/236](https://github.com/tox-dev/py-filelock/pull/236)
- Add 3.12 support by
[@&#8203;gaborbernat](https://github.com/gaborbernat) in
[https://github.com/tox-dev/py-filelock/pull/237](https://github.com/tox-dev/py-filelock/pull/237)
- Bump pypa/gh-action-pypi-publish from 1.8.5 to 1.8.6 by
[@&#8203;dependabot](https://github.com/dependabot) in
[https://github.com/tox-dev/py-filelock/pull/239](https://github.com/tox-dev/py-filelock/pull/239)
- git ls-files -z -- .github/workflows/check.yml | xargs -0 sed -i
's|3.12.0-alpha.7|3.12.0-beta.1|g' by
[@&#8203;gaborbernat](https://github.com/gaborbernat) in
[https://github.com/tox-dev/py-filelock/pull/243](https://github.com/tox-dev/py-filelock/pull/243)
- Use ruff by [@&#8203;gaborbernat](https://github.com/gaborbernat) in
[https://github.com/tox-dev/py-filelock/pull/244](https://github.com/tox-dev/py-filelock/pull/244)
- Fix test_bad_lock_file for other OSes by
[@&#8203;TheMatt2](https://github.com/TheMatt2) in
[https://github.com/tox-dev/py-filelock/pull/242](https://github.com/tox-dev/py-filelock/pull/242)

**Full Changelog**:
tox-dev/filelock@3.12.0...3.12.1

###
[`v3.12.0`](https://github.com/tox-dev/py-filelock/releases/tag/3.12.0)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.11.0...3.12.0)

#### What's Changed

- Fix:
[#&#8203;225](https://github.com/tox-dev/py-filelock/issues/225) :Get
rid of warning about inability to link to \_thread.\_local. by
[@&#8203;csm10495](https://github.com/csm10495) in
[https://github.com/tox-dev/py-filelock/pull/226](https://github.com/tox-dev/py-filelock/pull/226)
- Bump deps and tools by
[@&#8203;gaborbernat](https://github.com/gaborbernat) in
[https://github.com/tox-dev/py-filelock/pull/228](https://github.com/tox-dev/py-filelock/pull/228)
- Add umask check to tests so umask 002 is valid by
[@&#8203;TheMatt2](https://github.com/TheMatt2) in
[https://github.com/tox-dev/py-filelock/pull/227](https://github.com/tox-dev/py-filelock/pull/227)
- Fix lock hang on Windows by
[@&#8203;TheMatt2](https://github.com/TheMatt2) in
[https://github.com/tox-dev/py-filelock/pull/231](https://github.com/tox-dev/py-filelock/pull/231)
- Conditionally disable/enable thread-local lock behavior. by
[@&#8203;csm10495](https://github.com/csm10495) in
[https://github.com/tox-dev/py-filelock/pull/232](https://github.com/tox-dev/py-filelock/pull/232)

**Full Changelog**:
tox-dev/filelock@3.11.0...3.12.0

###
[`v3.11.0`](https://github.com/tox-dev/py-filelock/releases/tag/3.11.0)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.10.7...3.11.0)

#### What's Changed

- Bump pypa/gh-action-pypi-publish from 1.8.3 to 1.8.5 by
[@&#8203;dependabot](https://github.com/dependabot) in
[https://github.com/tox-dev/py-filelock/pull/218](https://github.com/tox-dev/py-filelock/pull/218)
- Fix
[#&#8203;220](https://github.com/tox-dev/py-filelock/issues/220):
Allow filelock test thread to catch any exceptions by
[@&#8203;TheMatt2](https://github.com/TheMatt2) in
[https://github.com/tox-dev/py-filelock/pull/221](https://github.com/tox-dev/py-filelock/pull/221)
- Bump deps and tools by
[@&#8203;gaborbernat](https://github.com/gaborbernat) in
[https://github.com/tox-dev/py-filelock/pull/222](https://github.com/tox-dev/py-filelock/pull/222)
- Run more pypy versions in CI but without coverage by
[@&#8203;gaborbernat](https://github.com/gaborbernat) in
[https://github.com/tox-dev/py-filelock/pull/224](https://github.com/tox-dev/py-filelock/pull/224)
- Make the lock a thread local variable by
[@&#8203;csm10495](https://github.com/csm10495) in
[https://github.com/tox-dev/py-filelock/pull/219](https://github.com/tox-dev/py-filelock/pull/219)

#### New Contributors

- [@&#8203;csm10495](https://github.com/csm10495) made their first
contribution in
[https://github.com/tox-dev/py-filelock/pull/219](https://github.com/tox-dev/py-filelock/pull/219)

**Full Changelog**:
tox-dev/filelock@3.10.7...3.11.0

###
[`v3.10.7`](https://github.com/tox-dev/py-filelock/releases/tag/3.10.7)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.10.6...3.10.7)

#### What's Changed

- use fchmod by [@&#8203;jfennick](https://github.com/jfennick) in
[https://github.com/tox-dev/py-filelock/pull/214](https://github.com/tox-dev/py-filelock/pull/214)

#### New Contributors

- [@&#8203;jfennick](https://github.com/jfennick) made their first
contribution in
[https://github.com/tox-dev/py-filelock/pull/214](https://github.com/tox-dev/py-filelock/pull/214)

**Full Changelog**:
tox-dev/filelock@3.10.6...3.10.7

###
[`v3.10.6`](https://github.com/tox-dev/py-filelock/releases/tag/3.10.6)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.10.5...3.10.6)

#### What's Changed

- Bugfix/147 by [@&#8203;jahrules](https://github.com/jahrules) in
[https://github.com/tox-dev/py-filelock/pull/213](https://github.com/tox-dev/py-filelock/pull/213)

**Full Changelog**:
tox-dev/filelock@3.10.5...3.10.6

###
[`v3.10.5`](https://github.com/tox-dev/py-filelock/releases/tag/3.10.5)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.10.4...3.10.5)

#### What's Changed

- proposed fix for issue
[#&#8203;67](https://github.com/tox-dev/py-filelock/issues/67) by
[@&#8203;jahrules](https://github.com/jahrules) in
[https://github.com/tox-dev/py-filelock/pull/212](https://github.com/tox-dev/py-filelock/pull/212)

**Full Changelog**:
tox-dev/filelock@3.10.4...3.10.5

###
[`v3.10.4`](https://github.com/tox-dev/py-filelock/releases/tag/3.10.4)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.10.3...3.10.4)

#### What's Changed

- updated os.open to preserve mode by
[@&#8203;jahrules](https://github.com/jahrules) in
[https://github.com/tox-dev/py-filelock/pull/211](https://github.com/tox-dev/py-filelock/pull/211)

**Full Changelog**:
tox-dev/filelock@3.10.3...3.10.4

###
[`v3.10.3`](https://github.com/tox-dev/py-filelock/releases/tag/3.10.3)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.10.2...3.10.3)

#### What's Changed

- Bump pypa/gh-action-pypi-publish from 1.8.1 to 1.8.3 by
[@&#8203;dependabot](https://github.com/dependabot) in
[https://github.com/tox-dev/py-filelock/pull/207](https://github.com/tox-dev/py-filelock/pull/207)
- bug fix by [@&#8203;jahrules](https://github.com/jahrules) in
[https://github.com/tox-dev/py-filelock/pull/209](https://github.com/tox-dev/py-filelock/pull/209)

**Full Changelog**:
tox-dev/filelock@3.10.2...3.10.3

###
[`v3.10.2`](https://github.com/tox-dev/py-filelock/releases/tag/3.10.2)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.10.1...3.10.2)

#### What's Changed

- changed from os.umask to os.chmod by
[@&#8203;jahrules](https://github.com/jahrules) in
[https://github.com/tox-dev/py-filelock/pull/206](https://github.com/tox-dev/py-filelock/pull/206)

**Full Changelog**:
tox-dev/filelock@3.10.1...3.10.2

###
[`v3.10.1`](https://github.com/tox-dev/py-filelock/releases/tag/3.10.1)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.10.0...3.10.1)

#### What's Changed

- Bump pypa/gh-action-pypi-publish from 1.7.1 to 1.8.1 by
[@&#8203;dependabot](https://github.com/dependabot) in
[https://github.com/tox-dev/py-filelock/pull/200](https://github.com/tox-dev/py-filelock/pull/200)
- Bump deps and tools by
[@&#8203;gaborbernat](https://github.com/gaborbernat) in
[https://github.com/tox-dev/py-filelock/pull/201](https://github.com/tox-dev/py-filelock/pull/201)
- Properly pickle of Timeout objects + test cases by
[@&#8203;TheMatt2](https://github.com/TheMatt2) in
[https://github.com/tox-dev/py-filelock/pull/203](https://github.com/tox-dev/py-filelock/pull/203)

#### New Contributors

- [@&#8203;TheMatt2](https://github.com/TheMatt2) made their first
contribution in
[https://github.com/tox-dev/py-filelock/pull/203](https://github.com/tox-dev/py-filelock/pull/203)

**Full Changelog**:
tox-dev/filelock@3.10.0...3.10.1

###
[`v3.10.0`](https://github.com/tox-dev/py-filelock/releases/tag/3.10.0)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.9.1...3.10.0)

#### What's Changed

- added multiuser support and associated tests by
[@&#8203;jahrules](https://github.com/jahrules) in
[https://github.com/tox-dev/py-filelock/pull/192](https://github.com/tox-dev/py-filelock/pull/192)

#### New Contributors

- [@&#8203;jahrules](https://github.com/jahrules) made their first
contribution in
[https://github.com/tox-dev/py-filelock/pull/192](https://github.com/tox-dev/py-filelock/pull/192)

**Full Changelog**:
tox-dev/filelock@3.9.1...3.10.0

###
[`v3.9.1`](https://github.com/tox-dev/py-filelock/releases/tag/3.9.1)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.9.0...3.9.1)

#### What's Changed

- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://github.com/pre-commit-ci) in
[https://github.com/tox-dev/py-filelock/pull/188](https://github.com/tox-dev/py-filelock/pull/188)
- Bump deps and tools by
[@&#8203;gaborbernat](https://github.com/gaborbernat) in
[https://github.com/tox-dev/py-filelock/pull/193](https://github.com/tox-dev/py-filelock/pull/193)
- Bump deps and tools by
[@&#8203;gaborbernat](https://github.com/gaborbernat) in
[https://github.com/tox-dev/py-filelock/pull/197](https://github.com/tox-dev/py-filelock/pull/197)
- Bump pypa/gh-action-pypi-publish from 1.6.4 to 1.7.1 by
[@&#8203;dependabot](https://github.com/dependabot) in
[https://github.com/tox-dev/py-filelock/pull/198](https://github.com/tox-dev/py-filelock/pull/198)
- use time.perf_counter instead of time.monotonic by
[@&#8203;zpz](https://github.com/zpz) in
[https://github.com/tox-dev/py-filelock/pull/194](https://github.com/tox-dev/py-filelock/pull/194)

#### New Contributors

- [@&#8203;zpz](https://github.com/zpz) made their first contribution
in
[https://github.com/tox-dev/py-filelock/pull/194](https://github.com/tox-dev/py-filelock/pull/194)

**Full Changelog**:
tox-dev/filelock@3.9.0...3.9.1

###
[`v3.9.0`](https://github.com/tox-dev/py-filelock/releases/tag/3.9.0)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.8.2...3.9.0)

#### What's Changed

- Move to hatchling build backend by
[@&#8203;gaborbernat](https://github.com/gaborbernat) in
[https://github.com/tox-dev/py-filelock/pull/185](https://github.com/tox-dev/py-filelock/pull/185)

**Full Changelog**:
tox-dev/filelock@3.8.2...3.9.0

###
[`v3.8.2`](https://github.com/tox-dev/py-filelock/releases/tag/3.8.2)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.8.1...3.8.2)

#### What's Changed

- Bump pypa/gh-action-pypi-publish from 1.5.1 to 1.6.1 by
[@&#8203;dependabot](https://github.com/dependabot) in
[https://github.com/tox-dev/py-filelock/pull/178](https://github.com/tox-dev/py-filelock/pull/178)
- Update the license classifier to "Unlicense" by
[@&#8203;jond01](https://github.com/jond01) in
[https://github.com/tox-dev/py-filelock/pull/180](https://github.com/tox-dev/py-filelock/pull/180)

#### New Contributors

- [@&#8203;jond01](https://github.com/jond01) made their first
contribution in
[https://github.com/tox-dev/py-filelock/pull/180](https://github.com/tox-dev/py-filelock/pull/180)

**Full Changelog**:
tox-dev/filelock@3.8.1...3.8.2

###
[`v3.8.1`](https://github.com/tox-dev/py-filelock/releases/tag/3.8.1)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.8.0...3.8.1)

#### What's Changed

- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://github.com/pre-commit-ci) in
[https://github.com/tox-dev/py-filelock/pull/166](https://github.com/tox-dev/py-filelock/pull/166)
- link to flufl.lock by [@&#8203;dholth](https://github.com/dholth) in
[https://github.com/tox-dev/py-filelock/pull/167](https://github.com/tox-dev/py-filelock/pull/167)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://github.com/pre-commit-ci) in
[https://github.com/tox-dev/py-filelock/pull/168](https://github.com/tox-dev/py-filelock/pull/168)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://github.com/pre-commit-ci) in
[https://github.com/tox-dev/py-filelock/pull/169](https://github.com/tox-dev/py-filelock/pull/169)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://github.com/pre-commit-ci) in
[https://github.com/tox-dev/py-filelock/pull/170](https://github.com/tox-dev/py-filelock/pull/170)
- fix BaseFileLock.timeout's getter/setter being obscured by itself by
[@&#8203;dearfl](https://github.com/dearfl) in
[https://github.com/tox-dev/py-filelock/pull/172](https://github.com/tox-dev/py-filelock/pull/172)
- Fix mypy fails understanding FileLock by
[@&#8203;gaborbernat](https://github.com/gaborbernat) in
[https://github.com/tox-dev/py-filelock/pull/177](https://github.com/tox-dev/py-filelock/pull/177)

#### New Contributors

- [@&#8203;dholth](https://github.com/dholth) made their first
contribution in
[https://github.com/tox-dev/py-filelock/pull/167](https://github.com/tox-dev/py-filelock/pull/167)
- [@&#8203;dearfl](https://github.com/dearfl) made their first
contribution in
[https://github.com/tox-dev/py-filelock/pull/172](https://github.com/tox-dev/py-filelock/pull/172)

**Full Changelog**:
tox-dev/filelock@3.8.0...3.8.1

###
[`v3.8.0`](https://github.com/tox-dev/py-filelock/releases/tag/3.8.0)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.7.1...3.8.0)

#### What's Changed

- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://github.com/pre-commit-ci) in
[https://github.com/tox-dev/py-filelock/pull/149](https://github.com/tox-dev/py-filelock/pull/149)
- Bump actions/upload-artifact from 2 to 3 by
[@&#8203;dependabot](https://github.com/dependabot) in
[https://github.com/tox-dev/py-filelock/pull/154](https://github.com/tox-dev/py-filelock/pull/154)
- Bump actions/download-artifact from 2 to 3 by
[@&#8203;dependabot](https://github.com/dependabot) in
[https://github.com/tox-dev/py-filelock/pull/152](https://github.com/tox-dev/py-filelock/pull/152)
- Bump pre-commit/action from 2.0.3 to 3.0.0 by
[@&#8203;dependabot](https://github.com/dependabot) in
[https://github.com/tox-dev/py-filelock/pull/151](https://github.com/tox-dev/py-filelock/pull/151)
- Bump actions/checkout from 2 to 3 by
[@&#8203;dependabot](https://github.com/dependabot) in
[https://github.com/tox-dev/py-filelock/pull/153](https://github.com/tox-dev/py-filelock/pull/153)
- Bump actions/setup-python from 2 to 4 by
[@&#8203;dependabot](https://github.com/dependabot) in
[https://github.com/tox-dev/py-filelock/pull/150](https://github.com/tox-dev/py-filelock/pull/150)
- Add timeout unit to docstrings by
[@&#8203;jnordberg](https://github.com/jnordberg) in
[https://github.com/tox-dev/py-filelock/pull/148](https://github.com/tox-dev/py-filelock/pull/148)
- Unify badges style by
[@&#8203;DeadNews](https://github.com/DeadNews) in
[https://github.com/tox-dev/py-filelock/pull/155](https://github.com/tox-dev/py-filelock/pull/155)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://github.com/pre-commit-ci) in
[https://github.com/tox-dev/py-filelock/pull/156](https://github.com/tox-dev/py-filelock/pull/156)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://github.com/pre-commit-ci) in
[https://github.com/tox-dev/py-filelock/pull/157](https://github.com/tox-dev/py-filelock/pull/157)
- Check 3.11 support by
[@&#8203;gaborbernat](https://github.com/gaborbernat) in
[https://github.com/tox-dev/py-filelock/pull/158](https://github.com/tox-dev/py-filelock/pull/158)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://github.com/pre-commit-ci) in
[https://github.com/tox-dev/py-filelock/pull/159](https://github.com/tox-dev/py-filelock/pull/159)
- Bump dependencies by
[@&#8203;gaborbernat](https://github.com/gaborbernat) in
[https://github.com/tox-dev/py-filelock/pull/160](https://github.com/tox-dev/py-filelock/pull/160)
- \[pre-commit.ci] pre-commit autoupdate by
[@&#8203;pre-commit-ci](https://github.com/pre-commit-ci) in
[https://github.com/tox-dev/py-filelock/pull/162](https://github.com/tox-dev/py-filelock/pull/162)

#### New Contributors

- [@&#8203;dependabot](https://github.com/dependabot) made their first
contribution in
[https://github.com/tox-dev/py-filelock/pull/154](https://github.com/tox-dev/py-filelock/pull/154)
- [@&#8203;jnordberg](https://github.com/jnordberg) made their first
contribution in
[https://github.com/tox-dev/py-filelock/pull/148](https://github.com/tox-dev/py-filelock/pull/148)
- [@&#8203;DeadNews](https://github.com/DeadNews) made their first
contribution in
[https://github.com/tox-dev/py-filelock/pull/155](https://github.com/tox-dev/py-filelock/pull/155)

**Full Changelog**:
tox-dev/filelock@3.7.1...3.8.0

###
[`v3.7.1`](https://github.com/tox-dev/py-filelock/compare/3.7.0...3.7.1)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.7.0...3.7.1)

###
[`v3.7.0`](https://github.com/tox-dev/py-filelock/compare/3.6.0...3.7.0)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.6.0...3.7.0)

###
[`v3.6.0`](https://github.com/tox-dev/py-filelock/compare/3.5.1...3.6.0)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.5.1...3.6.0)

###
[`v3.5.1`](https://github.com/tox-dev/py-filelock/compare/3.5.0...3.5.1)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.5.0...3.5.1)

###
[`v3.5.0`](https://github.com/tox-dev/py-filelock/compare/3.4.2...3.5.0)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.4.2...3.5.0)

###
[`v3.4.2`](https://github.com/tox-dev/py-filelock/releases/tag/3.4.2):
Drop Python 3.6 support

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.4.1...3.4.2)

###
[`v3.4.1`](https://github.com/tox-dev/py-filelock/releases/tag/3.4.1):
Add stacklevel to deprecation warnings for argument name change

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.4.0...3.4.1)

###
[`v3.4.0`](https://github.com/tox-dev/py-filelock/compare/3.3.2...3.4.0)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.3.2...3.4.0)

###
[`v3.3.2`](https://github.com/tox-dev/py-filelock/compare/3.3.1...3.3.2)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.3.1...3.3.2)

###
[`v3.3.1`](https://github.com/tox-dev/py-filelock/releases/tag/3.3.1):
Keep filelock logger as not set

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.3.0...3.3.1)

###
[`v3.3.0`](https://github.com/tox-dev/py-filelock/releases/tag/3.3.0):
Drop python 2.7+3.5 support and add type annotations

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.2.1...3.3.0)

###
[`v3.2.1`](https://github.com/tox-dev/py-filelock/releases/tag/3.2.1):
New documentation and enable logging of our logger on debug level

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.2.0...3.2.1)

###
[`v3.2.0`](https://github.com/tox-dev/py-filelock/releases/tag/3.2.0)

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/3.1.0...3.2.0)

1. [#&#8203;96](https://github.com/tox-dev/py-filelock/issues/96) -
Raise when trying to acquire in R/O or missing folder
2. [#&#8203;95](https://github.com/tox-dev/py-filelock/issues/95) -
Move log from info to debug

###
[`v3.1.0`](https://github.com/tox-dev/py-filelock/releases/tag/3.1.0):
Move from module file to package

[Compare
Source](https://github.com/tox-dev/py-filelock/compare/v3.0.12...3.1.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/matfax/mutapath).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi41LjMiLCJ1cGRhdGVkSW5WZXIiOiIzNi41LjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIn0=-->

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants