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

proposed fix for issue #67 #212

Merged
merged 21 commits into from
Mar 25, 2023
Merged

proposed fix for issue #67 #212

merged 21 commits into from
Mar 25, 2023

Conversation

jahrules
Copy link
Contributor

@jahrules jahrules commented Mar 25, 2023

This is a proposed fix for #67

As suggested in the issue; we're checking the OSError for NotImplemented (which is errno 38).

OSError 38 is not fatal; so this results in the reported issue of an indeterminate loop.

I don't see a clear way to "fall back" from a UnixFileLock to a SoftFileLock; so my proposal is to raise a fatal error with a clear message to the end user.

I also don't see a good way to create a testcase for this; as raising an OSError code 38 requires a condition that can't be easily simulated. I'm open to ideas for this if I'm missing something obvious.

@TheMatt2
Copy link
Contributor

TheMatt2 commented Mar 25, 2023

I also don't see a good way to create a testcase for this; as raising an OSError code 38 requires a condition that can't be easily simulated.

I think there is actually a relatively straight forward way to test this condition.
You can stub fcntl.flock to test the function.

(This is psuedo code for it, I haven't tested it)

import errno
import fcntl
import filelock

def dummy_flock(fd, operation):
    raise OSError(errno.ENOSYS, "flock not supported")

def test_flock_not_implemented():
    _fcntl_flock = fcntl.flock
    try:
        fcntl.flock = dummy_flock
        with pytest.raises(NotImplementedError):
            with filelock.FileLock("/path/to/test/file"): pass
    finally:
        fcntl.flock = _fcntl_flock

Copy link
Member

@gaborbernat gaborbernat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you try adding the suggested test and changelog entry?

@jahrules
Copy link
Contributor Author

I also don't see a good way to create a testcase for this; as raising an OSError code 38 requires a condition that can't be easily simulated.

I think there is actually a relatively straight forward way to test this condition. You can stub fcntl.flock to test the function.

(This is psuedo code for it, I haven't tested it)

import errno
import fcntl
import filelock

def dummy_flock(fd, operation):
    raise OSError(errno.ENOSYS)

def test_flock_not_implemented():
    _fcntl_flock = fcntl.flock
    try:
        fcntl.flock = dummy_flock
        with pytest.raises(NotImplementedError):
            with filelock.FileLock("/path/to/test/file"): pass
    finally:
        fcntl.flock = _fcntl_flock

This worked very well thanks.

I write a lot of functional and regression type tests, so my unit-test-foo is a bit rusty.

@jahrules
Copy link
Contributor Author

After a lot of fighting with the Unix type checker I finally got it to pass. (frustration)
the Windows type checker is still failing because it sees the flock imports even though the testcase is only set to run for Unix.

I'm not sure how to tell the windows type checker to ignore these...

@TheMatt2
Copy link
Contributor

TheMatt2 commented Mar 25, 2023

I'm not sure how to tell the windows type checker to ignore these...

It seems the way to get the type checker to ignore these is to change

@pytest.mark.skipif(sys.platform == "win32", reason="Windows filesystems do not support flock")
def test_flock_not_implemented_unix(tmp_path: Path) -> None:

to

def test_flock_not_implemented_unix(tmp_path: Path) -> None:
    if sys.platform == "win32":
        pytest.skip("Windows filesystems do not support flock")

Will make the type checker happy on windows. That way you don't need to have ignore statements that Ubuntu is now complaining about!

(I must admit, Github Copilot actually gets the credit for figuring this out, which is just a little scary)

@jahrules
Copy link
Contributor Author

I'm not sure how to tell the windows type checker to ignore these...

It seems the way to get the type checker to ignore these is to change

@pytest.mark.skipif(sys.platform == "win32", reason="Windows filesystems do not support flock")
def test_flock_not_implemented_unix(tmp_path: Path) -> None:

to

def test_flock_not_implemented_unix(tmp_path: Path) -> None:
    if sys.platform == "win32":
        pytest.skip("Windows filesystems do not support flock")

Will make the type checker happy on windows. That way you don't need to have ignore statements that Ubuntu is now complaining about!

(I must admit, Github Copilot actually gets the credit for figuring this out, which is just a little scary)

too bad mypy couldnt just detect the skipif decorator. Talking to some people; apparently in certain circumstances it can... idk. Im just happy it works now.

Signed-off-by: Bernát Gábor <bgabor8@bloomberg.net>
Signed-off-by: Bernát Gábor <bgabor8@bloomberg.net>
Signed-off-by: Bernát Gábor <bgabor8@bloomberg.net>
@gaborbernat gaborbernat merged commit 43472a5 into tox-dev:main Mar 25, 2023
@gaborbernat
Copy link
Member

too bad mypy couldnt just detect the skipif decorator. Talking to some people; apparently in certain circumstances it can... idk. Im just happy it works now.

Check my feedback fix, that avoids the issue.

os.close(fd)
if err.errno == 38: # NotImplemented error number
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use err.errno == errno.ENOSYS instead of hard coding 38.

On common linux it looks like ENOSYS is 38. On MacOS ENOSYS is 78.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

os.close(fd)
if exception.errno == ENOSYS: # NotImplemented error
raise NotImplementedError("FileSystem does not appear to support flock; user SoftFileLock instead")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo fix.
Perhaps "Filesystem does not support file locking. Please use SoftFileLock instead."?

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.

3 participants