Tools for using on diffrent Platforms
Project description
marvmiloTools
Version: 1.11.3
Dependencies:
- pandas
- dash
- dash-bootstrap-components
- paho-mqtt
Description:
A tool a wrote for myself to have multiple functions and classes avalibale on diffrent servers and devices.
HowTo:
1. Main
1.1 ScriptPrint:
Logging and Output Tool for different Scipts.
Example 1(Printing):
import marvmiloTools as mmt
output = mmt.Output("SCRIPT")
print = output.print
print("hello world")
Output:
2022-04-18 23:53:48.015564 - INFO - [SCRIPT]: hello world
Example 2(Logging):
import marvmiloTools as mmt
output = mmt.Output("SCRIPT", logfile = "output.log")
#cleanup from last time
output.cleanup_logfile()
output.log("logging output")
print = output.print
print("logging prints")
def main():
1 / 0
output.log_python_error(main)
output.log:
2022-04-18 23:49:41.898101 - INFO - [SCRIPT]: logging output
2022-04-18 23:49:41.898891 - INFO - [SCRIPT]: logging prints
2022-04-18 23:49:41.901410 - ERROR - [SCRIPT]:
Traceback (most recent call last):
File "C:\Users\marvi\OneDrive\Projects\PyPImarvmiloTools\marvmiloTools\__init__.py", line 168, in log_python_error
function()
File "C:\Users\marvi\OneDrive\Projects\PyPImarvmiloTools\log.py", line 12, in main
1 / 0
ZeroDivisionError: division by zero
1.2 Timer:
A build in timer for measuring runtimes.
Example:
import marvmiloTools as mmt
from time import sleep
#start the timer
mmt.timer.start()
sleep(3)
#pause timer
runtime = mmt.timer.pause()
print("Type of runtime: " + str(type(runtime)))
print("Runtime at pause: " + str(runtime))
#reset timer and get runtime function
mmt.timer.reset()
runtime = mmt.timer.get_runtime()
print("Runtime at reset: " + str(runtime))
#set some laps
mmt.timer.start()
for i in range(3):
sleep(1)
runtime = mmt.timer.set_lap()
print("Runtime at lap " + str(i) + ": " + str(runtime))
#get all laps
laps = mmt.timer.get_laps()
print("Laps: " + str(laps))
sleep(2)
#get time of current lap without setting a lap
lap_runtime = mmt.timer.get_lap_runtime()
print("Current Lap Runtime: " + str(lap_runtime))
Output:
Type of runtime: <class 'datetime.timedelta'>
Runtime at pause: 0:00:03.003270
Runtime at reset: 0:00:00
Runtime at lap 0: 0:00:01.001151
Runtime at lap 1: 0:00:01.001191
Runtime at lap 2: 0:00:01.001231
Laps: [datetime.timedelta(seconds=1, microseconds=1151), datetime.timedelta(seconds=1, microseconds=1191), datetime.timedelta(seconds=1, microseconds=1231)]
Current Lap Runtime: 0:00:02.002030
Create a new instance of timer:
timer = mmt.Timer()
timer.start()
...
1.3 get_variable_name
Converting variable in namespace into an string.
Example:
import marvmiloTools as mmt
#declare a variable
variable = "hello world"
#get name as string from variable
variable_name = mmt.get_variable_name(variable, locals())
print(variable_name, type(variable_name))
Output:
variable <class 'str'>
1.4 random_ID
Creating a random ID of specific length.
Example:
import marvmiloTools as mmt
print(mmt.random_ID(20))
Output:
R1DBXY64KH73BPPF7WFT
1.5 CloudMQTT
CloudMQTT client with multiple functions.
Example:
import marvmiloTools as mmt
#init cloudMQTT client
cloudmqtt = mmt.CloudMQTT(
client_name = "clientname",
channel = "channel",
qos = 0
)
#connect to server
cloudmqtt.connect(
user = "user",
pw = "password",
addr = "cloudmqtt.com",
port = 1234
)
#reconnecting to server if no connection
if not cloudmqtt.check_connection():
cloudmqtt.reconnect()
#on message function
def on_message(msg, topic):
print(f"received message: '{msg}', topic: '{topic}'")
#binding on_message function to a topic
cloudmqtt.bind(topic = "hello", function = on_message)
#publishing a message
cloudmqtt.publish(topic = "hello", message = "world")
#response function
def on_request(msg, topic):
resp = "hello world"
print(f"publishing response: {resp}")
return(resp)
#binding on_request to request topic
cloudmqtt.bind_response("demo", on_request)
#request data from server
resp = (
cloudmqtt.request(
topic = "demo",
message = ".",
retry = 5
)
)
print("got response: " + resp)
#disconnecting form server
cloudmqtt.disconnect()
Output:
received message: 'world', topic: 'hello'
publishing response: hello world
got response: hello world
MQTT Messages:
1.6 SQL
Simple sqlite3 manager.
Example:
import marvmiloTools as mmt
mmt.sql.connect("database.db")
mmt.sql.execute("CREATE TABLE IF NOT EXISTS test (a INTEGER, b INTEGER)")
mmt.sql.execute("INSERT INTO test (a,b) VALUES (0,1)")
mmt.sql.disconnect()
#new sql instance
sql = mmt.SQL()
sql.connect(...
Database:
1.7 prettyprint
Prettyprint lists, dictionaries, DictObjects etc. in json format.
Example:
import marvmiloTools as mmt
random_list = [1, 2, 3]
random_dict = {"a": "A", "b": "B"}
random_dictobj = mmt.dictionary.toObj(random_dict)
mmt.prettyprint(random_list)
mmt.prettyprint(random_dict)
mmt.prettyprint(random_dictobj)
Output:
[
1,
2,
3
]
{
"a": "A",
"b": "B"
}
{
"a": "A",
"b": "B"
}
1.8 Thread
For managing Threads
Example:
import time
import marvmiloTools as mmt
def function(string):
while True:
print(string)
time.sleep(1)
thread_id = mmt.thread(function, "hello world")
print(mmt.threads[thread_id].is_alive())
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
for id in mmt.threads:
mmt.threads[id].stop()
Output:
hello world
True
hello world
hello world
KeyboardInterrupt:
"""
2. Dash
2.1 flex_style
Dictionary for centering content in dash plotlys html.Div
Example:
import marvmiloTools as mmt
from dash import html
html.Div(
children = [
"hello world"
],
style = mmt.dash.flex_style({
"background-color": "black"
})
)
2.2 mobile_optimization
Meta tags for setting app to a mobile optiomized app.
Example:
import marvmiloTools as mmt
import dash
app = dash.Dash(__name__, meta_tags = [mmt.dash.mobile_optimization])
2.3 content_div
For creating a dynamic scalealbe content Div.
Example:
import marvmiloTools as mmt
from dash import html
import dash_bootstrap_components as dbc
app.layout = html.Div(
children = [
dbc.Navbar(...),
mmt.dash.content_div(
width = "1000px",
padding = "5%",
content = [
"children"
]
)
]
)
2.4 modal_header_close
Creating an modal header with close button and specific color.
Example:
import marvmiloTools as mmt
import dash_bootstrap_components as dbc
dbc.Modal(
children = [
mmt.dash.modal_header_close(
title = "This is the header",
close_id = "modal-close", #id of the close button,
color = "#4287f5" #background color of header
),
dbc.Modal_Body("This is modal body")
]
)
2.5 random_ID
Creating random IDs compatible with dash.
Example:
import marvmiloTools as mmt
from dash import html
html.Div(
children = "Hello World",
id = mmt.dash.random_ID(20)
)
Output ID: 'MNPhNBfXcpVeHVVxuJeF'
2.6 browsertime
Creating a Object in dash html form, wich provides the current clock time of the browser. That means the callbacks can calulate timezone of input.
Add this to your callbacks:
app.clientside_callback(*mmt.dash.browsertime.clientside_callback_args)
Add this in your html layout of the page:
mmt.dash.browsertime.htmlObj()
Example Callback with browser time:
from dash.dependencies import Input, Output, State
@app.callback(
[Output(...)],
[Input(...)],
[State("browser-time", "data")]
)
def callback(... , browsertime):
datetime_object = mmt.dash.browsertime.datetime(browsertime)
time_shift = mmt.dash.browsertime.time_shift(browsertime)
Also datetime objects from browsertime string can be created. Time shift can also be calculated.
2.7 nav
Simply creating a dash navbar with custom items.
import marvmiloTools as mmt
mmt.dash.nav.bar(
logo = "url(/assets/logo.png)",
logo_style = {
"width": "3rem",
"height": "3rem",
"background-size": "cover",
},
title = "Navbar Title",
title_style = {
"width": "15rem",
"font-size": "1.5rem"
},
expand = "lg",
items = [
mmt.dash.nav.item.href(
"Link",
href = "https://github.com/marvmilo",
target = "_blank",
size = "lg"
),
mmt.dash.nav.item.normal(
"Button",
id = "button-id",
size = "lg"
)
]
)
@app.callback(*mmt.dash.nav.callback_args)
def cn(n, is_open):
return mmt.dash.nav.callback_function(n, is_open)
3. Json
3.1 load
For opening and loading a json file to dictionary or marvmiloTools.DictObj
Example:
.
├── example.json
└── script.py
example.json:
{
"hello": "world"
}
script.py:
import marvmiloTools as mmt
dictionary = mmt.json.load("example.json", object=False)
DictObj = mmt.json.load("example.json")
print("Dictionary:")
print(dictionary)
print(type(dictionary))
print()
print("DictObject:")
print(DictObj)
print(type(DictObj))
Execute like this:
~$ python script.py
Output:
Dictionary:
{'hello': 'world'}
<class 'dict'>
DictObject:
{'hello': 'world'}
<class 'marvmiloTools.dictionary_tools.DictObject'>
3.2 save
For saving a dictionary or marvmiloTools.DictObject to a json file.
Example:
import marvmiloTools as mmt
dictionary = {"hello": "world"}
DictObj = mmt.dictionary.toObj(dictionary)
#save to json
mmt.json.save(dictionary, filename = "dictionary.json")
mmt.json.save(DictObj, filename = "DictObj.json")
Output as dictionary.json and DictObj.json:
{
"hello": "world"
}
3.3 write
For writing a value directly to a json file without opening and saving.
Example:
.
├── example.json
└── script.py
example.json:
{
"dictionary": {
"hello": "world"
},
"list": [
"a",
"b",
"c"
]
}
script.py:
import marvmiloTools as mmt
mmt.json.write("value", "example.json", ["dictionary", "new"])
mmt.json.write("new", "example.json", ["list", 1])
Output example.json:
{
"dictionary": {
"hello": "world",
"new": "value"
},
"list": [
"a",
"new",
"b",
"c"
]
}
4. Dictionary
4.1 toObj
Transforming to a dictionary to a marvmiloTools.DictObject. This Object can be used like a Class in Python
Example:
# pylint: disable = no-member
import marvmiloTools as mmt
dictionary = {"hello": "world", "list": ["string", 10, {"a": "b"}]}
#convert dictionary to Object
DictObj = mmt.dictionary.toObj(dictionary)
print(type(DictObj))
print(DictObj)
print(DictObj.hello)
print(DictObj.list[2].a)
(usining "# pylint: disable = no-member" with Visual Studio Code for disabeling "DictObj has no hello member" Error)
Output:
<class 'marvmiloTools.dictionary_tools.DictObject'>
{'hello': 'world', 'list': ['string', 10, {'a': 'b'}]}
world
b
A DictObject has the same attributes and functions as a dictionary aswell One extra function is pretty:
import marvmiloTools as mmt
DictObj = mmt.dictionary.toObj({"hello": "world"})
print(DictObj.pretty())
Output:
{
"hello": "world"
}
4.2 toDict
Transforming a marvmiloTools.DictObject back to a standart dictionary.
Example:
import marvmiloTools as mmt
DictObj = mmt.dictionary.toObj({"hello": "world"})
#convert to dictionary
dictionary = mmt.dictionary.toDict(DictObj)
print(dictionary)
print(type(dictionary))
Output:
{'hello': 'world'}
<class 'dict'>
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file marvmiloTools-1.11.3.tar.gz.
File metadata
- Download URL: marvmiloTools-1.11.3.tar.gz
- Upload date:
- Size: 17.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b688f4b7781f611f6eb6e0d747428e76c244b8768bffcb6b21f214791aa0e18b
|
|
| MD5 |
a2285f34f554680d3e264989b05c6e91
|
|
| BLAKE2b-256 |
dd0b23452da2f8beb4dd574c0e18c83e7ea70043e0da1197997a76b993c36184
|