radboy 0.0.545__py3-none-any.whl → 0.0.547__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
@@ -32,7 +32,7 @@ import radboy.Orders.MilkWaterOrder as MWR
32
32
  import itertools
33
33
  from inputimeout import inputimeout, TimeoutOccurred
34
34
  from uuid import uuid1
35
- import zipfile
35
+ import zipfile,pydoc
36
36
 
37
37
  import enum
38
38
  try:
@@ -2560,51 +2560,111 @@ which will result in a cmd of 'ls Shelf'{Style.reset}
2560
2560
  {Fore.light_steel_blue}if 'b' returns to previous menu, try '#b' to return to barcode input, in ListMode@$LOCATION_FIELD, 'e' does the same{Style.reset}''')
2561
2561
  continue
2562
2562
  elif cmd.lower() in ['i','info']:
2563
- msg_fmbtxt=f"""Prompt's where FormBuilderMkText is used keywords like
2564
- today = today
2565
- tomorrow = today+24h
2566
- yesterday = today-24h
2567
- next month = today+30d
2568
- next year = today+365d
2569
- next week = today+7d
2570
- last week = today-7d
2571
- last year = today-365d
2572
- last month = today-30d
2573
- """
2574
- print(msg_fmbtxt)
2575
- l=Path("Holidays.txt")
2576
- if not l.exists():
2577
- l=Path(__file__).parent.parent/Path("Holidays.txt")
2578
- print(l)
2579
- with open(l,"r") as msgr:
2580
- for num,line in enumerate(msgr.readlines()):
2581
- if num % 2 == 0:
2582
- color=Fore.light_yellow
2583
- else:
2584
- color=Fore.sea_green_2
2585
-
2586
- msg=f"""{Fore.magenta}Line {Fore.cyan}{num}/{Fore.light_steel_blue}{num+1} - {color}{line}{Style.reset}"""
2587
- print(msg)
2588
- print(f"{Fore.orange_red_1}You can override the default Holidays.txt by placing a file called 'Holidays.txt' in your current pwd{Style.reset}")
2589
- print(f"{Fore.light_cyan}Running on Android:{Fore.slate_blue_1}{db.onAndroid()}{Style.reset}")
2590
- print(f"{Fore.light_cyan}Running on {Fore.slate_blue_1}{platform.system()} {Fore.light_cyan}Rel:{Fore.orange_red_1}{platform.release()}{Style.reset}")
2591
- print(helpText2)
2592
- Prompt.passwordfile(None,)
2593
- print(Prompt.resrc(Prompt))
2594
- sales_tax_msg=f'''
2595
- {Fore.light_green}{Style.underline}Tax Formulas{Style.reset}
2596
- {Fore.light_blue}Price is what is stated on the reciept or shelf tag without {Fore.light_red}Tax{Fore.cyan} and CRV applied.{Style.reset}
2597
- {Fore.cyan}CRV is for beverages, where under 24 Fluid Ounces, the CRV is {Fore.light_cyan}$0.05{Fore.cyan} and above 24 Fluid ounces is {Fore.light_cyan}$0.10,{Fore.light_steel_blue}if multiple bottles are in a single purchased case, then the CRV is applied to each contained within the sold/purchased case{Style.reset}
2598
- {Fore.cyan}CRV={Fore.light_cyan}({Fore.light_green}CRV_4_SIZE*{Fore.green_yellow}QTY_OF_cONTAINERS_IN_CASE{Fore.light_cyan}){Style.reset}
2599
- {Fore.light_red}Total=(({Fore.cyan}CRV+{Fore.light_blue}Price)*{Fore.light_magenta}(Sales Tax Rate(0.0925)))+{Fore.light_blue}Price{Style.reset}
2600
- {Fore.light_red}Tax=(({Fore.cyan}CRV+{Fore.light_blue}Price)*{Fore.light_magenta}(Sales Tax Rate(0.0925))){Style.reset}
2601
- '''
2602
- print(sales_tax_msg)
2603
- ConversionUnitsMSg=f"""
2604
- degress celcius - degC
2605
- degress fahrenheite - degF
2563
+ while True:
2564
+ msg_fmbtxt=f"""{FormBuilderHelpText()}"""
2565
+ print(msg_fmbtxt)
2566
+ n=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Next?",helpText="yes or no",data="boolean")
2567
+ if n in ['d',True]:
2568
+ pass
2569
+ elif n is None:
2570
+ fail=True
2571
+ break
2572
+ else:
2573
+ continue
2606
2574
 
2607
- """
2575
+ l=Path("Holidays.txt")
2576
+ if not l.exists():
2577
+ l=Path(__file__).parent.parent/Path("Holidays.txt")
2578
+ print(l)
2579
+ with open(l,"r") as msgr:
2580
+ for num,line in enumerate(msgr.readlines()):
2581
+ if num % 2 == 0:
2582
+ color=Fore.light_yellow
2583
+ else:
2584
+ color=Fore.sea_green_2
2585
+
2586
+ msg=f"""{Fore.magenta}Line {Fore.cyan}{num}/{Fore.light_steel_blue}{num+1} - {color}{line}{Style.reset}"""
2587
+ print(msg)
2588
+ n=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Next?",helpText="yes or no",data="boolean")
2589
+ if n in ['d',True]:
2590
+ pass
2591
+ elif n is None:
2592
+ fail=True
2593
+ break
2594
+ else:
2595
+ continue
2596
+ print(f"{Fore.orange_red_1}You can override the default Holidays.txt by placing a file called 'Holidays.txt' in your current pwd{Style.reset}")
2597
+ print(f"{Fore.light_cyan}Running on Android:{Fore.slate_blue_1}{db.onAndroid()}{Style.reset}")
2598
+ print(f"{Fore.light_cyan}Running on {Fore.slate_blue_1}{platform.system()} {Fore.light_cyan}Rel:{Fore.orange_red_1}{platform.release()}{Style.reset}")
2599
+ print(helpText2)
2600
+ n=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Next?",helpText="yes or no",data="boolean")
2601
+ if n in ['d',True]:
2602
+ pass
2603
+ elif n is None:
2604
+ fail=True
2605
+ break
2606
+ else:
2607
+ continue
2608
+ Prompt.passwordfile(None,)
2609
+ n=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Next?",helpText="yes or no",data="boolean")
2610
+ if n in ['d',True]:
2611
+ pass
2612
+ elif n is None:
2613
+ fail=True
2614
+ break
2615
+ else:
2616
+ continue
2617
+ print(Prompt.resrc(Prompt))
2618
+ n=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Next?",helpText="yes or no",data="boolean")
2619
+ if n in ['d',True]:
2620
+ pass
2621
+ elif n is None:
2622
+ fail=True
2623
+ break
2624
+ else:
2625
+ continue
2626
+ sales_tax_msg=f'''
2627
+ {Fore.light_green}{Style.underline}Tax Formulas{Style.reset}
2628
+ {Fore.light_blue}Price is what is stated on the reciept or shelf tag without {Fore.light_red}Tax{Fore.cyan} and CRV applied.{Style.reset}
2629
+ {Fore.cyan}CRV is for beverages, where under 24 Fluid Ounces, the CRV is {Fore.light_cyan}$0.05{Fore.cyan} and above 24 Fluid ounces is {Fore.light_cyan}$0.10,{Fore.light_steel_blue}if multiple bottles are in a single purchased case, then the CRV is applied to each contained within the sold/purchased case{Style.reset}
2630
+ {Fore.cyan}CRV={Fore.light_cyan}({Fore.light_green}CRV_4_SIZE*{Fore.green_yellow}QTY_OF_cONTAINERS_IN_CASE{Fore.light_cyan}){Style.reset}
2631
+ {Fore.light_red}Total=(({Fore.cyan}CRV+{Fore.light_blue}Price)*{Fore.light_magenta}(Sales Tax Rate(0.0925)))+{Fore.light_blue}Price{Style.reset}
2632
+ {Fore.light_red}Tax=(({Fore.cyan}CRV+{Fore.light_blue}Price)*{Fore.light_magenta}(Sales Tax Rate(0.0925))){Style.reset}
2633
+ '''
2634
+ print(sales_tax_msg)
2635
+ n=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Next?",helpText="yes or no",data="boolean")
2636
+ if n in ['d',True]:
2637
+ pass
2638
+ elif n is None:
2639
+ fail=True
2640
+ break
2641
+ else:
2642
+ continue
2643
+ ConversionUnitsMSg=f"""
2644
+ degress celcius - degC
2645
+ degress fahrenheite - degF
2646
+
2647
+ """
2648
+ print(ConversionUnitsMSg)
2649
+ n=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Next?",helpText="yes or no",data="boolean")
2650
+ if n in ['d',True]:
2651
+ pass
2652
+ elif n is None:
2653
+ fail=True
2654
+ break
2655
+ else:
2656
+ continue
2657
+ m='\n'.join([i for i in reversed(pydoc.render_doc(stre).split("\n"))])
2658
+ print(m)
2659
+
2660
+ n=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Again?",helpText="yes or no",data="boolean")
2661
+ if n in ['d',True]:
2662
+ pass
2663
+ elif n is None:
2664
+ fail=True
2665
+ break
2666
+ else:
2667
+ break
2608
2668
  continue
2609
2669
  elif cmd.lower() in ['sftu','search for text universal',]:
2610
2670
  result=global_search_for_text()
Binary file
radboy/DB/db.py CHANGED
@@ -32,6 +32,84 @@ import platform
32
32
  from uuid import uuid1
33
33
  import sys
34
34
  from inputimeout import inputimeout, TimeoutOccurred
35
+ import random
36
+ import hashlib
37
+ from Crypto.Cipher import AES
38
+ #from Cryptodome.Cipher import AES
39
+ from Crypto.Util.Padding import pad, unpad
40
+ from collections import namedtuple
41
+ import random
42
+ import hashlib
43
+ from Crypto.Cipher import AES
44
+ #from Cryptodome.Cipher import AES
45
+ from Crypto.Util.Padding import pad, unpad
46
+ from collections import namedtuple
47
+ from barcode import Code128
48
+ from barcode.writer import ImageWriter
49
+ import hashlib
50
+ import base64
51
+
52
+ class stre(str):
53
+ '''String Extended to include operators for some useful functionality.'''
54
+ def __invert__(self):
55
+ '''Generate a 512 Hex Digest for self'''
56
+ hl=hashlib.sha512()
57
+ hl.update(self.encode())
58
+ return str(hl.hexdigest())
59
+
60
+ def __sub__(self,other):
61
+ '''remove this many characters from the string, where a positive removes from the right and a negative removes from the left'''
62
+ if isinstance(other,int) or isinstance(other,float):
63
+ #print(other<0)
64
+ if other < 0:
65
+ return self[:other]
66
+ elif other > 0:
67
+ m=[self[i:i+1] for i in range(0,len(self),int(1))]
68
+ for i in range(0,other):
69
+ popped=m.pop(0)
70
+ return ''.join(m)
71
+ else:
72
+ raise NotImplemented
73
+
74
+ def __truediv__(self,other):
75
+ '''return a list broken into chunks of other'''
76
+ if isinstance(other,int) or isinstance(other,float):
77
+ return [self[i:i+other] for i in range(0,len(self),int(other))]
78
+ else:
79
+ raise NotImplemented
80
+
81
+ def __mod__(self,other):
82
+ #return the number of chunks
83
+ if isinstance(other,int) or isinstance(other,float):
84
+
85
+ return len([self[i:i+other] for i in range(0,len(self),int(other))])
86
+ else:
87
+ raise NotImplemented
88
+
89
+ def __floordiv__(self,other):
90
+ '''reverse of __truediv__'''
91
+ if isinstance(other,int) or isinstance(other,float):
92
+
93
+ return [ii for ii in reversed([self[i:i+other] for i in range(0,len(self),int(other))])]
94
+
95
+ else:
96
+ raise NotImplemented
97
+
98
+ def __pow__(self,other):
99
+ '''generate a random string from self of length other.'''
100
+
101
+ if isinstance(other,int) or isinstance(other,float):
102
+
103
+ src=[self[i:i+1] for i in range(0,len(self),int(1))]
104
+ end=''.join(random.choices(src,k=int(abs(other))))[:int(abs(other))]
105
+ while (len(end) < other) or (len(end) > other):
106
+ end=''.join(random.choices(src,k=int(abs(other))))[:int(abs(other))]
107
+ return end
108
+ else:
109
+ raise NotImplemented
110
+
111
+ import builtins
112
+ builtins.stre=stre
35
113
 
36
114
  def textInFile(text):
37
115
  '''textInFile(str) -> Boolean
radboy/TasksMode/Tasks.py CHANGED
@@ -42,6 +42,7 @@ from radboy.RepeatableDates import *
42
42
  from radboy.CookBook import *
43
43
  from radboy.PhoneBook import *
44
44
  from radboy.Occurances import *
45
+ from radboy.preloader import preloader
45
46
 
46
47
  def today():
47
48
  dt=datetime.now()
@@ -289,6 +290,52 @@ def save(value):
289
290
  detectGetOrSet("InLineResult",value,setValue=True,literal=True)
290
291
 
291
292
  class Formulae:
293
+ def findAndUse2(self,options=None):
294
+ if options is None:
295
+ options=self.options
296
+ with Session(ENGINE) as session:
297
+ cmd=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"{Fore.light_red}[FindAndUse2]{Fore.light_yellow}what cmd are your looking for?",helpText="type the cmd",data="string")
298
+ if cmd in ['d',None]:
299
+ return
300
+ else:
301
+ options=copy(options)
302
+
303
+ session.query(FindCmd).delete()
304
+ session.commit()
305
+ for num,k in enumerate(options):
306
+ stage=0
307
+ cmds=options[k]['cmds']
308
+ l=[]
309
+ l.extend(cmds)
310
+ l.append(options[k]['desc'])
311
+ cmdStr=' '.join(l)
312
+ cmd_string=FindCmd(CmdString=cmdStr,CmdKey=k)
313
+ session.add(cmd_string)
314
+ if num % 50 == 0:
315
+ session.commit()
316
+ session.commit()
317
+ session.flush()
318
+
319
+ results=session.query(FindCmd).filter(FindCmd.CmdString.icontains(cmd)).all()
320
+
321
+
322
+ ct=len(results)
323
+ if ct == 0:
324
+ print(f"No Cmd was found by {Fore.light_red}{cmd}{Style.reset}")
325
+ return
326
+ for num,x in enumerate(results):
327
+ msg=f"{Fore.light_yellow}{num}/{Fore.light_steel_blue}{num+1} of {Fore.light_red}{ct} -> {Fore.turquoise_4}{f'{Fore.light_yellow},{Style.reset}{Fore.turquoise_4}'.join(options[x.CmdKey]['cmds'])} - {Fore.green_yellow}{options[x.CmdKey]['desc']}"
328
+ print(msg)
329
+ select=Prompt.__init2__(None,func=FormBuilderMkText,ptext="which index?",helpText="the number farthest to the left before the /",data="integer")
330
+ if select in [None,'d']:
331
+ return
332
+ try:
333
+ ee=options[results[select].CmdKey]['exec']
334
+ if callable(ee):
335
+ return ee()
336
+ except Exception as e:
337
+ print(e)
338
+
292
339
  def __init__(self):
293
340
  pass
294
341
  def formulaeu(self):
@@ -337,22 +384,49 @@ class Formulae:
337
384
  result=value*-1
338
385
  return result
339
386
 
340
- options={
387
+ def tax_rate_decimal():
388
+ result=None
389
+ tax_percent=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Tax Rate Percent: ",helpText="percent to convert to decimal (Percent/100=Rate)",data="dec.dec")
390
+ if tax_percent is None:
391
+ return
392
+ elif tax_percent in ['d',]:
393
+ tax_percent=default_taxrate/100
394
+ result=tax_percent/100
395
+ return result
396
+
397
+
398
+
399
+ self.options={
341
400
  f'{uuid1()}':{
342
401
  'cmds':['invert','-value','iv-val'],
343
- 'desc':f'{Fore.light_yellow}value{Fore.medium_violet_red}is multiplied by -1 to make inverse{Style.reset}',
402
+ 'desc':f'{Fore.light_yellow}value{Fore.medium_violet_red} is multiplied by -1 to make inverse{Style.reset}',
344
403
  'exec':invert_value
345
404
  },
346
405
  f'{uuid1()}':{
347
406
  'cmds':['time dec to clock','t2c','time to clock'],
348
- 'desc':f'{Fore.light_yellow}value{Fore.medium_violet_red}convert decimal time to clock time{Style.reset}',
407
+ 'desc':f'{Fore.light_yellow}value{Fore.medium_violet_red} convert decimal time to clock time{Style.reset}',
349
408
  'exec':timedecimal_to_ampm
350
409
  },
410
+ f'{uuid1()}':{
411
+ 'cmds':['percent to decimal','p2d','prcnt2decimal','prcnt 2 dec'],
412
+ 'desc':f'{Fore.light_yellow}decimal (0.02) {Fore.medium_violet_red} from percent (2%->2){Style.reset}',
413
+ 'exec':tax_rate_decimal
414
+ },
351
415
  }
416
+
417
+ for i in preloader:
418
+ self.options[i]=preloader[i]
352
419
  defaults_msg=f'''
353
420
  '''
354
- for num,i in enumerate(options):
355
- options[i]['cmds'].append(str(num))
421
+ '''must be last for user to always see'''
422
+ self.options[f'{uuid1()}']={
423
+ 'cmds':['fcmd','findcmd','find cmd'],
424
+ 'desc':f'Find {Fore.light_yellow}cmd{Fore.medium_violet_red} and excute for return{Style.reset}',
425
+ 'exec':self.findAndUse2
426
+ }
427
+ for num,i in enumerate(self.options):
428
+ self.options[i]['cmds'].append(str(num))
429
+ options=copy(self.options)
356
430
 
357
431
  while True:
358
432
  helpText=[]
@@ -451,16 +525,6 @@ class Formulae:
451
525
  {Fore.light_sea_green}default_purchased_qty=={Fore.turquoise_4}{default_purchased_qty}
452
526
  {Style.reset}"""
453
527
 
454
- def tax_rate_decimal():
455
- result=None
456
- tax_percent=Prompt.__init2__(None,func=FormBuilderMkText,ptext="Tax Rate Percent: ",helpText="percent to convert to decimal (Percent/100=Rate)",data="dec.dec")
457
- if tax_percent is None:
458
- return
459
- elif tax_percent in ['d',]:
460
- tax_percent=default_taxrate/100
461
- result=tax_percent/100
462
- return result
463
-
464
528
  def beverage_PTCRV_base():
465
529
  result=None
466
530
  print('Beverage Total Price+Tax+CRV of Size')
@@ -511,7 +575,7 @@ class Formulae:
511
575
  tax=price*Decimal(tax_rate)
512
576
 
513
577
 
514
- result=round(float(Decimal(price)+tax),prec)
578
+ result=(Decimal(price)+tax).quantize(Decimal('0.0000'))
515
579
  return result
516
580
 
517
581
  def tax_with_crv():
@@ -698,7 +762,7 @@ class Formulae:
698
762
  return result
699
763
 
700
764
 
701
- options={
765
+ self.options={
702
766
  f'{uuid1()}':{
703
767
  'cmds':['beverage price+tax+CRV','b-ptcrv',],
704
768
  'desc':f'{Fore.light_yellow}beverage Price+Tax+CRV{Fore.medium_violet_red} asking for base questions like bottle size and qty to get total cost with tax{Style.reset}',
@@ -734,15 +798,16 @@ class Formulae:
734
798
  'desc':f'{Fore.light_yellow}tax rate{Fore.medium_violet_red} from old price and new price{Style.reset}',
735
799
  'exec':tax_rate_from_oldPriceAndNewPrice
736
800
  },
737
- f'{uuid1()}':{
738
- 'cmds':['tax decimal','taxdecimal'],
739
- 'desc':f'{Fore.light_yellow}tax rate decimal{Fore.medium_violet_red} from percent{Style.reset}',
740
- 'exec':tax_rate_decimal
741
- },
801
+
742
802
  }
743
- for num,i in enumerate(options):
744
- options[i]['cmds'].append(str(num))
745
-
803
+ self.options[f'{uuid1()}']={
804
+ 'cmds':['fcmd','findcmd','find cmd'],
805
+ 'desc':f'Find {Fore.light_yellow}cmd{Fore.medium_violet_red} and excute for return{Style.reset}',
806
+ 'exec':self.findAndUse2
807
+ }
808
+ for num,i in enumerate(self.options):
809
+ self.options[i]['cmds'].append(str(num))
810
+ options=copy(self.options)
746
811
  while True:
747
812
  helpText=[]
748
813
  for i in options:
@@ -1004,7 +1069,9 @@ class TasksMode:
1004
1069
  text=''
1005
1070
  for i in range(len(buffer)):
1006
1071
  text+=fd[i]
1007
- return text
1072
+ return text
1073
+ else:
1074
+ return
1008
1075
  def getInLineResult(self):
1009
1076
  return str(detectGetOrSet("InLineResult",None,setValue=False,literal=True))
1010
1077
 
radboy/__init__.py CHANGED
@@ -1 +1 @@
1
- VERSION='0.0.545'
1
+ VERSION='0.0.547'
Binary file
@@ -0,0 +1,28 @@
1
+ from radboy.DB.db import *
2
+ from radboy.DB.RandomStringUtil import *
3
+ import radboy.Unified.Unified as unified
4
+ import radboy.possibleCode as pc
5
+ from radboy.DB.Prompt import *
6
+ from radboy.DB.Prompt import prefix_text
7
+ from radboy.TasksMode.ReFormula import *
8
+ from radboy.TasksMode.SetEntryNEU import *
9
+ from radboy.FB.FormBuilder import *
10
+ from radboy.FB.FBMTXT import *
11
+ from radboy.RNE.RNE import *
12
+ from radboy.Lookup2.Lookup2 import Lookup as Lookup2
13
+ from radboy.DayLog.DayLogger import *
14
+ from radboy.DB.masterLookup import *
15
+ from collections import namedtuple,OrderedDict
16
+ import nanoid,qrcode,io
17
+ from password_generator import PasswordGenerator
18
+ import random
19
+ from pint import UnitRegistry
20
+ import pandas as pd
21
+ import numpy as np
22
+ from datetime import *
23
+ from colored import Style,Fore
24
+ import json,sys,math,re,calendar,hashlib,haversine
25
+ from time import sleep
26
+ import itertools
27
+
28
+ from .preloader import *
@@ -0,0 +1,61 @@
1
+ from . import *
2
+ unit_registry=pint.UnitRegistry()
3
+
4
+ def volume():
5
+ height=Prompt.__init2__(None,func=FormBuilderMkText,ptext="height?: ",helpText="height=1",data="dec.dec")
6
+ if height is None:
7
+ return
8
+ elif height in ['d',]:
9
+ height=Decimal('1')
10
+
11
+ width=Prompt.__init2__(None,func=FormBuilderMkText,ptext="width?: ",helpText="width=1 ",data="dec.dec")
12
+ if width is None:
13
+ return
14
+ elif width in ['d',]:
15
+ width=Decimal('1')
16
+
17
+
18
+
19
+ length=Prompt.__init2__(None,func=FormBuilderMkText,ptext="length?: ",helpText="length=1",data="dec.dec")
20
+ if length is None:
21
+ return
22
+ elif length in ['d',]:
23
+ length=Decimal('1')
24
+
25
+ return length*width*height
26
+
27
+ def volume_pint():
28
+ height=Prompt.__init2__(None,func=FormBuilderMkText,ptext="height?: ",helpText="height=1",data="string")
29
+ if height is None:
30
+ return
31
+ elif height in ['d',]:
32
+ height='1'
33
+
34
+ width=Prompt.__init2__(None,func=FormBuilderMkText,ptext="width?: ",helpText="width=1 ",data="string")
35
+ if width is None:
36
+ return
37
+ elif width in ['d',]:
38
+ width='1'
39
+
40
+
41
+
42
+ length=Prompt.__init2__(None,func=FormBuilderMkText,ptext="length?: ",helpText="length=1",data="string")
43
+ if length is None:
44
+ return
45
+ elif length in ['d',]:
46
+ length='1'
47
+
48
+ return unit_registry.Quantity(length)*unit_registry.Quantity(width)*unit_registry.Quantity(height)
49
+
50
+ preloader={
51
+ f'{uuid1()}':{
52
+ 'cmds':['volume',],
53
+ 'desc':f'find the volume of height*width*length without dimensions',
54
+ 'exec':volume
55
+ },
56
+ f'{uuid1()}':{
57
+ 'cmds':['volume pint',],
58
+ 'desc':f'find the volume of height*width*length using pint to normalize the values',
59
+ 'exec':volume_pint
60
+ },
61
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: radboy
3
- Version: 0.0.545
3
+ Version: 0.0.547
4
4
  Summary: A Retail Calculator for Android/Linux
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=Lt2reA6xchq3U7Y08DvkrHboZ25i1ts7X2E9gSIwcVg,41101
7
7
  radboy/Run.py,sha256=JUoCTHnzQBv7n8PB2_i93ANdAC_iW__RkAge8esCnk4,76
8
- radboy/__init__.py,sha256=YVm70jtfF9R4IuBFQVwDL-bIJPtkgTDSVJsMZlbMxuE,17
8
+ radboy/__init__.py,sha256=gHS6bjkAstoK97rWN1-YnyJ5eZ3QD2USEJCT9eaSaqU,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
@@ -84,14 +84,14 @@ radboy/DB/ExerciseTracker.py,sha256=OS9i8jGIZPj-6m1bB0-eKNHQ6vf2iv_AYPEc0s4bkBM,
84
84
  radboy/DB/PayDay.py,sha256=H2kPGvBCDkMOz7lbxQhYtUt_oAInpxi37Q6MFrah98I,8710
85
85
  radboy/DB/PayModels.py,sha256=hjwWxP7PL33hmfzQl5YTf0HqzaMxXJxFknPdxFJXJc8,3499
86
86
  radboy/DB/PrintLogging.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
- radboy/DB/Prompt.py,sha256=WCWuui0xKnIUkflX7XekWlm6PE8U6G1DpKX8BDXhy-s,155135
87
+ radboy/DB/Prompt.py,sha256=6k1G-C_Guwu_g0M7yy1X_o9fuF4aSXCDJVFO-YScwuA,158555
88
88
  radboy/DB/RandomStringUtil.py,sha256=eZCpR907WStgfbk4Evcghjv9hOkUDXH-iMXIq0-kXq8,24386
89
89
  radboy/DB/ResetTools.py,sha256=RbI-Ua7UlsN0S9qLqtEkTWvzyTZ6R-hHR3CW4NHlUPE,6660
90
90
  radboy/DB/SMLabelImporter.py,sha256=eUoBDxVUUEKGL2g_PwkASM67ZB7FmXtSnn4bCagskhY,4013
91
91
  radboy/DB/__init__.py,sha256=JiigA9B7GalP7YuRdcwyGDu5PDSBahoi0lLjtScxlN8,49
92
92
  radboy/DB/blankDataFile.py,sha256=YX_05Usi71UpDkZN9UTMYwUipbTndTAtEgqzBEga0kE,9285
93
93
  radboy/DB/config.py,sha256=bvu43dUl1_yO3Zq3gsLuenGUgJSiS3S9Cs6ppFEvZbg,239
94
- radboy/DB/db.py,sha256=Wci5q6TR9JITNggn8LHAH6ZKYourdAp3Y6KVohUDR6E,250876
94
+ radboy/DB/db.py,sha256=WNbsj0zJih9Vb5NQwxNW754fkqulbOY0MtwE8YSEtKA,253523
95
95
  radboy/DB/glossary_db.py,sha256=1_qxeEpjjEtpWB_eDjsgJisimLv7OBm75MuqM-Lt6zg,28218
96
96
  radboy/DB/masterLookup.py,sha256=DBaM2uscG3_X5dek49wjdnOzhrjWhKgvOEz_umdz0mY,4566
97
97
  radboy/DB/msg.txt,sha256=YxWed6A6tuP1djJ5QPS2Rz3ING4TKKf8kUiCCPtzHXE,7937
@@ -108,7 +108,7 @@ radboy/DB/__pycache__/FormBuilder.cpython-312.pyc,sha256=p1o-5SMRL8OXP_XQ5liUpf-
108
108
  radboy/DB/__pycache__/PrintLogging.cpython-312.pyc,sha256=pIAFqTi6OiQQORSc-oMH1zAbsdH7sY1TifxrN_QOvnU,148
109
109
  radboy/DB/__pycache__/Prompt.cpython-311.pyc,sha256=P2uPRpeqfLFtxieZ0JHBG3X_HZzWUCsFSLb_fpRqky0,6407
110
110
  radboy/DB/__pycache__/Prompt.cpython-312.pyc,sha256=6CcQ1gE2hcz3cKPjo4f6d7xNM2PTDnl8NzQG0Pme5BE,142886
111
- radboy/DB/__pycache__/Prompt.cpython-313.pyc,sha256=6-hov-d3xNlsB35U_aL1cfneJ4-z9FsJltT5ixfFmcg,236020
111
+ radboy/DB/__pycache__/Prompt.cpython-313.pyc,sha256=qpUiih6peXHOM8xeqOfd4GZuCzaNm5yC4zb8OwsLLGM,237448
112
112
  radboy/DB/__pycache__/RandomStringUtil.cpython-312.pyc,sha256=TrbEY89MuLmNlvoo5d8vOE6Dyshh5_EMlTZvk8MDVN4,48597
113
113
  radboy/DB/__pycache__/RandomStringUtil.cpython-313.pyc,sha256=MCcgVwV2Y-9rAY2FVaJZCKcou3HDX70EZudoiCigT0o,49217
114
114
  radboy/DB/__pycache__/ResetTools.cpython-311.pyc,sha256=4Vyc57iAAF0yRPjjglnVKovnTn8OoFIi6Zok3Wpj_YM,9292
@@ -126,7 +126,7 @@ radboy/DB/__pycache__/config.cpython-312.pyc,sha256=Qo7E6MHrF6yqvKgepNFyCoekZXiv
126
126
  radboy/DB/__pycache__/config.cpython-313.pyc,sha256=_8wCIg_3jhyJjxnExD2Sm6aY-uZTw036p7Ki5znL7dc,376
127
127
  radboy/DB/__pycache__/db.cpython-311.pyc,sha256=rNgigyBd0D-cg1JxKAS8t0B_k0IEJivgVlRaZE10Xis,210105
128
128
  radboy/DB/__pycache__/db.cpython-312.pyc,sha256=ANDJPC0RoavbmSKFxG15vC7B4rEGyVt7xRJt7XGY3OA,334609
129
- radboy/DB/__pycache__/db.cpython-313.pyc,sha256=hSUbDU68JPGgQ2IpcYnod4O_It1zx7HrrIG13SqzWV8,395854
129
+ radboy/DB/__pycache__/db.cpython-313.pyc,sha256=FwF3TLH-dQYEDLtiFqVb38xjN46QDqCMObygKkzONCA,400364
130
130
  radboy/DB/__pycache__/glossary_db.cpython-312.pyc,sha256=8UL-29cKqtKovx0BANm6kzKKteef1BW_2qF3wumzst4,36023
131
131
  radboy/DB/__pycache__/glossary_db.cpython-313.pyc,sha256=Ke9bkvllGv5CK0JdT9DRvQ3MOdrXxoYv7TVLNkqLux0,36582
132
132
  radboy/DB/__pycache__/masterLookup.cpython-312.pyc,sha256=bQiOkmMwwHgcO18tYSWGQ-YUff4GQlKVhBMp1GoWAqY,6324
@@ -341,7 +341,7 @@ radboy/SystemSettings/__pycache__/__init__.cpython-312.pyc,sha256=aIzp4Po0t8EhSA
341
341
  radboy/SystemSettings/__pycache__/__init__.cpython-313.pyc,sha256=QFDuoidxMWsGVLsy5lN-rDs6TP8nKJ4yyCyiamNOhwo,156
342
342
  radboy/TasksMode/ReFormula.py,sha256=REDRJYub-OEOE6g14oRQOLOQwv8pHqVJy4NQk3CCM90,2255
343
343
  radboy/TasksMode/SetEntryNEU.py,sha256=Gu0Z677tjpc7-9AQtLbIr7yzPx6ZJXGK33lOIgU0IRM,17432
344
- radboy/TasksMode/Tasks.py,sha256=AH7WFtlJaCZBiqPLZEQZcbRMFaO0TXLCqulWJrHBzso,337296
344
+ radboy/TasksMode/Tasks.py,sha256=VsQOT0FMSvY5UOVKoCUMVT3uK049NgSgxvQGQNcYJn8,340468
345
345
  radboy/TasksMode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
346
346
  radboy/TasksMode/__pycache__/ReFormula.cpython-311.pyc,sha256=QEG3PwVw-8HTd_Mf9XbVcxU56F1fC9yBqWXYPLC39DU,4865
347
347
  radboy/TasksMode/__pycache__/ReFormula.cpython-312.pyc,sha256=aX7BWm2PPjCTnxsbGUitR-2h9hq4AjaBiHMrUXvIl0Y,3967
@@ -350,7 +350,7 @@ radboy/TasksMode/__pycache__/SetEntryNEU.cpython-312.pyc,sha256=pCdFj61aPKkHL6Sv
350
350
  radboy/TasksMode/__pycache__/SetEntryNEU.cpython-313.pyc,sha256=UExwr8dN2STFEDE5t_YnQFMUX-wGv7JH10I1OyBDRtM,20212
351
351
  radboy/TasksMode/__pycache__/Tasks.cpython-311.pyc,sha256=6QOTJnLiXSKdF81hkhy3vyrz49PPhS20s5_0X52g3Hw,131120
352
352
  radboy/TasksMode/__pycache__/Tasks.cpython-312.pyc,sha256=hyJwdaYaaRLdcrNxgg36diJ5iijX5_3I0UAORsj-6LU,310295
353
- radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc,sha256=r0hXaZvh83Q0fCeXgSeV0rAJUqzez8duRgAi1gMT6EI,408349
353
+ radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc,sha256=FQZb2bnNeOwp2lJQ9475NTDO7bIqDX0wuRF0Jfmwiec,412609
354
354
  radboy/TasksMode/__pycache__/__init__.cpython-311.pyc,sha256=PKV1JbihEacm639b53bZozRQvcllSkjGP3q8STVMxF4,234
355
355
  radboy/TasksMode/__pycache__/__init__.cpython-312.pyc,sha256=ERgnEvRMiGSecWp1BpNzLdSq_SdKw7GvFWUvUM7bLVw,272
356
356
  radboy/TasksMode/__pycache__/__init__.cpython-313.pyc,sha256=lvsTxukyvGKB3C0rdF9dQi_bvVh6ceDVINfwcuIsd0s,151
@@ -397,7 +397,7 @@ radboy/__pycache__/Run.cpython-311.pyc,sha256=G_UEfMtkLRjR6ZpGA_BJzGenuaCcP469Y9
397
397
  radboy/__pycache__/Run.cpython-312.pyc,sha256=v4xolc3mHyla991XhpYBUbBHYT0bnJ1gE-lkFoQ4GFA,241
398
398
  radboy/__pycache__/__init__.cpython-311.pyc,sha256=R-DVbUioMOW-Fnaq7FpT5F1a5p0q3b_RW-HpLRArCAY,242
399
399
  radboy/__pycache__/__init__.cpython-312.pyc,sha256=FsFzLXOlTK8_7ixoPZzakkR8Wibt-DvXLFh-oG2QlPw,164
400
- radboy/__pycache__/__init__.cpython-313.pyc,sha256=VwirwNIJ06yhZkw9J8W3s86Vb3MwRJ-zNWY-wiIwjdg,165
400
+ radboy/__pycache__/__init__.cpython-313.pyc,sha256=VDIpNXfn1S5aLxPl_9z6C8sp0Qpy16KLI9GT-64l250,165
401
401
  radboy/__pycache__/__init__.cpython-39.pyc,sha256=D48T6x6FUeKPfubo0sdS_ZUut3FmBvPMP7qT6rYBZzU,275
402
402
  radboy/__pycache__/possibleCode.cpython-311.pyc,sha256=zFiHyzqD8gUnIWu4vtyMYIBposiRQqaRXfcT_fOl4rU,20882
403
403
  radboy/__pycache__/possibleCode.cpython-312.pyc,sha256=tk_CO-AcsO3YZj5j6vEsw3g37UmEzWc5YgeWEoJEUg4,27922
@@ -406,6 +406,8 @@ radboy/__pycache__/renderQR.cpython-311.pyc,sha256=0UqhQXTpdLERvxOTi79fTfsvvSUMW
406
406
  radboy/__pycache__/t.cpython-311.pyc,sha256=bVszNkmfiyoNLd0WUc8aBJc2geGseW4O28cqjUwiwaw,681
407
407
  radboy/__pycache__/te.cpython-311.pyc,sha256=vI8eNUE5VVrfCQvnrJ7WuWpoKcLz-vVK3ifdUZ4UNhk,592
408
408
  radboy/__pycache__/x.cpython-311.pyc,sha256=3jIvWoO5y5WqrL_hRmXNK8O0vO7DwJ4gufjm2b0V7VI,1963
409
+ radboy/preloader/__init__.py,sha256=m7oQ0G4gRuB1c2FvrDJ51-euecvuSz5t6uAWkMOXAAg,895
410
+ radboy/preloader/preloader.py,sha256=wvO7dcIROzNlnFDHfPsC0ROF4PFteZntMz-SqAWcUbM,1610
409
411
  radboy/setCode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
410
412
  radboy/setCode/setCode.py,sha256=8UOf4okbx-Zane99odeoLAS_lfIt8pIaFomN7EtnnVA,5202
411
413
  radboy/setCode/__pycache__/__init__.cpython-311.pyc,sha256=cJuP5rve6Wn7ZO789tixyOlyrHZQWsBxDn9oZGoG5WE,232
@@ -422,7 +424,7 @@ radboy/tkGui/Images/__pycache__/__init__.cpython-311.pyc,sha256=tXBYpqbOlZ24B1BI
422
424
  radboy/tkGui/__pycache__/BeginnersLuck.cpython-311.pyc,sha256=xLQOnV1wuqHGaub16mPX0dDMGU9ryCeLtNz5e517_GE,3004
423
425
  radboy/tkGui/__pycache__/Review.cpython-311.pyc,sha256=wKq24iM6Xe2OampgZ7-8U6Nvmgs2y-qWOrGwtWhc75k,4047
424
426
  radboy/tkGui/__pycache__/__init__.cpython-311.pyc,sha256=BX7DBn5qbvKTvlrKOP5gzTBPBTeTgSMjBW6EMl7N8e0,230
425
- radboy-0.0.545.dist-info/METADATA,sha256=_E-6rt75FQbxIyutWPlQQvTUGAGM22w-hDg5U2p671k,1615
426
- radboy-0.0.545.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
427
- radboy-0.0.545.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
428
- radboy-0.0.545.dist-info/RECORD,,
427
+ radboy-0.0.547.dist-info/METADATA,sha256=Cb3QRN8jHLs15X7U1IFzd4YzESskEZJoDCC-k2CSyrU,1615
428
+ radboy-0.0.547.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
429
+ radboy-0.0.547.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
430
+ radboy-0.0.547.dist-info/RECORD,,