PHP 8.2.30
Preview: _windows.py Size: 1.72 KB
//opt/alt/python37/lib/python3.7/site-packages/filelock/_windows.py

from __future__ import annotations

import os
import sys
from abc import ABC
from errno import ENOENT
from typing import cast

from ._api import BaseFileLock
from ._util import raise_on_exist_ro_file

if sys.platform == "win32":  # pragma: win32 cover
    import msvcrt

    class WindowsFileLock(BaseFileLock):
        """Uses the :func:`msvcrt.locking` function to hard lock the lock file on windows systems."""

        def _acquire(self) -> None:
            raise_on_exist_ro_file(self._lock_file)
            mode = (
                os.O_RDWR  # open for read and write
                | os.O_CREAT  # create file if not exists
                | os.O_TRUNC  # truncate file  if not empty
            )
            try:
                fd = os.open(self._lock_file, mode)
            except OSError as exception:
                if exception.errno == ENOENT:  # No such file or directory
                    raise
            else:
                try:
                    msvcrt.locking(fd, msvcrt.LK_NBLCK, 1)
                except OSError:
                    os.close(fd)
                else:
                    self._lock_file_fd = fd

        def _release(self) -> None:
            fd = cast(int, self._lock_file_fd)
            self._lock_file_fd = None
            msvcrt.locking(fd, msvcrt.LK_UNLCK, 1)
            os.close(fd)

            try:
                os.remove(self._lock_file)
            # Probably another instance of the application hat acquired the file lock.
            except OSError:
                pass

else:  # pragma: win32 no cover

    class WindowsFileLock(BaseFileLock, ABC):
        """Uses the :func:`msvcrt.locking` function to hard lock the lock file on windows systems."""


__all__ = [
    "WindowsFileLock",
]

Directory Contents

Dirs: 1 × Files: 9

Name Size Perms Modified Actions
- drwxr-xr-x 2024-03-03 22:42:58
Edit Download
0 B lrw-r--r-- 2021-12-26 17:13:11
Edit Download
142 B lrw-r--r-- 2021-12-26 17:13:18
Edit Download
8.15 KB lrw-r--r-- 2021-12-26 17:13:11
Edit Download
399 B lrw-r--r-- 2021-12-26 17:13:11
Edit Download
1.61 KB lrw-r--r-- 2021-12-26 17:13:11
Edit Download
1.42 KB lrw-r--r-- 2021-12-26 17:13:11
Edit Download
594 B lrw-r--r-- 2021-12-26 17:13:11
Edit Download
1.72 KB lrw-r--r-- 2021-12-26 17:13:11
Edit Download
1.22 KB lrw-r--r-- 2021-12-26 17:13:11
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).