radboy 0.0.453__py3-none-any.whl → 0.0.455__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of radboy might be problematic. Click here for more details.
- radboy/DB/Prompt.py +14 -0
- radboy/DB/__pycache__/Prompt.cpython-313.pyc +0 -0
- radboy/DB/__pycache__/db.cpython-313.pyc +0 -0
- radboy/DB/db.py +68 -1
- radboy/HealthLog/HealthLog.py +104 -4
- radboy/HealthLog/__pycache__/HealthLog.cpython-313.pyc +0 -0
- radboy/PhoneBook/PhoneBook.py +375 -0
- radboy/PhoneBook/__init__.py +29 -0
- radboy/TasksMode/Tasks.py +10 -0
- radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc +0 -0
- radboy/__init__.py +1 -1
- radboy/__pycache__/__init__.cpython-313.pyc +0 -0
- radboy/code.png +0 -0
- {radboy-0.0.453.dist-info → radboy-0.0.455.dist-info}/METADATA +2 -1
- {radboy-0.0.453.dist-info → radboy-0.0.455.dist-info}/RECORD +17 -15
- {radboy-0.0.453.dist-info → radboy-0.0.455.dist-info}/WHEEL +0 -0
- {radboy-0.0.453.dist-info → radboy-0.0.455.dist-info}/top_level.txt +0 -0
radboy/DB/Prompt.py
CHANGED
|
@@ -31,6 +31,7 @@ import biip
|
|
|
31
31
|
import radboy.Orders.MilkWaterOrder as MWR
|
|
32
32
|
import itertools
|
|
33
33
|
from inputimeout import inputimeout, TimeoutOccurred
|
|
34
|
+
from uuid import uuid1
|
|
34
35
|
|
|
35
36
|
def timedout(ptext):
|
|
36
37
|
try:
|
|
@@ -2049,6 +2050,7 @@ CMD's are not final until ended with {Fore.magenta}{hw_delim}{Style.reset}""")
|
|
|
2049
2050
|
{Fore.grey_70}**{Fore.light_green}exp{Fore.light_steel_blue} - product expiration menu{Style.reset}
|
|
2050
2051
|
{Fore.grey_70}**{Fore.light_green}comm{Fore.light_steel_blue} - send an email message with gmail{Style.reset}
|
|
2051
2052
|
{Fore.grey_70}**{Fore.light_sea_green}'crbc',"checked random barcode"{Fore.light_yellow}- generate a random, but non-local-system existant barcode for input{Style.reset}
|
|
2053
|
+
{Fore.grey_70}**{Fore.light_sea_green}'cruid',"checked uid"{Fore.light_yellow}- generate a uid, but non-local-system existant uid for input{Style.reset}
|
|
2052
2054
|
{Fore.grey_70}**{Fore.light_sea_green}'bcd-gen','bcd-img'{Fore.light_yellow}- generate a custom barcode img from input data possible output is selected from {barcode.PROVIDED_BARCODES}{Style.reset}
|
|
2053
2055
|
{Fore.grey_70}**{Fore.light_sea_green}'qr-gen','qr-img'{Fore.light_yellow}- generate a custom barcode img from input data possible output is selected{Style.reset}
|
|
2054
2056
|
{Fore.grey_70}**{Fore.light_red}u{Fore.light_steel_blue} is for {Fore.light_red}Universally{Fore.light_steel_blue} accessible where this menu is{Style.reset}
|
|
@@ -2312,6 +2314,18 @@ which will result in a cmd of 'ls Shelf'{Style.reset}
|
|
|
2312
2314
|
return func(str(UPCAcode),data)
|
|
2313
2315
|
except Exception as e:
|
|
2314
2316
|
print(e)
|
|
2317
|
+
elif cmd.lower() in ['cruid',"checked uid"]:
|
|
2318
|
+
with db.Session(db.ENGINE) as session:
|
|
2319
|
+
while True:
|
|
2320
|
+
try:
|
|
2321
|
+
uid=str(uuid1())
|
|
2322
|
+
check=session.query(db.Entry).filter(or_(db.Entry.Barcode==str(uid),db.Entry.Barcode.icontains(str(uid)))).first()
|
|
2323
|
+
if check != None:
|
|
2324
|
+
continue
|
|
2325
|
+
print(uid)
|
|
2326
|
+
return func(str(uid),data)
|
|
2327
|
+
except Exception as e:
|
|
2328
|
+
print(e)
|
|
2315
2329
|
elif cmd.lower() in ['h+','help+']:
|
|
2316
2330
|
print(f'''{Fore.grey_50}If a Number in a formula is like '1*12345678*1', use '1*12345678.0*1' to get around regex for '*' values; {Fore.grey_70}{Style.bold}If An Issue Arises!{Style.reset}
|
|
2317
2331
|
{Fore.grey_50}This is due to the {Fore.light_green}Start/{Fore.light_red}Stop{Fore.grey_50} Characters for Code39 ({Fore.grey_70}*{Fore.grey_50}) being filtered with {Fore.light_yellow}Regex
|
|
Binary file
|
|
Binary file
|
radboy/DB/db.py
CHANGED
|
@@ -5266,4 +5266,71 @@ try:
|
|
|
5266
5266
|
CookBook.metadata.create_all(ENGINE)
|
|
5267
5267
|
except Exception as e:
|
|
5268
5268
|
CookBook.__table__.drop(ENGINE)
|
|
5269
|
-
CookBook.metadata.create_all(ENGINE)
|
|
5269
|
+
CookBook.metadata.create_all(ENGINE)
|
|
5270
|
+
|
|
5271
|
+
class PhoneBook(BASE,Template):
|
|
5272
|
+
__tablename__='PhoneBook'
|
|
5273
|
+
pbid=Column(Integer,primary_key=True)
|
|
5274
|
+
|
|
5275
|
+
#to bind ingredients together as one
|
|
5276
|
+
phone_uid=Column(String,default=None)
|
|
5277
|
+
phone_name=Column(String,default=None)
|
|
5278
|
+
|
|
5279
|
+
non_personnel_name=Column(String,default=None)
|
|
5280
|
+
|
|
5281
|
+
phone_number_1=Column(String,default=None)
|
|
5282
|
+
phone_number_2=Column(String,default=None)
|
|
5283
|
+
phone_number_3=Column(String,default=None)
|
|
5284
|
+
|
|
5285
|
+
email_1=Column(String,default=None)
|
|
5286
|
+
email_2=Column(String,default=None)
|
|
5287
|
+
email_3=Column(String,default=None)
|
|
5288
|
+
|
|
5289
|
+
fax_1=Column(String,default=None)
|
|
5290
|
+
fax_2=Column(String,default=None)
|
|
5291
|
+
fax_3=Column(String,default=None)
|
|
5292
|
+
|
|
5293
|
+
other_1=Column(String,default=None)
|
|
5294
|
+
other_2=Column(String,default=None)
|
|
5295
|
+
other_3=Column(String,default=None)
|
|
5296
|
+
|
|
5297
|
+
firstName=Column(String,default=None)
|
|
5298
|
+
lastName=Column(String,default=None)
|
|
5299
|
+
middleName=Column(String,default=None)
|
|
5300
|
+
|
|
5301
|
+
occupation=Column(String,default=None)
|
|
5302
|
+
title=Column(String,default=None)
|
|
5303
|
+
|
|
5304
|
+
street_address=Column(String,default=None)
|
|
5305
|
+
street_address_2=Column(String,default=None)
|
|
5306
|
+
suite=Column(String,default=None)
|
|
5307
|
+
city=Column(String,default=None)
|
|
5308
|
+
county=Column(String,default=None)
|
|
5309
|
+
state=Column(String,default=None)
|
|
5310
|
+
zipcode=Column(String,default=None)
|
|
5311
|
+
country=Column(String,default=None)
|
|
5312
|
+
|
|
5313
|
+
|
|
5314
|
+
DTOE=Column(DateTime,default=datetime.now())
|
|
5315
|
+
Comment=Column(String,default='N/A')
|
|
5316
|
+
|
|
5317
|
+
LongNote=Column(Text,default='')
|
|
5318
|
+
|
|
5319
|
+
def as_json(self):
|
|
5320
|
+
excludes=['cbid','DTOE']
|
|
5321
|
+
dd={str(d.name):self.__dict__[d.name] for d in self.__table__.columns if d.name not in excludes}
|
|
5322
|
+
return json.dumps(dd)
|
|
5323
|
+
|
|
5324
|
+
def asID(self):
|
|
5325
|
+
return f"{self.__class__.__name__}(cbid={self.cbid})"
|
|
5326
|
+
|
|
5327
|
+
def __init__(self,**kwargs):
|
|
5328
|
+
for k in kwargs.keys():
|
|
5329
|
+
if k in [s.name for s in self.__table__.columns]:
|
|
5330
|
+
setattr(self,k,kwargs.get(k))
|
|
5331
|
+
|
|
5332
|
+
try:
|
|
5333
|
+
PhoneBook.metadata.create_all(ENGINE)
|
|
5334
|
+
except Exception as e:
|
|
5335
|
+
PhoneBook.__table__.drop(ENGINE)
|
|
5336
|
+
PhoneBook.metadata.create_all(ENGINE)
|
radboy/HealthLog/HealthLog.py
CHANGED
|
@@ -23,6 +23,7 @@ from datetime import *
|
|
|
23
23
|
from colored import Style,Fore
|
|
24
24
|
import json,sys,math,re,calendar
|
|
25
25
|
import plotext as plt
|
|
26
|
+
import pint_pandas
|
|
26
27
|
|
|
27
28
|
class HealthLogUi:
|
|
28
29
|
def new_health_log(self):
|
|
@@ -257,18 +258,116 @@ class HealthLogUi:
|
|
|
257
258
|
HealthLog.metadata.create_all(ENGINE)
|
|
258
259
|
|
|
259
260
|
|
|
260
|
-
def GraphIt(self,query,session,fields=['BloodSugar','HeartRate'],errors=
|
|
261
|
+
def GraphIt(self,query,session,fields=['BloodSugar','HeartRate'],errors=True):
|
|
261
262
|
while True:
|
|
262
263
|
print(f"{Fore.light_magenta}Dates on the Graph(s) are in the format of {Fore.orange_red_1}Day/Month/Year{Fore.light_magenta}, whereas Date Input will remain {Fore.light_steel_blue}Month/Day/Year{Style.reset}")
|
|
263
264
|
df_from_records = pd.read_sql_query(query.statement,session.bind)
|
|
264
265
|
|
|
265
266
|
for num,field in enumerate(fields):
|
|
266
267
|
try:
|
|
268
|
+
if 'DrugQtyConsumed' == field:
|
|
269
|
+
names=df_from_records['DrugConsumed'].unique()
|
|
270
|
+
for name in names:
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
q=session.query(HealthLog).filter(and_(HealthLog.DrugConsumed==name,HealthLog.DrugQtyConsumed!=None))
|
|
274
|
+
dfTmp=pd.read_sql_query(q.statement,session.bind)
|
|
267
275
|
|
|
276
|
+
dfTmp['DTOES']=dfTmp['DTOE'].dt.strftime("%d/%m/%Y")
|
|
277
|
+
z=[[v,u] for v,u in zip(dfTmp[field],dfTmp['DrugQtyConsumedUnitName'])]
|
|
278
|
+
units=[i for i in dfTmp['DrugQtyConsumedUnitName'].unique()]
|
|
279
|
+
for i in z:
|
|
280
|
+
print(pint.Quantity(i[0],i[1]).magnitude,i[-1])
|
|
281
|
+
unit=''
|
|
282
|
+
|
|
283
|
+
while True:
|
|
284
|
+
try:
|
|
285
|
+
unit=Prompt.__init2__(self,func=FormBuilderMkText,ptext=f"unit of measure to convert all to?[{units}]",helpText=f"{units}",data="string")
|
|
286
|
+
if unit is None:
|
|
287
|
+
return
|
|
288
|
+
elif unit in ['d',]:
|
|
289
|
+
unit="milligram"
|
|
290
|
+
if unit not in units:
|
|
291
|
+
continue
|
|
292
|
+
|
|
293
|
+
dfTmp['qty']=[pint.Quantity(v,u).to(unit).magnitude for v,u in zip(dfTmp[field],dfTmp['DrugQtyConsumedUnitName']) ]
|
|
294
|
+
break
|
|
295
|
+
except Exception as e:
|
|
296
|
+
print(e)
|
|
297
|
+
barLabel=f'Maxes {field}:{name} {unit}'
|
|
298
|
+
plt.bar(dfTmp['DTOES'],dfTmp['qty'],label=barLabel)
|
|
299
|
+
plt.show()
|
|
300
|
+
plt.clf()
|
|
301
|
+
print(f"{Fore.orange_red_1}{barLabel}{Style.reset}")
|
|
302
|
+
|
|
303
|
+
plt.scatter(dfTmp['DTOES'],dfTmp['qty'],label=barLabel)
|
|
304
|
+
plt.show()
|
|
305
|
+
plt.clf()
|
|
306
|
+
print(f"{Fore.orange_red_1}{barLabel}{Style.reset}")
|
|
307
|
+
try:
|
|
308
|
+
mx=int(dfTmp['qty'].max())
|
|
309
|
+
multiplier=1
|
|
310
|
+
while mx < 1:
|
|
311
|
+
multiplier*=10
|
|
312
|
+
mx=int(dfTmp['qty'].max()*multiplier)
|
|
313
|
+
histoLabel=f"{multiplier}X -> Histogram {field}:{name}"
|
|
314
|
+
bins=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Histogram Bins[5]",helpText="5",data="integer")
|
|
315
|
+
if bins is None:
|
|
316
|
+
return
|
|
317
|
+
elif bins in ['d',]:
|
|
318
|
+
bins=5
|
|
319
|
+
plt.hist(dfTmp['qty'],bins=bins,label=histoLabel)
|
|
320
|
+
plt.show()
|
|
321
|
+
plt.clf()
|
|
322
|
+
print(f"{Fore.magenta}{histoLabel}total Entry Data Points = {len(dfTmp[field])}{Style.reset}")
|
|
323
|
+
except Exception as e:
|
|
324
|
+
if errors:
|
|
325
|
+
print(e)
|
|
326
|
+
|
|
327
|
+
barLabel=f'Maxes {field} TotalView:Bar'
|
|
328
|
+
|
|
329
|
+
df_from_records['DTOES']=df_from_records['DTOE'].dt.strftime("%d/%m/%Y")
|
|
330
|
+
plt.bar(df_from_records['DTOES'],df_from_records[field],label=f'Maxes {field}')
|
|
331
|
+
plt.show()
|
|
332
|
+
plt.clf()
|
|
333
|
+
print(f"{Fore.light_green}{barLabel}{Style.reset}")
|
|
334
|
+
|
|
335
|
+
barLabel=f'Maxes {field} TotalView:Scatter'
|
|
336
|
+
|
|
268
337
|
df_from_records['DTOES']=df_from_records['DTOE'].dt.strftime("%d/%m/%Y")
|
|
269
|
-
plt.
|
|
338
|
+
plt.scatter(df_from_records['DTOES'],df_from_records[field],label=f'Maxes {field}')
|
|
270
339
|
plt.show()
|
|
271
340
|
plt.clf()
|
|
341
|
+
print(f"{Fore.light_green}{barLabel}{Style.reset}")
|
|
342
|
+
'''print(f"{Fore.light_steel_blue}{histoLabel}{Style.reset}")
|
|
343
|
+
plt.hist(df_from_records[field],df_from_records[field].max(),label=f"Histogram {field}")
|
|
344
|
+
plt.show()
|
|
345
|
+
plt.clf()'''
|
|
346
|
+
mx=-1
|
|
347
|
+
mx=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Histogram Bins[5]",helpText="5",data="integer")
|
|
348
|
+
if mx is None:
|
|
349
|
+
return
|
|
350
|
+
elif mx in ['d',]:
|
|
351
|
+
mx=5
|
|
352
|
+
|
|
353
|
+
try:
|
|
354
|
+
if mx == -1:
|
|
355
|
+
mx=int(df_from_records[field].max())
|
|
356
|
+
multiplier=1
|
|
357
|
+
while mx < 1:
|
|
358
|
+
multiplier*=10
|
|
359
|
+
mx=int(df_from_records[field].max()*multiplier)
|
|
360
|
+
histoLabel=f"{multiplier}X -> Histogram {field}"
|
|
361
|
+
else:
|
|
362
|
+
histoLabel=f"Histogram {field}"
|
|
363
|
+
|
|
364
|
+
plt.hist(df_from_records[field],mx,label=histoLabel)
|
|
365
|
+
plt.show()
|
|
366
|
+
plt.clf()
|
|
367
|
+
print(f"{Fore.magenta}{histoLabel} total Entry Data Points = {len(df_from_records[field])} {Style.reset}")
|
|
368
|
+
except Exception as e:
|
|
369
|
+
if errors:
|
|
370
|
+
print(e)
|
|
272
371
|
except Exception as ee:
|
|
273
372
|
if errors:
|
|
274
373
|
print(ee,repr(ee))
|
|
@@ -284,6 +383,7 @@ class HealthLogUi:
|
|
|
284
383
|
|
|
285
384
|
def showAllField(self,fields=[],not_none=[]):
|
|
286
385
|
try:
|
|
386
|
+
gf=fields
|
|
287
387
|
fields.extend(["DTOE","HLID","Comments"])
|
|
288
388
|
fields=[i for i in HealthLog.__table__.columns if str(i.name) in fields]
|
|
289
389
|
not_none=[i for i in HealthLog.__table__.columns if str(i.name) in not_none]
|
|
@@ -300,8 +400,8 @@ class HealthLogUi:
|
|
|
300
400
|
|
|
301
401
|
if graph_it:
|
|
302
402
|
includes=["int","integer","float","decimal"]
|
|
303
|
-
excludes=["HLID"]
|
|
304
|
-
fields_for_total=[
|
|
403
|
+
excludes=["HLID","EntryId"]
|
|
404
|
+
fields_for_total=[i.name for i in HealthLog.__table__.columns if i.name in gf and str(i.type).lower() in includes and i.name not in excludes]
|
|
305
405
|
print(fields_for_total)
|
|
306
406
|
x=self.GraphIt(results,session,fields_for_total)
|
|
307
407
|
if x is None:
|
|
Binary file
|
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
from . import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class PhoneBookUi:
|
|
5
|
+
|
|
6
|
+
def create_new_rcp(self):
|
|
7
|
+
with Session(ENGINE) as session:
|
|
8
|
+
uid=uuid1()
|
|
9
|
+
uid=str(uid)
|
|
10
|
+
phonebook=PhoneBook()
|
|
11
|
+
session.add(phonebook)
|
|
12
|
+
session.commit()
|
|
13
|
+
excludes=['pbid','DTOE']
|
|
14
|
+
instructions={i.name:{'default':getattr(phonebook,i.name),'type':str(i.type).lower()} for i in PhoneBook.__table__.columns if i.name not in excludes}
|
|
15
|
+
fdi=FormBuilder(data=instructions)
|
|
16
|
+
if fdi is None:
|
|
17
|
+
print("User Quit Early, so all work has been deleted!")
|
|
18
|
+
r=session.delete(phonebook)
|
|
19
|
+
session.commit()
|
|
20
|
+
else:
|
|
21
|
+
session.query(PhoneBook).filter(PhoneBook.pbid==phonebook.pbid).update(fdi)
|
|
22
|
+
session.commit()
|
|
23
|
+
|
|
24
|
+
results=session.query(PhoneBook).filter(PhoneBook.pbid==phonebook.pbid)
|
|
25
|
+
results=orderQuery(results,PhoneBook.DTOE,inverse=True)
|
|
26
|
+
results=results.all()
|
|
27
|
+
ctt=len(results)
|
|
28
|
+
for num,i in enumerate(results):
|
|
29
|
+
msg=std_colorize(i,num,ctt)
|
|
30
|
+
print(msg)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def fix_table(self):
|
|
34
|
+
PhoneBook.__table__.drop(ENGINE)
|
|
35
|
+
PhoneBook.metadata.create_all(ENGINE)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def rm_rcp(self):
|
|
39
|
+
with Session(ENGINE) as session:
|
|
40
|
+
rcp=self.ls_rcp_names(asSelector=True,whole=True,names=True,grouped=True)
|
|
41
|
+
if rcp is None:
|
|
42
|
+
print("User returned, or no results!")
|
|
43
|
+
return
|
|
44
|
+
ct=len(rcp[0])
|
|
45
|
+
htext=[]
|
|
46
|
+
for i in rcp[0]:
|
|
47
|
+
htext.append(i)
|
|
48
|
+
htext='\n'.join(htext)
|
|
49
|
+
print(htext)
|
|
50
|
+
which=Prompt.__init2__(self,func=FormBuilderMkText,ptext="which index",helpText=f"{htext}\nindex of rcp to delete",data="integer")
|
|
51
|
+
if which in [None,'d']:
|
|
52
|
+
return
|
|
53
|
+
try:
|
|
54
|
+
query_2=session.query(PhoneBook).filter(PhoneBook.phone_uid==rcp[-1][which].phone_uid).delete()
|
|
55
|
+
session.commit()
|
|
56
|
+
print("Done Deleting!")
|
|
57
|
+
except Exception as e:
|
|
58
|
+
print(e)
|
|
59
|
+
#delete everything found by searchtext using recipe_uid as the final selection parameter
|
|
60
|
+
|
|
61
|
+
def edit_rcp(self):
|
|
62
|
+
with Session(ENGINE) as session:
|
|
63
|
+
rcp=self.ls_rcp_names(asSelector=True,whole=True,names=True)
|
|
64
|
+
if rcp is None:
|
|
65
|
+
print("User returned, or no results!")
|
|
66
|
+
return
|
|
67
|
+
ct=len(rcp[0])
|
|
68
|
+
htext=[]
|
|
69
|
+
for i in rcp[0]:
|
|
70
|
+
htext.append(i)
|
|
71
|
+
htext='\n'.join(htext)
|
|
72
|
+
print(htext)
|
|
73
|
+
whiches=Prompt.__init2__(self,func=FormBuilderMkText,ptext="which index",helpText=f"{htext}\nindex of contact to edit",data="list")
|
|
74
|
+
if whiches in [None,'d']:
|
|
75
|
+
return
|
|
76
|
+
for which in whiches:
|
|
77
|
+
try:
|
|
78
|
+
which=int(which)
|
|
79
|
+
query_2=session.query(PhoneBook).filter(PhoneBook.pbid==rcp[-1][which].pbid).first()
|
|
80
|
+
fields={
|
|
81
|
+
'phone_name':{'default':getattr(query_2,'phone_name'),'type':"string"},
|
|
82
|
+
'phone_uid':{'default':getattr(query_2,'phone_uid'),'type':"string"},
|
|
83
|
+
}
|
|
84
|
+
fd=FormBuilder(data=fields)
|
|
85
|
+
if fd is not None:
|
|
86
|
+
r=session.query(PhoneBook).filter(PhoneBook.pbid==query_2.pbid)
|
|
87
|
+
r.update(fd)
|
|
88
|
+
session.commit()
|
|
89
|
+
print("Done Editing!")
|
|
90
|
+
except Exception as e:
|
|
91
|
+
print(e)
|
|
92
|
+
#edit everything found by searchtext using recipe_uid as the final selection parameter
|
|
93
|
+
|
|
94
|
+
def rm_ingredient(self):
|
|
95
|
+
with Session(ENGINE) as session:
|
|
96
|
+
rcp=self.ls_rcp_names(asSelector=True,whole=True,names=True)
|
|
97
|
+
if rcp is None:
|
|
98
|
+
print("User returned, or no results!")
|
|
99
|
+
return
|
|
100
|
+
ct=len(rcp[0])
|
|
101
|
+
htext=[]
|
|
102
|
+
for i in rcp[0]:
|
|
103
|
+
htext.append(i)
|
|
104
|
+
htext='\n'.join(htext)
|
|
105
|
+
print(htext)
|
|
106
|
+
whiches=Prompt.__init2__(self,func=FormBuilderMkText,ptext="which index",helpText=f"{htext}\nindex of contact to delete ",data="list")
|
|
107
|
+
if whiches in [None,'d']:
|
|
108
|
+
return
|
|
109
|
+
for which in whiches:
|
|
110
|
+
try:
|
|
111
|
+
which=int(which)
|
|
112
|
+
query_2=session.query(PhoneBook).filter(PhoneBook.pbid==rcp[-1][which].pbid)
|
|
113
|
+
ordered_2=orderQuery(query_2,PhoneBook.DTOE)
|
|
114
|
+
results_2=ordered_2.all()
|
|
115
|
+
ct=len(results_2)
|
|
116
|
+
for num,i in enumerate(results_2):
|
|
117
|
+
print(std_colorize(i,num,ct))
|
|
118
|
+
delete=Prompt.__init2__(self,func=FormBuilderMkText,ptext="Delete[default=False]?",helpText="delete it, yes or no?",data="boolean")
|
|
119
|
+
if delete in [None,]:
|
|
120
|
+
return
|
|
121
|
+
elif delete in ['d',]:
|
|
122
|
+
continue
|
|
123
|
+
elif delete == True:
|
|
124
|
+
session.delete(i)
|
|
125
|
+
session.commit()
|
|
126
|
+
except Exception as e:
|
|
127
|
+
print(e)
|
|
128
|
+
#find a recipe, list its ingredients, select ingredients to delete, delete selected ingredients
|
|
129
|
+
|
|
130
|
+
#asSelector==False,whole==True,names==False - print selector_string_whole
|
|
131
|
+
#asSelector==False,whole==False,names==True - print selector_string_names
|
|
132
|
+
#asSelector==False,whole==True,names==True - print selector_string_whole,selector_string_names
|
|
133
|
+
#asSelector==True,whole==True,names==False - return selector_string_whole,selector_list
|
|
134
|
+
#asSelector==True,whole==False,names==True - return selector_string_names,selector_list
|
|
135
|
+
#asSelector==True,whole==True,names==True - return selector_string_names,selector_string_whole,selector_list
|
|
136
|
+
def ls_rcp_names(self,asSelector=False,whole=False,names=False,grouped=False):
|
|
137
|
+
with Session(ENGINE) as session:
|
|
138
|
+
selector_list=[]
|
|
139
|
+
selector_string_names=[]
|
|
140
|
+
selector_string_whole=[]
|
|
141
|
+
|
|
142
|
+
searchText=Prompt.__init2__(None,func=FormBuilderMkText,ptext="What are you looking for?",helpText="text to search for",data="string")
|
|
143
|
+
if searchText is None:
|
|
144
|
+
return
|
|
145
|
+
includes=["string","varchar","text"]
|
|
146
|
+
excludes=['pbid','DTOE']
|
|
147
|
+
fields=[i.name for i in PhoneBook.__table__.columns if str(i.name) not in excludes and str(i.type).lower() in includes]
|
|
148
|
+
q=[]
|
|
149
|
+
|
|
150
|
+
if searchText not in ['','d','all','*']:
|
|
151
|
+
for i in fields:
|
|
152
|
+
q.append(getattr(PhoneBook,i).icontains(searchText))
|
|
153
|
+
query=session.query(PhoneBook).filter(or_(*q))
|
|
154
|
+
else:
|
|
155
|
+
query=session.query(PhoneBook)
|
|
156
|
+
if grouped:
|
|
157
|
+
query=query.group_by(PhoneBook.phone_uid,PhoneBook.phone_name)
|
|
158
|
+
ordered=orderQuery(query,PhoneBook.DTOE,inverse=True)
|
|
159
|
+
|
|
160
|
+
results=ordered.all()
|
|
161
|
+
ct=len(results)
|
|
162
|
+
if ct <= 0:
|
|
163
|
+
print("No Results")
|
|
164
|
+
return None
|
|
165
|
+
for num,i in enumerate(results):
|
|
166
|
+
selector_list.append(i)
|
|
167
|
+
selector_string_whole.append(std_colorize(i,num,ct))
|
|
168
|
+
msg=[]
|
|
169
|
+
other_excludes=[None,'','N/A',' ','0','-1']
|
|
170
|
+
f=[ii.name for ii in PhoneBook.__table__.columns if ii.name not in excludes and str(ii.type).lower() in includes and getattr(i,ii.name) not in other_excludes]
|
|
171
|
+
for ff in f:
|
|
172
|
+
x=f"{Fore.light_sea_green}{ff}{Fore.light_steel_blue}={Fore.orange_red_1}{getattr(i,ff)}{Style.reset}"
|
|
173
|
+
msg.append(x)
|
|
174
|
+
msg='|'.join(msg)
|
|
175
|
+
selector_string_names.append(std_colorize(msg,num,ct))
|
|
176
|
+
#selector_string_names.append(std_colorize(f"[PN]{i.phone_name}[PUID]{i.phone_uid}|[NPN]{i.non_personnel_name}|[LN]{i.lastName},[MN]{i.middleName},[FN]{i.firstName}|",num,ct))
|
|
177
|
+
if not asSelector:
|
|
178
|
+
if whole:
|
|
179
|
+
print(selector_string_whole[num])
|
|
180
|
+
if names:
|
|
181
|
+
print(selector_string_names[num])
|
|
182
|
+
if asSelector:
|
|
183
|
+
if whole and not names:
|
|
184
|
+
return selector_string_whole,selector_list
|
|
185
|
+
elif names and not whole:
|
|
186
|
+
return selector_string_names,selector_list
|
|
187
|
+
elif names and whole:
|
|
188
|
+
return selector_string_names,selector_string_whole,selector_list
|
|
189
|
+
'''
|
|
190
|
+
def list_groups(self):
|
|
191
|
+
with Session(ENGINE) as session:
|
|
192
|
+
rcp=self.ls_rcp_names(asSelector=True,whole=True,names=True,grouped=True)
|
|
193
|
+
if rcp is None:
|
|
194
|
+
print("User returned, or no results!")
|
|
195
|
+
return
|
|
196
|
+
ct=len(rcp[0])
|
|
197
|
+
htext=[]
|
|
198
|
+
for i in rcp[0]:
|
|
199
|
+
htext.append(i)
|
|
200
|
+
htext='\n'.join(htext)
|
|
201
|
+
print(htext)
|
|
202
|
+
whiches=Prompt.__init2__(self,func=FormBuilderMkText,ptext="which index",helpText=f"{htext}\nindex of contact uid to view its grouped",data="list")
|
|
203
|
+
if whiches in [None,'d']:
|
|
204
|
+
return
|
|
205
|
+
for which in whiches:
|
|
206
|
+
try:
|
|
207
|
+
which=int(which)
|
|
208
|
+
query_2=session.query(PhoneBook).filter(PhoneBook.phone_uid==rcp[-1][which].phone_uid)
|
|
209
|
+
ordered_2=orderQuery(query_2,PhoneBook.DTOE)
|
|
210
|
+
results_2=ordered_2.all()
|
|
211
|
+
ct=len(results_2)
|
|
212
|
+
for num,i in enumerate(results_2):
|
|
213
|
+
print(std_colorize(i,num,ct))
|
|
214
|
+
except Exception as e:
|
|
215
|
+
print(e)
|
|
216
|
+
'''
|
|
217
|
+
def list_contacts(self):
|
|
218
|
+
with Session(ENGINE) as session:
|
|
219
|
+
rcp=self.ls_rcp_names(asSelector=True,whole=True,names=True)
|
|
220
|
+
if rcp is None:
|
|
221
|
+
print("User returned, or no results!")
|
|
222
|
+
return
|
|
223
|
+
ct=len(rcp[0])
|
|
224
|
+
htext=[]
|
|
225
|
+
for i in rcp[0]:
|
|
226
|
+
htext.append(i)
|
|
227
|
+
htext='\n'.join(htext)
|
|
228
|
+
print(htext)
|
|
229
|
+
whiches=Prompt.__init2__(self,func=FormBuilderMkText,ptext="which index",helpText=f"{htext}\nindex of phonebook.pbid to view its content",data="list")
|
|
230
|
+
if whiches in [None,'d']:
|
|
231
|
+
return
|
|
232
|
+
for which in whiches:
|
|
233
|
+
try:
|
|
234
|
+
which=int(which)
|
|
235
|
+
query_2=session.query(PhoneBook).filter(PhoneBook.pbid==rcp[-1][which].pbid)
|
|
236
|
+
ordered_2=orderQuery(query_2,PhoneBook.DTOE)
|
|
237
|
+
results_2=ordered_2.all()
|
|
238
|
+
ct=len(results_2)
|
|
239
|
+
for num,i in enumerate(results_2):
|
|
240
|
+
print(std_colorize(i,num,ct))
|
|
241
|
+
except Exception as e:
|
|
242
|
+
print(e)
|
|
243
|
+
|
|
244
|
+
def ls_rcp_ingredients(self):
|
|
245
|
+
with Session(ENGINE) as session:
|
|
246
|
+
rcp=self.ls_rcp_names(asSelector=True,whole=True,names=True,grouped=True)
|
|
247
|
+
if rcp is None:
|
|
248
|
+
print("User returned, or no results!")
|
|
249
|
+
return
|
|
250
|
+
else:
|
|
251
|
+
print('next_state')
|
|
252
|
+
try:
|
|
253
|
+
query_2=session.query(PhoneBook).filter(PhoneBook.phone_uid==rcp[-1][0].phone_uid)
|
|
254
|
+
ordered_2=orderQuery(query_2,PhoneBook.DTOE)
|
|
255
|
+
results_2=ordered_2.all()
|
|
256
|
+
ct=len(results_2)
|
|
257
|
+
for num,i in enumerate(results_2):
|
|
258
|
+
print(std_colorize(i,num,ct))
|
|
259
|
+
except Exception as e:
|
|
260
|
+
print(e)
|
|
261
|
+
|
|
262
|
+
def edit_rcp_ingredients(self):
|
|
263
|
+
with Session(ENGINE) as session:
|
|
264
|
+
rcp=self.ls_rcp_names(asSelector=True,whole=True,names=True)
|
|
265
|
+
if rcp is None:
|
|
266
|
+
print("User returned, or no results!")
|
|
267
|
+
return
|
|
268
|
+
ct=len(rcp[0])
|
|
269
|
+
htext=[]
|
|
270
|
+
for i in rcp[0]:
|
|
271
|
+
htext.append(i)
|
|
272
|
+
htext='\n'.join(htext)
|
|
273
|
+
print(htext)
|
|
274
|
+
whiches=Prompt.__init2__(self,func=FormBuilderMkText,ptext="which index",helpText=f"{htext}\nindex of rcp to view its ingredients",data="list")
|
|
275
|
+
if whiches in [None,'d']:
|
|
276
|
+
return
|
|
277
|
+
for which in whiches:
|
|
278
|
+
try:
|
|
279
|
+
which=int(which)
|
|
280
|
+
query_2=session.query(PhoneBook).filter(PhoneBook.pbid==rcp[-1][which].pbid)
|
|
281
|
+
ordered_2=orderQuery(query_2,PhoneBook.DTOE)
|
|
282
|
+
results_2=ordered_2.all()
|
|
283
|
+
ct=len(results_2)
|
|
284
|
+
for num,i in enumerate(results_2):
|
|
285
|
+
print(std_colorize(i,num,ct))
|
|
286
|
+
edit=Prompt.__init2__(self,func=FormBuilderMkText,ptext="Edit[default=False]?",helpText="Edit it, yes or no?",data="boolean")
|
|
287
|
+
if edit in [None,]:
|
|
288
|
+
return
|
|
289
|
+
elif edit in ['d',]:
|
|
290
|
+
continue
|
|
291
|
+
elif edit == True:
|
|
292
|
+
excludes=['pbid','phone_uid','phone_name','DTOE']
|
|
293
|
+
fields={ii.name:{'default':getattr(i,ii.name),'type':str(ii.type).lower()} for ii in PhoneBook.__table__.columns if ii.name not in excludes}
|
|
294
|
+
fd=FormBuilder(data=fields)
|
|
295
|
+
if fd is not None:
|
|
296
|
+
for k in fd:
|
|
297
|
+
setattr(i,k,fd[k])
|
|
298
|
+
session.commit()
|
|
299
|
+
else:
|
|
300
|
+
continue
|
|
301
|
+
except Exception as e:
|
|
302
|
+
print(e)
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
def __init__(self):
|
|
306
|
+
cmds={
|
|
307
|
+
str(uuid1()):{
|
|
308
|
+
'cmds':generate_cmds(startcmd=['create new','cn','cnw'],endCmd=['contact','cnct','c']),
|
|
309
|
+
'desc':"create a new contact",
|
|
310
|
+
'exec':self.create_new_rcp,
|
|
311
|
+
},
|
|
312
|
+
uuid1():{
|
|
313
|
+
'cmds':generate_cmds(startcmd=['fix','fx'],endCmd=['tbl','table']),
|
|
314
|
+
'desc':"reinstall table",
|
|
315
|
+
'exec':self.fix_table,
|
|
316
|
+
},
|
|
317
|
+
uuid1():{
|
|
318
|
+
'cmds':generate_cmds(startcmd=['rm','del','remove','delete'],endCmd=['grps','groups','g']),
|
|
319
|
+
'desc':"delete a group of contacts by uid(delete everything found by searchtext using recipe_uid as the final selection parameter)",
|
|
320
|
+
'exec':self.rm_rcp,
|
|
321
|
+
},
|
|
322
|
+
uuid1():{
|
|
323
|
+
'cmds':generate_cmds(startcmd=['rm','del','remove','delete'],endCmd=['contact','cnct','c']),
|
|
324
|
+
'desc':"delete a contact(find a recipe, list its ingredients, select ingredients to delete, delete selected ingredients)",
|
|
325
|
+
'exec':self.rm_ingredient,
|
|
326
|
+
},
|
|
327
|
+
uuid1():{
|
|
328
|
+
'cmds':generate_cmds(startcmd=['ls','list','lst'],endCmd=['grps','groups','g']),
|
|
329
|
+
'desc':"list contacts grouped by uid or basically list of groups",
|
|
330
|
+
'exec':lambda self=self:self.ls_rcp_names(asSelector=False,whole=False,names=True,grouped=True),
|
|
331
|
+
},
|
|
332
|
+
uuid1():{
|
|
333
|
+
'cmds':generate_cmds(startcmd=['ls','list','lst'],endCmd=['groups','grps','g']),
|
|
334
|
+
'desc':"list contacts in a group",
|
|
335
|
+
'exec':lambda self=self:self.ls_rcp_ingredients(),
|
|
336
|
+
},
|
|
337
|
+
uuid1():{
|
|
338
|
+
'cmds':generate_cmds(startcmd=['ls','list','lst'],endCmd=['contact','cnct','c']),
|
|
339
|
+
'desc':"list contacts from search without group by phone_uid",
|
|
340
|
+
'exec':lambda self=self:self.list_contacts(),
|
|
341
|
+
},
|
|
342
|
+
uuid1():{
|
|
343
|
+
'cmds':generate_cmds(startcmd=['ed','edt','edit'],endCmd=['contact','cnct','c']),
|
|
344
|
+
'desc':"edit phone contact",
|
|
345
|
+
'exec':lambda self=self:self.edit_rcp_ingredients(),
|
|
346
|
+
},
|
|
347
|
+
uuid1():{
|
|
348
|
+
'cmds':generate_cmds(startcmd=['ed','edt','edit'],endCmd=['grps','groups','g']),
|
|
349
|
+
'desc':"edit phone name and phone uid",
|
|
350
|
+
'exec':lambda self=self:self.edit_rcp(),
|
|
351
|
+
},
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
htext=[]
|
|
355
|
+
ct=len(cmds)
|
|
356
|
+
for num,i in enumerate(cmds):
|
|
357
|
+
m=f"{Fore.light_sea_green}{cmds[i]['cmds']}{Fore.orange_red_1} - {Fore.light_steel_blue}{cmds[i]['desc']}"
|
|
358
|
+
msg=f"{std_colorize(m,num,ct)}"
|
|
359
|
+
htext.append(msg)
|
|
360
|
+
htext='\n'.join(htext)
|
|
361
|
+
while True:
|
|
362
|
+
doWhat=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"{self.__class__.__name__} @ Do What? ",helpText=htext,data="string")
|
|
363
|
+
if doWhat is None:
|
|
364
|
+
return
|
|
365
|
+
elif doWhat in ['','d',]:
|
|
366
|
+
print(htext)
|
|
367
|
+
continue
|
|
368
|
+
for i in cmds:
|
|
369
|
+
if doWhat.lower() in [i.lower() for i in cmds[i]['cmds']]:
|
|
370
|
+
if callable(cmds[i]['exec']):
|
|
371
|
+
cmds[i]['exec']()
|
|
372
|
+
break
|
|
373
|
+
else:
|
|
374
|
+
print(f"{i} - {cmds[i]['cmds']} - {cmds[i]['exec']}() - {cmds[i]['desc']}")
|
|
375
|
+
return
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
from radboy.DB.db import *
|
|
2
|
+
#from radboy.DB.RandomStringUtil import *
|
|
3
|
+
#import radboy.Unified.Unified as unified
|
|
4
|
+
#import radboy.possibleCode as pc
|
|
5
|
+
from radboy.DB.Prompt import *
|
|
6
|
+
from radboy.DB.Prompt import prefix_text
|
|
7
|
+
#from radboy.TasksMode.ReFormula import *
|
|
8
|
+
#from radboy.TasksMode.SetEntryNEU import *
|
|
9
|
+
from radboy.FB.FormBuilder import *
|
|
10
|
+
from radboy.FB.FBMTXT import *
|
|
11
|
+
#from radboy.RNE.RNE import *
|
|
12
|
+
#from radboy.Lookup2.Lookup2 import Lookup as Lookup2
|
|
13
|
+
#from radboy.DayLog.DayLogger import *
|
|
14
|
+
#from radboy.DB.masterLookup import *
|
|
15
|
+
from collections import namedtuple,OrderedDict
|
|
16
|
+
import nanoid,qrcode,io
|
|
17
|
+
#from password_generator import PasswordGenerator
|
|
18
|
+
import random
|
|
19
|
+
from pint import UnitRegistry
|
|
20
|
+
import pandas as pd
|
|
21
|
+
import numpy as np
|
|
22
|
+
from datetime import *
|
|
23
|
+
from colored import Style,Fore
|
|
24
|
+
import json,sys,math,re,calendar,hashlib,haversine
|
|
25
|
+
from time import sleep
|
|
26
|
+
import itertools
|
|
27
|
+
from uuid import uuid1
|
|
28
|
+
|
|
29
|
+
from .PhoneBook import *
|
radboy/TasksMode/Tasks.py
CHANGED
|
@@ -40,6 +40,7 @@ from radboy.GDOWN.GDOWN import *
|
|
|
40
40
|
from radboy.Unified.clearalll import clear_all
|
|
41
41
|
from radboy.RepeatableDates import *
|
|
42
42
|
from radboy.CookBook import *
|
|
43
|
+
from radboy.PhoneBook import *
|
|
43
44
|
|
|
44
45
|
def today():
|
|
45
46
|
dt=datetime.now()
|
|
@@ -295,6 +296,9 @@ class TasksMode:
|
|
|
295
296
|
def cookbook(self):
|
|
296
297
|
CookBookUi()
|
|
297
298
|
|
|
299
|
+
def phonebook(self):
|
|
300
|
+
PhoneBookUi()
|
|
301
|
+
|
|
298
302
|
def process_cmd(self,buffer):
|
|
299
303
|
''
|
|
300
304
|
data=OrderedDict()
|
|
@@ -4763,6 +4767,12 @@ where:
|
|
|
4763
4767
|
'exec':lambda self=self: print(self.cookbook()),
|
|
4764
4768
|
}
|
|
4765
4769
|
count+=1
|
|
4770
|
+
self.options[str(uuid1())]={
|
|
4771
|
+
'cmds':["#"+str(count),*[i for i in generate_cmds(startcmd=["phonebook","phnbk"],endCmd=["",])]],
|
|
4772
|
+
'desc':f"phonebook",
|
|
4773
|
+
'exec':lambda self=self: print(self.phonebook()),
|
|
4774
|
+
}
|
|
4775
|
+
count+=1
|
|
4766
4776
|
self.options[str(uuid1())]={
|
|
4767
4777
|
'cmds':["#"+str(count),*[i for i in generate_cmds(startcmd=["loads2","lds2"],endCmd=["",])]],
|
|
4768
4778
|
'desc':f"dates that repeat weekly, or upcoming dates that are important",
|
|
Binary file
|
radboy/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
VERSION='0.0.
|
|
1
|
+
VERSION='0.0.455'
|
|
Binary file
|
radboy/code.png
CHANGED
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: radboy
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.455
|
|
4
4
|
Summary: A small example package
|
|
5
5
|
Author: Carl Joseph Hirner III
|
|
6
6
|
Author-email: Carl Hirner III <k.j.hirner.wisdom@gmail.com>
|
|
@@ -43,6 +43,7 @@ Requires-Dist: beautifulsoup4
|
|
|
43
43
|
Requires-Dist: pycryptodome
|
|
44
44
|
Requires-Dist: forecast_weather
|
|
45
45
|
Requires-Dist: boozelib
|
|
46
|
+
Requires-Dist: pint_pandas
|
|
46
47
|
Dynamic: author
|
|
47
48
|
Dynamic: requires-python
|
|
48
49
|
|
|
@@ -5,12 +5,12 @@ radboy/Holidays.txt,sha256=y-JZPihh5iaWKxMIHNXD39yVuVmf1vMs4FdNDcg0f1Y,3114
|
|
|
5
5
|
radboy/InventoryGlossary.txt,sha256=018-Yqca6DFb10jPdkUY-5qhkRlQN1k3rxoTaERQ-LA,91008
|
|
6
6
|
radboy/RecordMyCodes.py,sha256=dOm24buf-rWC4FGLQLDjL5obdxOKF3D01t6Qkkit-R0,41421
|
|
7
7
|
radboy/Run.py,sha256=JUoCTHnzQBv7n8PB2_i93ANdAC_iW__RkAge8esCnk4,76
|
|
8
|
-
radboy/__init__.py,sha256=
|
|
8
|
+
radboy/__init__.py,sha256=umGfShdv3Gsnqw1ZszLIVKwO0cDVEKmCD2A5zh-GzP4,17
|
|
9
9
|
radboy/api_key,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
10
|
radboy/case-export-2024-05-14-13-10-00.672971.xlsx,sha256=Wd592d_VLFmfUI9KKKSVjNwjV91euc1T7ATyvwvUhlg,5431
|
|
11
11
|
radboy/case-export-2024-05-14-13-13-22.540614.xlsx,sha256=OnGrhmScHfGp_mVaWW-LNMsqrQgyZDpiU3wV-2s3U5Q,5556
|
|
12
12
|
radboy/changelog.txt,sha256=_73e-OcHDecsK-eHEE45T84zHbUZ8Io3FzvLNwHPdoY,3714
|
|
13
|
-
radboy/code.png,sha256=
|
|
13
|
+
radboy/code.png,sha256=YKN-2pqd2YzmW1I4CJzQYissselOYGZDWZ6M-j051pI,663
|
|
14
14
|
radboy/db.csv,sha256=hpecu18LtCow5fH01queqWgqPByR628K7pLuEuLSuj4,19
|
|
15
15
|
radboy/dictionary.txt,sha256=EJlEazI8RfTDX_Uzd6xnXLm9IjU5AEq6HVDwi42Y4_4,195680
|
|
16
16
|
radboy/export.csv,sha256=YIU8c34enlknKMzKwzfQEN8e0mUdyW8m6O8GvgUQ9do,41015
|
|
@@ -85,14 +85,14 @@ radboy/DB/ExerciseTracker.py,sha256=CZ8jdKJiAE_QTAiJTRXi8ZOnS1NUiSvWVSKLHLpYVGk,
|
|
|
85
85
|
radboy/DB/PayDay.py,sha256=H2kPGvBCDkMOz7lbxQhYtUt_oAInpxi37Q6MFrah98I,8710
|
|
86
86
|
radboy/DB/PayModels.py,sha256=hjwWxP7PL33hmfzQl5YTf0HqzaMxXJxFknPdxFJXJc8,3499
|
|
87
87
|
radboy/DB/PrintLogging.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
88
|
-
radboy/DB/Prompt.py,sha256=
|
|
88
|
+
radboy/DB/Prompt.py,sha256=EPyB9WYfwRrgzJe6cO7whncKUvAnel7yooGLNp_q8F8,140177
|
|
89
89
|
radboy/DB/RandomStringUtil.py,sha256=eZCpR907WStgfbk4Evcghjv9hOkUDXH-iMXIq0-kXq8,24386
|
|
90
90
|
radboy/DB/ResetTools.py,sha256=RbI-Ua7UlsN0S9qLqtEkTWvzyTZ6R-hHR3CW4NHlUPE,6660
|
|
91
91
|
radboy/DB/SMLabelImporter.py,sha256=eUoBDxVUUEKGL2g_PwkASM67ZB7FmXtSnn4bCagskhY,4013
|
|
92
92
|
radboy/DB/__init__.py,sha256=JiigA9B7GalP7YuRdcwyGDu5PDSBahoi0lLjtScxlN8,49
|
|
93
93
|
radboy/DB/blankDataFile.py,sha256=YX_05Usi71UpDkZN9UTMYwUipbTndTAtEgqzBEga0kE,9285
|
|
94
94
|
radboy/DB/config.py,sha256=bvu43dUl1_yO3Zq3gsLuenGUgJSiS3S9Cs6ppFEvZbg,239
|
|
95
|
-
radboy/DB/db.py,sha256=
|
|
95
|
+
radboy/DB/db.py,sha256=221N6a3G-2iL0pQ75sjbWZVL_fiGvDVrlAkyMg0U8j0,242258
|
|
96
96
|
radboy/DB/glossary_db.py,sha256=1_qxeEpjjEtpWB_eDjsgJisimLv7OBm75MuqM-Lt6zg,28218
|
|
97
97
|
radboy/DB/masterLookup.py,sha256=DBaM2uscG3_X5dek49wjdnOzhrjWhKgvOEz_umdz0mY,4566
|
|
98
98
|
radboy/DB/msg.txt,sha256=YxWed6A6tuP1djJ5QPS2Rz3ING4TKKf8kUiCCPtzHXE,7937
|
|
@@ -109,7 +109,7 @@ radboy/DB/__pycache__/FormBuilder.cpython-312.pyc,sha256=p1o-5SMRL8OXP_XQ5liUpf-
|
|
|
109
109
|
radboy/DB/__pycache__/PrintLogging.cpython-312.pyc,sha256=pIAFqTi6OiQQORSc-oMH1zAbsdH7sY1TifxrN_QOvnU,148
|
|
110
110
|
radboy/DB/__pycache__/Prompt.cpython-311.pyc,sha256=P2uPRpeqfLFtxieZ0JHBG3X_HZzWUCsFSLb_fpRqky0,6407
|
|
111
111
|
radboy/DB/__pycache__/Prompt.cpython-312.pyc,sha256=6CcQ1gE2hcz3cKPjo4f6d7xNM2PTDnl8NzQG0Pme5BE,142886
|
|
112
|
-
radboy/DB/__pycache__/Prompt.cpython-313.pyc,sha256=
|
|
112
|
+
radboy/DB/__pycache__/Prompt.cpython-313.pyc,sha256=ugSoQiDwP_6OiaCsa4v09WsxYUjCbIvRxpJjYK6OogY,215661
|
|
113
113
|
radboy/DB/__pycache__/RandomStringUtil.cpython-312.pyc,sha256=TrbEY89MuLmNlvoo5d8vOE6Dyshh5_EMlTZvk8MDVN4,48597
|
|
114
114
|
radboy/DB/__pycache__/RandomStringUtil.cpython-313.pyc,sha256=MCcgVwV2Y-9rAY2FVaJZCKcou3HDX70EZudoiCigT0o,49217
|
|
115
115
|
radboy/DB/__pycache__/ResetTools.cpython-311.pyc,sha256=4Vyc57iAAF0yRPjjglnVKovnTn8OoFIi6Zok3Wpj_YM,9292
|
|
@@ -127,7 +127,7 @@ radboy/DB/__pycache__/config.cpython-312.pyc,sha256=Qo7E6MHrF6yqvKgepNFyCoekZXiv
|
|
|
127
127
|
radboy/DB/__pycache__/config.cpython-313.pyc,sha256=_8wCIg_3jhyJjxnExD2Sm6aY-uZTw036p7Ki5znL7dc,376
|
|
128
128
|
radboy/DB/__pycache__/db.cpython-311.pyc,sha256=rNgigyBd0D-cg1JxKAS8t0B_k0IEJivgVlRaZE10Xis,210105
|
|
129
129
|
radboy/DB/__pycache__/db.cpython-312.pyc,sha256=ANDJPC0RoavbmSKFxG15vC7B4rEGyVt7xRJt7XGY3OA,334609
|
|
130
|
-
radboy/DB/__pycache__/db.cpython-313.pyc,sha256=
|
|
130
|
+
radboy/DB/__pycache__/db.cpython-313.pyc,sha256=ALOjlGb7v1Us7y1mXGJAWjY0OTm38h8cVpFm_brqB_o,381725
|
|
131
131
|
radboy/DB/__pycache__/glossary_db.cpython-312.pyc,sha256=8UL-29cKqtKovx0BANm6kzKKteef1BW_2qF3wumzst4,36023
|
|
132
132
|
radboy/DB/__pycache__/glossary_db.cpython-313.pyc,sha256=Ke9bkvllGv5CK0JdT9DRvQ3MOdrXxoYv7TVLNkqLux0,36582
|
|
133
133
|
radboy/DB/__pycache__/masterLookup.cpython-312.pyc,sha256=bQiOkmMwwHgcO18tYSWGQ-YUff4GQlKVhBMp1GoWAqY,6324
|
|
@@ -210,10 +210,10 @@ radboy/GeoTools/__pycache__/GeoClass.cpython-313.pyc,sha256=eZ6hpLKoic1XCb7BKKg-
|
|
|
210
210
|
radboy/GeoTools/__pycache__/OSMClass.cpython-312.pyc,sha256=5RoT8_wiI8R7yb_B9FWIC7mALdGNoqyWtkzsjM2pbh0,40387
|
|
211
211
|
radboy/GeoTools/__pycache__/__init__.cpython-312.pyc,sha256=Y7Xtrzwm44-xuY_4NK8aDjYfVmXIzUFWOyexJu9le8A,1238
|
|
212
212
|
radboy/GeoTools/__pycache__/__init__.cpython-313.pyc,sha256=-bk9eEIxWZgHYZHtNJbrpubDRWkbdYNkGr5J7sVhyIE,1238
|
|
213
|
-
radboy/HealthLog/HealthLog.py,sha256=
|
|
213
|
+
radboy/HealthLog/HealthLog.py,sha256=kJq3AVcHdHXZ0U1FzRMK24VtxrOX1ttHGyG68XaN1_U,25276
|
|
214
214
|
radboy/HealthLog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
215
215
|
radboy/HealthLog/__pycache__/HealthLog.cpython-312.pyc,sha256=hTo4o7jo9L2yqPZgzuKUw_kon_PVcCuTRguELTuLrIo,27946
|
|
216
|
-
radboy/HealthLog/__pycache__/HealthLog.cpython-313.pyc,sha256=
|
|
216
|
+
radboy/HealthLog/__pycache__/HealthLog.cpython-313.pyc,sha256=09nBhRvpu-ePOL-z-1i_zEzG56DYVmLWacx37-I_IIs,40792
|
|
217
217
|
radboy/HealthLog/__pycache__/__init__.cpython-312.pyc,sha256=yZrYKBk31pGSjCRqmqzpX409iw-muC1zsNO2ObqkGlY,272
|
|
218
218
|
radboy/HealthLog/__pycache__/__init__.cpython-313.pyc,sha256=cqdZbEJKq9XVoVqDAwsW0pwwBBGSerJNWGlST3YVR3g,151
|
|
219
219
|
radboy/InListRestore/ILR.py,sha256=s8fbbHLKQSVJX1VaeyGE-vdIUGBEbOPX29kRIG2j2WY,16847
|
|
@@ -282,6 +282,8 @@ radboy/POS/__pycache__/POS.cpython-313.pyc,sha256=-es1vNYvFK6MXznK6FTNTcsdGZzpC6
|
|
|
282
282
|
radboy/POS/__pycache__/__init__.cpython-311.pyc,sha256=EjkCiNyf59_mmFLzbgGLqpStpeo9gi2dx8IZlhg_Qyg,228
|
|
283
283
|
radboy/POS/__pycache__/__init__.cpython-312.pyc,sha256=mpESqOMEmBPUkkkP2Sci7XPA3MSko8Qw-eMFB2854EE,266
|
|
284
284
|
radboy/POS/__pycache__/__init__.cpython-313.pyc,sha256=DR0_hbFS6FQFh6GWnXDs5bXThEqOZoNBwuzGOW_X9co,145
|
|
285
|
+
radboy/PhoneBook/PhoneBook.py,sha256=PmznDKAcLsIuzIpei1-1y9HeLieA-tdx5NewHhSnrac,13437
|
|
286
|
+
radboy/PhoneBook/__init__.py,sha256=ehY4XgI8wlGvgUugs1HHrMLSaGQi2ox9bGGDIJCq9_E,928
|
|
285
287
|
radboy/PunchCard/CalcTimePad.py,sha256=wpjHbGtqkhWgPABoR_wSwroP3-0o_TH2EKASKUPqsZg,4315
|
|
286
288
|
radboy/PunchCard/PunchCard.py,sha256=Y4hzx5lLFw-1yDyxJukt-Xb3_ADsF6wEmpW_egXGCDc,38123
|
|
287
289
|
radboy/PunchCard/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -338,7 +340,7 @@ radboy/SystemSettings/__pycache__/__init__.cpython-312.pyc,sha256=aIzp4Po0t8EhSA
|
|
|
338
340
|
radboy/SystemSettings/__pycache__/__init__.cpython-313.pyc,sha256=QFDuoidxMWsGVLsy5lN-rDs6TP8nKJ4yyCyiamNOhwo,156
|
|
339
341
|
radboy/TasksMode/ReFormula.py,sha256=REDRJYub-OEOE6g14oRQOLOQwv8pHqVJy4NQk3CCM90,2255
|
|
340
342
|
radboy/TasksMode/SetEntryNEU.py,sha256=TTzlAT5rNXvXUAy16BHBq0hJOKhONYpPhdAfQKdTfGw,17364
|
|
341
|
-
radboy/TasksMode/Tasks.py,sha256=
|
|
343
|
+
radboy/TasksMode/Tasks.py,sha256=rqmQT7LpDCYxSf9qpFLF3thLeiT00-AbxJJxtcbMVaQ,310876
|
|
342
344
|
radboy/TasksMode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
343
345
|
radboy/TasksMode/__pycache__/ReFormula.cpython-311.pyc,sha256=QEG3PwVw-8HTd_Mf9XbVcxU56F1fC9yBqWXYPLC39DU,4865
|
|
344
346
|
radboy/TasksMode/__pycache__/ReFormula.cpython-312.pyc,sha256=aX7BWm2PPjCTnxsbGUitR-2h9hq4AjaBiHMrUXvIl0Y,3967
|
|
@@ -347,7 +349,7 @@ radboy/TasksMode/__pycache__/SetEntryNEU.cpython-312.pyc,sha256=pCdFj61aPKkHL6Sv
|
|
|
347
349
|
radboy/TasksMode/__pycache__/SetEntryNEU.cpython-313.pyc,sha256=eSWkYvfm5RuRE5rbO5wI7XxzFyKnp6KlbphSqPAF2z4,20133
|
|
348
350
|
radboy/TasksMode/__pycache__/Tasks.cpython-311.pyc,sha256=6QOTJnLiXSKdF81hkhy3vyrz49PPhS20s5_0X52g3Hw,131120
|
|
349
351
|
radboy/TasksMode/__pycache__/Tasks.cpython-312.pyc,sha256=hyJwdaYaaRLdcrNxgg36diJ5iijX5_3I0UAORsj-6LU,310295
|
|
350
|
-
radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc,sha256=
|
|
352
|
+
radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc,sha256=ucTFrI002onaK0ve0J-QqcnpkTRgj-_zfkJ7fboAMCw,383368
|
|
351
353
|
radboy/TasksMode/__pycache__/__init__.cpython-311.pyc,sha256=PKV1JbihEacm639b53bZozRQvcllSkjGP3q8STVMxF4,234
|
|
352
354
|
radboy/TasksMode/__pycache__/__init__.cpython-312.pyc,sha256=ERgnEvRMiGSecWp1BpNzLdSq_SdKw7GvFWUvUM7bLVw,272
|
|
353
355
|
radboy/TasksMode/__pycache__/__init__.cpython-313.pyc,sha256=lvsTxukyvGKB3C0rdF9dQi_bvVh6ceDVINfwcuIsd0s,151
|
|
@@ -394,7 +396,7 @@ radboy/__pycache__/Run.cpython-311.pyc,sha256=G_UEfMtkLRjR6ZpGA_BJzGenuaCcP469Y9
|
|
|
394
396
|
radboy/__pycache__/Run.cpython-312.pyc,sha256=v4xolc3mHyla991XhpYBUbBHYT0bnJ1gE-lkFoQ4GFA,241
|
|
395
397
|
radboy/__pycache__/__init__.cpython-311.pyc,sha256=R-DVbUioMOW-Fnaq7FpT5F1a5p0q3b_RW-HpLRArCAY,242
|
|
396
398
|
radboy/__pycache__/__init__.cpython-312.pyc,sha256=FsFzLXOlTK8_7ixoPZzakkR8Wibt-DvXLFh-oG2QlPw,164
|
|
397
|
-
radboy/__pycache__/__init__.cpython-313.pyc,sha256=
|
|
399
|
+
radboy/__pycache__/__init__.cpython-313.pyc,sha256=BXtKAaaD8b5nIBA5vCcKIJ3_eopa56EAGAav2f9gmC4,165
|
|
398
400
|
radboy/__pycache__/__init__.cpython-39.pyc,sha256=D48T6x6FUeKPfubo0sdS_ZUut3FmBvPMP7qT6rYBZzU,275
|
|
399
401
|
radboy/__pycache__/possibleCode.cpython-311.pyc,sha256=zFiHyzqD8gUnIWu4vtyMYIBposiRQqaRXfcT_fOl4rU,20882
|
|
400
402
|
radboy/__pycache__/possibleCode.cpython-312.pyc,sha256=tk_CO-AcsO3YZj5j6vEsw3g37UmEzWc5YgeWEoJEUg4,27922
|
|
@@ -419,7 +421,7 @@ radboy/tkGui/Images/__pycache__/__init__.cpython-311.pyc,sha256=tXBYpqbOlZ24B1BI
|
|
|
419
421
|
radboy/tkGui/__pycache__/BeginnersLuck.cpython-311.pyc,sha256=xLQOnV1wuqHGaub16mPX0dDMGU9ryCeLtNz5e517_GE,3004
|
|
420
422
|
radboy/tkGui/__pycache__/Review.cpython-311.pyc,sha256=wKq24iM6Xe2OampgZ7-8U6Nvmgs2y-qWOrGwtWhc75k,4047
|
|
421
423
|
radboy/tkGui/__pycache__/__init__.cpython-311.pyc,sha256=BX7DBn5qbvKTvlrKOP5gzTBPBTeTgSMjBW6EMl7N8e0,230
|
|
422
|
-
radboy-0.0.
|
|
423
|
-
radboy-0.0.
|
|
424
|
-
radboy-0.0.
|
|
425
|
-
radboy-0.0.
|
|
424
|
+
radboy-0.0.455.dist-info/METADATA,sha256=2UAIiaJ5kk32VsRxRn3kiRqZg6wl02Mz5Noop3UceJg,1601
|
|
425
|
+
radboy-0.0.455.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
426
|
+
radboy-0.0.455.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
|
|
427
|
+
radboy-0.0.455.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|