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

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

Details for the file coveo_systools-4.0.tar.gz.

File metadata

  • Download URL: coveo_systools-4.0.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for coveo_systools-4.0.tar.gz
Algorithm Hash digest
SHA256 1fbeea6168fec0859d02c21512af15fcb3e31d8756120fcf9856b02462dddb7e
MD5 ae66ebef3bd7de44a59dbbf2a4ad4709
BLAKE2b-256 fc564de1f25b95ac72dca5e1eafea4f61d10d5e1c748bb5141505cf476a2b9fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for coveo_systools-4.0.tar.gz:

Publisher: coveo-systools.yml on coveooss/coveo-python-oss

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file coveo_systools-4.0-py3-none-any.whl.

File metadata

  • Download URL: coveo_systools-4.0-py3-none-any.whl
  • Upload date:
  • Size: 9.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for coveo_systools-4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 17cd04279ffe88ddd01f4ca6e772c67bd3d98fbd57197e504d78a021844fc48d
MD5 f02f064bec53b699cfbe83c69b13ce68
BLAKE2b-256 aec56769c5301b0dd7261268575ac4f8dc59cbdf3a444cfdd37e9db3c2a67e3e

See more details on using hashes here.

Provenance

The following attestation bundles were made for coveo_systools-4.0-py3-none-any.whl:

Publisher: coveo-systools.yml on coveooss/coveo-python-oss

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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