A set of useful utilities for python programs
Project description
ccautils
a set of utilities for python3.6+ programs and scripts.
Install
Install for the user:
pip3 install ccautils --user
Install for a virtual environment:
pip install ccautils
Development
I use poetry to manage these utilities.
Clone this repository and install poetry, then install the dependancies.
git clone https://github.com/ccdale/ccautils.git
cd ccautils
poetry install
Testing
To run the tests you must have pytest, nox and poetry installed.
install nox into your python user environment.
pip install nox --user
Run the tests with
nox -rs tests
Run the linter with
nox -rs lint
Run the console ask tests with
nox -rs tests -- -sm ask
Error Utilities(#headdd)
See the code for how to use these Exception helpers.
Miscellaneous Utilities
Usage
import ccautils.utils as UT
- addToString
- delimitString
- makeDictFromString
- askMe
- padStr
- reduceTime
- displayValue
- secondsFromHMS
- hms
addToString(xstr, xadd)
Returns a string with xadd appended to xstr. If xadd is a list, all
str members of the list will be appended in order.
UT.addToString("hello", [" ", "world"])
> "hello world"
delimitString(xstr, delimeter=" - ")
xstr can be a list or a string. If it is a string, it is spit apart at
spaces and delimeted with delimeter. If it is a list, each member is
delimeted with delimeter.
UT.delimitString(["bright", "world"], " ")
> "bright world"
UT.delimitString("I wandered lonely as an artichoke", ".")
> "I.wandered.lonely.as.an.artichoke"
makeDictFromString(istr)
Constructs a dictionary from a string of parameters. Leading and trailing whitespace is stripped.
istr should be in the form someparam=somevalue,someotherparam=otherval
UT.makeDictFromString("sparam=sval, soparam = soval")
> {"sparam": "sval", "soparam": "soval"}
askMe(q, default)
Requests input from the user. Poses the question q. Returns the users
input or default if no input given.
UT.askMe("press 5, please", "8")
> press 5, please: 5
> 5
padStr(xstr, xlen=2, pad=" ", padleft=True)
Returns xstr padded to the required length, either on the
left (padleft is True) or the right (padleft is False)
UT.padStr("23", 5, "0")
> "00023"
reduceTime(unit, secs)
Divides secs by unit returning a tuple of (units, remainder)
Raises a ValueError if unit is zero.
UT.reduceTime(3600, 3700)
> (1, 100)
displayValue(val, label, zero=True)
Pluralises label if val > 1 or val is 0.
Will return an empty string if val == 0 and zero == True
UT.displayValue(12, "table")
> "12 tables"
secondsFromHMS(shms)
converts HMS strings into integer seconds
UT.secondsFromHMS("01:01:23.43")
# 1 hour, 1 minute, 23 seconds + 0.43 second
> 3683
hms(secs, small=True, short=True, single=False, colons=False)
Convert secs to days, hours, minutes and seconds
if small is True then only return the higher values if they are > zero
if short is True then the labels are their short form
if single is True then the labels are single letters
if colons is True then the output is of the form 01:03:23
UT.hms(67)
> "1 min and 7 secs"
UT.hms(67, short=False)
> "1 minute and 7 seconds"
UT.hms(67, small=False, short=False)
> "0 days, 0 hours, 1 minute and 7 seconds"
secs = 86400 + 7200 + 300 + 34
UT.hms(secs, single=True)
> "1d 2h 5m 34s"
secs = 345
UT.hms(secs, colons=True)
> "05:45"
secs = 86400 + 7200 + 300 + 34
UT.hms(secs, colons=True)
> "01:02:05:34"
fuzzyExpires(dt)
Given a datetime object, computes the difference between now and that
time. Returns a tuple of (ts: unix timestamp of dt, op: string)
The returned string gives the approximate time left between now and the
dt object or the string 'EXPIRED'.
"""It returns 2 hours 20 minutes and some seconds."""
ts = int(time.time())
ts += (3600 * 2) + (60 * 20)
dt = datetime.datetime.fromtimestamp(ts)
gotts, gotstr = UT.fuzzyExpires(dt)
"""It returns 1 year and 2 months."""
ts = int(time.time())
ts += (86400 * 365) + (86400 * 70)
dt = datetime.datetime.fromtimestamp(ts)
gotts, gotstr = UT.fuzzyExpires(dt)
File Utilities
Usage
import ccautils.fileutils as FT
fileExists(fqfn)
Tests for the existence of the fully-qualified (absolute) file name fqfn
Returns: True if fqfn exists, else False
fn = "/home/chris/output.csv"
if FT.fileExists(fn):
# do something
else:
raise(f"File {fn} does not exist")
dirExists(fqdn)
Tests for the existence of the fully-qualified (absolute) directory name fqdn
Returns: True if fqdn exists, else False
dn = "/home/chris"
if FT.dirExists(dn):
# do something
else:
raise(f"Directory {dn} does not exist")
dfExists(fqdfn)
Tests to see if the file fqdfn exists, if not checks if fqdfn is
a directory that exists.
Returns: True if fqdfn exists, else False
dn = "/home/chris"
if FT.dfExists(dn):
# do something
else:
raise(f"File / Directory {dn} does not exist")
makePath(pn)
Makes the path pn including any missing parent directories. Does
nothing if path pn already exists.
Returns: None
dn = "/home/chris/appdir/subdir"
FT.makePath(dn)
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ccautils-0.4.2.tar.gz.
File metadata
- Download URL: ccautils-0.4.2.tar.gz
- Upload date:
- Size: 23.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.0 CPython/3.8.1 Linux/5.5.7-1-MANJARO
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0b1beb3c7d74a75ad89591e96ce20c67fe5775c9433725837e2f54221630a40
|
|
| MD5 |
86e26f1de0d68c1ff68a34b2c7c75edc
|
|
| BLAKE2b-256 |
6265c576cf8447aa6dee55740bcefbea552f9ad5ace4610293e68e38660a4e86
|
File details
Details for the file ccautils-0.4.2-py3-none-any.whl.
File metadata
- Download URL: ccautils-0.4.2-py3-none-any.whl
- Upload date:
- Size: 22.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.0 CPython/3.8.1 Linux/5.5.7-1-MANJARO
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d2a88c3122bab91ac055b35bfae89f6ac226a3796ad00f79a0a6d4a69cfce126
|
|
| MD5 |
53efd24f5a213d114ec4da5c07ab4eb0
|
|
| BLAKE2b-256 |
61eb2093ceffd9a0d06c912c18c4f555e1937a37540a35e892cd304e6c78292e
|