-
-
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
added multiuser support and associated tests #192
Conversation
flake8 doesnt like the import filemode in test_filelock.py that I added to check the filemode with this addition. Aside from that; all tests should pass now. Apologies for the gap from the original PR to these fixes. It was some time before I could access a windows box to debug. |
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.
Add changelog entry here https://github.com/tox-dev/py-filelock/blob/main/docs/changelog.rst
src/filelock/_api.py
Outdated
self, | ||
lock_file: str | os.PathLike[Any], | ||
timeout: float = -1, | ||
multi_user: bool = False, |
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.
I'm not sure about this interface. Should we just expose access_control instead and allow them to set it to whatever they want?
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.
I'm open to this idea. My only concern is that when setting permissions for "group" or "all" you also have to set os.umask(0) so a change to that interface will also require extra checking for the requested permissions to set the umask if necessary
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.
I'm alright to make that check 👍
I have some additional information on this.
The default to mode in os.open is 511 (0o777 in octal). So the r/w bits are
set by default. The only reason that the default mode doesn't make the
files globally r/w is the lack of the os.umask call. So, even with exposing
the mode directly, I believe we need a way for users to specify if they
intend the lock to be multiuser or not.
Maybe a solution would to both allow the user to specify their own mode and
specify if multi-user is intended but this may lead to more confusion.
Open to thoughts on this.
…On Mon, Mar 13, 2023, 3:48 PM Bernát Gábor ***@***.***> wrote:
***@***.**** commented on this pull request.
------------------------------
In src/filelock/_api.py
<#192 (comment)>:
> @@ -39,14 +39,20 @@ def __exit__(
class BaseFileLock(ABC, contextlib.ContextDecorator):
"""Abstract base class for a file lock object."""
- def __init__(self, lock_file: str | os.PathLike[Any], timeout: float = -1) -> None:
+ def __init__(
+ self,
+ lock_file: str | os.PathLike[Any],
+ timeout: float = -1,
+ multi_user: bool = False,
I'm alright to make that check 👍
—
Reply to this email directly, view it on GitHub
<#192 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/APCURVAHRHBMU3UFCN3PX2DW352XVANCNFSM6AAAAAAUPIPPVM>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Another potential solution would be to make the filelock default mode 0o700
but I'm not comfortable making the call on if we should deviate from the os
open default or not.
…On Mon, Mar 13, 2023, 4:40 PM Greg Taeger ***@***.***> wrote:
I have some additional information on this.
The default to mode in os.open is 511 (0o777 in octal). So the r/w bits
are set by default. The only reason that the default mode doesn't make the
files globally r/w is the lack of the os.umask call. So, even with exposing
the mode directly, I believe we need a way for users to specify if they
intend the lock to be multiuser or not.
Maybe a solution would to both allow the user to specify their own mode
and specify if multi-user is intended but this may lead to more confusion.
Open to thoughts on this.
On Mon, Mar 13, 2023, 3:48 PM Bernát Gábor ***@***.***>
wrote:
> ***@***.**** commented on this pull request.
> ------------------------------
>
> In src/filelock/_api.py
> <#192 (comment)>:
>
> > @@ -39,14 +39,20 @@ def __exit__(
> class BaseFileLock(ABC, contextlib.ContextDecorator):
> """Abstract base class for a file lock object."""
>
> - def __init__(self, lock_file: str | os.PathLike[Any], timeout: float = -1) -> None:
> + def __init__(
> + self,
> + lock_file: str | os.PathLike[Any],
> + timeout: float = -1,
> + multi_user: bool = False,
>
> I'm alright to make that check 👍
>
> —
> Reply to this email directly, view it on GitHub
> <#192 (comment)>,
> or unsubscribe
> <https://github.com/notifications/unsubscribe-auth/APCURVAHRHBMU3UFCN3PX2DW352XVANCNFSM6AAAAAAUPIPPVM>
> .
> You are receiving this because you authored the thread.Message ID:
> ***@***.***>
>
|
But there's no such thing as multi user. Is just mangles to acces to the lock created. It just happens that a given combination of flags enable multiple users to use the same lock file. |
Well yes but it's the combination of flags plus umask. Typical default for
umask (at least on unix based OSes) is 0o133 to deny write to group/all.
So even though the os.open has a default mode of 0o777; the umask default
denies write making it effectively 0o644 which is why "other users" can't
use the same lock.
So to distill this to the core; I want to ask filelock users "do you want
other users to use this lock?" and modify umask to permit this.
Modifying mode and umask is pretty advanced for most users which is why
Python put that implementation into os.open and didn't expose it in the
standard "open".
Maybe the best option is to leave mode alone as I think it highly unlikely
that users would need granular permissions.
The three options I can reasonably see people wanting are "self" locks (as
they are today), "group" locks (where the "group" bit is set to write
(umask 0o113), and "global" locks (umask 0o111). The use case for the 3rd
would be like if an application user and human user both needed to use the
lock. The difference between 2 and 3 is, however, minimal.
…On Mon, Mar 13, 2023, 9:46 PM Bernát Gábor ***@***.***> wrote:
I believe we need a way for users to specify if they intend the lock to be
multiuser or not.
But there's no such thing as multi user. Is just mangles to acces to the
lock created. It just happens that a given combination of flags enable
multiple users to use the same lock file.
—
Reply to this email directly, view it on GitHub
<#192 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/APCURVBZBFTZCMHPF2W4BILW37EYPANCNFSM6AAAAAAUPIPPVM>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
src/filelock/_unix.py
Outdated
fd = os.open(self._lock_file, open_mode) | ||
open_flags = os.O_RDWR | os.O_CREAT | os.O_TRUNC | ||
if self._multi_user is True: | ||
os.umask(0) |
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.
Shouldn't this be in a try/finally, so after creation we restore the previous value? Also do we need this conditionality? Can't we just always set umask to 0 before creation and restore after? Technically if the umask to set to something non zero, the open mode 511 will not be respected. Also this umask thing is repeated across files so any reason can't be a contextmanager in base?
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.
agree completely. I would suggest that by going that route, the default should be 0o644 so that the 'net effect' of this change is that the default behavior remains the same. Let me know if you would prefer something else.
Also, I think that I will set the umask to 0o111 instead of 0; since there is no reason that the lock files should be executable.
Changes in progress.
src/filelock/_api.py
Outdated
@@ -198,6 +199,9 @@ def acquire( | |||
with self._thread_lock: | |||
self._lock_counter = max(0, self._lock_counter - 1) | |||
raise | |||
finally: | |||
# reset umask to initial value | |||
os.umask(previous_umask) |
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.
move comment into the finally line
src/filelock/_api.py
Outdated
""" | ||
Create a new lock object. | ||
|
||
:param lock_file: path to the file | ||
:param timeout: default timeout when acquiring the lock, in seconds. It will be used as fallback value in | ||
the acquire method, if no timeout value (``None``) is given. If you want to disable the timeout, set it | ||
to a negative value. A timeout of 0 means, that there is exactly one attempt to acquire the file lock. | ||
: param multiuser: if True, make the lock file permissions rw/rw/rw for all users |
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.
mode not multiuser now 👍
docs/changelog.rst
Outdated
@@ -1,5 +1,8 @@ | |||
Changelog | |||
========= | |||
v3.9.1 (2023-03-13) |
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.
3.10.0 as is feature
src/filelock/_api.py
Outdated
@@ -52,7 +52,7 @@ def __init__( | |||
:param timeout: default timeout when acquiring the lock, in seconds. It will be used as fallback value in | |||
the acquire method, if no timeout value (``None``) is given. If you want to disable the timeout, set it | |||
to a negative value. A timeout of 0 means, that there is exactly one attempt to acquire the file lock. | |||
: param multiuser: if True, make the lock file permissions rw/rw/rw for all users | |||
: param mode: file permissions for the lockfile to have. default: 0o644 (-rw-r--r--) |
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.
remove default, it's already in the header of the method
src/filelock/_api.py
Outdated
start_time = time.monotonic() | ||
previous_umask = os.umask(0) |
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.
Shouldn't this try/catch be scopped just to _acquire?
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.
Looking at _acquire; it will never throw a BaseException error, so it should be safe to just wrap self._acquire() with a set and reset.
The try block is probably a candidate for future improvement because it's quite strangely written; but that seems outside of the scope of this PR.
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.
What if you get a keyboardinterrupt; let's use try/finally please.
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 rebase on main, and fix merge conflict?
for more information, see https://pre-commit.ci
rebased and fixed all conflicts. |
[![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>
new option FileLock(multiuser = True) (defaults to False):
results in Lock File being created with rw-rw-rw- permissions so that all users on the system can use the lockfile.