Filesystem, language and OS related tools.
Project description
coveo-systools
Language and OS related utilities.
Content in a nutshell:
- enhanced subprocess calls
- asyncio subprocess calls
- file and app finding made easy
- safe text write and replace-if-different
- git-repo-root locator
- bool platforms
if WINDOWS or LINUX or MAC or WSL:
searching the filesystem
import os
from coveo_systools.filesystem import find_paths, find_application, find_repo_root
os.getcwd()
# '/code/coveo-python-oss/coveo-systools'
find_application('git')
# WindowsPath('C:/Program Files/Git/cmd/git.EXE') # windows example for completeness
find_repo_root()
# Path('/code/coveo-python-oss')
list(find_paths('pyproject.toml', search_from=find_repo_root(), in_root=True, in_children=True))
# [Path('/code/coveo-python-oss/pyproject.toml'), ...]
enhanced subprocess calls
An opinionated version of subprocess.check_call
and subprocess.check_output
.
New in 2.0.7: asyncio support, through async_check_call
and async_check_output
.
Adds the following features:
- command line is a variable args (instead of a list)
- automatic conversion of output to a stripped string (instead of raw bytes)
- automatic conversion of Path, bytes and number variables in command line
- automatic filtering of ansi codes from the output
- enhanced DetailedCalledProcessError on error (a subclass of the typical CalledProcessError)
from pathlib import Path
from coveo_systools.subprocess import check_call
check_call('mypy', '--config-file', Path('configs/mypy.ini'), verbose=True)
safe I/O, if changed
Good programming practices requires files to be saved using a temporary filename and then renamed. This helper takes it a step further by skipping the write operation if the content did not change:
import json
from pathlib import Path
from coveo_systools.filesystem import safe_text_write
safe_text_write(Path('./path/to/file.txt'), json.dumps(...), only_if_changed=True)
conditional platforms syntactic sugar
Readability is important, not repeating yourself is important.
Forget about platform.platform()
and use bools directly:
from coveo_systools.platforms import WINDOWS, LINUX, IOS, WSL
if WINDOWS or WSL:
print("Hello Windows!")
elif LINUX or IOS:
print("Hello Unix!")
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 coveo_systools-2.0.18.tar.gz
.
File metadata
- Download URL: coveo_systools-2.0.18.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.9.18 Linux/5.15.0-1058-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dea9df3af60b7a66a25f54cf01c999f746676324d57b69e64a6d90dff7b5df97 |
|
MD5 | 2ce03d8b5ded8500d703df41756847b4 |
|
BLAKE2b-256 | 47391a7f8c542f60be238debd4d2b14e75b769f7af7d119e2db9cd3bc232fc0f |
File details
Details for the file coveo_systools-2.0.18-py3-none-any.whl
.
File metadata
- Download URL: coveo_systools-2.0.18-py3-none-any.whl
- Upload date:
- Size: 9.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.9.18 Linux/5.15.0-1058-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ce87b03234cadf15cf41c248148b48887cf58265c601dc8be53cb8f55130903 |
|
MD5 | c0cd7d2e47d1f7e83a6fa02a3b34111c |
|
BLAKE2b-256 | 4511f0c91e1fd9f70768c4319f4f322806ab1584e0960068ef422244559f84da |