-
-
Notifications
You must be signed in to change notification settings - Fork 107
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
Conversation
I think there is actually a relatively straight forward way to test this condition. (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 |
There was a problem hiding this 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?
This worked very well thanks. I write a lot of functional and regression type tests, so my unit-test-foo is a bit rusty. |
After a lot of fighting with the Unix type checker I finally got it to pass. (frustration) 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) |
for more information, see https://pre-commit.ci
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>
Check my feedback fix, that avoids the issue. |
src/filelock/_unix.py
Outdated
os.close(fd) | ||
if err.errno == 38: # NotImplemented error number |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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") |
There was a problem hiding this comment.
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."
?
[![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 [@​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 - [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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: [#​225](https://github.com/tox-dev/py-filelock/issues/225) :Get rid of warning about inability to link to \_thread.\_local. by [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [#​220](https://github.com/tox-dev/py-filelock/issues/220): Allow filelock test thread to catch any exceptions by [@​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 [@​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 [@​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 [@​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 - [@​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 [@​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 - [@​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 [@​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 [#​67](https://github.com/tox-dev/py-filelock/issues/67) by [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 - [@​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 [@​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 - [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 - [@​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 [@​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 [@​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 [@​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 - [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 - [@​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) - [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 - [@​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) - [@​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) - [@​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. [#​96](https://github.com/tox-dev/py-filelock/issues/96) - Raise when trying to acquire in R/O or missing folder 2. [#​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>
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.