radboy 0.0.439__py3-none-any.whl → 0.0.441__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 CHANGED
@@ -30,15 +30,33 @@ from decimal import Decimal
30
30
  import biip
31
31
  import radboy.Orders.MilkWaterOrder as MWR
32
32
  import itertools
33
+ from inputimeout import inputimeout, TimeoutOccurred
33
34
 
34
- def orderQuery(query,orderBy):
35
+ def timedout(ptext):
36
+ try:
37
+ t=5
38
+ past=datetime.now()
39
+ user_input = inputimeout(prompt=f"{ptext}({t} Seconds Passed='timeout' returned from {past.strftime("%I:%M:%S %p(12H)/%H:%M:%S(24H)")}):", timeout=t)
40
+ return user_input
41
+ except TimeoutOccurred:
42
+ print("Time's up! No input received.")
43
+ user_input = "timeout"
44
+ return user_input
45
+
46
+ def orderQuery(query,orderBy,inverse=False):
35
47
  LookUpState=db.detectGetOrSet('list maker lookup order',False,setValue=False,literal=False)
36
48
  if not isinstance(LookUpState,bool):
37
49
  LookUpState=db.detectGetOrSet('list maker lookup order',False,setValue=True,literal=False)
38
50
  if LookUpState == True:
39
- query=query.order_by(orderBy.asc())
51
+ if not inverse:
52
+ query=query.order_by(orderBy.asc())
53
+ else:
54
+ query=query.order_by(orderBy.desc())
40
55
  else:
41
- query=query.order_by(orderBy.desc())
56
+ if not inverse:
57
+ query=query.order_by(orderBy.desc())
58
+ else:
59
+ query=query.order_by(orderBy.asc())
42
60
  return query
43
61
 
44
62
  def generate_cmds(startcmd,endCmd):
@@ -843,7 +861,7 @@ class Prompt(object):
843
861
  return out
844
862
 
845
863
 
846
- def __init2__(self,func,ptext='do what',helpText='',data={},noHistory=False,qc=None,replace_ptext=None):
864
+ def __init2__(self,func,ptext='do what',helpText='',data={},noHistory=False,qc=None,replace_ptext=None,alt_input=None):
847
865
  '''
848
866
  lsbld - bldls()
849
867
  lsbld- - bldls(minus=True)
@@ -1105,7 +1123,10 @@ class Prompt(object):
1105
1123
  {m}{Fore.black}{Back.grey_70} P_CMDS SncLstCmd:{str(duration).split(".")[0]} {Style.reset}|{Fore.black}{Back.grey_50} TmInShl:{str(InShellElapsed).split(".")[0]}|DT:{now.ctime()}| {Fore.dark_blue}{Style.bold}{Style.underline}Week {datetime.now().strftime("%W")} {Style.reset}|{Fore.light_magenta}#RPLC#={Fore.tan}rplc {Fore.light_magenta}#RPLC#{Fore.tan} frm {Fore.light_red}CB{Fore.orange_3}.{Fore.light_green}default={Fore.light_yellow}True{Fore.light_steel_blue} or by {Fore.light_red}CB{Fore.orange_3}.{Fore.light_green}doe={Fore.light_yellow}Newest{Style.reset}|{Fore.light_salmon_1}c2c=calc2cmd={Fore.sky_blue_2}clctr rslt to inpt{Style.reset}|b={color2}back|{Fore.light_red}h={color3}help{color4}|{Fore.light_red}h+={color3}help+{color4}|{Fore.light_magenta}i={color3}info|{Fore.light_green}{Fore.light_steel_blue}CMD#c2cb[{Fore.light_red}e{Fore.light_steel_blue}]{Fore.light_green}{Fore.light_red}|{Fore.orange_3}c2cb[{Fore.light_red}e{Fore.orange_3}]#CMD{Fore.light_green} - copy CMD to cb and set default | Note: optional [{Fore.light_red}e{Fore.light_green}] executes after copy{Style.reset} {Fore.light_steel_blue}NTE: cmd ends/start-swith [{Fore.light_red}#clr|clr#{Fore.light_green}{Fore.light_steel_blue}] clrs crnt ln 4 a rtry{Style.reset} {Fore.orange_red_1}|c{Fore.light_steel_blue}=calc|{Fore.spring_green_3a}cb={Fore.light_blue}clipboard{Style.reset}|{Fore.light_salmon_1}cdp={Fore.green_yellow}paste cb dflt {Fore.green}|q={Fore.green_yellow}Quit Menu (qm)
1106
1124
  {Fore.light_red+os.get_terminal_size().columns*'.'}
1107
1125
  {Fore.rgb(55,191,78)}HFL:{Fore.rgb(55,130,191)}{lineTotal()}{Fore.light_red}{Fore.light_green}{Back.grey_15}'''
1108
- cmd=input(f"{Fore.light_yellow}{'.'*os.get_terminal_size().columns}\n{Back.grey_15}{Fore.light_yellow}{ptext}{Fore.light_steel_blue}\n[{Fore.light_green}cheat/cht=brief cmd helpt{Fore.light_steel_blue}] ({Fore.orange_red_1}Exec{Fore.light_steel_blue})\n ->{Style.reset}")
1126
+ if alt_input is not None and callable(alt_input):
1127
+ cmd=alt_input(f"{Fore.light_yellow}{'.'*os.get_terminal_size().columns}\n{Back.grey_15}{Fore.light_yellow}{ptext}{Fore.light_steel_blue}\n[{Fore.light_green}cheat/cht=brief cmd helpt{Fore.light_steel_blue}] ({Fore.orange_red_1}Exec{Fore.light_steel_blue})\n ->{Style.reset}")
1128
+ else:
1129
+ cmd=input(f"{Fore.light_yellow}{'.'*os.get_terminal_size().columns}\n{Back.grey_15}{Fore.light_yellow}{ptext}{Fore.light_steel_blue}\n[{Fore.light_green}cheat/cht=brief cmd helpt{Fore.light_steel_blue}] ({Fore.orange_red_1}Exec{Fore.light_steel_blue})\n ->{Style.reset}")
1109
1130
 
1110
1131
  def strip_null(text):
1111
1132
  if '\0' in text:
@@ -1997,6 +2018,9 @@ CMD's are not final until ended with {Fore.magenta}{hw_delim}{Style.reset}""")
1997
2018
  elif cmd.lower() in ['pc','prec calc',]:
1998
2019
  resultant=TM.Tasks.TasksMode(parent=self,engine=db.ENGINE,init_only=True).prec_calc()
1999
2020
  return func(resultant,data)
2021
+ elif cmd.lower() in generate_cmds(startcmd=['lds2','rdts'],endCmd=['',]):
2022
+ resultant=TM.Tasks.TasksMode(parent=self,engine=db.ENGINE,init_only=True).rd_ui()
2023
+ continue
2000
2024
  elif cmd.lower() in ['b','back']:
2001
2025
  lastTime=db.detectGetOrSet("PromptLastDTasFloat",datetime.now().timestamp(),setValue=True)
2002
2026
  return
@@ -2055,7 +2079,8 @@ CMD's are not final until ended with {Fore.magenta}{hw_delim}{Style.reset}""")
2055
2079
  {Fore.grey_85}** {Fore.light_steel_blue}{f'{Fore.light_red},{Fore.light_steel_blue}'.join(generate_cmds(startcmd=['orddt','ordt','loads','lds'],endCmd=['frozen','Frozen','fzn']))}{Fore.light_green} print hard-coded order dates frozen load{Style.reset}
2056
2080
  {Fore.grey_85}** {Fore.light_steel_blue}{f'{Fore.light_red},{Fore.light_steel_blue}'.join(generate_cmds(startcmd=['orddt','ordt','loads','lds'],endCmd=['gm','lqr','general merchandise','liquor','totes','green totes','grn tts','grntts']))}{Fore.light_green} print hard-coded order dates GM Load/Liquor Load{Style.reset}
2057
2081
  {Fore.grey_85}** {Fore.light_steel_blue}{f'{Fore.light_red},{Fore.light_steel_blue}'.join(generate_cmds(startcmd=['orddts','ordts','loads','lds','orders','loads','rxdates'],endCmd=['','all','all dates','all dts','aldts','*']))}{Fore.light_green} print all load dates {Style.reset}
2058
- {Fore.grey_70}**{Fore.light_green}{f'{Fore.light_red},{Fore.light_steel_blue}'.join(generate_cmds(startcmd=['units',],endCmd=['']))}{Fore.light_steel_blue} list supported units{Style.reset}
2082
+ {Fore.grey_70}** {Fore.light_steel_blue}{f'{Fore.light_red},{Fore.light_steel_blue}'.join(generate_cmds(startcmd=['units',],endCmd=['']))}{Fore.light_green} list supported units{Style.reset}
2083
+ {Fore.grey_70}** {Fore.light_steel_blue}{f'{Fore.light_red},{Fore.light_steel_blue}'.join(generate_cmds(startcmd=['lds2','rdts'],endCmd=['',]))}{Fore.light_green} repeable dates,orders,etc...{Style.reset}
2059
2084
  '''
2060
2085
  print(extra)
2061
2086
  print(helpText)
@@ -2159,7 +2184,7 @@ CMD's are not final until ended with {Fore.magenta}{hw_delim}{Style.reset}""")
2159
2184
  elif cmd.lower() in ['vllo','view list lookup order']:
2160
2185
  try:
2161
2186
  state=db.detectGetOrSet('list maker lookup order',False,setValue=False,literal=False)
2162
- translate={True:"Ascending by Timestamp/Newest First/Last Line==Oldest",False:"Descending by Timestamp/Oldest First/Last Line==Newest"}
2187
+ translate={True:"Ascending by Timestamp, Newest==First Line & Last Line==Oldest",False:"Descending by Timestamp, Oldest==First Line & Last Line==Newest"}
2163
2188
  print(f"{state} : {translate[state]}")
2164
2189
  except Exception as e:
2165
2190
  state=db.detectGetOrSet('list maker lookup order',True,setValue=True,literal=False)
Binary file
radboy/DB/db.py CHANGED
@@ -130,7 +130,7 @@ str(uuid1()):{
130
130
 
131
131
 
132
132
  try:
133
- t=15
133
+ t=5
134
134
  past=datetime.now()
135
135
  user_input = inputimeout(prompt=f"Boot CMDS({t} Seconds Passed=autoboot from {past.strftime("%I:%M:%S %p(12H)/%H:%M:%S(24H)")}):", timeout=t)
136
136
  print(f"You entered: {user_input}")
@@ -745,7 +745,7 @@ class Template:
745
745
  m=[]
746
746
  now=datetime.now()
747
747
  microid=now.timestamp()
748
- nowStr=now.strftime(" -> Time:%I:%M:%S %p(12)/%H:%M:%S(24H)\nDate:%m/%d/%Y")+f" Timestamp:{microid}\n"
748
+ nowStr=now.strftime(" -> Time:%I:%M:%S %p(12)/%H:%M:%S(24H)\nDate:%m/%d/%Y")+f" Today:{now.strftime("%A")} Timestamp:{microid}\n"
749
749
  m.append(f"{nowStr} -> {cc}{self.__tablename__}{Style.reset}(")
750
750
  fields=[i.name for i in self.__table__.columns]
751
751
  ft={i.name:str(i.type).lower() for i in self.__table__.columns}
@@ -765,7 +765,7 @@ class Template:
765
765
  return '\n'.join(m)
766
766
 
767
767
  def __repr__(self,vc=Fore.dark_blue+Style.bold,fc=Fore.light_green,cc=Fore.light_magenta,vg=Back.grey_50):
768
- return self.str(self,vc,fc,cc,vg)
768
+ return self.__str__(vc,fc,cc,vg)
769
769
 
770
770
 
771
771
  class EntryDataExtras(BASE,Template):
@@ -5141,4 +5141,46 @@ class Scheduled_And_Appointments(BASE,Template):
5141
5141
  setattr(self,k,kwargs.get(k))
5142
5142
 
5143
5143
 
5144
- Scheduled_And_Appointments.metadata.create_all(ENGINE)
5144
+ Scheduled_And_Appointments.metadata.create_all(ENGINE)
5145
+
5146
+ class RepeatableDates(BASE,Template):
5147
+ __tablename__='RepeatableDates'
5148
+ rd_id=Column(Integer,primary_key=True)
5149
+
5150
+ For_Whom=Column(String,default=None)
5151
+ What_Is_It=Column(String,default=None)
5152
+
5153
+ PalletCount=Column(Float,default=0)
5154
+
5155
+ #if true, DO NOT USE info for DTORX
5156
+ #repe
5157
+ Go_By_WeekDayNames=Column(Boolean,default=True)
5158
+ WeekDayNames=Column(String,default='[]')
5159
+ #else, use DTORX
5160
+
5161
+ #DateTime recieved
5162
+ DTORX=Column(DateTime,default=None)
5163
+ #repeats same day every every period of x
5164
+ #every 24h
5165
+
5166
+ DTOE=Column(DateTime,default=datetime.now())
5167
+ Comment=Column(String,default='N/A')
5168
+
5169
+ def as_json(self):
5170
+ excludes=['rd_id','DTOE']
5171
+ dd={str(d.name):self.__dict__[d.name] for d in self.__table__.columns if d.name not in excludes}
5172
+ return json.dumps(dd)
5173
+
5174
+ def asID(self):
5175
+ return f"RepeatableDates(rd_id={self.rd_id})"
5176
+
5177
+ def __init__(self,**kwargs):
5178
+ for k in kwargs.keys():
5179
+ if k in [s.name for s in self.__table__.columns]:
5180
+ setattr(self,k,kwargs.get(k))
5181
+
5182
+ try:
5183
+ RepeatableDates.metadata.create_all(ENGINE)
5184
+ except Exception as e:
5185
+ RepeatableDates.__table__.drop(ENGINE)
5186
+ RepeatableDates.metadata.create_all(ENGINE)
radboy/FB/FBMTXT.py CHANGED
@@ -8,6 +8,17 @@ import re
8
8
  from datetime import timedelta
9
9
  import calendar
10
10
  from colored import Fore,Back,Style
11
+ import itertools
12
+
13
+ def generate_cmds(startcmd,endCmd):
14
+ cmd=(startcmd,endCmd)
15
+ cmds=[]
16
+ for i in itertools.product(startcmd,endCmd):
17
+ if ''.join(i) not in cmds:
18
+ cmds.append(''.join(i))
19
+ if ' '.join(i) not in cmds:
20
+ cmds.append(' '.join(i))
21
+ return cmds
11
22
 
12
23
  fm_data={
13
24
  'Decimal':{
@@ -55,6 +66,7 @@ fm_data={
55
66
  'default':[],
56
67
  },
57
68
  }
69
+ UNDER_RND="Under Development; not functional!"
58
70
  def FormBuilderHelpText():
59
71
  TODAY_IS=datetime.now()
60
72
  z=TODAY_IS
@@ -90,6 +102,36 @@ def FormBuilderHelpText():
90
102
  {Fore.light_cyan}**{Fore.light_steel_blue}Boolean True={Fore.spring_green_3a}y,yes,Yes,Y,True,T,t,1 or an equation that results in a True such as {Fore.orange_red_1}`datetime.now()`/{datetime.now()}`!=datetime(2001,1,1)`/{datetime(2001,1,1)} or 1==1.{Style.reset}
91
103
  {Fore.light_cyan}**{Fore.light_steel_blue}Boolean False={Fore.spring_green_3a}false,no,n,N,No,False,0 or an equation that results in a False such as {Fore.orange_red_1}`datetime.now()`/{datetime.now()}`==datetime(2001,1,1)`/{datetime(2001,1,1)} or 1==0.{Style.reset}
92
104
  {Fore.medium_violet_red}**{Fore.light_magenta}When Asked for a List of integers {Fore.magenta}use 1,2,3 for indexes 1-3, {Fore.orange_red_1}or 1,3 for indexes 1 and 3, {Fore.light_red}or 1,4,6-8,10 for indexes 1,4,6,7,8, and 10,{Fore.purple_1a} or 1 for index 1.{Style.reset}
105
+ {UNDER_RND}
106
+ {Fore.green_yellow}**{Fore.light_magenta}next/this/upcoming week start - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
107
+ {Fore.green_yellow}**{Fore.light_magenta}next/this/upcoming week end - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
108
+ {Fore.green_yellow}**{Fore.light_magenta}previous/last week start - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
109
+ {Fore.green_yellow}**{Fore.light_magenta}previous/last week end - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
110
+
111
+ {Fore.green_yellow}**{Fore.light_magenta}previous/last saturday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
112
+ {Fore.green_yellow}**{Fore.light_magenta}previous/last sunday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
113
+ {Fore.green_yellow}**{Fore.light_magenta}previous/last monday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
114
+ {Fore.green_yellow}**{Fore.light_magenta}previous/last tuesday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
115
+ {Fore.green_yellow}**{Fore.light_magenta}previous/last wednesday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
116
+ {Fore.green_yellow}**{Fore.light_magenta}previous/last thursday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
117
+ {Fore.green_yellow}**{Fore.light_magenta}previous/last friday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
118
+
119
+ {Fore.green_yellow}**{Fore.light_magenta}next/this/upcoming saturday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
120
+ {Fore.green_yellow}**{Fore.light_magenta}next/this/upcoming sunday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
121
+ {Fore.green_yellow}**{Fore.light_magenta}next/this/upcoming monday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
122
+ {Fore.green_yellow}**{Fore.light_magenta}next/this/upcoming tuesday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
123
+ {Fore.green_yellow}**{Fore.light_magenta}next/this/upcoming wednesday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
124
+ {Fore.green_yellow}**{Fore.light_magenta}next/this/upcoming thursday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
125
+ {Fore.green_yellow}**{Fore.light_magenta}next/this/upcoming friday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
126
+
127
+ {Fore.green_yellow}**{Fore.light_magenta}saturday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} of this week only{Style.reset}
128
+ {Fore.green_yellow}**{Fore.light_magenta}sunday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} of this week only{Style.reset}
129
+ {Fore.green_yellow}**{Fore.light_magenta}monday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} of this week only{Style.reset}
130
+ {Fore.green_yellow}**{Fore.light_magenta}tuesday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} of this week only{Style.reset}
131
+ {Fore.green_yellow}**{Fore.light_magenta}wednesday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} of this week only{Style.reset}
132
+ {Fore.green_yellow}**{Fore.light_magenta}thursday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} of this week only{Style.reset}
133
+ {Fore.green_yellow}**{Fore.light_magenta}friday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} of this week only{Style.reset}
134
+
93
135
  '''
94
136
  print(msg)
95
137
 
@@ -269,17 +311,237 @@ def FormBuilderMkText(text,data,passThru=[],PassThru=True,alternative_false=None
269
311
  return datetime(year=TODAY_IS.year,month=TODAY_IS.month,day=TODAY_IS.day)-timedelta(seconds=60*60*24*7)
270
312
 
271
313
  '''
272
- #new cmds to be added, tab below backwards
273
- elif text.lower() in ['next week start',]:
274
- return datetime(year=TODAY_IS.year,month=TODAY_IS.month,day=TODAY_IS.day)+timedelta(seconds=60*60*24*7)
275
- elif text.lower() in ['next week end',]:
276
- return datetime(year=TODAY_IS.year,month=TODAY_IS.month,day=TODAY_IS.day)+timedelta(seconds=60*60*24*7)
277
-
278
- elif text.lower() in ['last week start',]:
279
- return datetime(year=TODAY_IS.year,month=TODAY_IS.month,day=TODAY_IS.day)-timedelta(seconds=60*60*24*7)
280
- elif text.lower() in ['last week end',]:
281
- return datetime(year=TODAY_IS.year,month=TODAY_IS.month,day=TODAY_IS.day)-timedelta(seconds=60*60*24*7)
314
+ {Fore.green_yellow}**{Fore.light_magenta}next/this/upcoming week start - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
315
+ {Fore.green_yellow}**{Fore.light_magenta}next/this/upcoming week end - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
316
+ {Fore.green_yellow}**{Fore.light_magenta}previous/last week start - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
317
+ {Fore.green_yellow}**{Fore.light_magenta}previous/last week end - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
318
+ [RDY]
319
+ {Fore.green_yellow}**{Fore.light_magenta}previous/last saturday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
320
+ {Fore.green_yellow}**{Fore.light_magenta}previous/last sunday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
321
+ {Fore.green_yellow}**{Fore.light_magenta}previous/last monday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
322
+ {Fore.green_yellow}**{Fore.light_magenta}previous/last tuesday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
323
+ {Fore.green_yellow}**{Fore.light_magenta}previous/last wednesday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
324
+ {Fore.green_yellow}**{Fore.light_magenta}previous/last thursday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
325
+ {Fore.green_yellow}**{Fore.light_magenta}previous/last friday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
326
+ [RDY]
327
+ {Fore.green_yellow}**{Fore.light_magenta}next/this/upcoming saturday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
328
+ {Fore.green_yellow}**{Fore.light_magenta}next/this/upcoming sunday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
329
+ {Fore.green_yellow}**{Fore.light_magenta}next/this/upcoming monday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
330
+ {Fore.green_yellow}**{Fore.light_magenta}next/this/upcoming tuesday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
331
+ {Fore.green_yellow}**{Fore.light_magenta}next/this/upcoming wednesday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
332
+ {Fore.green_yellow}**{Fore.light_magenta}next/this/upcoming thursday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
333
+ {Fore.green_yellow}**{Fore.light_magenta}next/this/upcoming friday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} from today{Style.reset}
334
+ [RDY]
335
+ {Fore.green_yellow}**{Fore.light_magenta}saturday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} of this week only{Style.reset}
336
+ {Fore.green_yellow}**{Fore.light_magenta}sunday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} of this week only{Style.reset}
337
+ {Fore.green_yellow}**{Fore.light_magenta}monday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} of this week only{Style.reset}
338
+ {Fore.green_yellow}**{Fore.light_magenta}tuesday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} of this week only{Style.reset}
339
+ {Fore.green_yellow}**{Fore.light_magenta}wednesday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} of this week only{Style.reset}
340
+ {Fore.green_yellow}**{Fore.light_magenta}thursday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} of this week only{Style.reset}
341
+ {Fore.green_yellow}**{Fore.light_magenta}friday - {Fore.orange_red_1}WARNING:{Fore.light_cyan} of this week only{Style.reset}
282
342
  '''
343
+ elif text.lower() in generate_cmds(startcmd=['previous','last','prev'],endCmd=['week end','w e','we']):
344
+ today=datetime.now()
345
+ friday=6
346
+ weekEnd=today+timedelta(days=(friday-today.weekday())%7)
347
+ weekEnd-=timedelta(days=7)
348
+ return weekEnd
349
+ elif text.lower() in generate_cmds(startcmd=['previous','last','prev'],endCmd=['week start','w s','ws']):
350
+ today=datetime.now()
351
+ friday=6
352
+ Friday=today+timedelta(days=(friday-today.weekday())%7)
353
+ weekStart=Friday-timedelta(days=7)
354
+ weekStart-=timedelta(days=6)
355
+ return weekStart
356
+ elif text.lower() in generate_cmds(startcmd=['next','upcoming'],endCmd=['week end','w e','we']):
357
+ today=datetime.now()
358
+ friday=6
359
+ weekEnd=today+timedelta(days=(friday-today.weekday())%7)
360
+ weekEnd+=timedelta(days=7)
361
+ return weekEnd
362
+ elif text.lower() in generate_cmds(startcmd=['next','upcoming'],endCmd=['week start','w s','ws']):
363
+ today=datetime.now()
364
+ friday=0
365
+ Friday=today+timedelta(days=(friday-today.weekday())%7)
366
+ weekStart=Friday-timedelta(days=7)
367
+ weekStart+=timedelta(days=7)
368
+ return weekStart
369
+ elif text.lower() in generate_cmds(startcmd=['this','current'],endCmd=['week end','w e','we']):
370
+ today=datetime.now()
371
+ friday=6
372
+ weekEnd=today+timedelta(days=(friday-today.weekday())%7)
373
+ return weekEnd
374
+ elif text.lower() in generate_cmds(startcmd=['this','current'],endCmd=['week start','w s','ws']):
375
+ today=datetime.now()
376
+ friday=6
377
+ Friday=today+timedelta(days=(friday-today.weekday())%7)
378
+ weekStart=Friday-timedelta(days=7)
379
+ return weekStart
380
+ elif text.lower() in generate_cmds(startcmd=['previous','last','prev'],endCmd=['friday',]):
381
+ dayNum=4
382
+ today=datetime.now()
383
+ daysUntil=(dayNum-today.weekday())%7
384
+ dayOf=today+timedelta(days=daysUntil)
385
+ lastDay=dayOf-timedelta(days=7)
386
+ return lastDay
387
+ elif text.lower() in generate_cmds(startcmd=['previous','last','prev'],endCmd=['saturday',]):
388
+ dayNum=5
389
+ today=datetime.now()
390
+ daysUntil=(dayNum-today.weekday())%7
391
+ dayOf=today+timedelta(days=daysUntil)
392
+ lastDay=dayOf-timedelta(days=7)
393
+ return lastDay
394
+ elif text.lower() in generate_cmds(startcmd=['previous','last','prev'],endCmd=['sunday',]):
395
+ dayNum=6
396
+ today=datetime.now()
397
+ daysUntil=(dayNum-today.weekday())%7
398
+ dayOf=today+timedelta(days=daysUntil)
399
+ lastDay=dayOf-timedelta(days=7)
400
+ return lastDay
401
+ elif text.lower() in generate_cmds(startcmd=['previous','last','prev'],endCmd=['monday',]):
402
+ dayNum=0
403
+ today=datetime.now()
404
+ daysUntil=(dayNum-today.weekday())%7
405
+ dayOf=today+timedelta(days=daysUntil)
406
+ lastDay=dayOf-timedelta(days=7)
407
+ return lastDay
408
+ elif text.lower() in generate_cmds(startcmd=['previous','last','prev'],endCmd=['tuesday',]):
409
+ dayNum=1
410
+ today=datetime.now()
411
+ daysUntil=(dayNum-today.weekday())%7
412
+ dayOf=today+timedelta(days=daysUntil)
413
+ lastDay=dayOf-timedelta(days=7)
414
+ return lastDay
415
+ elif text.lower() in generate_cmds(startcmd=['previous','last','prev'],endCmd=['wednesday',]):
416
+ dayNum=2
417
+ today=datetime.now()
418
+ daysUntil=(dayNum-today.weekday())%7
419
+ dayOf=today+timedelta(days=daysUntil)
420
+ lastDay=dayOf-timedelta(days=7)
421
+ return lastDay
422
+ elif text.lower() in generate_cmds(startcmd=['previous','last','prev'],endCmd=['thursday',]):
423
+ dayNum=3
424
+ today=datetime.now()
425
+ daysUntil=(dayNum-today.weekday())%7
426
+ dayOf=today+timedelta(days=daysUntil)
427
+ lastDay=dayOf-timedelta(days=7)
428
+ return lastDay
429
+ elif text.lower() in generate_cmds(startcmd=['next','this','upcoming'],endCmd=['friday',]):
430
+ dayOfWeek=4
431
+ today=datetime.now()
432
+ todaysDayOfWeek=today.weekday()
433
+ untilDayOfWeek=(dayOfWeek-todaysDayOfWeek)%7
434
+ if untilDayOfWeek == 0:
435
+ untilDayOfWeek=7
436
+ when=datetime(today.year,today.month,today.day)+timedelta(days=untilDayOfWeek)
437
+ return when
438
+ elif text.lower() in generate_cmds(startcmd=['next','this','upcoming'],endCmd=['saturday',]):
439
+ dayOfWeek=5
440
+ today=datetime.now()
441
+ todaysDayOfWeek=today.weekday()
442
+ untilDayOfWeek=(dayOfWeek-todaysDayOfWeek)%7
443
+ if untilDayOfWeek == 0:
444
+ untilDayOfWeek=7
445
+ when=datetime(today.year,today.month,today.day)+timedelta(days=untilDayOfWeek)
446
+ return when
447
+ elif text.lower() in generate_cmds(startcmd=['next','this','upcoming'],endCmd=['sunday',]):
448
+ dayOfWeek=6
449
+ today=datetime.now()
450
+ todaysDayOfWeek=today.weekday()
451
+ untilDayOfWeek=(dayOfWeek-todaysDayOfWeek)%7
452
+ if untilDayOfWeek == 0:
453
+ untilDayOfWeek=7
454
+ when=datetime(today.year,today.month,today.day)+timedelta(days=untilDayOfWeek)
455
+ return when
456
+ elif text.lower() in generate_cmds(startcmd=['next','this','upcoming'],endCmd=['monday',]):
457
+ dayOfWeek=0
458
+ today=datetime.now()
459
+ todaysDayOfWeek=today.weekday()
460
+ #add %7 for next
461
+ untilDayOfWeek=(dayOfWeek-todaysDayOfWeek)%7
462
+ if untilDayOfWeek == 0:
463
+ untilDayOfWeek=7
464
+ when=datetime(today.year,today.month,today.day)+timedelta(days=untilDayOfWeek)
465
+ return when
466
+ elif text.lower() in generate_cmds(startcmd=['next','this','upcoming'],endCmd=['tuesday',]):
467
+ dayOfWeek=1
468
+ today=datetime.now()
469
+ todaysDayOfWeek=today.weekday()
470
+ untilDayOfWeek=(dayOfWeek-todaysDayOfWeek)%7
471
+ if untilDayOfWeek == 0:
472
+ untilDayOfWeek=7
473
+ when=datetime(today.year,today.month,today.day)+timedelta(days=untilDayOfWeek)
474
+ return when
475
+ elif text.lower() in generate_cmds(startcmd=['next','this','upcoming'],endCmd=['wednesday',]):
476
+ dayOfWeek=2
477
+ today=datetime.now()
478
+ todaysDayOfWeek=today.weekday()
479
+ untilDayOfWeek=(dayOfWeek-todaysDayOfWeek)%7
480
+ if untilDayOfWeek == 0:
481
+ untilDayOfWeek=7
482
+ when=datetime(today.year,today.month,today.day)+timedelta(days=untilDayOfWeek)
483
+ return when
484
+ elif text.lower() in generate_cmds(startcmd=['next','this','upcoming'],endCmd=['thursday',]):
485
+ dayOfWeek=3
486
+ today=datetime.now()
487
+ todaysDayOfWeek=today.weekday()
488
+ untilDayOfWeek=(dayOfWeek-todaysDayOfWeek)%7
489
+ if untilDayOfWeek == 0:
490
+ untilDayOfWeek=7
491
+ when=datetime(today.year,today.month,today.day)+timedelta(days=untilDayOfWeek)
492
+ return when
493
+
494
+ elif text.lower() in ['friday',]:
495
+ dayOfWeek=4
496
+ today=datetime.now()
497
+ todaysDayOfWeek=today.weekday()
498
+ untilDayOfWeek=(dayOfWeek-todaysDayOfWeek)
499
+ when=datetime(today.year,today.month,today.day)+timedelta(days=untilDayOfWeek)
500
+ return when
501
+ elif text.lower() in ['saturday',]:
502
+ dayOfWeek=5
503
+ today=datetime.now()
504
+ todaysDayOfWeek=today.weekday()
505
+ untilDayOfWeek=(dayOfWeek-todaysDayOfWeek)
506
+ when=datetime(today.year,today.month,today.day)+timedelta(days=untilDayOfWeek)
507
+ return when
508
+ elif text.lower() in ['sunday',]:
509
+ dayOfWeek=6
510
+ today=datetime.now()
511
+ todaysDayOfWeek=today.weekday()
512
+ untilDayOfWeek=(dayOfWeek-todaysDayOfWeek)
513
+ when=datetime(today.year,today.month,today.day)+timedelta(days=untilDayOfWeek)
514
+ return when
515
+ elif text.lower() in ['monday',]:
516
+ dayOfWeek=0
517
+ today=datetime.now()
518
+ todaysDayOfWeek=today.weekday()
519
+ #add %7 for next
520
+ untilDayOfWeek=(dayOfWeek-todaysDayOfWeek)
521
+ when=datetime(today.year,today.month,today.day)+timedelta(days=untilDayOfWeek)
522
+ return when
523
+ elif text.lower() in ['tuesday',]:
524
+ dayOfWeek=1
525
+ today=datetime.now()
526
+ todaysDayOfWeek=today.weekday()
527
+ untilDayOfWeek=(dayOfWeek-todaysDayOfWeek)
528
+ when=datetime(today.year,today.month,today.day)+timedelta(days=untilDayOfWeek)
529
+ return when
530
+ elif text.lower() in ['wednesday',]:
531
+ dayOfWeek=2
532
+ today=datetime.now()
533
+ todaysDayOfWeek=today.weekday()
534
+ untilDayOfWeek=(dayOfWeek-todaysDayOfWeek)
535
+ when=datetime(today.year,today.month,today.day)+timedelta(days=untilDayOfWeek)
536
+ return when
537
+ elif text.lower() in ['thursday',]:
538
+ dayOfWeek=3
539
+ today=datetime.now()
540
+ todaysDayOfWeek=today.weekday()
541
+ untilDayOfWeek=(dayOfWeek-todaysDayOfWeek)
542
+ when=datetime(today.year,today.month,today.day)+timedelta(days=untilDayOfWeek)
543
+ return when
544
+
283
545
  elif text.lower() in ['next year',]:
284
546
  TODAY_IS=datetime.now()
285
547
  return datetime(year=TODAY_IS.year,month=TODAY_IS.month,day=TODAY_IS.day)+timedelta(seconds=60*60*24*365)
@@ -94,6 +94,7 @@ class HealthLogUi:
94
94
  continue
95
95
 
96
96
  else:
97
+ entry=None
97
98
  htext=f"{Fore.orange_red_1}No Results for '{Fore.cyan}{barcode}{Fore.orange_red_1}'{Style.reset}"
98
99
  again=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Try another search?[yes/no=default]",helpText=htext,data="boolean")
99
100
  if again is None:
radboy/RecordMyCodes.py CHANGED
@@ -146,7 +146,7 @@ async def protect():
146
146
  x_year=new_date.year
147
147
  new_cleared_date=detectGetOrSet("cleared_date",f"{x_month}/{x_day}/{x_year}",setValue=True,literal=True)
148
148
  cleared_times=detectGetOrSet("cleared_times",0,setValue=True)
149
- graveyard=Prompt.__init2__(None,func=lambda text,data,passThru=[],PassThru=False:FormBuilderMkText(text,data,passThru=[],PassThru=PassThru),ptext="Are working overnight?/skip backup==True.",helpText="type a boolean yes or no",data="boolean")
149
+ graveyard=Prompt.__init2__(None,func=lambda text,data,passThru=[],PassThru=False:FormBuilderMkText(text,data,passThru=[],PassThru=PassThru),ptext="Are working overnight?/skip backup==True.",helpText="type a boolean yes or no",data="boolean",alt_input=timedout)
150
150
  print(graveyard,"x",type(graveyard))
151
151
  if graveyard in ['d',True]:
152
152
  graveyard=True
@@ -164,7 +164,7 @@ async def protect():
164
164
  bu=detectGetOrSet("daily_backups_count",1,setValue=False,literal=False)
165
165
  cleared_times=detectGetOrSet("cleared_times",0,setValue=False)
166
166
  if cleared_times >= bu:
167
- graveyard=Prompt.__init2__(None,func=lambda text,data,passThru=[],PassThru=False:FormBuilderMkText(text,data,passThru=[],PassThru=PassThru),ptext="Are working overnight?/skip backup==True.",helpText="type a boolean yes or no",data="boolean")
167
+ graveyard=Prompt.__init2__(None,func=lambda text,data,passThru=[],PassThru=False:FormBuilderMkText(text,data,passThru=[],PassThru=PassThru),ptext="Are working overnight?/skip backup==True.",helpText="type a boolean yes or no",data="boolean",alt_input=timedout)
168
168
  if graveyard in ['d',True]:
169
169
  graveyard=True
170
170
  return
@@ -178,7 +178,7 @@ async def protect():
178
178
  print(f"{Fore.grey_70}cleared at {Fore.green_3a}{cleared_date}{Fore.grey_70}for a duration of {Fore.green_3a}{dur}{Fore.light_blue} :{Fore.light_cyan} clear protection is enabled and you have to wait ({Fore.light_steel_blue}to alter use the following cmd set {Fore.cyan}`sysset`;`se`;$INDEX_FOR==bypass_clear_time_clear_protection;`true` or `false`{Fore.light_cyan}) {Fore.light_cyan}{waiting}{Fore.orange_red_1} or @ {tomorrow} to clear data to zero to {Fore.light_yellow}prevent {Fore.light_red}duplicate logs!{Style.reset}")
179
179
  return
180
180
  else:
181
- graveyard=Prompt.__init2__(None,func=lambda text,data,passThru=[],PassThru=False:FormBuilderMkText(text,data,passThru=[],PassThru=PassThru),ptext="Are working overnight?/skip backup==True.",helpText="type a boolean yes or no",data="boolean")
181
+ graveyard=Prompt.__init2__(None,func=lambda text,data,passThru=[],PassThru=False:FormBuilderMkText(text,data,passThru=[],PassThru=PassThru),ptext="Are working overnight?/skip backup==True.",helpText="type a boolean yes or no",data="boolean",alt_input=timedout)
182
182
  if graveyard in ['d']:
183
183
  graveyard=True
184
184
  return
@@ -0,0 +1,285 @@
1
+ from . import *
2
+
3
+ class RepeatableDatesUi:
4
+ def create_new_dt(self):
5
+ with Session(ENGINE) as session:
6
+ rd=RepeatableDates()
7
+ excludes=['rd_id','DTOE','Go_By_WeekDayNames','WeekDayNames']
8
+ fields={
9
+ i.name:{'default':getattr(rd,i.name),'type':str(i.type).lower()} for i in rd.__table__.columns if i.name not in excludes
10
+ }
11
+ fd=FormBuilder(data=fields)
12
+ fd['Go_By_WeekDayNames']=False
13
+
14
+ if fd is None:
15
+ print(f"{Fore.orange_red_1}User cancelled early!{Style.reset}")
16
+ for k in fd:
17
+ setattr(rd,k,fd[k])
18
+ session.add(rd)
19
+ session.commit()
20
+ session.flush()
21
+ session.refresh(rd)
22
+ print(rd)
23
+
24
+ def create_new_wd(self):
25
+ with Session(ENGINE) as session:
26
+ rd=RepeatableDates()
27
+
28
+ excludes=['rd_id','DTOE','DTORX','Go_By_WeekDayNames','WeekDayNames']
29
+ weekdays=['monday','tuesday','wednesday','thursday','friday','saturday','sunday']
30
+ ct=len(weekdays)
31
+ weekdays_ct=len(weekdays)
32
+
33
+ htext=[std_colorize(i,num,ct) for num,i in enumerate(weekdays)]
34
+ htext='\n'.join(htext)
35
+ print(htext)
36
+ weekday_names=Prompt.__init2__(None,func=FormBuilderMkText,ptext="which indexes?",helpText=htext,data="list")
37
+ if weekday_names is None:
38
+ return
39
+ if weekday_names in ['d',[]]:
40
+ return
41
+ tmp=[]
42
+ try:
43
+ for i in weekday_names:
44
+ try:
45
+ index=int(i)
46
+ tmp.append(weekdays[index])
47
+ except Exception as e:
48
+ print(e)
49
+ weekday_names=tmp
50
+ except Exception as e:
51
+ print("Could not continue as an error occured in translating indexes to name strings",e)
52
+ return
53
+
54
+ #check for valid daynames
55
+ #check to ensure its a valid list
56
+
57
+ fields={
58
+ i.name:{'default':getattr(rd,i.name),'type':str(i.type).lower()} for i in rd.__table__.columns if i.name not in excludes
59
+ }
60
+ fd=FormBuilder(data=fields)
61
+ fd['Go_By_WeekDayNames']=True
62
+ fd['WeekDayNames']=json.dumps(weekday_names)
63
+
64
+
65
+ if fd is None:
66
+ print(f"{Fore.orange_red_1}User cancelled early!{Style.reset}")
67
+ for k in fd:
68
+ setattr(rd,k,fd[k])
69
+ session.add(rd)
70
+ session.commit()
71
+ session.flush()
72
+ session.refresh(rd)
73
+ print(rd)
74
+
75
+ def searchText(self,query):
76
+ searchText=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Search Text: ",helpText="text to look for",data="string")
77
+ if searchText is None:
78
+ return None
79
+ elif searchText in ['d',' ','*']:
80
+ return query
81
+
82
+ invertSearch=Prompt.__init2__(None,func=FormBuilderMkText,ptext="do not include[y/n]: ",helpText="yes or no",data="boolean")
83
+ if invertSearch is None:
84
+ return None
85
+ elif invertSearch in ['d',]:
86
+ invertSearch=False
87
+
88
+ searchable=['string','varchar','text','str']
89
+ #print("throate")
90
+ textfields=[i.name for i in RepeatableDates.__table__.columns if str(i.type).lower() in searchable]
91
+ q=[]
92
+ for i in textfields:
93
+ if not invertSearch:
94
+ q.append(
95
+ getattr(RepeatableDates,i).icontains(searchText)
96
+ )
97
+ else:
98
+ q.append(
99
+ not_(getattr(RepeatableDates,i).icontains(searchText)),
100
+ )
101
+ #print("throate 1")
102
+ try:
103
+ idx=int(searchText)
104
+ if not invertSearch:
105
+ q.append(RepeatableDates.rd_id==idx)
106
+ else:
107
+ q.append(not_(RepeatableDates.rd_id==idx))
108
+ except Exception as e:
109
+ print(e)
110
+
111
+ if not invertSearch:
112
+ query=query.filter(or_(*q))
113
+ else:
114
+ query=query.filter(and_(*q))
115
+ return query
116
+
117
+ def orderDisplay(self,query,asString=False,asList=False):
118
+ tmp=[]
119
+ tmp_list=[]
120
+ query=orderQuery(query,RepeatableDates.DTOE,inverse=True).all()
121
+ ct=len(query)
122
+ if ct > 0:
123
+ for num,i in enumerate(query):
124
+ msg=f"{std_colorize(i,num,ct)}"
125
+ if not asString or not asList or ( not asList and not asString):
126
+ print(msg)
127
+ else:
128
+ tmp.append(msg)
129
+ tmp_list.append(i)
130
+ if asList and not asString:
131
+ return tmp_list
132
+ elif asString and not asList:
133
+ return '\n'.join(tmp)
134
+ elif asString and asList:
135
+ return tmp_list,'\n'.join(tmp)
136
+ else:
137
+ print("Nothing is Stored!")
138
+
139
+ def list_dtorx_upcoming(self):
140
+ with Session(ENGINE) as session:
141
+ today=Prompt.__init2__(None,func=FormBuilderMkText,ptext="What is today",helpText="any date that you wish to use as the date of today",data="datetime")
142
+ if today is None:
143
+ return
144
+ elif today in ['d',]:
145
+ today=datetime.now()
146
+ query=session.query(RepeatableDates).filter(and_(RepeatableDates.Go_By_WeekDayNames==False,RepeatableDates.DTORX>=today))
147
+ self.orderDisplay(query)
148
+
149
+ def list_dtorx_expired(self):
150
+ with Session(ENGINE) as session:
151
+ today=Prompt.__init2__(None,func=FormBuilderMkText,ptext="What is today",helpText="any date that you wish to use as the date of today",data="datetime")
152
+ if today is None:
153
+ return
154
+ elif today in ['d',]:
155
+ today=datetime.now()
156
+ query=session.query(RepeatableDates).filter(and_(RepeatableDates.Go_By_WeekDayNames==False,RepeatableDates.DTORX<=today))
157
+ self.orderDisplay(query)
158
+
159
+ def list_all(self):
160
+ with Session(ENGINE) as session:
161
+ query=session.query(RepeatableDates)
162
+
163
+ query=self.searchText(query)
164
+ if query is None:
165
+ return
166
+
167
+ query=orderQuery(query,RepeatableDates.DTOE,inverse=True)
168
+ self.orderDisplay(query)
169
+
170
+ def list_today_of_weekdays(self):
171
+ with Session(ENGINE) as session:
172
+ today=Prompt.__init2__(None,func=FormBuilderMkText,ptext="What is today?",helpText="any date that you wish to use as the date of today",data="datetime")
173
+ if today is None:
174
+ return
175
+ elif today in ['d',]:
176
+ today=datetime.now()
177
+
178
+ todaysDayName=today.strftime("%A").lower()
179
+ print(f"Today is a {todaysDayName}.")
180
+ query=session.query(RepeatableDates).filter(and_(RepeatableDates.Go_By_WeekDayNames==True,RepeatableDates.WeekDayNames.icontains(todaysDayName)))
181
+
182
+
183
+ self.orderDisplay(query)
184
+
185
+
186
+ def remove(self):
187
+ with Session(ENGINE) as session:
188
+ query=session.query(RepeatableDates)
189
+
190
+ query=self.searchText(query)
191
+ if query is None:
192
+ return
193
+
194
+ query=orderQuery(query,RepeatableDates.DTOE,inverse=True)
195
+ searched_list,searched_str=self.orderDisplay(query,asString=True,asList=True)
196
+ print(searched_str)
197
+ which=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Which indexes to delete?",helpText=searched_str,data="list")
198
+ if which is None:
199
+ return
200
+ elif which in ['d',[]]:
201
+ return
202
+ try:
203
+ for i in which:
204
+ try:
205
+ index=int(i)
206
+ print(searched_list[index])
207
+ session.delete(searched_list[index])
208
+ session.commit()
209
+ except Exception as ee:
210
+ print(ee)
211
+
212
+ except Exception as e:
213
+ print(e)
214
+
215
+
216
+ def fix_table(self):
217
+ RepeatableDates.__table__.drop(ENGINE)
218
+ RepeatableDates.metadata.create_all(ENGINE)
219
+
220
+
221
+ def __init__(self):
222
+ cmds={
223
+ uuid1():{
224
+ 'cmds':generate_cmds(startcmd=['create new','cn','cnw'],endCmd=['datetime','dt','date time']),
225
+ 'desc':"create a repeatable date with datetime",
226
+ 'exec':self.create_new_dt,
227
+ },
228
+ uuid1():{
229
+ 'cmds':generate_cmds(startcmd=['create new','cn','cnw'],endCmd=['wd','weekdays','week days','wk dys','wkdys']),
230
+ 'desc':"create a repeatable date with datetime",
231
+ 'exec':self.create_new_wd,
232
+ },
233
+ uuid1():{
234
+ 'cmds':generate_cmds(startcmd=['list','ls','lst'],endCmd=['all','a','*']),
235
+ 'desc':"lists everything! orders by DTOE",
236
+ 'exec':self.list_all,
237
+ },
238
+ uuid1():{
239
+ 'cmds':generate_cmds(startcmd=['list','ls','lst'],endCmd=['week day daily','wdd','wk dy dly','today is day of weekdays','tdy is dy of wkdys','tidow']),
240
+ 'desc':"lists today of from weekdays! orders by DTOE",
241
+ 'exec':self.list_today_of_weekdays,
242
+ },
243
+ uuid1():{
244
+ 'cmds':generate_cmds(startcmd=['list','ls','lst'],endCmd=['dtorx uc','dtorx upcoming','dtorxuc','dtorx+']),
245
+ 'desc':"list upcoming with dtorx! orders by DTOE",
246
+ 'exec':self.list_dtorx_upcoming,
247
+ },
248
+ uuid1():{
249
+ 'cmds':generate_cmds(startcmd=['list','ls','lst'],endCmd=['dtorx exp','dtorx expired','dtorxexp','dtorxx-']),
250
+ 'desc':"list expired with dtorx! orders by DTOE",
251
+ 'exec':self.list_dtorx_expired,
252
+ },
253
+ uuid1():{
254
+ 'cmds':generate_cmds(startcmd=['fix','fx'],endCmd=['tbl','table']),
255
+ 'desc':"reinstall table",
256
+ 'exec':self.fix_table,
257
+ },
258
+ uuid1():{
259
+ 'cmds':generate_cmds(startcmd=['rm','delete','del','remove','rmv'],endCmd=['',]),
260
+ 'desc':"delete a RepeatableDate",
261
+ 'exec':self.remove,
262
+ },
263
+
264
+ }
265
+ htext=[]
266
+ ct=len(cmds)
267
+ for num,i in enumerate(cmds):
268
+ m=f"{Fore.light_sea_green}{cmds[i]['cmds']}{Fore.orange_red_1} - {Fore.light_steel_blue}{cmds[i]['desc']}"
269
+ msg=f"{std_colorize(m,num,ct)}"
270
+ htext.append(msg)
271
+ htext='\n'.join(htext)
272
+ while True:
273
+ doWhat=Prompt.__init2__(None,func=FormBuilderMkText,ptext="RepeatableDatesUi @ Do What? ",helpText=htext,data="string")
274
+ if doWhat is None:
275
+ return
276
+ elif doWhat in ['','d',]:
277
+ print(htext)
278
+ continue
279
+ for i in cmds:
280
+ if doWhat.lower() in [i.lower() for i in cmds[i]['cmds']]:
281
+ if callable(cmds[i]['exec']):
282
+ cmds[i]['exec']()
283
+ else:
284
+ print(f"{i} - {cmds[i]['cmds']} - {cmds[i]['exec']}() - {cmds[i]['desc']}")
285
+ 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 .RepeatableDates import *
radboy/TasksMode/Tasks.py CHANGED
@@ -38,6 +38,7 @@ from copy import copy
38
38
  from decimal import Decimal,getcontext
39
39
  from radboy.GDOWN.GDOWN import *
40
40
  from radboy.Unified.clearalll import clear_all
41
+ from radboy.RepeatableDates import *
41
42
 
42
43
  def today():
43
44
  dt=datetime.now()
@@ -287,6 +288,9 @@ def save(value):
287
288
 
288
289
 
289
290
  class TasksMode:
291
+ def rd_ui(self):
292
+ RepeatableDatesUi()
293
+
290
294
  def process_cmd(self,buffer):
291
295
  data=OrderedDict()
292
296
  for num,line in enumerate(buffer):
radboy/__init__.py CHANGED
@@ -1 +1 @@
1
- VERSION='0.0.439'
1
+ VERSION='0.0.441'
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: radboy
3
- Version: 0.0.439
3
+ Version: 0.0.441
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>
@@ -3,9 +3,9 @@ radboy/1-2024-04-02.png_04022024.jpg,sha256=4DFsTncCfbqEp2136jFathURUQuu3zpe1Jnh
3
3
  radboy/Default.TTF,sha256=lXZrWPfYabD6LPbm_rJsGyHN8mMfHFhj_JvSBtXG6O4,915212
4
4
  radboy/Holidays.txt,sha256=y-JZPihh5iaWKxMIHNXD39yVuVmf1vMs4FdNDcg0f1Y,3114
5
5
  radboy/InventoryGlossary.txt,sha256=018-Yqca6DFb10jPdkUY-5qhkRlQN1k3rxoTaERQ-LA,91008
6
- radboy/RecordMyCodes.py,sha256=0qFnt3gEk58-8S1uCmVBbtOItFJ0zp0Yt7RqXsF0ksY,41364
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=ypYpXMxcQuA-y_7igDIPs8yNw_zUpeUWZN6GNceIrGQ,17
8
+ radboy/__init__.py,sha256=En6HhI0vqChTk6BkiyNs4YOtscF07K37MMNuvp0B8aE,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
@@ -83,14 +83,14 @@ radboy/DB/ExerciseTracker.py,sha256=CZ8jdKJiAE_QTAiJTRXi8ZOnS1NUiSvWVSKLHLpYVGk,
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=jkimTnBxb2iYwzabB83bCFf3PTCka8tAQdwJPG42QHI,137547
86
+ radboy/DB/Prompt.py,sha256=5WKiXvEY0NlUCkVWEOylOjRsVIVPpvLoKgen_aQKaKE,139054
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=giTrfWSjS3DVfuG6Z23vrv9KModGuK8yZI_AsUyvsQo,236190
93
+ radboy/DB/db.py,sha256=eS4USltCDbsMfc5JDQPObDwPK4451yA4ts8VJwgWo7Q,237461
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
@@ -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=Sr9ru3zWYhtl-XxuwPThwqdc2oMuvMFnK-rXieb3aM8,210894
110
+ radboy/DB/__pycache__/Prompt.cpython-313.pyc,sha256=JkwchbakHIXGcUoj65rHnMtqFtkj_LXlPWf9E_cElRo,213457
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=dtIn83o0Fmb4ZZfsw0Vqq9oJRaff_bX0QUP92WdMN78,373650
128
+ radboy/DB/__pycache__/db.cpython-313.pyc,sha256=gXmD_XfJ5GN1JzZAqGMJwm_HBVTp1mKXFsoiOJ4jL9g,375697
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
@@ -190,11 +190,11 @@ radboy/ExtractPkg/__pycache__/ExtractPkg2.cpython-313.pyc,sha256=bgw-00G_ouurOtO
190
190
  radboy/ExtractPkg/__pycache__/__init__.cpython-311.pyc,sha256=62yPgrgPZffZFLr6FscOqCdo45vfhScJ8aZbLTbD7I4,235
191
191
  radboy/ExtractPkg/__pycache__/__init__.cpython-312.pyc,sha256=Ll1iKcG0MDtoCIloQ_frcihvCSe1HPtyERzcAoXwQT0,273
192
192
  radboy/ExtractPkg/__pycache__/__init__.cpython-313.pyc,sha256=kL3Y3KxCTaGNg3aq5fhf2fsnQHZolGfvniEUfsx2bwY,152
193
- radboy/FB/FBMTXT.py,sha256=NANZatP0arGGstQmeYvawAUFEpTvQ9TONIIdEwT-SHs,23302
193
+ radboy/FB/FBMTXT.py,sha256=CxMqujpDLFe_azvARaJuF0l2x5tJFsDNqPfMjVpXkQw,41407
194
194
  radboy/FB/FormBuilder.py,sha256=oOlGmvrUaAOVf0DpM_wlHKfIyz-Q8WU9pJRZ7XPzdQg,14275
195
195
  radboy/FB/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
196
196
  radboy/FB/__pycache__/FBMTXT.cpython-312.pyc,sha256=XCVFa7Mo83LGIdRrTvcK73siUpcVIEQfXKCH2QHeViw,9626
197
- radboy/FB/__pycache__/FBMTXT.cpython-313.pyc,sha256=DIi31AUs-b42ZtEptBqYhViBzpkj66Qk8fXAdJyz-x4,33893
197
+ radboy/FB/__pycache__/FBMTXT.cpython-313.pyc,sha256=KS3MAXVUaBFxec0iglOcQEIILlptOuV0yGBP_snpstI,54681
198
198
  radboy/FB/__pycache__/FormBuilder.cpython-312.pyc,sha256=lNQdB-zApsXM7OQF9MIi0zRZD1SAL6stKEN-AyQiIKg,18873
199
199
  radboy/FB/__pycache__/FormBuilder.cpython-313.pyc,sha256=WOX7ndix3aTqTaF01w1x4X_b-DX15RAoBdH7_L5NPCc,19706
200
200
  radboy/FB/__pycache__/__init__.cpython-312.pyc,sha256=ULEL8Au_CxcYpNAcSoSbI65M7-av1W6Zuy6kQJUu-Mw,265
@@ -208,10 +208,10 @@ radboy/GeoTools/__pycache__/GeoClass.cpython-313.pyc,sha256=eZ6hpLKoic1XCb7BKKg-
208
208
  radboy/GeoTools/__pycache__/OSMClass.cpython-312.pyc,sha256=5RoT8_wiI8R7yb_B9FWIC7mALdGNoqyWtkzsjM2pbh0,40387
209
209
  radboy/GeoTools/__pycache__/__init__.cpython-312.pyc,sha256=Y7Xtrzwm44-xuY_4NK8aDjYfVmXIzUFWOyexJu9le8A,1238
210
210
  radboy/GeoTools/__pycache__/__init__.cpython-313.pyc,sha256=-bk9eEIxWZgHYZHtNJbrpubDRWkbdYNkGr5J7sVhyIE,1238
211
- radboy/HealthLog/HealthLog.py,sha256=CXumO1N_XXzn7kpynxTqfScQ-rxU4DFHp41VvXa8uL0,19659
211
+ radboy/HealthLog/HealthLog.py,sha256=n_LJx5ll77hkYifR2UF7CVzhjlwfqzwe7AJerMMgBwI,19678
212
212
  radboy/HealthLog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
213
213
  radboy/HealthLog/__pycache__/HealthLog.cpython-312.pyc,sha256=hTo4o7jo9L2yqPZgzuKUw_kon_PVcCuTRguELTuLrIo,27946
214
- radboy/HealthLog/__pycache__/HealthLog.cpython-313.pyc,sha256=WFH3UTIWisG7eq1YeffnfCwHGg0Pc6aPStWWrtyuhmE,32187
214
+ radboy/HealthLog/__pycache__/HealthLog.cpython-313.pyc,sha256=X0U2h2GE5_Q5CHUcReSCGBPGDvHatHH9HyRLh7N6fQU,32196
215
215
  radboy/HealthLog/__pycache__/__init__.cpython-312.pyc,sha256=yZrYKBk31pGSjCRqmqzpX409iw-muC1zsNO2ObqkGlY,272
216
216
  radboy/HealthLog/__pycache__/__init__.cpython-313.pyc,sha256=cqdZbEJKq9XVoVqDAwsW0pwwBBGSerJNWGlST3YVR3g,151
217
217
  radboy/InListRestore/ILR.py,sha256=s8fbbHLKQSVJX1VaeyGE-vdIUGBEbOPX29kRIG2j2WY,16847
@@ -307,6 +307,8 @@ radboy/Repack/__pycache__/Repack.cpython-313.pyc,sha256=6MjxbPlXSer4oFs2fyUXMNHP
307
307
  radboy/Repack/__pycache__/__init__.cpython-311.pyc,sha256=fnP-an9GM_scIcBL6D9z8eDQRgb7EWs1usOIzKRqc8s,231
308
308
  radboy/Repack/__pycache__/__init__.cpython-312.pyc,sha256=SRvtYwum13YJJ0NnJHQa6f_wHmyZ8KxHrmICv5Qawcg,269
309
309
  radboy/Repack/__pycache__/__init__.cpython-313.pyc,sha256=VxcShJHR5BBzMPCKvDDjPR2EPDErl1fTPOt93NZKzNQ,148
310
+ radboy/RepeatableDates/RepeatableDates.py,sha256=VBOM3D80X9tPJx82BaLE0sDrA1skwbFm7vRKs_hWLTs,8833
311
+ radboy/RepeatableDates/__init__.py,sha256=9fV4hKov1VvXym9fmNbTFTPxmMx6LA3AaL103IOrMQg,934
310
312
  radboy/Roster/Roster.py,sha256=hOtq-jA9Rw_167fqKF-iRBzLscVUtOXdY7g_kdPSgVs,82325
311
313
  radboy/Roster/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
312
314
  radboy/Roster/__pycache__/Roster.cpython-312.pyc,sha256=NX-4IpmvypiXQGgTvp6LOkwRqTIogSqUgEE08_9u24A,130560
@@ -334,7 +336,7 @@ radboy/SystemSettings/__pycache__/__init__.cpython-312.pyc,sha256=aIzp4Po0t8EhSA
334
336
  radboy/SystemSettings/__pycache__/__init__.cpython-313.pyc,sha256=QFDuoidxMWsGVLsy5lN-rDs6TP8nKJ4yyCyiamNOhwo,156
335
337
  radboy/TasksMode/ReFormula.py,sha256=REDRJYub-OEOE6g14oRQOLOQwv8pHqVJy4NQk3CCM90,2255
336
338
  radboy/TasksMode/SetEntryNEU.py,sha256=TTzlAT5rNXvXUAy16BHBq0hJOKhONYpPhdAfQKdTfGw,17364
337
- radboy/TasksMode/Tasks.py,sha256=15wzmTxrISKoi0g7nGxnzutOw3M7Q-GlbeczNUB6U2g,308820
339
+ radboy/TasksMode/Tasks.py,sha256=AIbCybNxZmGPBJzHGMRTy0v62deCH3i5vBNYRMnnFaU,308915
338
340
  radboy/TasksMode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
339
341
  radboy/TasksMode/__pycache__/ReFormula.cpython-311.pyc,sha256=QEG3PwVw-8HTd_Mf9XbVcxU56F1fC9yBqWXYPLC39DU,4865
340
342
  radboy/TasksMode/__pycache__/ReFormula.cpython-312.pyc,sha256=aX7BWm2PPjCTnxsbGUitR-2h9hq4AjaBiHMrUXvIl0Y,3967
@@ -343,7 +345,7 @@ radboy/TasksMode/__pycache__/SetEntryNEU.cpython-312.pyc,sha256=pCdFj61aPKkHL6Sv
343
345
  radboy/TasksMode/__pycache__/SetEntryNEU.cpython-313.pyc,sha256=eSWkYvfm5RuRE5rbO5wI7XxzFyKnp6KlbphSqPAF2z4,20133
344
346
  radboy/TasksMode/__pycache__/Tasks.cpython-311.pyc,sha256=6QOTJnLiXSKdF81hkhy3vyrz49PPhS20s5_0X52g3Hw,131120
345
347
  radboy/TasksMode/__pycache__/Tasks.cpython-312.pyc,sha256=hyJwdaYaaRLdcrNxgg36diJ5iijX5_3I0UAORsj-6LU,310295
346
- radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc,sha256=hMhN_ApV1KJh1WgOqe219t0d2uk52ZmHJcjH3sWbh28,379040
348
+ radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc,sha256=XZMWj-cXakusl8rnq3rn6tbBXq2Qc7eIBXaZ9QiJ_Vs,379231
347
349
  radboy/TasksMode/__pycache__/__init__.cpython-311.pyc,sha256=PKV1JbihEacm639b53bZozRQvcllSkjGP3q8STVMxF4,234
348
350
  radboy/TasksMode/__pycache__/__init__.cpython-312.pyc,sha256=ERgnEvRMiGSecWp1BpNzLdSq_SdKw7GvFWUvUM7bLVw,272
349
351
  radboy/TasksMode/__pycache__/__init__.cpython-313.pyc,sha256=lvsTxukyvGKB3C0rdF9dQi_bvVh6ceDVINfwcuIsd0s,151
@@ -384,13 +386,13 @@ radboy/WebSearchFrameWork/__pycache__/__init__.cpython-311.pyc,sha256=6iaqOS6i1n
384
386
  radboy/__pycache__/MainAssist.cpython-312.pyc,sha256=5mbMrRFcqRZ-1etrlvlsW8aJhMjNPUB2Vh7azstgBuE,12399
385
387
  radboy/__pycache__/RecordMyCodes.cpython-311.pyc,sha256=q-JqnspEHoJhg1VMsEMz3vry5KqY4xGjtr6akm8hvU0,47367
386
388
  radboy/__pycache__/RecordMyCodes.cpython-312.pyc,sha256=o71KtEcm_u2fD7qLWDRTSNy5PQDb3lXJ-xa1ENmojL4,56063
387
- radboy/__pycache__/RecordMyCodes.cpython-313.pyc,sha256=emDZEJTJSoHWu6XONHCTHW_WZYtQ3pwOxQXazUF7Tos,64044
389
+ radboy/__pycache__/RecordMyCodes.cpython-313.pyc,sha256=_ci1-U9ugS-xoNGWoKUWGw41UnIqvz7OyZdzlDshsxw,64118
388
390
  radboy/__pycache__/RecordMyCodes.cpython-39.pyc,sha256=FiF2P5zp8mhydS5Cgn-Yx5behEyFANnqI1G0x5KqUq8,21916
389
391
  radboy/__pycache__/Run.cpython-311.pyc,sha256=G_UEfMtkLRjR6ZpGA_BJzGenuaCcP469Y9KZUr6A8Dk,411
390
392
  radboy/__pycache__/Run.cpython-312.pyc,sha256=v4xolc3mHyla991XhpYBUbBHYT0bnJ1gE-lkFoQ4GFA,241
391
393
  radboy/__pycache__/__init__.cpython-311.pyc,sha256=R-DVbUioMOW-Fnaq7FpT5F1a5p0q3b_RW-HpLRArCAY,242
392
394
  radboy/__pycache__/__init__.cpython-312.pyc,sha256=FsFzLXOlTK8_7ixoPZzakkR8Wibt-DvXLFh-oG2QlPw,164
393
- radboy/__pycache__/__init__.cpython-313.pyc,sha256=HW52xrHD6N-Rm7xKHpUPhC83L9v9zCrlwMrlkkw2kS4,165
395
+ radboy/__pycache__/__init__.cpython-313.pyc,sha256=ROOFFpeFV1c3H38XCnnxcW6UVqMB1OZnH0W0zXrFM3E,165
394
396
  radboy/__pycache__/__init__.cpython-39.pyc,sha256=D48T6x6FUeKPfubo0sdS_ZUut3FmBvPMP7qT6rYBZzU,275
395
397
  radboy/__pycache__/possibleCode.cpython-311.pyc,sha256=zFiHyzqD8gUnIWu4vtyMYIBposiRQqaRXfcT_fOl4rU,20882
396
398
  radboy/__pycache__/possibleCode.cpython-312.pyc,sha256=tk_CO-AcsO3YZj5j6vEsw3g37UmEzWc5YgeWEoJEUg4,27922
@@ -415,7 +417,7 @@ radboy/tkGui/Images/__pycache__/__init__.cpython-311.pyc,sha256=tXBYpqbOlZ24B1BI
415
417
  radboy/tkGui/__pycache__/BeginnersLuck.cpython-311.pyc,sha256=xLQOnV1wuqHGaub16mPX0dDMGU9ryCeLtNz5e517_GE,3004
416
418
  radboy/tkGui/__pycache__/Review.cpython-311.pyc,sha256=wKq24iM6Xe2OampgZ7-8U6Nvmgs2y-qWOrGwtWhc75k,4047
417
419
  radboy/tkGui/__pycache__/__init__.cpython-311.pyc,sha256=BX7DBn5qbvKTvlrKOP5gzTBPBTeTgSMjBW6EMl7N8e0,230
418
- radboy-0.0.439.dist-info/METADATA,sha256=0jCnxs1zY6ixPdpgTWzImUTZDBntc1G1T3ox0HLpePU,1574
419
- radboy-0.0.439.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
420
- radboy-0.0.439.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
421
- radboy-0.0.439.dist-info/RECORD,,
420
+ radboy-0.0.441.dist-info/METADATA,sha256=OAXu0AGvKdPbhIt-nHRsJx8BU9C7WsKlyS7WH5TPY9I,1574
421
+ radboy-0.0.441.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
422
+ radboy-0.0.441.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
423
+ radboy-0.0.441.dist-info/RECORD,,