Skip to main content

Assorted filesystem related utility functions, some of which have been bloating cs.fileutils for too long.

Latest 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).

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 directory
  • make_placeholder: optional flag, default False: 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).

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)

Create the directory dirpath if missing.

Parameters:

  • dirpath: the required directory path
  • mode: the permissions mode, default 0o777
  • use_makedirs: optional creation mode, default False; if true, use os.makedirs, otherwise os.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 yielded
  • skip_suffixes: optional iterable if suffixes to ignore; if provided files ending in these suffixes will not be yielded
  • sort_paths: optional flag specifying that filenames should be sorted, default False

Function shortpath(path, environ=None, prefixes=None)

Return path with the first matching leading prefix replaced.

Parameters:

  • environ: environment mapping if not os.environ
  • prefixes: iterable of (prefix,subst) to consider for replacement; each prefix is subject to environment variable substitution before consideration The default considers "$HOME/" for replacement by "~/".

Release Log

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.

Metadata

Release files for cs-fs 20220429

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cs-fs 20220429
File Size Uploaded
cs.fs-20220429.tar.gz 5.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cs-fs 20220429
File Interpreter ABI Platform
cs.fs-20220429-py3-none-any.whl Python 3 none any Details

Total release size: 10.8 kB

Release files / cs.fs-20220429.tar.gz

Download URL cs.fs-20220429.tar.gz
Size 5.3 kB
Tags Source
SHA-256 checksum
How to use checksums
d79030921900dd7c401c73ad89b172245e5116b2af77c70abf1f78bcfb73d05a
BLAKE2b-256 checksum
How to use checksums
01184248eff491fbde582b0022b466e6046223d8d5c92f056b7d36ad9646fa42
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.8.1 readme-renderer/30.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.62.3 importlib-metadata/4.8.2 keyring/23.3.0 rfc3986/1.5.0 colorama/0.4.4 CPython/3.9.12

Release files / cs.fs-20220429-py3-none-any.whl

Download URL cs.fs-20220429-py3-none-any.whl
Size 5.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
752d1de0ad07154c4a8373017a8e8d3eb6cad685081a530d799dfbec098985fc
BLAKE2b-256 checksum
How to use checksums
557d7e0b18265cdb3352d821fc4157562cd6ec37871740ece9fcb1252ac9f360
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.8.1 readme-renderer/30.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.62.3 importlib-metadata/4.8.2 keyring/23.3.0 rfc3986/1.5.0 colorama/0.4.4 CPython/3.9.12
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page