radboy 0.0.440__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
@@ -43,14 +43,20 @@ def timedout(ptext):
43
43
  user_input = "timeout"
44
44
  return user_input
45
45
 
46
- def orderQuery(query,orderBy):
46
+ def orderQuery(query,orderBy,inverse=False):
47
47
  LookUpState=db.detectGetOrSet('list maker lookup order',False,setValue=False,literal=False)
48
48
  if not isinstance(LookUpState,bool):
49
49
  LookUpState=db.detectGetOrSet('list maker lookup order',False,setValue=True,literal=False)
50
50
  if LookUpState == True:
51
- 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())
52
55
  else:
53
- 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())
54
60
  return query
55
61
 
56
62
  def generate_cmds(startcmd,endCmd):
@@ -2012,6 +2018,9 @@ CMD's are not final until ended with {Fore.magenta}{hw_delim}{Style.reset}""")
2012
2018
  elif cmd.lower() in ['pc','prec calc',]:
2013
2019
  resultant=TM.Tasks.TasksMode(parent=self,engine=db.ENGINE,init_only=True).prec_calc()
2014
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
2015
2024
  elif cmd.lower() in ['b','back']:
2016
2025
  lastTime=db.detectGetOrSet("PromptLastDTasFloat",datetime.now().timestamp(),setValue=True)
2017
2026
  return
@@ -2070,7 +2079,8 @@ CMD's are not final until ended with {Fore.magenta}{hw_delim}{Style.reset}""")
2070
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}
2071
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}
2072
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}
2073
- {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}
2074
2084
  '''
2075
2085
  print(extra)
2076
2086
  print(helpText)
@@ -2174,7 +2184,7 @@ CMD's are not final until ended with {Fore.magenta}{hw_delim}{Style.reset}""")
2174
2184
  elif cmd.lower() in ['vllo','view list lookup order']:
2175
2185
  try:
2176
2186
  state=db.detectGetOrSet('list maker lookup order',False,setValue=False,literal=False)
2177
- 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"}
2178
2188
  print(f"{state} : {translate[state]}")
2179
2189
  except Exception as e:
2180
2190
  state=db.detectGetOrSet('list maker lookup order',True,setValue=True,literal=False)
Binary file
radboy/DB/db.py CHANGED
@@ -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:
@@ -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.440'
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.440
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>
@@ -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=dOm24buf-rWC4FGLQLDjL5obdxOKF3D01t6Qkkit-R0,41421
7
7
  radboy/Run.py,sha256=JUoCTHnzQBv7n8PB2_i93ANdAC_iW__RkAge8esCnk4,76
8
- radboy/__init__.py,sha256=HYJ9_tQ9sViRYUVRalsOxb4uEvhCvuUe4Xph3qjFWYM,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=AGeqHu9Xo-HSPub2cf_4YxRPcKAfEZE83fFh4M6RdXk,138402
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=ENbRHrUKdmwYstFUYHVHrrzh5_PtKLuUZj_HjREqT44,236189
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=4Csf7rdfPGjfSP6NwmnuwWrUJV8lYdCnst3KfZ3bC0w,212356
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=rkrkyJZnDo71yPUqPr4c_d1Se86efBqlkQaMJYgS3QY,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
@@ -390,7 +392,7 @@ radboy/__pycache__/Run.cpython-311.pyc,sha256=G_UEfMtkLRjR6ZpGA_BJzGenuaCcP469Y9
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=HgbadCWFA2OSAvYpfAwovAG68_aFGh8zTI30XWW4Fxc,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.440.dist-info/METADATA,sha256=L-4qSEpkqUUBKqDYAOKu6ZOk5lQp-JaYs5T_FcPKaoY,1574
419
- radboy-0.0.440.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
420
- radboy-0.0.440.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
421
- radboy-0.0.440.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,,