Collection of useful decorators
Installation
pip install decoratools
Usage
capi
Interface with statx(2):
import ctypes
from argparse import ArgumentParser
from decoratools.capi import ARRAY, POINTER, structure, unwraps
LIBC = ctypes.CDLL("libc.so.6")
AT_FDCDW = -100
STATX_BASIC_STATS = 0x000007FF
@structure
class StatxTimestamp:
tv_sec: ctypes.c_int64
tv_nsec: ctypes.c_uint32
__statx_timestamp_pad1: ctypes.c_int32
@structure
class Statx:
stx_mask: ctypes.c_uint32
stx_blksize: ctypes.c_uint32
stx_attributes: ctypes.c_uint64
stx_nlink: ctypes.c_uint32
stx_uid: ctypes.c_uint32
stx_gid: ctypes.c_uint32
stx_mode: ctypes.c_uint16
__statx_pad1: ctypes.c_uint16
stx_ino: ctypes.c_uint64
stx_size: ctypes.c_uint64
stx_blocks: ctypes.c_uint64
stx_attributes_mask: ctypes.c_uint64
stx_atime: StatxTimestamp
stx_btime: StatxTimestamp
stx_ctime: StatxTimestamp
stx_mtime: StatxTimestamp
stx_rdev_major: ctypes.c_uint32
stx_rdev_minor: ctypes.c_uint32
stx_dev_major: ctypes.c_uint32
stx_dev_minor: ctypes.c_uint32
stx_mnt_id: ctypes.c_uint64
stx_dio_mem_align: ctypes.c_uint32
stx_dio_offset_align: ctypes.c_uint32
__statx_pad2: ARRAY[ctypes.c_uint64, 12]
@unwraps(LIBC.statx)
def statx(
dirfd: ctypes.c_int, pathname: ctypes.c_char_p, flags: ctypes.c_int, mask: ctypes.c_int, statxbuf: POINTER[Statx]
) -> int:
...
if __name__ == "__main__":
parser = ArgumentParser()
parser.add_argument("path", help="path to statx")
args = parser.parse_args()
statxbuf = Statx()
rc = statx(AT_FDCDW, args.path.encode(), 0, STATX_BASIC_STATS, ctypes.byref(statxbuf))
if rc != 0:
raise RuntimeError("statx: failed")
print(statxbuf)
$ python statx.py /dev/null
Statx(stx_mask=6143, stx_blksize=4096, stx_attributes=0, stx_nlink=1, stx_uid=0, stx_gid=0, stx_mode=8630, _Statx__statx_pad1=0, stx_ino=4, stx_size=0, stx_blocks=0, stx_attributes_mask=2109552, stx_atime=StatxTimestamp(tv_sec=1672527600, tv_nsec=0, _StatxTimestamp__statx_timestamp_pad1=0), stx_btime=StatxTimestamp(tv_sec=0, tv_nsec=0, _StatxTimestamp__statx_timestamp_pad1=0), stx_ctime=StatxTimestamp(tv_sec=1672527600, tv_nsec=0, _StatxTimestamp__statx_timestamp_pad1=0), stx_mtime=StatxTimestamp(tv_sec=1672527600, tv_nsec=0, _StatxTimestamp__statx_timestamp_pad1=0), stx_rdev_major=1, stx_rdev_minor=3, stx_dev_major=0, stx_dev_minor=5, stx_mnt_id=22, stx_dio_mem_align=0, stx_dio_offset_align=0, _Statx__statx_pad2=<decoratools.capi.c_ulong_Array_12 object at 0x7efe94be0a70>)
Release files for decoratools 0.0.19
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| decoratools-0.0.19.tar.gz | 5.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| decoratools-0.0.19-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.4 kB
Release files / decoratools-0.0.19.tar.gz
| Download URL | decoratools-0.0.19.tar.gz |
|---|---|
| Size | 5.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
62b84a83cb6c701f8ae5652e6c1a45dc8f3785bcc5909d0cdcce69250893c61e
|
|
BLAKE2b-256 checksum How to use checksums |
e387e43da75f7cfcebd1fe7265fc9dc7ce9db5d44ce83bd25f2e7c361c33b220
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
pdm/2.12.2 CPython/3.11.7
|
Release files / decoratools-0.0.19-py3-none-any.whl
| Download URL | decoratools-0.0.19-py3-none-any.whl |
|---|---|
| Size | 5.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9b6934ee22e40565840470e9c80ed027319d86d0c46f98e1d1208d8718e89216
|
|
BLAKE2b-256 checksum How to use checksums |
29b48b240d49ecc5794dd876164c6f3b09fe6e57ef8446981a8d329b7e003033
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
pdm/2.12.2 CPython/3.11.7
|