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)
Metadata
Release files for ccautils 0.4.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ccautils-0.4.2.tar.gz | 23.6 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ccautils-0.4.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.8 kB
Release files / ccautils-0.4.2.tar.gz
| Download URL | ccautils-0.4.2.tar.gz |
|---|---|
| Size | 23.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f0b1beb3c7d74a75ad89591e96ce20c67fe5775c9433725837e2f54221630a40
|
|
BLAKE2b-256 checksum How to use checksums |
6265c576cf8447aa6dee55740bcefbea552f9ad5ace4610293e68e38660a4e86
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.0.0 CPython/3.8.1 Linux/5.5.7-1-MANJARO
|
Release files / ccautils-0.4.2-py3-none-any.whl
| Download URL | ccautils-0.4.2-py3-none-any.whl |
|---|---|
| Size | 22.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d2a88c3122bab91ac055b35bfae89f6ac226a3796ad00f79a0a6d4a69cfce126
|
|
BLAKE2b-256 checksum How to use checksums |
61eb2093ceffd9a0d06c912c18c4f555e1937a37540a35e892cd304e6c78292e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.0.0 CPython/3.8.1 Linux/5.5.7-1-MANJARO
|
Security for ccautils 0.4.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.