Skip to main content

Simple Python Scripting Helpers

Project description

kisspy - Simple Python Scripting Helpers

This is a collection of simple helper methods and classes that I have found useful for data processing

Usage

The package offers simple methods that I found I was reusing frequently.

Converters

Numeric Converter

    from kisspy import toNumeric, returnTxt,raiseValExc

    def rtnMsg(*args):
        return "Can't Convert '{}' To A Number".format(args[0])

    alphaVal = "55"
    numVal = toNumeric(alphaVal)
    print(isinstance(numVal, int))

    alphaVal = "88 ft"
    numVal = toNumeric(alphaVal)
    print(numVal)

    numVal = toNumeric(alphaVal, onFail=returnTxt)
    print(numVal)

    numVal = toNumeric(alphaVal, onFail=rtnMsg)
    print(numVal)

    numVal = toNumeric(alphaVal, onFail=raiseValExc)

>>  True
>>  None
>>  88 ft
>>  Can't Convert '88 ft' To A Number
>>  Traceback (most recent call last):
>>  File "C:\Files\code\python\projects\kisspy\examples\converters.py", line 26, in <module>
>>      numVal = toNumeric(alphaVal, onFail=raiseValExc)
>>  File "C:\Files\code\python\projects\kisspy\kisspy\converters\numericConverter.py", line 32, in toNumeric
>>      return onFail(val,verr)
>>  File "C:\Files\code\python\projects\kisspy\kisspy\converters\numericConverter.py", line 5, in raiseValExc
>>      raise args[1]
>>  File "C:\Files\code\python\projects\kisspy\kisspy\converters\numericConverter.py", line 27, in toNumeric
>>      val = float(val)
>>  ValueError: could not convert string to float: '88 ft'
>>  The Value '88 ft' Could Not Be Converted To A Numeric Value

Spreadsheet Converters

    from kisspy.converters.excelHelpers import fromExcelCol, toExcelCol

    col = "C"
    print(fromExcelCol(col))

    col = "AF"
    print(fromExcelCol(col))

    num = 2
    print(toExcelCol(num))

    num = 33
    print(toExcelCol(num))

>>  3
>>  32
>>  B
>>  AG

The elements in decorators and metaclasses modules speak for themselves.

There are a number of Python "extensions" that do stuff you would have wanted anyways:

Unique Appending To Lists:

    from kisspy import appendUnique

    vl = [2, 4, 6, 8]
    if appendUnique(vl, 4):
        print("Added 4 Again: {}".format(vl))

    if appendUnique(vl, 10):
        print("Added 10: {}".format(vl))

>>  Added 10: [2, 4, 6, 8, 10]

Asserting One Record: Returns the one record, with options:

    from kisspy import assertOne
    from kisspy.exceptions import TooManyRecordsException, ZeroRecordsException


    def thrwZeroRecordsEx(*args, **kwargs):
        raise ZeroRecordsException()


    vl = [2, 4, 6, 8]
    print(assertOne([]))
    print(assertOne([44]))

    try:
        oneValue = assertOne(vl)
    except TooManyRecordsException as err:
        print(err.toStrWithTyp())

    try:
        print(assertOne([], onZeroRcds=thrwZeroRecordsEx))
    except ZeroRecordsException as err:
        print(err.toStrWithTyp())

>>  None
>>  44
>>  TooManyRecordsException: 4 Records Returned, 1 Were Expected
>>  ZeroRecordsException: Zero (0) Records Returned, > 0 Were Expected

Nested Dicts:

    from kisspy import setValueOfPath, getValueOfPath

    vd = {"animals": {"dog": {"whippet": "fast", "lab": "slower"}}}

    wv = getValueOfPath(vd, keyPath="animals/dog/lab")
    print(wv)

    cv = getValueOfPath(vd, keyPath="animals/cat/tabby")
    print(cv)

    setValueOfPath(vd, "animals/dog/golden", "silly")
    print(vd)

>>  slower
>>  None
>>  {'animals': {'dog': {'whippet': 'fast', 'lab': 'slower', 'golden': 'silly'}}}

Installation

Using In Projects

Installation:

    pip install kisspy-python

Cloning For Development

Set up a virtual environment. Once an environment is set up, run the command below to:

  • validate the environment variable
  • activate the environment (if not already activated)
  • install all of the necessary packages into the local environment
    pip install -U -r requirements/dev.txt

The dev.txt file includes:

  • BLACK, a code formatter, see notes at the bottom of this file for details

Dependancies

This library depends on the following projects:

  • unidecode

Tests

To run tests:

    python -m unittest discover -s tests/

Code Formatting

Code formatting is done using BLACK. BLACK allows almost no customization to how code is formatted with the exception of line length, which has been set to 119 characters.

Use the following to bulk format files:

    black . -l 144

Creating A New Release

Please do the following when making a new release, most are documented above:

  1. Run tests
  2. Code format
  3. Be sure to update the change log and _metadata.json with version and notes
  4. git add, commit, and push changes
  5. run the following code to generate a wheel:
    python -m build

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

kisspy_python-1.1.0.tar.gz (16.2 kB view details)

Uploaded Source

Built Distribution

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

kisspy_python-1.1.0-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file kisspy_python-1.1.0.tar.gz.

File metadata

  • Download URL: kisspy_python-1.1.0.tar.gz
  • Upload date:
  • Size: 16.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kisspy_python-1.1.0.tar.gz
Algorithm Hash digest
SHA256 c2599b5bd40b61e429dcc2c2f57ff5d464ffa13e96d7f4edeaae419eb02006d9
MD5 9b50e605900da3668d7da455596578c3
BLAKE2b-256 fa8e50692b257dcbed2146176796045c439d8b0baa72d1c7a0c3bd80ae527b22

See more details on using hashes here.

Provenance

The following attestation bundles were made for kisspy_python-1.1.0.tar.gz:

Publisher: publish.yml on joemarchionna/kisspy

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

File details

Details for the file kisspy_python-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: kisspy_python-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 18.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kisspy_python-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 52744b1041b41bb77d44af159348f5e37b56ed9912e099346aa76e77e0d940ac
MD5 e092fcb76c400d1cca8698c9c7edb8be
BLAKE2b-256 a7515e0d271fea0dfe233aa821f80017cb642b82e457d803cc0e09a1cb5d4367

See more details on using hashes here.

Provenance

The following attestation bundles were made for kisspy_python-1.1.0-py3-none-any.whl:

Publisher: publish.yml on joemarchionna/kisspy

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