radboy 0.0.377__py3-none-any.whl → 0.0.379__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/DatePicker.py CHANGED
@@ -8,7 +8,7 @@ from datetime import datetime,timedelta
8
8
  import pint
9
9
  from colored import Fore,Style
10
10
  from pathlib import Path
11
-
11
+ NOTINT=f"{Fore.light_red}Text provided is not an integer, attempting to evaluate it to one.{Style.reset}"
12
12
  def mkint(text,TYPE):
13
13
  try:
14
14
  if text.lower() in ['sun_we','sat_we','mon_ws','sun_ws','sat_ws','fri_we']:
@@ -22,25 +22,58 @@ def mkint(text,TYPE):
22
22
  elif text not in ['',]:
23
23
  drange=(0,calendar.monthrange(date.today().year,date.today().month)[-1])
24
24
  if TYPE == 'day':
25
- if int(text) not in [i+1 for i in range(*drange)]:
26
- raise Exception(f"Not in {drange}")
25
+ try:
26
+ if int(text) not in [i+1 for i in range(*drange)]:
27
+ raise Exception(f"Not in {drange}")
28
+ except Exception as e:
29
+ print(NOTINT,e)
30
+ if int(eval(text)) not in [i+1 for i in range(*drange)]:
31
+ raise Exception(f"Not in {drange}")
27
32
  elif TYPE == 'month':
28
- if int(text) not in [i for i in range(1,13)]:
29
- raise Exception(f"Not in {[i for i in range(1,13)]}")
33
+ try:
34
+ if int(text) not in [i for i in range(1,13)]:
35
+ raise Exception(f"Not in {[i for i in range(1,13)]}")
36
+ except Exception as e:
37
+ print(NOTINT,e)
38
+ if int(eval(text)) not in [i for i in range(1,13)]:
39
+ raise Exception(f"Not in {[i for i in range(1,13)]}")
30
40
  elif TYPE == 'year':
31
41
  pass
32
42
  elif TYPE == 'hour':
33
- if int(text) not in [i for i in range(24)]:
34
- raise Exception(f"Not in {[i for i in range(24)]}")
43
+ try:
44
+ if int(text) not in [i for i in range(24)]:
45
+ raise Exception(f"Not in {[i for i in range(24)]}")
46
+ except Exception as e:
47
+ print(NOTINT,e)
48
+ if int(eval(text)) not in [i for i in range(24)]:
49
+ raise Exception(f"Not in {[i for i in range(24)]}")
35
50
  elif TYPE == 'minute':
36
- if int(text) not in [i for i in range(60)]:
37
- raise Exception(f"Not in {[i for i in range(60)]}")
51
+ try:
52
+ if int(text) not in [i for i in range(60)]:
53
+ raise Exception(f"Not in {[i for i in range(60)]}")
54
+ except Exception as e:
55
+ print(NOTINT,e)
56
+ if int(eval(text)) not in [i for i in range(60)]:
57
+ raise Exception(f"Not in {[i for i in range(60)]}")
38
58
  elif TYPE == 'second':
39
- if int(text) not in [i for i in range(60)]:
40
- raise Exception(f"Not in {[i for i in range(60)]}")
59
+ try:
60
+ if int(text) not in [i for i in range(60)]:
61
+ raise Exception(f"Not in {[i for i in range(60)]}")
62
+ except Exception as e:
63
+ print(NOTINT,e)
64
+ if int(eval(text)) not in [i for i in range(60)]:
65
+ raise Exception(f"Not in {[i for i in range(60)]}")
41
66
  elif TYPE == 'float':
42
- return float(text)
43
- return int(text)
67
+ try:
68
+ return float(eval(text))
69
+ except Exception as e:
70
+ print(e)
71
+ return float(text)
72
+ try:
73
+ return int(eval(text))
74
+ except Exception as e:
75
+ print(e)
76
+ return int(text)
44
77
  else:
45
78
  if TYPE == 'day':
46
79
  return datetime.now().day
radboy/DB/Prompt.py CHANGED
@@ -1282,6 +1282,9 @@ Suffix {ml_delim}\\n
1282
1282
  out.write(cmd)
1283
1283
  elif not cmd.startswith(ml_delim) and cmd.endswith(ml_delim):
1284
1284
  buffer.append(cmd)
1285
+ nl='\n'
1286
+ cmd_proto=TM.Tasks.TasksMode(parent=self,engine=db.ENGINE,init_only=True).process_cmd(buffer)
1287
+ print(cmd_proto)
1285
1288
  cmd='\n'.join(buffer)[len(ml_delim):-len(ml_delim)]
1286
1289
  with scanout.open("w+") as out:
1287
1290
  out.write(cmd)
@@ -1322,7 +1325,6 @@ Suffix {ml_delim}\\n
1322
1325
  {Style.reset}
1323
1326
  '''
1324
1327
  print(msg)
1325
- nl='\n'
1326
1328
  debuffer=f'{nl}'.join(buffer)
1327
1329
  print(f"{Fore.orange_red_1}An Incomplete Scan Occurred, '{Fore.light_green}{cmd}{Fore.light_yellow}' was finalized with {Fore.magenta}{ml_delim}{Fore.sky_blue_2}, as '{debuffer}'{Style.reset}")
1328
1330
 
Binary file
radboy/DB/db.py CHANGED
@@ -677,6 +677,10 @@ class EntryExtras:
677
677
  return -self.Price
678
678
 
679
679
  class Template:
680
+ def colorize(self,m,n,c):
681
+ msg=f'{Fore.cyan}{n}/{Fore.light_yellow}{n+1}{Fore.light_red} of {c} {Fore.dark_goldenrod}{m}{Style.reset}'
682
+ return msg
683
+
680
684
  def cfmt(self,line,n=4):
681
685
  if not line:
682
686
  line='None'
@@ -706,10 +710,18 @@ class Template:
706
710
  m.append(f"{cc}{self.__tablename__}{Style.reset}(")
707
711
  fields=[i.name for i in self.__table__.columns]
708
712
  for i in fields:
709
- m.append(f"\t{fc}{i}{Style.reset}={vg}{vc}{getattr(self,i)}{Style.reset}")
713
+ if isinstance(getattr(self,i),time):
714
+ m.append(f"\t{fc}{i}{Style.reset}={vg}{vc}{getattr(self,i).strftime(f"{Fore.deep_pink_4a}%I:%M %p(12H)/{Fore.dark_red_1}%H:%M(24H)")}{Style.reset}")
715
+ elif isinstance(getattr(self,i),datetime):
716
+ m.append(f"\t{fc}{i}{Style.reset}={vg}{vc}{getattr(self,i).strftime(f"{Fore.deep_sky_blue_4a}%m/%d/%Y @ {Fore.deep_pink_4a}%I:%M %p(12H) / {Fore.dark_red_1}%H:%M(24H){Style.reset}")}{Style.reset}")
717
+ else:
718
+ m.append(f"\t{fc}{i}{Style.reset}={vg}{vc}{getattr(self,i)}{Style.reset}")
710
719
  m.append(")")
711
720
  return '\n'.join(m)
712
721
 
722
+ def __repr__(self,vc=Fore.dark_blue+Style.bold,fc=Fore.light_green,cc=Fore.light_magenta,vg=Back.grey_50):
723
+ return self.str(self,vc,fc,cc,vg)
724
+
713
725
 
714
726
  class EntryDataExtras(BASE,Template):
715
727
  '''Stores extra fields not in the Entry Class.
@@ -4963,4 +4975,125 @@ class UniqueRecieptIdInfo(BASE,Template):
4963
4975
  setattr(self,k,kwargs.get(k))
4964
4976
 
4965
4977
 
4966
- UniqueRecieptIdInfo.metadata.create_all(ENGINE)
4978
+ UniqueRecieptIdInfo.metadata.create_all(ENGINE)
4979
+
4980
+ class TaxRates(BASE,Template):
4981
+ __tablename__='TaxRates'
4982
+ trid=Column(Integer,primary_key=True)
4983
+
4984
+ EstablishmentName=Column(String,default='N/A')
4985
+ EstablishmentNumber=Column(String,default="N/A")
4986
+ EstablishmentAddress=Column(String,default='N/A')
4987
+ Establishment_City=Column(String,default='N/A')
4988
+ Establishment_County=Column(String,default="N/A")
4989
+ Establishment_State=Column(String,default='NA')
4990
+ Establishment_ZIP_Code=Column(String,default="00000-0000")
4991
+ Establishment_Country=Column(String,default="Not Available")
4992
+
4993
+ TaxName=Column(String,default='Zero-Dollar Tax')
4994
+ TaxRatePercentString=Column(String,default='0%')
4995
+ TaxRateDecimal=Column(Float,default=0.000)
4996
+ TaxNote=Column(String,default='')
4997
+ TaxType=Column(String,default='')
4998
+
4999
+ DTOE=Column(DateTime,default=datetime.now())
5000
+ Comment=Column(String,default='N/A')
5001
+
5002
+ def as_json(self):
5003
+ excludes=['trid','DTOE']
5004
+ dd={str(d.name):self.__dict__[d.name] for d in self.__table__.columns if d.name not in excludes}
5005
+ return json.dumps(dd)
5006
+
5007
+ def asID(self):
5008
+ return f"TaxRates(trid={self.trid})"
5009
+
5010
+ def __init__(self,**kwargs):
5011
+ for k in kwargs.keys():
5012
+ if k in [s.name for s in self.__table__.columns]:
5013
+ setattr(self,k,kwargs.get(k))
5014
+
5015
+ TaxRates.metadata.create_all(ENGINE)
5016
+
5017
+ class BusinessHours(BASE,Template):
5018
+ __tablename__='BusinessHours'
5019
+ bhid=Column(Integer,primary_key=True)
5020
+
5021
+ EstablishmentName=Column(String,default='N/A')
5022
+ EstablishmentNumber=Column(String,default="N/A")
5023
+ EstablishmentAddress=Column(String,default='N/A')
5024
+ Establishment_City=Column(String,default='N/A')
5025
+ Establishment_County=Column(String,default="N/A")
5026
+ Establishment_State=Column(String,default='NA')
5027
+ Establishment_ZIP_Code=Column(String,default="00000-0000")
5028
+ Establishment_Country=Column(String,default="Not Available")
5029
+
5030
+ OpenTime=Column(Time,default=time(8,0))
5031
+ CloseTime=Column(Time,default=time(21,0))
5032
+ OpenDate=Column(Date,default=date(datetime.now().year,1,1))
5033
+ CloseDate=Column(Date,default=date(datetime.now().year,12,31))
5034
+ OpenDateTime=Column(DateTime,default=datetime(datetime.now().year,1,1))
5035
+ CloseDateTime=Column(DateTime,default=datetime(datetime.now().year,12,25))
5036
+
5037
+ DTOE=Column(DateTime,default=datetime.now())
5038
+ Comment=Column(String,default='N/A')
5039
+
5040
+ def as_json(self):
5041
+ excludes=['bhid','DTOE']
5042
+ dd={str(d.name):self.__dict__[d.name] for d in self.__table__.columns if d.name not in excludes}
5043
+ return json.dumps(dd)
5044
+
5045
+ def asID(self):
5046
+ return f"BusinessHours(bhid={self.trid})"
5047
+
5048
+ def __init__(self,**kwargs):
5049
+ for k in kwargs.keys():
5050
+ if k in [s.name for s in self.__table__.columns]:
5051
+ setattr(self,k,kwargs.get(k))
5052
+
5053
+
5054
+ BusinessHours.metadata.create_all(ENGINE)
5055
+
5056
+ class Scheduled_And_Appointments(BASE,Template):
5057
+ __tablename__='Scheduled_And_Appointments'
5058
+ saa_id=Column(Integer,primary_key=True)
5059
+
5060
+ EstablishmentName=Column(String,default='N/A')
5061
+ EstablishmentNumber=Column(String,default="N/A")
5062
+ EstablishmentAddress=Column(String,default='N/A')
5063
+ Establishment_City=Column(String,default='N/A')
5064
+ Establishment_County=Column(String,default="N/A")
5065
+ Establishment_State=Column(String,default='NA')
5066
+ Establishment_ZIP_Code=Column(String,default="00000-0000")
5067
+ Establishment_Country=Column(String,default="Not Available")
5068
+
5069
+ StartTime=Column(Time,default=time(8,0))
5070
+ EndTime=Column(Time,default=time(21,0))
5071
+
5072
+ StartDate=Column(Date,default=date(datetime.now().year,1,1))
5073
+ EndDate=Column(Date,default=date(datetime.now().year,12,31))
5074
+
5075
+ StartDateTime=Column(DateTime,default=datetime(datetime.now().year,1,1))
5076
+ EndDateTime=Column(DateTime,default=datetime(datetime.now().year,12,25))
5077
+
5078
+ TotalCost=Column(Float,default=0.000)
5079
+ CoPay=Column(Float,default=0.000)
5080
+ OutOfPocket=Column(Float,default=0.000)
5081
+
5082
+ DTOE=Column(DateTime,default=datetime.now())
5083
+ Comment=Column(String,default='N/A')
5084
+
5085
+ def as_json(self):
5086
+ excludes=['saa_id','DTOE']
5087
+ dd={str(d.name):self.__dict__[d.name] for d in self.__table__.columns if d.name not in excludes}
5088
+ return json.dumps(dd)
5089
+
5090
+ def asID(self):
5091
+ return f"Scheduled_And_Appointments(saa_id={self.saa_id})"
5092
+
5093
+ def __init__(self,**kwargs):
5094
+ for k in kwargs.keys():
5095
+ if k in [s.name for s in self.__table__.columns]:
5096
+ setattr(self,k,kwargs.get(k))
5097
+
5098
+
5099
+ Scheduled_And_Appointments.metadata.create_all(ENGINE)
@@ -0,0 +1,33 @@
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
+
28
+ MODULE_NAME=f"""
29
+ Business Hours
30
+ Tax Rates
31
+ Scheduled and Appointments
32
+ """
33
+ from .bhtrsaa import *
@@ -0,0 +1,438 @@
1
+ from . import *
2
+ import uuid
3
+ class BhTrSa_Gui:
4
+ def search_saa(self,returnable=False):
5
+ stext=Prompt.__init2__(None,func=FormBuilderMkText,ptext="What are you looking for?",helpText="a textwise search",data="string")
6
+ if stext in [None,]:
7
+ return
8
+ lu_state=db.detectGetOrSet('list maker lookup order',False,setValue=False,literal=False)
9
+ includes=["varchar","string","str","text"]
10
+ sfields=[str(i.name) for i in BusinessHours.__table__.columns if str(i.type) in includes]
11
+ with Session(ENGINE) as session:
12
+ query=session.query(Scheduled_And_Appointments)
13
+ q=[]
14
+ if stext != 'd':
15
+ for i in sfields:
16
+ q.append([or_(getattr(Scheduled_And_Appointments,i).icontains(stext)),and_(getattr(Scheduled_And_Appointments,i).icontains(stext))])
17
+ squery=query.filter(*q)
18
+ else:
19
+ squery=query
20
+ if lu_state:
21
+ sorted_query=squery.order_by(Scheduled_And_Appointments.DTOE.asc())
22
+ else:
23
+ sorted_query=squery.order_by(Scheduled_And_Appointments.DTOE.desc())
24
+
25
+ results=sorted_query.all()
26
+ ct=len(results)
27
+ htext=[]
28
+ if ct == 0:
29
+ print("No Results were found")
30
+ return
31
+ for num,i in enumerate(results):
32
+ htext.append(i.colorize(i,num,ct))
33
+ htext='\n'.join(htext)
34
+ print(htext)
35
+ if returnable:
36
+ while True:
37
+ try:
38
+ which=Prompt.__init2__(None,func=FormBuilderMkText,ptext="which index(es) to yield?",helpText=htext,data="list")
39
+ if which in [None,'d']:
40
+ return
41
+ for i in which:
42
+ try:
43
+ index=int(i)
44
+ yield results[index].saa_id
45
+ except Exception as e:
46
+ print(e)
47
+ break
48
+ except Exception as e:
49
+ print(e)
50
+
51
+ def search_business_hours(self,returnable=False):
52
+ stext=Prompt.__init2__(None,func=FormBuilderMkText,ptext="What are you looking for?",helpText="a textwise search",data="string")
53
+ if stext in [None,]:
54
+ return
55
+ lu_state=db.detectGetOrSet('list maker lookup order',False,setValue=False,literal=False)
56
+ includes=["varchar","string","str","text"]
57
+ sfields=[str(i.name) for i in BusinessHours.__table__.columns if str(i.type) in includes]
58
+ with Session(ENGINE) as session:
59
+ query=session.query(BusinessHours)
60
+ q=[]
61
+ if stext != 'd':
62
+ for i in sfields:
63
+ q.append([or_(getattr(BusinessHours,i).icontains(stext)),and_(getattr(BusinessHours,i).icontains(stext))])
64
+ squery=query.filter(*q)
65
+ else:
66
+ squery=query
67
+ if lu_state:
68
+ sorted_query=squery.order_by(BusinessHours.DTOE.asc())
69
+ else:
70
+ sorted_query=squery.order_by(BusinessHours.DTOE.desc())
71
+
72
+ results=sorted_query.all()
73
+ ct=len(results)
74
+ htext=[]
75
+ if ct == 0:
76
+ print("No Results were found")
77
+ return
78
+ for num,i in enumerate(results):
79
+ htext.append(i.colorize(i,num,ct))
80
+ htext='\n'.join(htext)
81
+ print(htext)
82
+ if returnable:
83
+ while True:
84
+ try:
85
+ which=Prompt.__init2__(None,func=FormBuilderMkText,ptext="which index(es) to yield?",helpText=htext,data="list")
86
+ if which in [None,'d']:
87
+ return
88
+ for i in which:
89
+ try:
90
+ index=int(i)
91
+ yield results[index].bhid
92
+ except Exception as e:
93
+ print(e)
94
+ break
95
+ except Exception as e:
96
+ print(e)
97
+
98
+ def search_taxrates(self,returnable=False):
99
+ stext=Prompt.__init2__(None,func=FormBuilderMkText,ptext="What are you looking for?",helpText="a textwise search",data="string")
100
+ if stext in [None,]:
101
+ return
102
+ lu_state=db.detectGetOrSet('list maker lookup order',False,setValue=False,literal=False)
103
+ includes=["varchar","string","str","text"]
104
+ sfields=[str(i.name) for i in TaxRates.__table__.columns if str(i.type) in includes]
105
+ with Session(ENGINE) as session:
106
+ query=session.query(TaxRates)
107
+ q=[]
108
+ if stext != 'd':
109
+ for i in sfields:
110
+ q.append([or_(getattr(TaxRates,i).icontains(stext)),and_(getattr(TaxRates,i).icontains(stext))])
111
+ squery=query.filter(*q)
112
+ else:
113
+ squery=query
114
+ if lu_state:
115
+ sorted_query=squery.order_by(TaxRates.DTOE.asc())
116
+ else:
117
+ sorted_query=squery.order_by(TaxRates.DTOE.desc())
118
+
119
+ results=sorted_query.all()
120
+ ct=len(results)
121
+ htext=[]
122
+ if ct == 0:
123
+ print("No Results were found")
124
+ return
125
+ for num,i in enumerate(results):
126
+ htext.append(i.colorize(i,num,ct))
127
+ htext='\n'.join(htext)
128
+ print(htext)
129
+ if returnable:
130
+ while True:
131
+ try:
132
+ which=Prompt.__init2__(None,func=FormBuilderMkText,ptext="which index(es) to yield?",helpText=htext,data="list")
133
+ if which in [None,'d']:
134
+ return
135
+ for i in which:
136
+ try:
137
+ index=int(i)
138
+ yield results[index].trid
139
+ except Exception as e:
140
+ print(e)
141
+ break
142
+ except Exception as e:
143
+ print(e)
144
+
145
+ def edit_taxrates(self):
146
+ excludes=['trid','DTOE']
147
+ with Session(ENGINE) as session:
148
+ ids=self.search_taxrates(returnable=True)
149
+ if ids is None:
150
+ return
151
+ for ID in ids:
152
+ newBH=session.query(TaxRates).filter(TaxRates.trid==ID).first()
153
+ fields={
154
+ i.name:{'default':getattr(newBH,i.name),'type':str(i.type).lower()} for i in newBH.__table__.columns if str(i.name) not in excludes
155
+ }
156
+ fd=FormBuilder(data=fields)
157
+ if fd is None:
158
+ return
159
+ for i in fd:
160
+ setattr(newBH,i,fd[i])
161
+ session.commit()
162
+ session.refresh(newBH)
163
+ print(newBH.colorize(newBH,0,1))
164
+
165
+ def edit_business_hours(self):
166
+ excludes=['bhid','DTOE']
167
+ with Session(ENGINE) as session:
168
+ ids=self.search_business_hours(returnable=True)
169
+ if ids is None:
170
+ return
171
+ for ID in ids:
172
+ newBH=session.query(BusinessHours).filter(BusinessHours.bhid==ID).first()
173
+ fields={
174
+ i.name:{'default':getattr(newBH,i.name),'type':str(i.type).lower()} for i in newBH.__table__.columns if str(i.name) not in excludes
175
+ }
176
+ fd=FormBuilder(data=fields)
177
+ if fd is None:
178
+ return
179
+ for i in fd:
180
+ setattr(newBH,i,fd[i])
181
+ session.commit()
182
+ session.refresh(newBH)
183
+ print(newBH.colorize(newBH,0,1))
184
+
185
+ def edit_saa(self):
186
+ excludes=['saa_id','DTOE']
187
+ with Session(ENGINE) as session:
188
+ ids=self.search_saa(returnable=True)
189
+ if ids is None:
190
+ return
191
+ for ID in ids:
192
+ newBH=session.query(Scheduled_And_Appointments).filter(Scheduled_And_Appointments.saa_id==ID).first()
193
+ fields={
194
+ i.name:{'default':getattr(newBH,i.name),'type':str(i.type).lower()} for i in newBH.__table__.columns if str(i.name) not in excludes
195
+ }
196
+ fd=FormBuilder(data=fields)
197
+ if fd is None:
198
+ return
199
+ for i in fd:
200
+ setattr(newBH,i,fd[i])
201
+ session.commit()
202
+ session.refresh(newBH)
203
+ print(newBH.colorize(newBH,0,1))
204
+
205
+
206
+ def protect(self):
207
+ h=self.__class__.__name__
208
+ code=''.join([str(random.randint(0,9)) for i in range(10)])
209
+ verification_protection=detectGetOrSet("Protect From Delete",code,setValue=False,literal=True)
210
+ while True:
211
+ try:
212
+ really=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"{h}Really Delete this BusinessHours entry?",helpText="yes or no boolean,default is NO",data="boolean")
213
+ if really in [None,]:
214
+ print(f"{Fore.light_steel_blue}Nothing was {Fore.orange_red_1}{Style.bold}Deleted!{Style.reset}")
215
+ return True
216
+ elif really in ['d',False]:
217
+ print(f"{Fore.light_steel_blue}Nothing was {Fore.orange_red_1}{Style.bold}Deleted!{Style.reset}")
218
+ return True
219
+ else:
220
+ pass
221
+ really=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"To {Fore.orange_red_1}Delete it completely, {Fore.light_steel_blue}what is today's date?[{'.'.join([str(int(i)) for i in datetime.now().strftime("%m.%d.%y").split(".")])}]{Style.reset}",helpText="type y/yes for prompt or type as m.d.Y",data="datetime")
222
+ if really in [None,'d']:
223
+ print(f"{Fore.light_steel_blue}Nothing was {Fore.orange_red_1}{Style.bold}Deleted!{Style.reset}")
224
+ return True
225
+ today=datetime.today()
226
+ if really.day == today.day and really.month == today.month and really.year == today.year:
227
+ really=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"Please type the verification code {Style.reset}'{Entry.cfmt(None,verification_protection)}'?",helpText=f"type '{Entry.cfmt(None,verification_protection)}' to finalize!",data="string")
228
+ if really in [None,]:
229
+ print(f"{Fore.light_steel_blue}Nothing was {Fore.orange_red_1}{Style.bold}Deleted!{Style.reset}")
230
+ return True
231
+ elif really in ['d',False]:
232
+ print(f"{Fore.light_steel_blue}Nothing was {Fore.orange_red_1}{Style.bold}Deleted!{Style.reset}")
233
+ return True
234
+ elif really == verification_protection:
235
+ break
236
+ else:
237
+ pass
238
+ except Exception as e:
239
+ print(e)
240
+ return True
241
+
242
+ def rm_business_hours(self):
243
+ excludes=['bhid','DTOE']
244
+ with Session(ENGINE) as session:
245
+ ids=self.search_business_hours(returnable=True)
246
+ if ids is None:
247
+ return
248
+ state=None
249
+ for ID in ids:
250
+ if state == None:
251
+ state=self.protect()
252
+ if state != True:
253
+ break
254
+ newBH=session.query(BusinessHours).filter(BusinessHours.bhid==ID).first()
255
+ session.delete(newBH)
256
+ session.commit()
257
+
258
+ def rm_taxrates(self):
259
+ excludes=['trid','DTOE']
260
+ with Session(ENGINE) as session:
261
+ ids=self.search_taxrates(returnable=True)
262
+ if ids is None:
263
+ return
264
+ state=None
265
+ for ID in ids:
266
+ if state == None:
267
+ state=self.protect()
268
+ if state != True:
269
+ break
270
+ newBH=session.query(TaxRates).filter(TaxRates.trid==ID).first()
271
+ session.delete(newBH)
272
+ session.commit()
273
+
274
+ def rm_saa(self):
275
+ excludes=['saa_id','DTOE']
276
+ with Session(ENGINE) as session:
277
+ ids=self.search_saa(returnable=True)
278
+ if ids is None:
279
+ return
280
+ state=None
281
+ for ID in ids:
282
+ if state == None:
283
+ state=self.protect()
284
+ if state != True:
285
+ break
286
+ newBH=session.query(Scheduled_And_Appointments).filter(Scheduled_And_Appointments.saa_id==ID).first()
287
+ session.delete(newBH)
288
+ session.commit()
289
+
290
+
291
+ def new_business_hours(self):
292
+ with Session(ENGINE) as session:
293
+ newBH=BusinessHours()
294
+ excludes=['bhid','DTOE']
295
+ fields={
296
+ i.name:{'default':getattr(newBH,i.name),'type':str(i.type).lower()} for i in newBH.__table__.columns if str(i.name) not in excludes
297
+ }
298
+ fd=FormBuilder(data=fields)
299
+ if fd is None:
300
+ return
301
+ for i in fd:
302
+ setattr(newBH,i,fd[i])
303
+ session.add(newBH)
304
+ session.commit()
305
+ session.refresh(newBH)
306
+ print(newBH.colorize(newBH,0,1))
307
+
308
+ def new_taxrates(self):
309
+ with Session(ENGINE) as session:
310
+ newBH=TaxRates()
311
+ excludes=['trid','DTOE']
312
+ fields={
313
+ i.name:{'default':getattr(newBH,i.name),'type':str(i.type).lower()} for i in newBH.__table__.columns if str(i.name) not in excludes
314
+ }
315
+ fd=FormBuilder(data=fields)
316
+ if fd is None:
317
+ return
318
+ for i in fd:
319
+ setattr(newBH,i,fd[i])
320
+ session.add(newBH)
321
+ session.commit()
322
+ session.refresh(newBH)
323
+ print(newBH.colorize(newBH,0,1))
324
+
325
+ def new_saa(self):
326
+ with Session(ENGINE) as session:
327
+ newBH=Scheduled_And_Appointments()
328
+ excludes=['saa_id','DTOE']
329
+ fields={
330
+ i.name:{'default':getattr(newBH,i.name),'type':str(i.type).lower()} for i in newBH.__table__.columns if str(i.name) not in excludes
331
+ }
332
+ fd=FormBuilder(data=fields)
333
+ if fd is None:
334
+ return
335
+ for i in fd:
336
+ setattr(newBH,i,fd[i])
337
+ session.add(newBH)
338
+ session.commit()
339
+ session.refresh(newBH)
340
+ print(newBH.colorize(newBH,0,1))
341
+
342
+ def saa_proxy(self):
343
+ for i in self.search_saa():
344
+ print(i)
345
+
346
+ def str_proxy(self):
347
+ for i in self.search_taxrates():
348
+ print(i)
349
+
350
+ def sbh_proxy(self):
351
+ for i in self.search_business_hours():
352
+ print(i)
353
+
354
+ def __init__(self):
355
+ print(Entry.cfmt(None,self.__class__.__name__))
356
+ cmds={
357
+ uuid.uuid1():{
358
+ 'cmds':['sbh','search business hours'],
359
+ 'exec':self.sbh_proxy,
360
+ 'desc':"search and list business hours"
361
+ },
362
+ uuid.uuid1():{
363
+ 'cmds':['nbh','new business hours'],
364
+ 'exec':self.new_business_hours,
365
+ 'desc':"create a business hours entry"
366
+ },
367
+ uuid.uuid1():{
368
+ 'cmds':['ebh','edit business hours'],
369
+ 'exec':self.edit_business_hours,
370
+ 'desc':"edit a business hours entry"
371
+ },
372
+ uuid.uuid1():{
373
+ 'cmds':['rmbh','rm business hours'],
374
+ 'exec':self.rm_business_hours,
375
+ 'desc':"remove a business hours entry"
376
+ },
377
+
378
+ uuid.uuid1():{
379
+ 'cmds':['str','search tax rates'],
380
+ 'exec':self.str_proxy,
381
+ 'desc':"search and list tax rates "
382
+ },
383
+ uuid.uuid1():{
384
+ 'cmds':['ntr','new tax rates'],
385
+ 'exec':self.new_taxrates,
386
+ 'desc':"create a tax rates entry"
387
+ },
388
+ uuid.uuid1():{
389
+ 'cmds':['etr','edit '],
390
+ 'exec':self.edit_taxrates,
391
+ 'desc':"edit a tax rates entry"
392
+ },
393
+ uuid.uuid1():{
394
+ 'cmds':['rmtr','rm '],
395
+ 'exec':self.rm_taxrates,
396
+ 'desc':"remove a tax rates entry"
397
+ },
398
+
399
+ uuid.uuid1():{
400
+ 'cmds':['ssaa','search schedules and appointments'],
401
+ 'exec':self.saa_proxy,
402
+ 'desc':"search and list schedules and appointments "
403
+ },
404
+ uuid.uuid1():{
405
+ 'cmds':['nsaa','new schedules and appointments'],
406
+ 'exec':self.new_saa,
407
+ 'desc':"create a schedules and appointments entry"
408
+ },
409
+ uuid.uuid1():{
410
+ 'cmds':['esaa','edit '],
411
+ 'exec':self.edit_saa,
412
+ 'desc':"edit a schedules and appointments entry"
413
+ },
414
+ uuid.uuid1():{
415
+ 'cmds':['rmsaa','rm '],
416
+ 'exec':self.rm_saa,
417
+ 'desc':"remove a schedules and appointments entry"
418
+ },
419
+ }
420
+ htext=[]
421
+ for cmd in cmds:
422
+ msg=f"{Fore.cornflower_blue}{','.join(cmds[cmd]['cmds'])} {Fore.grey_70}-{Fore.cyan} {cmds[cmd]['desc']}{Style.reset}"
423
+ htext.append(msg)
424
+ htext='\n'.join(htext)
425
+ while True:
426
+ doWhat=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"{self.__class__.__name__}:Do What",helpText=htext,data="string")
427
+ if doWhat in [None,]:
428
+ return
429
+ elif doWhat.lower() in ['d',]:
430
+ print(htext)
431
+ continue
432
+ for cmd in cmds:
433
+ if doWhat.lower() in [i.lower() for i in cmds[cmd]['cmds']]:
434
+ if callable(cmds[cmd]['exec']):
435
+ cmds[cmd]['exec']()
436
+
437
+
438
+
@@ -20,6 +20,7 @@ from radboy.DayLog.TaxiFares import TaxiFare
20
20
  from radboy.Compare.Compare import *
21
21
  from sqlalchemy.sql import functions as func
22
22
  from collections import OrderedDict
23
+ from radboy.DayLog.BhTrSa.bhtrsaa import *
23
24
 
24
25
  class DayLogger:
25
26
  helpText=f"""
@@ -74,6 +75,7 @@ fxtbl - update table with correct columns
74
75
  {Fore.light_sea_green}'epdc','estimated pay day calendar'{Fore.light_steel_blue}- review your estimated paydays{Style.reset}
75
76
  {Fore.light_sea_green}'taxi fare','calc taxi fare','ctf','taxi'{Fore.light_steel_blue}- Calculate Taxi Fares{Style.reset}
76
77
  {Fore.light_sea_green}'faraday','holesize','frdy hs'{Fore.light_steel_blue}- get wavelength needed for a frequency/for making a faraday cage {Fore.orange_red_1}[Indirectly Related]{Style.reset}
78
+ {Fore.light_sea_green}'bhtrsa','business hours tax rates scheduled and appointments'{Fore.light_steel_blue}- Business Hours, Tax Rates, Scheduled and Appointments {Fore.orange_red_1}[Indirectly Related]{Style.reset}
77
79
  """
78
80
  def listAllDL(self):
79
81
  with Session(self.engine) as session:
@@ -1938,6 +1940,8 @@ fxtbl - update table with correct columns
1938
1940
  TaxiFare()
1939
1941
  elif what.lower() in [f"compare product","p1==p2?","compare"]:
1940
1942
  CompareUI()
1943
+ elif what.lower() in ['bhtrsa','business hours tax rates scheduled and appointments']:
1944
+ BhTrSa_Gui()
1941
1945
 
1942
1946
 
1943
1947
 
radboy/FB/FBMTXT.py CHANGED
@@ -8,6 +8,7 @@ import re
8
8
  from datetime import timedelta
9
9
  import calendar
10
10
  from colored import Fore,Back,Style
11
+
11
12
  fm_data={
12
13
  'Decimal':{
13
14
  'type':'decimal',
@@ -173,10 +174,10 @@ def FormBuilderMkText(text,data,passThru=[],PassThru=True,alternative_false=None
173
174
  value=text
174
175
  elif data.lower() == 'date':
175
176
  if text.lower() in ['y','yes','1','t','true']:
176
- value=DatePkr()
177
+ value=value=TM.Tasks.TasksMode(parent=None,engine=db.ENGINE,init_only=True).DatePkr()
177
178
  elif data.lower() == 'time':
178
179
  if text.lower() in ['y','yes','1','t','true']:
179
- value=TimePkr()
180
+ value=value=TM.Tasks.TasksMode(parent=None,engine=db.ENGINE,init_only=True).TimePkr()
180
181
  elif data.lower() in ['datetime','datetime-','datetime~']:
181
182
  try:
182
183
 
radboy/TasksMode/Tasks.py CHANGED
@@ -287,6 +287,24 @@ def save(value):
287
287
 
288
288
 
289
289
  class TasksMode:
290
+ def process_cmd(self,buffer):
291
+ data=OrderedDict()
292
+ for num,line in enumerate(buffer):
293
+ data[num]={
294
+ 'default':line,
295
+ 'type':'string'
296
+ }
297
+ print(f"{Fore.orange_red_1}Don't use #ml# again until cmd fix is completed!{Style.reset}")
298
+ fd=FormBuilder(data=data)
299
+ if fd != None:
300
+ if not fd[0].startswith("#ml#"):
301
+ fd[0]='#ml#'+fd[0]
302
+ if not fd[len(buffer)-1].endswith('#ml#'):
303
+ fd[len(buffer)-1]+='#ml#'
304
+ text=''
305
+ for i in range(len(buffer)):
306
+ text+=fd[i]
307
+ return text
290
308
  def getInLineResult(self):
291
309
  return str(detectGetOrSet("InLineResult",None,setValue=False,literal=True))
292
310
 
@@ -295,7 +313,14 @@ class TasksMode:
295
313
  if text is None:
296
314
  return
297
315
  else:
298
- exec(text)
316
+ try:
317
+ if text != 'd':
318
+
319
+ exec(text)
320
+ except Exception as e:
321
+ print(e)
322
+ print(repr(e))
323
+ print(str(e))
299
324
 
300
325
  def prec_calc(self):
301
326
  text=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Formula :",helpText="text formula",data="decimal")
@@ -4153,6 +4178,8 @@ where:
4153
4178
  self.product_history=lambda self=self:DayLogger(engine=ENGINE)
4154
4179
  self.reset_next_barcode()
4155
4180
  self.DateTimePkr=DateTimePkr
4181
+ self.TimePkr=TimePkr
4182
+ self.DatePkr=DatePkr
4156
4183
  of=Path("GeneratedString.txt")
4157
4184
  if of.exists():
4158
4185
  age=datetime.now()-datetime.fromtimestamp(of.stat().st_ctime)
@@ -4629,6 +4656,24 @@ where:
4629
4656
  'exec':check_back_ups,
4630
4657
  }
4631
4658
  count+=1
4659
+ self.options["timepkr"]={
4660
+ 'cmds':["#"+str(count),"timepkr",],
4661
+ 'desc':f"test timepkr",
4662
+ 'exec':lambda self=self: print(self.TimePkr()),
4663
+ }
4664
+ count+=1
4665
+ self.options["datepkr"]={
4666
+ 'cmds':["#"+str(count),"datepkr",],
4667
+ 'desc':f"test datepkr",
4668
+ 'exec':lambda self=self: print(self.DatePkr()),
4669
+ }
4670
+ count+=1
4671
+ self.options["datetimepkr"]={
4672
+ 'cmds':["#"+str(count),"datetimepkr",],
4673
+ 'desc':f"test datetimepkr",
4674
+ 'exec':lambda self=self: print(self.DateTimePkr()),
4675
+ }
4676
+ count+=1
4632
4677
  #self.product_history=
4633
4678
 
4634
4679
  '''
radboy/__init__.py CHANGED
@@ -1 +1 @@
1
- VERSION='0.0.377'
1
+ VERSION='0.0.379'
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: radboy
3
- Version: 0.0.377
3
+ Version: 0.0.379
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>
@@ -5,7 +5,7 @@ radboy/Holidays.txt,sha256=y-JZPihh5iaWKxMIHNXD39yVuVmf1vMs4FdNDcg0f1Y,3114
5
5
  radboy/InventoryGlossary.txt,sha256=018-Yqca6DFb10jPdkUY-5qhkRlQN1k3rxoTaERQ-LA,91008
6
6
  radboy/RecordMyCodes.py,sha256=XXy-o5Z_yOgrgHNju4iqM3h7xhRBkNIoHG1qePtBnGY,41316
7
7
  radboy/Run.py,sha256=JUoCTHnzQBv7n8PB2_i93ANdAC_iW__RkAge8esCnk4,76
8
- radboy/__init__.py,sha256=6SkN9qoqB_YgPoIWOj2Ytlek7CbdqLySbh-KQ8IOmew,17
8
+ radboy/__init__.py,sha256=vXqsJNDEsoTVKJWodeiXgs8cwGe7x5EmRoJ88vOD16E,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
@@ -76,21 +76,21 @@ radboy/ConvertCode/__pycache__/__init__.cpython-312.pyc,sha256=77LSCMdrPg91lbslo
76
76
  radboy/ConvertCode/__pycache__/__init__.cpython-313.pyc,sha256=4F9h0V0Z5sQHdZQGEsnfCSLMQK4lUD5CzJwU4Elv-EU,153
77
77
  radboy/ConvertCode/__pycache__/codep.cpython-311.pyc,sha256=-qJqPEjGOP1-x6Xw6W4Msfuu2iwVffN_-DerH18Is2o,1086
78
78
  radboy/DB/CoinCombo.py,sha256=NJfTmx3XYgS41zkAyyO2W6de1Mj3rWsCWqU4ikHfvJI,13604
79
- radboy/DB/DatePicker.py,sha256=2XenrewM6oXcNcBmmwnET2gSYsKJl9QoP-lrEgYIINw,16396
79
+ radboy/DB/DatePicker.py,sha256=6eNjmryFWPpzrRYmI418UwSGin3XpJlL52h8cauanbY,18004
80
80
  radboy/DB/DisplayItemDb.py,sha256=uVvrNyFyBuKvrw-BEPXKYvfa-QWyFN5ahESi2l6vUUA,52046
81
81
  radboy/DB/EstimatedPayCalendarWorkSheet.txt,sha256=GOjRSmGxFoNTdAnpPe2kGv7CkXDrh0Mee01HslamGbo,17173
82
82
  radboy/DB/ExerciseTracker.py,sha256=CZ8jdKJiAE_QTAiJTRXi8ZOnS1NUiSvWVSKLHLpYVGk,25661
83
83
  radboy/DB/PayDay.py,sha256=H2kPGvBCDkMOz7lbxQhYtUt_oAInpxi37Q6MFrah98I,8710
84
84
  radboy/DB/PayModels.py,sha256=hjwWxP7PL33hmfzQl5YTf0HqzaMxXJxFknPdxFJXJc8,3499
85
85
  radboy/DB/PrintLogging.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
- radboy/DB/Prompt.py,sha256=kCS0mYLw4MJStNyyman3pd9g0SXfcJQHJ6w1kxA7cb4,126396
86
+ radboy/DB/Prompt.py,sha256=rmXuyrxpncDwyysr_itAtDg5MqCavtpDKo5utj67bSA,126555
87
87
  radboy/DB/RandomStringUtil.py,sha256=eZCpR907WStgfbk4Evcghjv9hOkUDXH-iMXIq0-kXq8,24386
88
88
  radboy/DB/ResetTools.py,sha256=RbI-Ua7UlsN0S9qLqtEkTWvzyTZ6R-hHR3CW4NHlUPE,6660
89
89
  radboy/DB/SMLabelImporter.py,sha256=eUoBDxVUUEKGL2g_PwkASM67ZB7FmXtSnn4bCagskhY,4013
90
90
  radboy/DB/__init__.py,sha256=JiigA9B7GalP7YuRdcwyGDu5PDSBahoi0lLjtScxlN8,49
91
91
  radboy/DB/blankDataFile.py,sha256=YX_05Usi71UpDkZN9UTMYwUipbTndTAtEgqzBEga0kE,9285
92
92
  radboy/DB/config.py,sha256=bvu43dUl1_yO3Zq3gsLuenGUgJSiS3S9Cs6ppFEvZbg,239
93
- radboy/DB/db.py,sha256=SU7AGc_sN-_LTUMJDkuoxHJauffscwn1mt17DjSlhjY,228898
93
+ radboy/DB/db.py,sha256=PMNTlfGH4BFJJLOVXwHmm6MB8O3VIeS0D0aQ1roNCbg,234272
94
94
  radboy/DB/glossary_db.py,sha256=1_qxeEpjjEtpWB_eDjsgJisimLv7OBm75MuqM-Lt6zg,28218
95
95
  radboy/DB/masterLookup.py,sha256=DBaM2uscG3_X5dek49wjdnOzhrjWhKgvOEz_umdz0mY,4566
96
96
  radboy/DB/msg.txt,sha256=YxWed6A6tuP1djJ5QPS2Rz3ING4TKKf8kUiCCPtzHXE,7937
@@ -98,7 +98,7 @@ radboy/DB/renderText2Png.py,sha256=PWnTicLTfOPg9UlQYia3wMpjM9rh7MIyDVsmcsDRUBo,5
98
98
  radboy/DB/testClass.py,sha256=t3zT1gbvReUncnPY8R9JUfKXQ5UEB2wmQx8DNeds0hI,310
99
99
  radboy/DB/__pycache__/DatePicker.cpython-311.pyc,sha256=VMJnJ7scb4VHMQi1HDZCF67KVYfb9m-fZK96IAoJzTQ,19676
100
100
  radboy/DB/__pycache__/DatePicker.cpython-312.pyc,sha256=cc5XWJ6Sbtcg0xWPz3SOP93VceIqr1pH42kjkLl5iYs,30294
101
- radboy/DB/__pycache__/DatePicker.cpython-313.pyc,sha256=ZgtusIhIiR_OPnBSXXEgQQKw6DYqOcUb9z9yIOkr0ms,30691
101
+ radboy/DB/__pycache__/DatePicker.cpython-313.pyc,sha256=mvdR-dzPS3X6tMFBDaMUoxIVU_NPh-zSvBdVJB66TQg,33508
102
102
  radboy/DB/__pycache__/DisplayItemDb.cpython-312.pyc,sha256=n2nRfavATZBSa7rBgH39pd11Ka-nUfGHVzr-R9KO7_Q,63121
103
103
  radboy/DB/__pycache__/DisplayItemDb.cpython-313.pyc,sha256=M4jujGXKVqYObZKQipamkTpw68YhEWLqBmywtPgnG-A,63715
104
104
  radboy/DB/__pycache__/ExerciseTracker.cpython-312.pyc,sha256=KzCmPhacS7t-70cpZM5tCnL8mBmRbA9dc4uuatdcQkI,34820
@@ -107,7 +107,7 @@ radboy/DB/__pycache__/FormBuilder.cpython-312.pyc,sha256=p1o-5SMRL8OXP_XQ5liUpf-
107
107
  radboy/DB/__pycache__/PrintLogging.cpython-312.pyc,sha256=pIAFqTi6OiQQORSc-oMH1zAbsdH7sY1TifxrN_QOvnU,148
108
108
  radboy/DB/__pycache__/Prompt.cpython-311.pyc,sha256=P2uPRpeqfLFtxieZ0JHBG3X_HZzWUCsFSLb_fpRqky0,6407
109
109
  radboy/DB/__pycache__/Prompt.cpython-312.pyc,sha256=6CcQ1gE2hcz3cKPjo4f6d7xNM2PTDnl8NzQG0Pme5BE,142886
110
- radboy/DB/__pycache__/Prompt.cpython-313.pyc,sha256=dx9ljTBr8do18B3UgQgYWzUFNiBP1bs3eB23GHQSDzM,196399
110
+ radboy/DB/__pycache__/Prompt.cpython-313.pyc,sha256=dBMrvMGELjT2EJUO4i_lIbmmmDgdqczgHhnzcwu8zyU,196538
111
111
  radboy/DB/__pycache__/RandomStringUtil.cpython-312.pyc,sha256=TrbEY89MuLmNlvoo5d8vOE6Dyshh5_EMlTZvk8MDVN4,48597
112
112
  radboy/DB/__pycache__/RandomStringUtil.cpython-313.pyc,sha256=MCcgVwV2Y-9rAY2FVaJZCKcou3HDX70EZudoiCigT0o,49217
113
113
  radboy/DB/__pycache__/ResetTools.cpython-311.pyc,sha256=4Vyc57iAAF0yRPjjglnVKovnTn8OoFIi6Zok3Wpj_YM,9292
@@ -125,7 +125,7 @@ radboy/DB/__pycache__/config.cpython-312.pyc,sha256=Qo7E6MHrF6yqvKgepNFyCoekZXiv
125
125
  radboy/DB/__pycache__/config.cpython-313.pyc,sha256=_8wCIg_3jhyJjxnExD2Sm6aY-uZTw036p7Ki5znL7dc,376
126
126
  radboy/DB/__pycache__/db.cpython-311.pyc,sha256=rNgigyBd0D-cg1JxKAS8t0B_k0IEJivgVlRaZE10Xis,210105
127
127
  radboy/DB/__pycache__/db.cpython-312.pyc,sha256=ANDJPC0RoavbmSKFxG15vC7B4rEGyVt7xRJt7XGY3OA,334609
128
- radboy/DB/__pycache__/db.cpython-313.pyc,sha256=tnN2PLM3WW4joqkZieb-yJnKJJjZ1rmX6GonpVVFTm4,361861
128
+ radboy/DB/__pycache__/db.cpython-313.pyc,sha256=TzOvoadaFkdsLOoEi1vFsdXCzObzQMcRKeivoods7dM,370574
129
129
  radboy/DB/__pycache__/glossary_db.cpython-312.pyc,sha256=8UL-29cKqtKovx0BANm6kzKKteef1BW_2qF3wumzst4,36023
130
130
  radboy/DB/__pycache__/glossary_db.cpython-313.pyc,sha256=Ke9bkvllGv5CK0JdT9DRvQ3MOdrXxoYv7TVLNkqLux0,36582
131
131
  radboy/DB/__pycache__/masterLookup.cpython-312.pyc,sha256=bQiOkmMwwHgcO18tYSWGQ-YUff4GQlKVhBMp1GoWAqY,6324
@@ -134,13 +134,15 @@ radboy/DB/__pycache__/renderText2Png.cpython-311.pyc,sha256=ivSzvyAeWhsS-a_RcFF8
134
134
  radboy/DB/__pycache__/renderText2Png.cpython-312.pyc,sha256=1CUGjOhJw_vC4DNMQ-W5jBXEKp7HzDrq7--x9VyBTo8,8991
135
135
  radboy/DB/__pycache__/renderText2Png.cpython-313.pyc,sha256=LDJOo7uFztlxw3ptN8QuHrLkr0GKiAArBu34QiE15iQ,9096
136
136
  radboy/DB/__pycache__/testClass.cpython-311.pyc,sha256=nkWap8RuBsWWOB_ZhGbR3ELbnL1F1CHZCi0dpepqw-0,1225
137
- radboy/DayLog/DayLogger.py,sha256=w5zfDAXzjPJCZPp9ij6kP0G06mOOTHpDc3QItWfdT5M,101883
137
+ radboy/DayLog/DayLogger.py,sha256=6GorKwyHib7aMJIisg2Sq_r5UmGOyuRfI5loQqlSPf8,102286
138
138
  radboy/DayLog/TaxiFares.py,sha256=3slYjtBcTnRe8IeneJ-_iZJJ3E7alW09f6GWYXPxhOo,10882
139
139
  radboy/DayLog/Wavelength4Freq.py,sha256=MfN2EATrN3bbEDgP1qOPjV1Fk8sVnkc_4tgX6sKfSE0,2054
140
140
  radboy/DayLog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
141
+ radboy/DayLog/BhTrSa/__init__.py,sha256=q6xDsXAiWpQR2QWILKZKf--D3apR_KOE1CRbZaP7Vq4,976
142
+ radboy/DayLog/BhTrSa/bhtrsaa.py,sha256=CfUOYt7Ia_Vupu1LKiu3j-mZExy3osZfUqix50KjjZw,13548
141
143
  radboy/DayLog/__pycache__/DayLogger.cpython-311.pyc,sha256=TmRnRZHp5tMTokSEB8hWTxnasi-iJdh6TmYcb_nXGoY,29557
142
144
  radboy/DayLog/__pycache__/DayLogger.cpython-312.pyc,sha256=bfDCQZrIhgQYzoUle7roicRE_bhGPYZtIbCRIiDrsxU,68240
143
- radboy/DayLog/__pycache__/DayLogger.cpython-313.pyc,sha256=rqbsaNxuK6p1yIMBq_ZWx9AgFJxFEW8Tu7a_oqJRPew,150428
145
+ radboy/DayLog/__pycache__/DayLogger.cpython-313.pyc,sha256=L3BYIw7SMXTsTK64KnTRg0mn-CRZn2Eq-4rjh75JXcs,151046
144
146
  radboy/DayLog/__pycache__/__init__.cpython-311.pyc,sha256=Z5Y4DdVF77LZf6-Of92MDGFdi-IXik1ASQd4AdLNNfQ,231
145
147
  radboy/DayLog/__pycache__/__init__.cpython-312.pyc,sha256=lP_GHzSPt5JTrT1jLWiRMFGPmSdJYBn4eRV__OxgJ6s,269
146
148
  radboy/DayLog/__pycache__/__init__.cpython-313.pyc,sha256=UQw5v4r7yismC9qcqP0dEme6h-lawbOA5pXYpkqUwFk,148
@@ -188,11 +190,11 @@ radboy/ExtractPkg/__pycache__/ExtractPkg2.cpython-313.pyc,sha256=bgw-00G_ouurOtO
188
190
  radboy/ExtractPkg/__pycache__/__init__.cpython-311.pyc,sha256=62yPgrgPZffZFLr6FscOqCdo45vfhScJ8aZbLTbD7I4,235
189
191
  radboy/ExtractPkg/__pycache__/__init__.cpython-312.pyc,sha256=Ll1iKcG0MDtoCIloQ_frcihvCSe1HPtyERzcAoXwQT0,273
190
192
  radboy/ExtractPkg/__pycache__/__init__.cpython-313.pyc,sha256=kL3Y3KxCTaGNg3aq5fhf2fsnQHZolGfvniEUfsx2bwY,152
191
- radboy/FB/FBMTXT.py,sha256=5qfqBQkT_6PyxrW8og5_S9V3FJm2vlSMMvbfx2BUMeI,19283
193
+ radboy/FB/FBMTXT.py,sha256=UhD6DbKW9jaCuaw6Ju-mmi-Kgx2RipB1ysOITiZfsqw,19424
192
194
  radboy/FB/FormBuilder.py,sha256=oOlGmvrUaAOVf0DpM_wlHKfIyz-Q8WU9pJRZ7XPzdQg,14275
193
195
  radboy/FB/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
194
196
  radboy/FB/__pycache__/FBMTXT.cpython-312.pyc,sha256=XCVFa7Mo83LGIdRrTvcK73siUpcVIEQfXKCH2QHeViw,9626
195
- radboy/FB/__pycache__/FBMTXT.cpython-313.pyc,sha256=8T151SE7c5gd3h2gyftDRQj7gVT0fluau0XKanuAEEQ,30867
197
+ radboy/FB/__pycache__/FBMTXT.cpython-313.pyc,sha256=sF3WL-63m1AjAOTxhfwMlkRvz7Axag5gRv9Nqitcj1k,31133
196
198
  radboy/FB/__pycache__/FormBuilder.cpython-312.pyc,sha256=lNQdB-zApsXM7OQF9MIi0zRZD1SAL6stKEN-AyQiIKg,18873
197
199
  radboy/FB/__pycache__/FormBuilder.cpython-313.pyc,sha256=WOX7ndix3aTqTaF01w1x4X_b-DX15RAoBdH7_L5NPCc,19706
198
200
  radboy/FB/__pycache__/__init__.cpython-312.pyc,sha256=ULEL8Au_CxcYpNAcSoSbI65M7-av1W6Zuy6kQJUu-Mw,265
@@ -330,7 +332,7 @@ radboy/SystemSettings/__pycache__/__init__.cpython-312.pyc,sha256=aIzp4Po0t8EhSA
330
332
  radboy/SystemSettings/__pycache__/__init__.cpython-313.pyc,sha256=QFDuoidxMWsGVLsy5lN-rDs6TP8nKJ4yyCyiamNOhwo,156
331
333
  radboy/TasksMode/ReFormula.py,sha256=REDRJYub-OEOE6g14oRQOLOQwv8pHqVJy4NQk3CCM90,2255
332
334
  radboy/TasksMode/SetEntryNEU.py,sha256=3nUNDUNyxq4zeMtmUQ7aS1o23P7KhDIMdUPNqPnYbRk,17343
333
- radboy/TasksMode/Tasks.py,sha256=8KnL4TEvQCWRwrqqv8g9JR9cHUpBjQA7olFUmHn-3Ko,305107
335
+ radboy/TasksMode/Tasks.py,sha256=EpKmiMnncIeAgFs-ASQeZLkYzQSdZ0I4fc1NU5f4JPY,306711
334
336
  radboy/TasksMode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
335
337
  radboy/TasksMode/__pycache__/ReFormula.cpython-311.pyc,sha256=QEG3PwVw-8HTd_Mf9XbVcxU56F1fC9yBqWXYPLC39DU,4865
336
338
  radboy/TasksMode/__pycache__/ReFormula.cpython-312.pyc,sha256=aX7BWm2PPjCTnxsbGUitR-2h9hq4AjaBiHMrUXvIl0Y,3967
@@ -339,7 +341,7 @@ radboy/TasksMode/__pycache__/SetEntryNEU.cpython-312.pyc,sha256=pCdFj61aPKkHL6Sv
339
341
  radboy/TasksMode/__pycache__/SetEntryNEU.cpython-313.pyc,sha256=leIelDzPrZE_YgKs0B99osmhyENYtYgi3ErgS2XqSPs,20088
340
342
  radboy/TasksMode/__pycache__/Tasks.cpython-311.pyc,sha256=6QOTJnLiXSKdF81hkhy3vyrz49PPhS20s5_0X52g3Hw,131120
341
343
  radboy/TasksMode/__pycache__/Tasks.cpython-312.pyc,sha256=hyJwdaYaaRLdcrNxgg36diJ5iijX5_3I0UAORsj-6LU,310295
342
- radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc,sha256=qKt80satgMCPImhJSmQprZuyBp1B-OFMz5hNvUJVoK0,374249
344
+ radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc,sha256=wZMXV8PymeSdCUifCswDrURboDJH1W-vl8aqX6Av3YI,376569
343
345
  radboy/TasksMode/__pycache__/__init__.cpython-311.pyc,sha256=PKV1JbihEacm639b53bZozRQvcllSkjGP3q8STVMxF4,234
344
346
  radboy/TasksMode/__pycache__/__init__.cpython-312.pyc,sha256=ERgnEvRMiGSecWp1BpNzLdSq_SdKw7GvFWUvUM7bLVw,272
345
347
  radboy/TasksMode/__pycache__/__init__.cpython-313.pyc,sha256=lvsTxukyvGKB3C0rdF9dQi_bvVh6ceDVINfwcuIsd0s,151
@@ -386,7 +388,7 @@ radboy/__pycache__/Run.cpython-311.pyc,sha256=G_UEfMtkLRjR6ZpGA_BJzGenuaCcP469Y9
386
388
  radboy/__pycache__/Run.cpython-312.pyc,sha256=v4xolc3mHyla991XhpYBUbBHYT0bnJ1gE-lkFoQ4GFA,241
387
389
  radboy/__pycache__/__init__.cpython-311.pyc,sha256=R-DVbUioMOW-Fnaq7FpT5F1a5p0q3b_RW-HpLRArCAY,242
388
390
  radboy/__pycache__/__init__.cpython-312.pyc,sha256=FsFzLXOlTK8_7ixoPZzakkR8Wibt-DvXLFh-oG2QlPw,164
389
- radboy/__pycache__/__init__.cpython-313.pyc,sha256=vKo9IkJYYOBk7LwJrb644uKPzG2jUjBjSO04SdiSE3I,165
391
+ radboy/__pycache__/__init__.cpython-313.pyc,sha256=SG-pWXYH4LIsU7IVVW7_wwXxIhsSk8PXZvtykUt_htk,165
390
392
  radboy/__pycache__/__init__.cpython-39.pyc,sha256=D48T6x6FUeKPfubo0sdS_ZUut3FmBvPMP7qT6rYBZzU,275
391
393
  radboy/__pycache__/possibleCode.cpython-311.pyc,sha256=zFiHyzqD8gUnIWu4vtyMYIBposiRQqaRXfcT_fOl4rU,20882
392
394
  radboy/__pycache__/possibleCode.cpython-312.pyc,sha256=tk_CO-AcsO3YZj5j6vEsw3g37UmEzWc5YgeWEoJEUg4,27922
@@ -411,7 +413,7 @@ radboy/tkGui/Images/__pycache__/__init__.cpython-311.pyc,sha256=tXBYpqbOlZ24B1BI
411
413
  radboy/tkGui/__pycache__/BeginnersLuck.cpython-311.pyc,sha256=xLQOnV1wuqHGaub16mPX0dDMGU9ryCeLtNz5e517_GE,3004
412
414
  radboy/tkGui/__pycache__/Review.cpython-311.pyc,sha256=wKq24iM6Xe2OampgZ7-8U6Nvmgs2y-qWOrGwtWhc75k,4047
413
415
  radboy/tkGui/__pycache__/__init__.cpython-311.pyc,sha256=BX7DBn5qbvKTvlrKOP5gzTBPBTeTgSMjBW6EMl7N8e0,230
414
- radboy-0.0.377.dist-info/METADATA,sha256=OLwSosYv06cLPjyeIuv82ApChwhGcdtHnnBshTmYPdY,794
415
- radboy-0.0.377.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
416
- radboy-0.0.377.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
417
- radboy-0.0.377.dist-info/RECORD,,
416
+ radboy-0.0.379.dist-info/METADATA,sha256=_KeNCSmRcn8QAbR1ALXaOAeiPt0Z0TFD-okZwfica8w,794
417
+ radboy-0.0.379.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
418
+ radboy-0.0.379.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
419
+ radboy-0.0.379.dist-info/RECORD,,