Skip to content

Commit 1b20689

Browse files
committed
Fix file locking on Windows
Also rename fd to fileobj. Signed-off-by: Sebastian Ramacher <sebastian@ramacher.at>
1 parent 997c2bc commit 1b20689

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

bpython/filelock.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ class BaseLock(object):
4242
"""Base class for file locking
4343
"""
4444

45-
def __init__(self, fd):
46-
self.fd = fd
45+
def __init__(self, fileobj):
46+
self.fileobj = fileobj
4747
self.locked = False
4848

4949
def acquire(self):
@@ -69,39 +69,39 @@ class UnixFileLock(BaseLock):
6969
"""Simple file locking for Unix using fcntl
7070
"""
7171

72-
def __init__(self, fd, mode=None):
73-
super(UnixFileLock, self).__init__(fd)
72+
def __init__(self, fileobj, mode=None):
73+
super(UnixFileLock, self).__init__(fileobj)
7474

7575
if mode is None:
7676
mode = fcntl.LOCK_EX
7777
self.mode = mode
7878

7979
def acquire(self):
8080
try:
81-
fcntl.flock(self.fd, self.mode)
81+
fcntl.flock(self.fileobj, self.mode)
8282
self.locked = True
8383
except IOError as e:
8484
if e.errno != errno.ENOLCK:
8585
raise e
8686

8787
def release(self):
88-
fcntl.flock(self.fd, fcntl.LOCK_UN)
88+
fcntl.flock(self.fileobj, fcntl.LOCK_UN)
8989
self.locked = False
9090

9191

9292
class WindowsFileLock(BaseLock):
9393
"""Simple file locking for Windows using msvcrt
9494
"""
9595

96-
def __init__(self, fd, mode=None):
97-
super(WindowsFileLock, self).__init__(fd)
96+
def __init__(self, fileobj, mode=None):
97+
super(WindowsFileLock, self).__init__(fileobj)
9898

9999
def acquire(self):
100-
msvcrt.locking(self.fd, msvcrt.LK_NBLCK, 1)
100+
msvcrt.locking(self.fileobj.fileno(), msvcrt.LK_NBLCK, 1)
101101
self.locked = True
102102

103103
def release(self):
104-
msvcrt.locking(self.fd, msvcrt.LK_UNLCK, 1)
104+
msvcrt.locking(self.fileobj.fileno(), msvcrt.LK_UNLCK, 1)
105105
self.locked = False
106106

107107

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy