Path: csiph.com!weretis.net!feeder8.news.weretis.net!news.nntp4.net!.POSTED!not-for-mail From: Oguz Kaan Ocal Newsgroups: comp.lang.python Subject: Re: Python linuxfs Modules Date: Tue, 17 Mar 2026 14:30:42 +0300 Message-ID: References: <10pask7$2m01c$1@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: eJzLSy0v1svLKykw0ctLLbHm4szJT0/PzEvXTUksSbRVMjQzNjQ0NFKyVshNzMzRTc7PLchJzMwrKdYtybdVSkwqLU51gOtWUtBXAAA3SBpP User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 To: =?UTF-8?Q?Lawrence_D=e2=80=99Oliveiro?= Cancel-Lock: sha1:tdarvXmyxfYxbiDsl/zyg8f3bzs= sha256:cDSiNZzgUh8oxYXboLy5dzC0y/GIHItLytVgzG5uH5o= In-Reply-To: <10pask7$2m01c$1@dont-email.me> X-Abuse-Contact: "Web: https://news.nntp4.net/abuse.php / Mail: abuse@nntp4.net" Xref: csiph.com comp.lang.python:197739 On 17.03.2026 09:33, Lawrence D’Oliveiro wrote: > python_linuxfs is a set of > Python modules providing higher-level wrappers around various > Linux-specific system APIs. Some of these already have support in the > “os” module in the standard Python library, but most don’t. Even for > the ones that do, I think my wrappers are nicer to use, because they > avoid the requirement for working with bitmasks and use sets of > symbolic bit enums instead (with easy conversions between both forms). > > The package is split into five modules: > > * linuxfs -- file/directory functions and common utilities used by > other modules > * linuxacl -- access-control-list functions > * linuxmount -- enhanced Linux mount API > * linuxpriv -- privilege control, i.e. the Linux landlock API > * linuxproc -- process control: prctl (selected), pidfd, > signalfd and signal mask sets, namespaces Interesting approach. Regarding the linuxacl and linuxmount modules: how do you handle compatibility across different kernel versions? Since some of these APIs (like Landlock or newer mount features) are relatively recent, does the library provide graceful fallbacks or just raise NotImplementedError? Using sets of enums instead of bitmasks is definitely 'The Pythonic Way'. It makes the code much more self-documenting.