qolpy 0.2.0

Creator: bradpython12

Last updated:

Add to Cart

Description:

qolpy 0.2.0

qolpy v0.2.0
Are you tired of making the same module in every project? Not a problem! Qol has your back.
A suite of random but useful functions that are aimed at giving you "piece of cake" level comfortability.
This package is also availabe as:

qol • js/ts
qolrus • rust

Some functionality is derived from:

fstring

Installation
pip install qolpy

or
pip3 install qolpy

Importing
# full import
import qolpy

# partial imports
from qolpy import random_colour, parse_date, num_parse, abbreviate, to_title_case, to_sentence_case, Logger

Functions
random_colour
Get a random colour; For those scenarios where you couldn't care less!
Returns a string
c = random_colour()
c_rgb = random_colour("rgb")
c_cmyk = random_colour("cmyk")
c_hsv = random_colour("hsv")
c_hsl = random_colour("hsl")

print(c, c_rgb, c_cmyk, c_hsv, c_hsl)
# #f7f7f7, rgb(247,247,247), cmyk(0%,0%,0%,3%), hsv(0,0%,97%), hsl(0,0%,97%)


Params



Parameter
Default Setting
Required?
Definition
Options




setting
hex
No
The type of colour you would like returned
hex, rgb, cmyk, hsv, hsl





parse_date
Send in date parameters and receive either an object with their metadata, or a parsed date (e.g 2 Sep 2020); American formatting is possible (e.g Sep 2 2020).
Returns a string or Date_Object. You can spread the args and use kwargs such as below:
import datetime

dt = datetime.datetime.now()
date_list = [dt.day, dt.weekday(), dt.month, dt.year]

pd = parse_date(*date_list, c_format="nll", american=True)
pd_full = parse_date(*date_list, c_format="lll")

print(pd, pd_full)
# April 15 2023, Saturday 15th April, 2023


interface
"day": {
"short": str,
"long": str,
"ordinal_month": str,
"ordinal_week": str,
"week_number": int,
"month_number": int
},
"month": {
"short": str,
"long": str,
"ordinal": str,
"number": int
},
"year": {
"short": int,
"long": int
}




Params



Parameter
Default Setting
Required?
Definition
Options




monthDay
none
Yes
The day of the month
type number


weekDay
none
Yes
The day of the week
type number


month
none
Yes
The numeric month
type number


year
none
Yes
The full numeric year
type number


format
none
No
The date format you would like
n = numeric, s = shorthand text, l = full text; nns, nnl, sss, ssl, lll, nss, nsl, nls, nll


american
false
No
Whether or not you would like the format to be 'Americanised'
true, false





num_parse
Convert a number into a string as if it's MS Excel!
Returns a string
num = num_parse(2100.45)
num_europe = num_parse(2100.45, "punct")
num_custom = num_parse(2100.45, "-")

print(num, num_europe, num_custom)
# 2,100.45, 2.100,45, 2-100.45)


Params



Parameter
Default Setting
Required?
Definition
Options




value
undefined
Yes
The number you want to be parsed
none


setting
comma
No
The delimiter for the number
space, comma, punct, any other delimiter as a string





abbreviate
name = "lEwiS mOsho junior"

print(abbreviate(name))
# LMJ

Make an abbreviation of a string; Usually used for names. It returns an upper case abbreviation of the string.

Params



Parameter
Default Setting
Required?
Definition




text
null
Yes
The string you wish to abbreviate


delimiter
" "
No
The character or string that seperates words in the string





to_title_case
Make any string title cased. it returns a string in which every first letter of a word is upper cased with the rest being lower cased.
const name = "lEwiS mOsho junior"

print(to_title_case(name))
# Lewis Mosho Junior


Params



Parameter
Default Setting
Required?
Definition




text
null
Yes
The string you wish to change to title case


delimiter
" "
No
The character or string that seperates words in the string





to_sentence_case
Make any string sentence cased; The current sentence delimiters are:

.
;
:
!
?

It returns a string in which every first letter of the first word of a sentence is capitalised, with the remainder of the senter being lower cased.
sentence = "heLLo wOrLD, mY NAME is lEwis; i am a Developer."

print(to_sentence_case(sentence))
# Hello world, my name is lewis; I am a developer.


Params



Parameter
Default Setting
Required?
Definition




txt
null
Yes
The string you wish to change to sentence case


delimiter
" "
No
The character or string that seperates words in the string





Logger
Log code executions, stats, and processing times in any framework in any environment; and chain the logs to see the entire process in the terminal!
Returns None
code example
from qolpy import Logger
from .some_function import some_function
from fastapi import FastAPI, Request

app = FastAPI()
logger = Logger()

@app.middleware("http")
async def handler(req: Request, call_next):
logger.new_log("log", req.method, req.url.path)

logger.log("log", "some_function", "Doing something...")
some_function()
logger.proc_time()

response = await call_next(req)

logger.execTime()
return response

...

terminal output
[log • aGy5Op]: GET => /hello | 07 Oct 2023 @ 19:40
[log • aGy5Op]: some_function => Doing something... | 07 Oct 2023 @ 19:40
[stats • aGy5Op]: some_function => 53.24ms
[exec • aGy5Op]: 121.07ms


Variables



Variable
Default Setting
Required?
Definition




id_length
5
No
An int that determines the length of the log id


american_date
False
No
A bool that determines whether the parseDate output should be american


time_format
%d %b %Y @ %H:%M
No
A str that defines other options for the log time output



These can be set when initialising the Logger or dynamically. NOTE that you can initialise any of them as undefined through the constructor and it will set their default values, however, dynamically they will need a value of their type unless they can be undefined.
# Set the americanDate param through the constructor
logger = Logger(american_date=True)

// set the americanDate param dynamically
logger.american_date = False




Methods



Method
Type
Details




new_log
(config: Union["stats", "log", "error"], process: string, message: string) -> None
Create a new log chain; This will change the log id


log
(config: Union["stats", "log", "error"], process: string, message: string) -> None
Add a log to the log chain; This will not change the log id


proc_time
() -> void
Log the processing time between this call and the previous call to view their processing time


exec_time
() -> void
View the entire execution time


lax
decorator
Useful to measure the process time for a single function (sync or async); not chainable but can have inner processes chained.



Decorator Example
logger = Logger()

@logger.lax
async def api_call() -> str:
req = requests.get("https://api.site.com/hello")
logger.log("log", "api_call", "request successfull!")

res = req.json()
return res["msg"]

asyncio.run(api_call())

[log • cy1zD]: api_call => Executing without args | 07 Oct 2023 @ 23:52
[log • cy1zD]: api_call => request successfull!| 07 Oct 2023 @ 23:52
[exec • cy1zD]: 107.09ms

If you add args and/or kwargs, it will log them too regardless of their type:
logger = Logger()

@logger.lax
async def api_call(uri: str, log_type: str) -> str:
req = requests.get(uri)
logger.log(log_type, "api_call", "request successfull!")

res = req.json()
return res["msg"]

asyncio.run(api_call("https://api.site.com/hello", log_type="log"))

[log • cy1zD]: api_call => Executing with arg 'https://api.site.com/hello' and kwarg log_type='log' | 07 Oct 2023 @ 23:52
[log • cy1zD]: api_call => request successfull!| 07 Oct 2023 @ 23:52
[exec • cy1zD]: 107.09ms



Changelog
v0.2.x

v0.2.0

Added Logger class



v0.1.x

v0.1.2

README updated

Repo links updated


color dir typing fixed; No more import error



v0.1.1

README completed
parse_date error fixed

Used tp return month object when nll was specifically set as an arg for c_format


Moved codebase into src folder



v0.1.0

Initial release
Excel number formatting, date parsing, random colour generation,string sentence casing, title casing, and abrreviations added and typed

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.