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
coveo-systools-2.0.9.tar.gz
(9.5 kB
view hashes)
Built Distribution
Close
Hashes for coveo_systools-2.0.9-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5c28793bcc82d77b99986c041cfc157d5aebe9f555ea7305fe1d4186cc058649 |
|
MD5 | 07e19833e6769dbca8f41b2ac6427259 |
|
BLAKE2b-256 | 429140e8faddaa624d1412d03e45b00e8f1088d1e1383e14ec82fa110493c489 |