radboy 0.0.378__py3-none-any.whl → 0.0.380__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
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))])
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)),])
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)),])
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
@@ -4178,6 +4178,8 @@ where:
4178
4178
  self.product_history=lambda self=self:DayLogger(engine=ENGINE)
4179
4179
  self.reset_next_barcode()
4180
4180
  self.DateTimePkr=DateTimePkr
4181
+ self.TimePkr=TimePkr
4182
+ self.DatePkr=DatePkr
4181
4183
  of=Path("GeneratedString.txt")
4182
4184
  if of.exists():
4183
4185
  age=datetime.now()-datetime.fromtimestamp(of.stat().st_ctime)
@@ -4654,6 +4656,24 @@ where:
4654
4656
  'exec':check_back_ups,
4655
4657
  }
4656
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
4657
4677
  #self.product_history=
4658
4678
 
4659
4679
  '''
radboy/__init__.py CHANGED
@@ -1 +1 @@
1
- VERSION='0.0.378'
1
+ VERSION='0.0.380'
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: radboy
3
- Version: 0.0.378
3
+ Version: 0.0.380
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=uBMpOQrnFVbh87vwXh0jkHtOeYjmOrPGWcxf4BaR4l0,17
8
+ radboy/__init__.py,sha256=0__JNgejIJEDNEFHP_MCjMXpR_9eSbVtldf_UYfOkgw,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,7 +76,7 @@ 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
@@ -90,7 +90,7 @@ radboy/DB/SMLabelImporter.py,sha256=eUoBDxVUUEKGL2g_PwkASM67ZB7FmXtSnn4bCagskhY,
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
@@ -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=sJGWFNug3cNeIvO6AFwQyynvW__S-r3OYZxB--iczjk,13473
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=wV3j6d7Hsmy6l8oJxe7aI9ycYjbY2CD7vORqnlE2Ugg,305914
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=qNmetSDNaeILAN-yCtAz6NUqOAdTZE6ynveJ0zgUgrI,375536
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=buclokggO8PJqENuMH4JHNl4qOK54UoMe7SS6M-g96k,165
391
+ radboy/__pycache__/__init__.cpython-313.pyc,sha256=MrAaEitcrgyuQPToBuM0nJvlm0PzFNUjkdfUMDSqg24,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.378.dist-info/METADATA,sha256=7UT9cJwb294ZIK6dX7hpmasGiUQka_FpJD1toFLwQko,794
415
- radboy-0.0.378.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
416
- radboy-0.0.378.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
417
- radboy-0.0.378.dist-info/RECORD,,
416
+ radboy-0.0.380.dist-info/METADATA,sha256=IlahHGfQDZs4z_Cuxf4btCRShR9-s6egt04svOMsgSc,794
417
+ radboy-0.0.380.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
418
+ radboy-0.0.380.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
419
+ radboy-0.0.380.dist-info/RECORD,,