Assorted filesystem related utility functions, some of which have been bloating cs.fileutils for too long.
Project description
Assorted filesystem related utility functions, some of which have been bloating cs.fileutils for too long.
Latest release 20220918:
- FSPathBasedSingleton.init: return True on the first call, False on subsequent calls.
- FSPathBasedSingleton.init: probe dict for '_lock' instead of using hasattr (which plays poorly this early on with classes with their own getattr).
- needdir: accept optional
log
parameter to log mkdir or makedirs. - HasFSPath: add a default str.
Function atomic_directory(*da, **dkw)
Decorator for a function which fills in a directory which calls the function against a temporary directory then renames the temporary to the target name on completion.
Parameters:
infill_func
: the function to fill in the target directorymake_placeholder
: optional flag, defaultFalse
: if true an empty directory will be make at the target name and after completion it will be removed and the completed directory renamed to the target name
Function fnmatchdir(dirpath, fnglob)
Return a list of the names in dirpath
matching the glob fnglob
.
Class FSPathBasedSingleton(cs.obj.SingletonMixin, HasFSPath)
The basis for a SingletonMixin
based on realpath(self.fspath)
.
Method FSPathBasedSingleton.__init__(self, fspath: Optional[str] = None, lock=None)
:
Initialise the singleton:
On the first call:
- set
.fspath
toself._resolve_fspath(fspath)
- set
._lock
tolock
(orthreading.Lock()
if not specified) - return
True
On subsequent calls returnFalse
.
Class HasFSPath
An object with a .fspath
attribute representing a filesystem location.
Function is_clean_subpath(subpath: str)
Test that subpath
is clean:
- not empty or '.' or '..'
- not an absolute path
- normalised
- does not walk up out of its parent directory
Examples:
>>> is_clean_subpath('')
False
>>> is_clean_subpath('.')
Function longpath(path, environ=None, prefixes=None)
Return path
with prefixes and environment variables substituted.
The converse of shortpath()
.
Function needdir(dirpath, mode=511, *, use_makedirs=False, log=None)
Create the directory dirpath
if missing.
Parameters:
dirpath
: the required directory pathmode
: the permissions mode, default0o777
log
: logmakedirs
ormkdir
calluse_makedirs
: optional creation mode, defaultFalse
; if true, useos.makedirs
, otherwiseos.mkdir
Function rpaths(dirpath='.', *, only_suffixes=None, skip_suffixes=None, sort_paths=False)
Yield relative file paths from a directory.
Parameters:
dirpath
: optional top directory, default'.'
only_suffixes
: optional iterable of suffixes of interest; if provided only files ending in these suffixes will be yieldedskip_suffixes
: optional iterable if suffixes to ignore; if provided files ending in these suffixes will not be yieldedsort_paths
: optional flag specifying that filenames should be sorted, defaultFalse
Function shortpath(path, environ=None, prefixes=None)
Return path
with the first matching leading prefix replaced.
Parameters:
environ
: environment mapping if not os.environprefixes
: iterable of(prefix,subst)
to consider for replacement; eachprefix
is subject to environment variable substitution before consideration The default considers "$HOME/" for replacement by "~/".
Release Log
Release 20220918:
- FSPathBasedSingleton.init: return True on the first call, False on subsequent calls.
- FSPathBasedSingleton.init: probe dict for '_lock' instead of using hasattr (which plays poorly this early on with classes with their own getattr).
- needdir: accept optional
log
parameter to log mkdir or makedirs. - HasFSPath: add a default str.
Release 20220805: Doc update.
Release 20220530:
FSPathBasedSingleton._resolve_fspath: new envvar
and default_attr
parameters.
Release 20220429:
- New HasFSPath and FSPathBasedSingleton.
- Add longpath and shortpath from cs.fileutils.
- New is_clean_subpath(subpath).
- New needdir(path).
- New fnmatchdir(dirpath,fnglob) pulled out from HasFSPath.fnmatch(fnglob).
Release 20220327: New module cs.fs to contain more filesystem focussed functions than cs.fileutils, which is feeling a bit bloated.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file cs.fs-20220918.tar.gz
.
File metadata
- Download URL: cs.fs-20220918.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | adb53608cbabe704eca2104e9a30ed2c6b55ed1be0735a400b5911d47df553d7 |
|
MD5 | bc19d69e8efe6529202524d7e92a315f |
|
BLAKE2b-256 | b0e4b6bc3e938ce1108dc4771e1715b635dc9b475320c9f3682ca29a998ef9cc |
File details
Details for the file cs.fs-20220918-py3-none-any.whl
.
File metadata
- Download URL: cs.fs-20220918-py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03fd771f58cff6494cc16ad9c10078267e1791dd0dd1af590c1855d524834868 |
|
MD5 | 9c83353524c6b7ab43fb25b232196511 |
|
BLAKE2b-256 | a1e9a1cfd754142c226ea27ebc256078d4810918dd63de35d1b0637722a0fb17 |