Skip to main content

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


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.18.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

coveo_systools-2.0.18-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

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

Hashes for coveo_systools-2.0.18.tar.gz
Algorithm Hash digest
SHA256 dea9df3af60b7a66a25f54cf01c999f746676324d57b69e64a6d90dff7b5df97
MD5 2ce03d8b5ded8500d703df41756847b4
BLAKE2b-256 47391a7f8c542f60be238debd4d2b14e75b769f7af7d119e2db9cd3bc232fc0f

See more details on using hashes here.

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

Hashes for coveo_systools-2.0.18-py3-none-any.whl
Algorithm Hash digest
SHA256 3ce87b03234cadf15cf41c248148b48887cf58265c601dc8be53cb8f55130903
MD5 c0cd7d2e47d1f7e83a6fa02a3b34111c
BLAKE2b-256 4511f0c91e1fd9f70768c4319f4f322806ab1584e0960068ef422244559f84da

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page