mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-06 20:24:30 +08:00
128 lines
3.7 KiB
Python
128 lines
3.7 KiB
Python
import sys
|
|
from _typeshed import FileDescriptorLike, ReadOnlyBuffer, WriteableBuffer
|
|
from typing import Any, Literal, overload
|
|
from typing_extensions import Buffer
|
|
|
|
if sys.platform != "win32":
|
|
FASYNC: int
|
|
FD_CLOEXEC: int
|
|
F_DUPFD: int
|
|
F_DUPFD_CLOEXEC: int
|
|
F_GETFD: int
|
|
F_GETFL: int
|
|
F_GETLK: int
|
|
F_GETOWN: int
|
|
F_RDLCK: int
|
|
F_SETFD: int
|
|
F_SETFL: int
|
|
F_SETLK: int
|
|
F_SETLKW: int
|
|
F_SETOWN: int
|
|
F_UNLCK: int
|
|
F_WRLCK: int
|
|
|
|
F_GETLEASE: int
|
|
F_SETLEASE: int
|
|
if sys.platform == "darwin":
|
|
F_FULLFSYNC: int
|
|
F_NOCACHE: int
|
|
if sys.version_info >= (3, 9):
|
|
F_GETPATH: int
|
|
if sys.platform == "linux":
|
|
F_SETLKW64: int
|
|
F_SETSIG: int
|
|
F_SHLCK: int
|
|
F_SETLK64: int
|
|
F_GETSIG: int
|
|
F_NOTIFY: int
|
|
F_EXLCK: int
|
|
F_GETLK64: int
|
|
F_ADD_SEALS: int
|
|
F_GET_SEALS: int
|
|
F_SEAL_GROW: int
|
|
F_SEAL_SEAL: int
|
|
F_SEAL_SHRINK: int
|
|
F_SEAL_WRITE: int
|
|
if sys.version_info >= (3, 9):
|
|
F_OFD_GETLK: int
|
|
F_OFD_SETLK: int
|
|
F_OFD_SETLKW: int
|
|
if sys.version_info >= (3, 10):
|
|
F_GETPIPE_SZ: int
|
|
F_SETPIPE_SZ: int
|
|
|
|
DN_ACCESS: int
|
|
DN_ATTRIB: int
|
|
DN_CREATE: int
|
|
DN_DELETE: int
|
|
DN_MODIFY: int
|
|
DN_MULTISHOT: int
|
|
DN_RENAME: int
|
|
|
|
LOCK_EX: int
|
|
LOCK_NB: int
|
|
LOCK_SH: int
|
|
LOCK_UN: int
|
|
if sys.platform == "linux":
|
|
LOCK_MAND: int
|
|
LOCK_READ: int
|
|
LOCK_RW: int
|
|
LOCK_WRITE: int
|
|
|
|
# These are highly problematic, they might be present or not, depends on the specific OS.
|
|
if sys.platform == "linux":
|
|
I_ATMARK: int
|
|
I_CANPUT: int
|
|
I_CKBAND: int
|
|
I_FDINSERT: int
|
|
I_FIND: int
|
|
I_FLUSH: int
|
|
I_FLUSHBAND: int
|
|
I_GETBAND: int
|
|
I_GETCLTIME: int
|
|
I_GETSIG: int
|
|
I_GRDOPT: int
|
|
I_GWROPT: int
|
|
I_LINK: int
|
|
I_LIST: int
|
|
I_LOOK: int
|
|
I_NREAD: int
|
|
I_PEEK: int
|
|
I_PLINK: int
|
|
I_POP: int
|
|
I_PUNLINK: int
|
|
I_PUSH: int
|
|
I_RECVFD: int
|
|
I_SENDFD: int
|
|
I_SETCLTIME: int
|
|
I_SETSIG: int
|
|
I_SRDOPT: int
|
|
I_STR: int
|
|
I_SWROPT: int
|
|
I_UNLINK: int
|
|
|
|
if sys.version_info >= (3, 12) and sys.platform == "linux":
|
|
FICLONE: int
|
|
FICLONERANGE: int
|
|
|
|
@overload
|
|
def fcntl(fd: FileDescriptorLike, cmd: int, arg: int = 0, /) -> int: ...
|
|
@overload
|
|
def fcntl(fd: FileDescriptorLike, cmd: int, arg: str | ReadOnlyBuffer, /) -> bytes: ...
|
|
# If arg is an int, return int
|
|
@overload
|
|
def ioctl(fd: FileDescriptorLike, request: int, arg: int = 0, mutate_flag: bool = True, /) -> int: ...
|
|
# The return type works as follows:
|
|
# - If arg is a read-write buffer, return int if mutate_flag is True, otherwise bytes
|
|
# - If arg is a read-only buffer, return bytes (and ignore the value of mutate_flag)
|
|
# We can't represent that precisely as we can't distinguish between read-write and read-only
|
|
# buffers, so we add overloads for a few unambiguous cases and use Any for the rest.
|
|
@overload
|
|
def ioctl(fd: FileDescriptorLike, request: int, arg: bytes, mutate_flag: bool = True, /) -> bytes: ...
|
|
@overload
|
|
def ioctl(fd: FileDescriptorLike, request: int, arg: WriteableBuffer, mutate_flag: Literal[False], /) -> bytes: ...
|
|
@overload
|
|
def ioctl(fd: FileDescriptorLike, request: int, arg: Buffer, mutate_flag: bool = True, /) -> Any: ...
|
|
def flock(fd: FileDescriptorLike, operation: int, /) -> None: ...
|
|
def lockf(fd: FileDescriptorLike, cmd: int, len: int = 0, start: int = 0, whence: int = 0, /) -> Any: ...
|