radboy 0.0.707__py3-none-any.whl → 0.0.709__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.
@@ -0,0 +1,766 @@
1
+ from . import *
2
+ from decimal import Decimal as float
3
+ @dataclass
4
+ class NetWorth(BASE,Template):
5
+ __tablename__="NetWorth"
6
+ nwid=Column(Integer,primary_key=True)
7
+
8
+ Name=Column(String,default=None)
9
+ ForWhom=Column(String,default=None)
10
+ NetWorth=Column(Float,default=None)
11
+ DTOE=Column(DateTime,default=datetime.now())
12
+
13
+
14
+ '''liabilities ; if balance in name it is a liability'''
15
+ Morgage_balance=Column(Float,default=0)
16
+ Loan_balance=Column(Float,default=0)
17
+ Credit_card_balance=Column(Float,default=0)
18
+ Unlisted_balance=Column(Float,default=0)
19
+
20
+ '''current liabilities'''
21
+ Accounts_payable_balance=Column(Float,default=0)
22
+ #Money a company owes to its suppliers for goods or services purchased on credit.
23
+ Accrued_expenses_balance=Column(Float,default=0)
24
+ #Expenses that have been incurred but not yet paid, such as employee wages and utility bills.
25
+ ShortTerm_notes_or_loans_payable_balance=Column(Float,default=0)
26
+ #Debts from a bank or other lender that must be repaid within the year.
27
+ Taxes_payable_balance=Column(Float,default=0)
28
+ #Sales, income, or payroll taxes collected or owed but not yet paid to the government.
29
+ Unearned_revenue_balance=Column(Float,default=0)
30
+ #Cash received from customers for a product or service that has not yet been delivered. The company has a liability to provide the good or service in the future.
31
+ Dividends_payable_balance=Column(Float,default=0)
32
+ #Dividends that have been declared by a company's board of directors but have not yet been paid to shareholders.
33
+ Current_portion_of_LongTerm_debt_balance=Column(Float,default=0)
34
+ #The portion of a long-term loan or mortgage that is due within the next year.
35
+ LongTerm_NonCurrent_liabilities_balance=Column(Float,default=0)
36
+ LongTerm_notes_payable_or_loans_balance=Column(Float,default=0)
37
+ # Debts with a maturity date extending beyond one year.
38
+ Mortgages_payable_balance=Column(Float,default=0)
39
+ # Long-term loans used to purchase property, such as an office building.
40
+ Bonds_payable_balance=Column(Float,default=0)
41
+ # Debt issued by a company to raise capital from investors, with repayment typically scheduled over a fixed period.
42
+ Deferred_tax_liabilities_balance=Column(Float,default=0)
43
+ # A tax a business owes that is not payable in the current period, often resulting from differences between tax rules and accounting rules for revenue or expenses.
44
+ Lease_obligations_balance=Column(Float,default=0)
45
+ # Payments owed under long-term capital lease agreements for assets like equipment or vehicles.
46
+ Pension_liabilities_balance=Column(Float,default=0)
47
+ # The obligation a company has to pay future retirement benefits to its employees.
48
+ Contingent_liabilities_balance=Column(Float,default=0)
49
+ Pending_lawsuits_balance=Column(Float,default=0)
50
+ # If a company is being sued, it may face a liability if the lawsuit is successful.
51
+ Product_warranties_balance=Column(Float,default=0)
52
+ # The estimated cost to repair or replace products under a warranty.
53
+ Environmental_cleanup_costs_balance=Column(Float,default=0)
54
+ # A potential liability for environmental damage caused by the business.
55
+ Student_loans_balance=Column(Float,default=0)
56
+ ''' The total amount owed for educational debt.'''
57
+ Vehicle_loans_balance=Column(Float,default=0)
58
+ ''' Debt for a car, boat, or other vehicle.'''
59
+ Personal_loans_balance=Column(Float,default=0)
60
+ ''' Unsecured loans from a bank or other lender.'''
61
+ Lines_of_credit_balance=Column(Float,default=0)
62
+ ''' Revolving credit accounts.'''
63
+ Unpaid_bills_balance=Column(Float,default=0)
64
+ ''' Obligations such as utility bills, medical bills, or taxes.
65
+ Loans from family and friends: Money owed to individuals rather than a commercial lender'''
66
+
67
+ '''liabilities notes'''
68
+ liabilities_notes=Column(String,default='')
69
+ '''assets'''
70
+ Real_Estate_assets=Column(Float,default=0)
71
+ Personal_Property_assets=Column(Float,default=0)
72
+
73
+ Retirement_assets=Column(Float,default=0)
74
+ plan_401K_assets=Column(Float,default=0)
75
+ Individual_Retirement_Accounts_IRA_assets=Column(Float,default=0)
76
+ Pension_plans_assets=Column(Float,default=0)
77
+ Keogh_plans_assets=Column(Float,default=0)
78
+ college_savings_plans_529_assets=Column(Float,default=0)
79
+
80
+ Investments_assets=Column(Float,default=0)
81
+ Stocks_and_bonds_assets=Column(Float,default=0)
82
+ Mutual_funds_and_ExchangeTraded_Funds_EFT_assets=Column(Float,default=0)
83
+ Brokerage_accounts_assets=Column(Float,default=0)
84
+ Investment_properties_and_rental_real_estate_assets=Column(Float,default=0)
85
+ Digital_assets_like_cryptocurrency_and_NFTs_assets=Column(Float,default=0)
86
+ Annuities_assets=Column(Float,default=0)
87
+ Liquid_assets=Column(Float,default=0)
88
+ Cash_assets=Column(Float,default=0)
89
+ Checking_account_assets=Column(Float,default=0)
90
+ Savings_account_assets=Column(Float,default=0)
91
+ Certificates_of_deposit_assets=Column(Float,default=0)
92
+ Treasury_bills_assets=Column(Float,default=0)
93
+ Intangible_assets=Column(Float,default=0)
94
+ Patents_assets=Column(Float,default=0)
95
+ trademarks_assets=Column(Float,default=0)
96
+ copyrights_assets=Column(Float,default=0)
97
+ Royalties_assets=Column(Float,default=0)
98
+ Intellectual_property_assets=Column(Float,default=0)
99
+ business_interests_assets=Column(Float,default=0)
100
+ Equity_in_a_business_assets=Column(Float,default=0)
101
+ Ownership_shares_assets=Column(Float,default=0)
102
+ Business_equipment_and_inventory_assets=Column(Float,default=0)
103
+ Unlisted_assets=Column(Float,default=0)
104
+ assets_notes=Column(String,default='')
105
+
106
+ Comments=Column(String,default='')
107
+
108
+
109
+ def __init__(self,*arg,**kwargs):
110
+ for k in kwargs.keys():
111
+ if k in [s.name for s in self.__table__.columns]:
112
+ setattr(self,k,kwargs.get(k))
113
+ if 'NetWorth' in kwargs.keys():
114
+ if kwargs['NetWorth'] not in [None,0]:
115
+ print(kwargs['NetWorth'])
116
+ return
117
+ else:
118
+ kwargs.pop('NetWorth')
119
+ #print('NetWorth' in kwargs.keys())
120
+ if not 'NetWorth' in kwargs.keys():
121
+ asset_fields=[x.name for x in __class__.__table__.columns if 'assets' in x.name and str(x.type).lower() in ['float','int','integer',]]
122
+ self.asset_fields=tuple(asset_fields)
123
+ print(asset_fields)
124
+ assTTL=0
125
+ for num,i in enumerate(asset_fields):
126
+ try:
127
+ old=self.NetWorth
128
+ except Exception as e:
129
+ self.NetWorth=float(0)
130
+ old=self.NetWorth
131
+ print(e)
132
+ try:
133
+ current=float(getattr(self,i))
134
+ except Exception as e:
135
+ current=0
136
+
137
+ print(i,old,current,getattr(self,i))
138
+ if old is None:
139
+ old=float(0)
140
+ if current is None:
141
+ current=float(0)
142
+ assTTL+=current
143
+ self.NetWorth=assTTL
144
+
145
+ liabilities_fields=[x.name for x in __class__.__table__.columns if 'balance' in x.name and str(x.type).lower() in ['float','int','integer',]]
146
+ self.liabilities_fields=tuple(liabilities_fields)
147
+ lblTTL=0
148
+ for num,i in enumerate(liabilities_fields):
149
+
150
+ try:
151
+ old=self.NetWorth
152
+ except Exception as e:
153
+ self.NetWorth=float(0)
154
+ old=self.NetWorth
155
+ print(e)
156
+ try:
157
+ current=float(getattr(self,i))
158
+ except Exception as e:
159
+ current=0
160
+ if old is None:
161
+ old=float(0)
162
+ if current is None:
163
+ current=float(0)
164
+ lblTTL-=current
165
+ print(i,old,current,getattr(self,i))
166
+
167
+ self.NetWorth+=lblTTL
168
+ print(self.NetWorth)
169
+
170
+ try:
171
+ NetWorth.metadata.create_all(ENGINE)
172
+ except Exception as e:
173
+ NetWorth.__table__.drop(ENGINE)
174
+ NetWorth.metadata.create_all(ENGINE)
175
+
176
+
177
+ class NetWorthUi:
178
+ def fix_table(self):
179
+ NetWorth.__table__.drop(ENGINE)
180
+ NetWorth.metadata.create_all(ENGINE)
181
+
182
+ def add(self):
183
+ with Session(ENGINE) as session:
184
+ nw=NetWorth()
185
+ session.add(nw)
186
+ session.commit()
187
+ session.refresh(nw)
188
+ excludes=['nwid',]
189
+ fields={i.name:{'default':getattr(nw,i.name),'type':str(i.type).lower()} for i in nw.__table__.columns if i.name not in excludes}
190
+ fd=FormBuilder(data=fields,passThruText="Add a New NetWorth Log")
191
+ if fd is None:
192
+ session.delete(nw)
193
+ session.commit()
194
+ return
195
+ nw.__init__(**fd)
196
+ #session.query(NetWorth).filter(NetWorth.nwid==nw.nwid).update(fd)
197
+ session.commit()
198
+ session.refresh(nw)
199
+ print(nw)
200
+
201
+
202
+ def findAndUse2(self):
203
+ with Session(ENGINE) as session:
204
+ 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")
205
+ if cmd in ['d',None]:
206
+ return
207
+ else:
208
+ options=copy(self.options)
209
+
210
+ session.query(FindCmd).delete()
211
+ session.commit()
212
+ for num,k in enumerate(options):
213
+ stage=0
214
+ cmds=options[k]['cmds']
215
+ l=[]
216
+ l.extend(cmds)
217
+ l.append(options[k]['desc'])
218
+ cmdStr=' '.join(l)
219
+ cmd_string=FindCmd(CmdString=cmdStr,CmdKey=k)
220
+ session.add(cmd_string)
221
+ if num % 50 == 0:
222
+ session.commit()
223
+ session.commit()
224
+ session.flush()
225
+
226
+ results=session.query(FindCmd).filter(FindCmd.CmdString.icontains(cmd)).all()
227
+
228
+
229
+ ct=len(results)
230
+ if ct == 0:
231
+ print(f"No Cmd was found by {Fore.light_red}{cmd}{Style.reset}")
232
+ return
233
+ for num,x in enumerate(results):
234
+ 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']}"
235
+ print(msg)
236
+ select=Prompt.__init2__(None,func=FormBuilderMkText,ptext="which index?",helpText="the number farthest to the left before the /",data="integer")
237
+ if select in [None,'d']:
238
+ return
239
+ try:
240
+ ee=options[results[select].CmdKey]['exec']
241
+ if callable(ee):
242
+ ee()
243
+ except Exception as e:
244
+ print(e)
245
+
246
+ def delete_all(self):
247
+ fieldname=f'{__class__.__name__}'
248
+ mode=f'DeleteAll'
249
+ h=f'{Prompt.header.format(Fore=Fore,mode=mode,fieldname=fieldname,Style=Style)}'
250
+
251
+ code=''.join([str(random.randint(0,9)) for i in range(10)])
252
+ verification_protection=detectGetOrSet("Protect From Delete",code,setValue=False,literal=True)
253
+ while True:
254
+ try:
255
+ really=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"{h}Really delete All NetWorth's?",helpText="yes or no boolean,default is NO",data="boolean")
256
+ if really in [None,]:
257
+ print(f"{Fore.light_steel_blue}Nothing was {Fore.orange_red_1}{Style.bold}Deleted!{Style.reset}")
258
+ return True
259
+ elif really in ['d',False]:
260
+ print(f"{Fore.light_steel_blue}Nothing was {Fore.orange_red_1}{Style.bold}Deleted!{Style.reset}")
261
+ return True
262
+ else:
263
+ pass
264
+ really=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"To {Fore.orange_red_1}Delete everything completely,{Fore.light_steel_blue}what is today's date?[{'.'.join([str(int(i)) for i in datetime.now().strftime("%m.%d.%y").split(".")])}]{Style.reset}",helpText="type y/yes for prompt or type as m.d.Y",data="datetime")
265
+ if really in [None,'d']:
266
+ print(f"{Fore.light_steel_blue}Nothing was {Fore.orange_red_1}{Style.bold}Deleted!{Style.reset}")
267
+ return True
268
+ today=datetime.today()
269
+ if really.day == today.day and really.month == today.month and really.year == today.year:
270
+ really=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"Please type the verification code {Style.reset}'{Entry.cfmt(None,verification_protection)}'?",helpText=f"type '{Entry.cfmt(None,verification_protection)}' to finalize!",data="string")
271
+ if really in [None,]:
272
+ print(f"{Fore.light_steel_blue}Nothing was {Fore.orange_red_1}{Style.bold}Deleted!{Style.reset}")
273
+ return True
274
+ elif really in ['d',False]:
275
+ print(f"{Fore.light_steel_blue}Nothing was {Fore.orange_red_1}{Style.bold}Deleted!{Style.reset}")
276
+ return True
277
+ elif really == verification_protection:
278
+ break
279
+ else:
280
+ pass
281
+ except Exception as e:
282
+ print(e)
283
+ with Session(ENGINE) as session:
284
+ session.query(NetWorth).delete()
285
+ session.commit()
286
+
287
+ def clear_all(self):
288
+ fieldname=f'{__class__.__name__}'
289
+ mode=f'ClearAll'
290
+ h=f'{Prompt.header.format(Fore=Fore,mode=mode,fieldname=fieldname,Style=Style)}'
291
+
292
+ code=''.join([str(random.randint(0,9)) for i in range(10)])
293
+ verification_protection=detectGetOrSet("Protect From Delete",code,setValue=False,literal=True)
294
+ while True:
295
+ try:
296
+ really=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"{h}Really Clear All NetWorth's to NetWorth=0?",helpText="yes or no boolean,default is NO",data="boolean")
297
+ if really in [None,]:
298
+ print(f"{Fore.light_steel_blue}Nothing was {Fore.orange_red_1}{Style.bold}Cleared!{Style.reset}")
299
+ return True
300
+ elif really in ['d',False]:
301
+ print(f"{Fore.light_steel_blue}Nothing was {Fore.orange_red_1}{Style.bold}Cleared!{Style.reset}")
302
+ return True
303
+ else:
304
+ pass
305
+ really=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"To {Fore.orange_red_1}Clear everything completely,{Fore.light_steel_blue}what is today's date?[{'.'.join([str(int(i)) for i in datetime.now().strftime("%m.%d.%y").split(".")])}]{Style.reset}",helpText="type y/yes for prompt or type as m.d.Y",data="datetime")
306
+ if really in [None,'d']:
307
+ print(f"{Fore.light_steel_blue}Nothing was {Fore.orange_red_1}{Style.bold}Deleted!{Style.reset}")
308
+ return True
309
+ today=datetime.today()
310
+ if really.day == today.day and really.month == today.month and really.year == today.year:
311
+ really=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"Please type the verification code {Style.reset}'{Entry.cfmt(None,verification_protection)}'?",helpText=f"type '{Entry.cfmt(None,verification_protection)}' to finalize!",data="string")
312
+ if really in [None,]:
313
+ print(f"{Fore.light_steel_blue}Nothing was {Fore.orange_red_1}{Style.bold}Cleared!{Style.reset}")
314
+ return True
315
+ elif really in ['d',False]:
316
+ print(f"{Fore.light_steel_blue}Nothing was {Fore.orange_red_1}{Style.bold}Cleared!{Style.reset}")
317
+ return True
318
+ elif really == verification_protection:
319
+ break
320
+ else:
321
+ pass
322
+ except Exception as e:
323
+ print(e)
324
+ with Session(ENGINE) as session:
325
+ session.query(NetWorth).update({'NetWorth':0,'DTOE':datetime.now(),'Note':''})
326
+ session.commit()
327
+
328
+ def list_scan(self,sch=False,dated=False,menu=False):
329
+ default=True
330
+ FORMAT=self.FORMAT()
331
+ terse=Control(func=FormBuilderMkText,ptext="Terse output [False/True] ",helpText=FORMAT,data="boolean")
332
+ if terse is None:
333
+ return
334
+ elif terse in ['NaN',]:
335
+ terse=False
336
+ elif terse in ['d',]:
337
+ terse=default
338
+ writeToFile=Control(func=FormBuilderMkText,ptext="writeToFile output [False/True] ",helpText=str(Path(db.detectGetOrSet('text2file','TextOut.txt',setValue=False,literal=True))),data="boolean")
339
+ if writeToFile is None:
340
+ return
341
+ elif writeToFile in ['NaN',]:
342
+ writeToFile=False
343
+ elif writeToFile in ['d',]:
344
+ writeToFile=default
345
+
346
+ if writeToFile:
347
+ outfile=Path(db.detectGetOrSet('text2file','TextOut.txt',setValue=False,literal=True))
348
+ outfile.open('w').write('')
349
+
350
+
351
+ with Session(ENGINE) as session:
352
+ query=session.query(NetWorth)
353
+
354
+ if dated:
355
+ start_date=Control(func=FormBuilderMkText,ptext="Start Date:",helpText="start date",data="datetime")
356
+ if start_date in [None,'NaN']:
357
+ return
358
+ elif start_date in ['d',]:
359
+ start_date=datetime.today()
360
+
361
+ end_date=Control(func=FormBuilderMkText,ptext="end Date:",helpText="end date",data="datetime")
362
+ if end_date in [None,'NaN']:
363
+ return
364
+ elif end_date in ['d',]:
365
+ end_date=datetime.today()
366
+ query=query.filter(and_(NetWorth.DTOE<end_date,NetWorth.DTOE>start_date))
367
+
368
+ if sch:
369
+ term=Control(func=FormBuilderMkText,ptext="What are you looking for? ",helpText="a string of text",data="string")
370
+ if term is None:
371
+ return
372
+ elif term in ['d','NaN']:
373
+ term=''
374
+ query=query.filter(or_(NetWorth.Name.icontains(term),NetWorth.ForWhom.icontains(term),NetWorth.Comments.icontains(term)))
375
+
376
+ query=orderQuery(query,NetWorth.DTOE,inverse=True)
377
+ results=query.all()
378
+ cta=len(results)
379
+ if cta < 1:
380
+ print("There are no results!")
381
+ return
382
+ for num, i in enumerate(results):
383
+
384
+ if not terse:
385
+ msg=std_colorize(f"{Fore.light_magenta}{__class__.__name__}{Fore.dark_goldenrod}{i}",num,cta)
386
+ else:
387
+ msg=self.terse(i,num,cta)
388
+ print(msg)
389
+ if writeToFile:
390
+ self.save2file_write(msg)
391
+ if menu:
392
+ doWhat=Control(func=FormBuilderMkText,ptext="clear/clr, reset/rst, edit/e/ed, or delete/del/remove/rm (<Enter> Continues)?",helpText="clear/clr, reset/rst, edit/e/ed or delete/del/remove/rm?",data="string")
393
+ if doWhat in [None,'NaN']:
394
+ return
395
+ elif doWhat.lower() in "edit/e/ed".split("/"):
396
+ self.edit(i)
397
+ session.refresh(i)
398
+ if not terse:
399
+ msg=std_colorize(f"{Fore.light_magenta}{__class__.__name__}{Fore.dark_goldenrod}{i}",num,cta)
400
+ else:
401
+ msg=std_colorize(f"{Fore.light_magenta}{i.Name}:{Fore.light_red}{i.nwid}[{Fore.green_yellow}{i.DTOE}] = {Fore.cyan}{i.NetWorth} {Fore.dark_goldenrod}",num,cta)
402
+ print(msg)
403
+ elif doWhat.lower() in "delete/del/remove/rm".split("/"):
404
+ session.delete(i)
405
+ session.commit()
406
+ elif doWhat.lower() in "clear/clr".split("/"):
407
+ self.edit(i,clear=True)
408
+ session.refresh(i)
409
+ if not terse:
410
+ msg=std_colorize(f"{Fore.light_magenta}{__class__.__name__}{Fore.dark_goldenrod}{i}",num,cta)
411
+ else:
412
+ msg=self.tersed(i,num,cta)
413
+ print(msg)
414
+ elif doWhat.lower() in "reset/rst".split("/"):
415
+ self.edit(i,reset=True)
416
+ session.refresh(i)
417
+ if not terse:
418
+ msg=std_colorize(f"{Fore.light_magenta}{__class__.__name__}{Fore.dark_goldenrod}{i}",num,cta)
419
+ else:
420
+ msg=self.tersed(i,num,cta)
421
+ print(msg)
422
+ if (num % 15) == 0 and num > 0:
423
+ print(f"{Fore.grey_70}{'*'*os.get_terminal_size().columns}")
424
+ if writeToFile:
425
+ self.save2file_write(f"{Fore.grey_70}{'*'*os.get_terminal_size().columns}")
426
+
427
+ print(FORMAT)
428
+ if writeToFile:
429
+ print(f"Written to {str(Path(db.detectGetOrSet('text2file','TextOut.txt',setValue=False,literal=True)))}")
430
+ self.save2file_write(strip_colors(FORMAT))
431
+
432
+
433
+ def FORMAT(self):
434
+ return f"{Fore.light_magenta}Name:{Fore.light_red}nwID[{Fore.green_yellow}DTOE] = {Fore.cyan}$NETWORTH {Fore.dark_goldenrod}"
435
+
436
+ def terse(self,i,num,cta):
437
+ return std_colorize(f"{Fore.light_magenta}{i.Name}:{Fore.light_red}{i.nwid}[{Fore.green_yellow}{i.DTOE}] = {Fore.cyan}{i.NetWorth} {Fore.dark_goldenrod}",num,cta)
438
+
439
+ def edit(self,i:NetWorth,excludes=['nwid',],reset=False,clear=False):
440
+ if reset:
441
+ with Session(ENGINE) as session:
442
+ r=session.query(NetWorth).filter(NetWorth.nwid==i.nwid).first()
443
+ r.Name=''
444
+ r.DTOE=datetime.now()
445
+ r.Note=''
446
+ r.NetWorth=0
447
+ session.commit()
448
+ return
449
+
450
+ if clear:
451
+ with Session(ENGINE) as session:
452
+ r=session.query(NetWorth).filter(NetWorth.nwid==i.nwid).first()
453
+ r.DTOE=datetime.now()
454
+ r.Note=''
455
+ r.NetWorth=0
456
+ session.commit()
457
+ return
458
+ fields={
459
+ x.name:{
460
+ 'default':getattr(i,x.name),
461
+ 'type':str(x.type).lower()
462
+ } for x in i.__table__.columns if x.name not in excludes
463
+ }
464
+ fd=FormBuilder(data=fields)
465
+ if fd is None:
466
+ return
467
+ with Session(ENGINE) as session:
468
+ r=session.query(NetWorth).filter(NetWorth.nwid==i.nwid).first()
469
+ r.__init__(**fd)
470
+
471
+ session.commit()
472
+
473
+ def last_NetWorth(self):
474
+ '''print hight times scanned w/ prompt for how many and offset'''
475
+ default=True
476
+ FORMAT=self.FORMAT()
477
+ terse=Control(func=FormBuilderMkText,ptext="Terse output [False/True] ",helpText=FORMAT,data="boolean")
478
+ if terse is None:
479
+ return
480
+ elif terse in ['NaN',]:
481
+ terse=False
482
+ elif terse in ['d',]:
483
+ terse=default
484
+ '''print the newest scan'''
485
+ writeToFile=Control(func=FormBuilderMkText,ptext="writeToFile output [False/True] ",helpText=str(Path(db.detectGetOrSet('text2file','TextOut.txt',setValue=False,literal=True))),data="boolean")
486
+ if writeToFile is None:
487
+ return
488
+ elif writeToFile in ['NaN',]:
489
+ writeToFile=False
490
+ elif writeToFile in ['d',]:
491
+ writeToFile=default
492
+
493
+ if writeToFile:
494
+ outfile=Path(db.detectGetOrSet('text2file','TextOut.txt',setValue=False,literal=True))
495
+ outfile.open('w').write('')
496
+ with Session(ENGINE) as session:
497
+
498
+ query=session.query(NetWorth)
499
+ query=orderQuery(query,NetWorth.NetWorth)
500
+ limit=Control(func=FormBuilderMkText,ptext="max to display?",helpText="an integer",data="integer")
501
+ if limit in [None,'NaN']:
502
+ return
503
+ elif limit in ['d',]:
504
+ limit=10
505
+
506
+ offset=Control(func=FormBuilderMkText,ptext="what is the offset from 0?",helpText="what is 0/start+offset",data="integer")
507
+ if offset in [None,'NaN']:
508
+ return
509
+ elif offset in ['d',]:
510
+ offset=0
511
+ query=limitOffset(query,limit,offset)
512
+
513
+ results=query.all()
514
+ cta=len(results)
515
+
516
+ for num,i in enumerate(results):
517
+
518
+ if terse:
519
+ msg=self.terse(i,num,cta)
520
+ else:
521
+ msg=std_colorize(f"{Fore.light_magenta}{__class__.__name__}{Fore.dark_goldenrod}{i}",num,cta)
522
+ if writeToFile:
523
+ self.save2file_write(strip_colors(msg))
524
+ print(msg)
525
+ if (num % 15) == 0 and num > 0:
526
+ print(f"{Fore.grey_70}{'*'*os.get_terminal_size().columns}")
527
+ if writeToFile:
528
+ self.save2file_write(strip_colors(f"{Fore.grey_70}{'*'*os.get_terminal_size().columns}"))
529
+ print(FORMAT)
530
+ if writeToFile:
531
+ print(f"Written to {str(Path(db.detectGetOrSet('text2file','TextOut.txt',setValue=False,literal=True)))}")
532
+ self.save2file_write(strip_colors(FORMAT))
533
+
534
+ def clear_file(self):
535
+ with Path(db.detectGetOrSet('text2file','TextOut.txt',setValue=False,literal=True)).open('w') as out:
536
+ out.write('')
537
+ print("Cleared!")
538
+
539
+ def last_DTOE(self):
540
+ default=True
541
+ FORMAT=self.FORMAT()
542
+ terse=Control(func=FormBuilderMkText,ptext="Terse output [False/True] ",helpText=FORMAT,data="boolean")
543
+ if terse is None:
544
+ return
545
+ elif terse in ['NaN',]:
546
+ terse=False
547
+ elif terse in ['d',]:
548
+ terse=default
549
+ writeToFile=Control(func=FormBuilderMkText,ptext="writeToFile output [False/True] ",helpText=str(Path(db.detectGetOrSet('text2file','TextOut.txt',setValue=False,literal=True))),data="boolean")
550
+ if writeToFile is None:
551
+ return
552
+ elif writeToFile in ['NaN',]:
553
+ writeToFile=False
554
+ elif writeToFile in ['d',]:
555
+ writeToFile=default
556
+
557
+ if writeToFile:
558
+ outfile=Path(db.detectGetOrSet('text2file','TextOut.txt',setValue=False,literal=True))
559
+ outfile.open('w').write('')
560
+
561
+ '''print the newest scan'''
562
+ with Session(ENGINE) as session:
563
+
564
+ query=session.query(NetWorth)
565
+ query=orderQuery(query,NetWorth.DTOE)
566
+ limit=Control(func=FormBuilderMkText,ptext="max to display?",helpText="an integer",data="integer")
567
+ if limit in [None,'NaN']:
568
+ return
569
+ elif limit in ['d',]:
570
+ limit=10
571
+
572
+ offset=Control(func=FormBuilderMkText,ptext="what is the offset from 0?",helpText="what is 0/start+offset",data="integer")
573
+ if offset in [None,'NaN']:
574
+ return
575
+ elif offset in ['d',]:
576
+ offset=0
577
+ query=limitOffset(query,limit,offset)
578
+
579
+ results=query.all()
580
+ cta=len(results)
581
+
582
+ for num,i in enumerate(results):
583
+
584
+ if terse:
585
+ msg=self.terse(i,num,cta)
586
+ else:
587
+ msg=std_colorize(f"{Fore.light_magenta}{__class__.__name__}{Fore.dark_goldenrod}{i}",num,cta)
588
+
589
+ print(msg)
590
+ if writeToFile:
591
+ self.save2file_write(strip_colors(msg))
592
+ if (num % 15) == 0 and num > 0:
593
+ if writeToFile:
594
+ self.save2file_write(strip_colors(f"{Fore.grey_70}{'*'*os.get_terminal_size().columns}"))
595
+ print(f"{Fore.grey_70}{'*'*os.get_terminal_size().columns}")
596
+ if writeToFile:
597
+ print(f"Written to {str(Path(db.detectGetOrSet('text2file','TextOut.txt',setValue=False,literal=True)))}")
598
+ self.save2file_write(strip_colors(FORMAT))
599
+ print(FORMAT)
600
+
601
+
602
+ def save2file_write(self,text):
603
+ outfile=Path(db.detectGetOrSet('text2file','TextOut.txt',setValue=False,literal=True))
604
+ with open(outfile,'a') as x:
605
+ otext=strip_colors(text+"\n")
606
+ if otext in [None,'d','']:
607
+ print("nothing was saved!")
608
+ if otext is None:
609
+ return
610
+ x.write(otext)
611
+ #print(f"wrote '{otext}' to '{outfile}'")
612
+ def fields(self):
613
+ print("assets -------- ")
614
+ zz=NetWorth().asset_fields
615
+ ct=len(zz)
616
+ for num,i in enumerate(zz):
617
+ print(std_colorize(i,num,ct))
618
+ zz=NetWorth().liabilities_fields
619
+ print("liabilities -------- ")
620
+ ct=len(zz)
621
+ for num,i in enumerate(zz):
622
+ print(std_colorize(i,num,ct))
623
+
624
+
625
+
626
+ def __init__(self):
627
+ MENUDO="edit,delete, clear count,reset all fields"
628
+ self.options={}
629
+ self.options[str(uuid1())]={
630
+ 'cmds':generate_cmds(startcmd=["fix","fx"],endCmd=['tbl','table']),
631
+ 'desc':'''
632
+ drop and regenerate NetWorth Table
633
+ ''',
634
+ 'exec':self.fix_table
635
+ }
636
+ self.options[str(uuid1())]={
637
+ 'cmds':['ca','clearall','clear all','clear-all','clear.all'],
638
+ 'desc':f'clear networth of all NetWorths',
639
+ 'exec':self.clear_all
640
+ }
641
+ self.options[str(uuid1())]={
642
+ 'cmds':['fields','flds'],
643
+ 'desc':f'clear networth of all NetWorths',
644
+ 'exec':self.fields
645
+ }
646
+ self.options[str(uuid1())]={
647
+ 'cmds':['add','new','a'],
648
+ 'desc':f'add a new networth',
649
+ 'exec':self.add
650
+ }
651
+ self.options[str(uuid1())]={
652
+ 'cmds':['da','deleteall','delete all','delete-all','delete.all'],
653
+ 'desc':f'delete all of NetWorth\'s',
654
+ 'exec':self.delete_all
655
+ }
656
+ self.options[str(uuid1())]={
657
+ 'cmds':['list networth','lst nw',],
658
+ 'desc':f'List Scans',
659
+ 'exec':self.list_scan
660
+ }
661
+ self.options[str(uuid1())]={
662
+ 'cmds':['clear file','clr fl',],
663
+ 'desc':f'clear outfile',
664
+ 'exec':self.clear_file
665
+ }
666
+ self.options[str(uuid1())]={
667
+ 'cmds':['list networth search','lst nw sch','lst nw','list find','lst fnd'],
668
+ 'desc':f'List NetWorth\'s with search by text',
669
+ 'exec':lambda self=self:self.list_scan(sch=True)
670
+ }
671
+ self.options[str(uuid1())]={
672
+ 'cmds':['last by dtoe','lst dtoe'],
673
+ 'desc':f'List NetWorth with limit and offset using rllo/vllo for ordering by dtoe',
674
+ 'exec':lambda self=self:self.last_DTOE()
675
+ }
676
+ self.options[str(uuid1())]={
677
+ 'cmds':['last by timesscanned','lst ts'],
678
+ 'desc':f'List NetWorth with limit and offset using rllo/vllo for ordering by NetWorth',
679
+ 'exec':lambda self=self:self.last_NetWorth()
680
+ }
681
+ self.options[str(uuid1())]={
682
+ 'cmds':['list networth dated','lst nw dt','lst dt','list dtd','lst d'],
683
+ 'desc':f'List networth within start and end dates',
684
+ 'exec':lambda self=self:self.list_scan(dated=True)
685
+ }
686
+ self.options[str(uuid1())]={
687
+ 'cmds':['list networth search date','lst nw sch dt','lst sch dt','list find dt','lst fnd dt'],
688
+ 'desc':f'List networth with search by scanned text between start and end dates',
689
+ 'exec':lambda self=self:self.list_scan(sch=True,dated=True)
690
+ }
691
+
692
+ self.options[str(uuid1())]={
693
+ 'cmds':['list networth menu','lst nw m',],
694
+ 'desc':f'List NetWorth\'s with menu to {MENUDO}',
695
+ 'exec':lambda self=self:self.list_scan(menu=True)
696
+ }
697
+ self.options[str(uuid1())]={
698
+ 'cmds':['list networth search menu','lst nw sch m','lst sch m','list find menu','lst fnd m'],
699
+ 'desc':f'List networth with search by scanned text with menu to {MENUDO}',
700
+ 'exec':lambda self=self:self.list_scan(sch=True,menu=True)
701
+ }
702
+ self.options[str(uuid1())]={
703
+ 'cmds':['list networth dated menu','lst nw dt m','lst dt m','list dtd m','lst d m'],
704
+ 'desc':f'List Scans within start and end dates with menu to {MENUDO}',
705
+ 'exec':lambda self=self:self.list_scan(dated=True,menu=True)
706
+ }
707
+ self.options[str(uuid1())]={
708
+ 'cmds':['list networth search date menu','lst nw sch dt m','lst sch dt m','list find dt m','lst fnd dt m'],
709
+ 'desc':f'List networth with search by scanned text between start and end dates with menu to {MENUDO}',
710
+ 'exec':lambda self=self:self.list_scan(sch=True,dated=True,menu=True)
711
+ }
712
+
713
+ #new methods() start
714
+
715
+ #new methods() end
716
+ self.options[str(uuid1())]={
717
+ 'cmds':['fcmd','findcmd','find cmd'],
718
+ 'desc':f'Find {Fore.light_yellow}cmd{Fore.medium_violet_red} and excute for return{Style.reset}',
719
+ 'exec':self.findAndUse2
720
+ }
721
+
722
+
723
+ self.DESCRIPTION=f'''
724
+ record/list your networth logs
725
+ 'Add' NetWorth or Calculate it?
726
+ if you already know it and just enter your networth, then the calculations are not performed, but the liabilities
727
+ and assets are still stored.
728
+
729
+ if you don't, then leave networth as None using 'NAN', or as 0, and follow the prompts to enter your
730
+ liabilities and assets. Once you are finished adding your information type one of below:
731
+ 'f','<enter>','f'
732
+ 'ff' the first time
733
+
734
+ to save your log.
735
+
736
+ This allows you to keep track of your NetWorth.
737
+ '''
738
+
739
+ self.options[str(uuid1())]={
740
+ 'cmds':['desciption','describe me','what am i','help me','?+'],
741
+ 'desc':f'print the module description',
742
+ 'exec':lambda self=self:print(self.DESCRIPTION)
743
+ }
744
+
745
+ for num,i in enumerate(self.options):
746
+ if str(num) not in self.options[i]['cmds']:
747
+ self.options[i]['cmds'].append(str(num))
748
+ options=copy(self.options)
749
+
750
+ while True:
751
+ helpText=[]
752
+ for i in options:
753
+ msg=f"{Fore.light_green}{options[i]['cmds']}{Fore.light_red} -> {options[i]['desc']}{Style.reset}"
754
+ helpText.append(msg)
755
+ helpText='\n'.join(helpText)
756
+
757
+ cmd=Prompt.__init2__(None,func=FormBuilderMkText,ptext=f"{__class__.__name__}|Do What?:",helpText=helpText,data="string")
758
+ if cmd is None:
759
+ return None
760
+ result=None
761
+ for i in options:
762
+ els=[ii.lower() for ii in options[i]['cmds']]
763
+ if cmd.lower() in els:
764
+ options[i]['exec']()
765
+ break
766
+
@@ -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 .NetWorth import *
@@ -631,6 +631,16 @@ drop and regenerate SimpleScan Table
631
631
  'desc':f'Find {Fore.light_yellow}cmd{Fore.medium_violet_red} and excute for return{Style.reset}',
632
632
  'exec':self.findAndUse2
633
633
  }
634
+ self.DESCRIPTION=f'''
635
+ A Scanner software that prompts for text, and if a duplicate is found, select the duplicate, and increments a counter TimesScanned.
636
+ This is made for making lists, where a name tied to a barcode is not necessary, but keeping qty is.
637
+ '''
638
+
639
+ self.options[str(uuid1())]={
640
+ 'cmds':['desciption','describe me','what am i','help me','?+'],
641
+ 'desc':f'print the module description',
642
+ 'exec':lambda self=self:print(self.DESCRIPTION)
643
+ }
634
644
 
635
645
  for num,i in enumerate(self.options):
636
646
  if str(num) not in self.options[i]['cmds']:
Binary file
radboy/DB/db.py CHANGED
@@ -53,7 +53,7 @@ from radboy.DB.rad_types import *
53
53
  from dataclasses import dataclass
54
54
  import dataclasses as DC
55
55
  import contextlib as CTXLB
56
- getcontext().prec=4
56
+ #getcontext().prec=4
57
57
 
58
58
  #libraries for additional calculations
59
59
  import scipy as SCIPY
@@ -1961,6 +1961,8 @@ fxtbl - update table with correct columns
1961
1961
  CompareUI()
1962
1962
  elif what.lower() in ['bhtrsa','business hours tax rates scheduled and appointments']:
1963
1963
  BhTrSa_Gui()
1964
+ elif what.lower() in ['networth ui','nwui']:
1965
+ TM.Tasks.TasksMode(parent=self,engine=db.ENGINE,init_only=True).networth_ui()
1964
1966
  elif what.lower() in ["#"+str(0),*[i for i in generate_cmds(startcmd=["phonebook","phnbk"],endCmd=["",])]]:
1965
1967
  TM.Tasks.TasksMode(parent=self,engine=db.ENGINE,init_only=True).phonebook()
1966
1968
 
radboy/FB/FormBuilder.py CHANGED
@@ -285,7 +285,8 @@ def FormBuilder(data,extra_tooling=False,passThruText=None):
285
285
  GOTOK=findAndSelectKey(options=DATA)
286
286
  print(GOTOK)
287
287
  while GOTOK not in list(data.keys()):
288
- GOTOK=setGOTOK_str(GOTOK)
288
+ GOTOK=findAndSelectKey(options=DATA)
289
+ #GOTOK=setGOTOK_str(GOTOK)
289
290
  if GOTOK in [None,]:
290
291
  return
291
292
  if_continue=True
Binary file
radboy/TasksMode/Tasks.py CHANGED
@@ -48,7 +48,8 @@ import radboy.DB.OrderedAndRxd as OAR
48
48
  import radboy.DB.LetterWriter as LW
49
49
  from scipy.io.wavfile import write
50
50
  from radboy.DB.SimpleScanner import SimpleScanner
51
-
51
+ from radboy.DB.NW.NetWorth import *
52
+ from decimal import Decimal as DEC
52
53
  def today():
53
54
  dt=datetime.now()
54
55
  return date(dt.year,dt.month,dt.day)
@@ -1160,6 +1161,8 @@ def generateWhiteNoise():
1160
1161
 
1161
1162
 
1162
1163
  class TasksMode:
1164
+ def networth_ui(self):
1165
+ NetWorthUi()
1163
1166
  def simple_scanner(self):
1164
1167
  SimpleScanner.SimpleScanUi()
1165
1168
  def white_noise(self):
radboy/__init__.py CHANGED
@@ -1 +1 @@
1
- VERSION='0.0.707'
1
+ VERSION='0.0.709'
Binary file
@@ -458,4 +458,5 @@ def EditTaxRate(excludes=['txrt_id','DTOE']):
458
458
  print(results[select])
459
459
  return
460
460
  else:
461
- continue
461
+ continue
462
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: radboy
3
- Version: 0.0.707
3
+ Version: 0.0.709
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=KI7Jmf3MX0Zng_YUvcjVKN2siyUOhaMAHQGzpPuX8KQ,41373
7
7
  radboy/Run.py,sha256=JUoCTHnzQBv7n8PB2_i93ANdAC_iW__RkAge8esCnk4,76
8
- radboy/__init__.py,sha256=xLo6ndZ6k9asJgigAkulDNH1bexHy-OMPhCWb-UqxKg,17
8
+ radboy/__init__.py,sha256=RshdZX4TcHFM4LEiUEqryhr0rncEkoYr6A1HcBenw04,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
@@ -95,14 +95,16 @@ radboy/DB/SMLabelImporter.py,sha256=eUoBDxVUUEKGL2g_PwkASM67ZB7FmXtSnn4bCagskhY,
95
95
  radboy/DB/__init__.py,sha256=JiigA9B7GalP7YuRdcwyGDu5PDSBahoi0lLjtScxlN8,49
96
96
  radboy/DB/blankDataFile.py,sha256=YX_05Usi71UpDkZN9UTMYwUipbTndTAtEgqzBEga0kE,9285
97
97
  radboy/DB/config.py,sha256=bvu43dUl1_yO3Zq3gsLuenGUgJSiS3S9Cs6ppFEvZbg,239
98
- radboy/DB/db.py,sha256=VCMe0fJ1pV6vAIBwOfQvipOUr7UeJoZI6yWHkMJXLtc,262820
98
+ radboy/DB/db.py,sha256=gLO0VoKZroEcuRc-nIM7eyRi8csAjyed7wIFiguB8vQ,262821
99
99
  radboy/DB/glossary_db.py,sha256=1_qxeEpjjEtpWB_eDjsgJisimLv7OBm75MuqM-Lt6zg,28218
100
100
  radboy/DB/masterLookup.py,sha256=DBaM2uscG3_X5dek49wjdnOzhrjWhKgvOEz_umdz0mY,4566
101
101
  radboy/DB/msg.txt,sha256=YxWed6A6tuP1djJ5QPS2Rz3ING4TKKf8kUiCCPtzHXE,7937
102
102
  radboy/DB/rad_types.py,sha256=mtZpBMIFPcw1IhmO7UQ7nV_1gNNURs4INwx3x40hLUU,4725
103
103
  radboy/DB/renderText2Png.py,sha256=PWnTicLTfOPg9UlQYia3wMpjM9rh7MIyDVsmcsDRUBo,5678
104
104
  radboy/DB/testClass.py,sha256=t3zT1gbvReUncnPY8R9JUfKXQ5UEB2wmQx8DNeds0hI,310
105
- radboy/DB/SimpleScanner/SimpleScanner.py,sha256=w8A82pk9IKM6-gcDWKYz8U64naCheh49wWRd0OO-Ygo,31967
105
+ radboy/DB/NW/NetWorth.py,sha256=mf8txYjZUHYRUU-USczgxIpQ7y_QW0W4aW_Gkjtm6mA,35367
106
+ radboy/DB/NW/__init__.py,sha256=L_47uRH17B4CKrJWYEmisZw_-Ch2zYQj5WollHeP2ZM,894
107
+ radboy/DB/SimpleScanner/SimpleScanner.py,sha256=TOjBD4RgvKPL7isPVuhmrbBzlrA8YHozZJyYo0mMxOk,32477
106
108
  radboy/DB/SimpleScanner/__init__.py,sha256=BknbeGbEv48sqoCWwCQbKbgbqLUuBAyeeIh4EFerJ0g,899
107
109
  radboy/DB/__pycache__/DatePicker.cpython-311.pyc,sha256=VMJnJ7scb4VHMQi1HDZCF67KVYfb9m-fZK96IAoJzTQ,19676
108
110
  radboy/DB/__pycache__/DatePicker.cpython-312.pyc,sha256=cc5XWJ6Sbtcg0xWPz3SOP93VceIqr1pH42kjkLl5iYs,30294
@@ -133,7 +135,7 @@ radboy/DB/__pycache__/config.cpython-312.pyc,sha256=Qo7E6MHrF6yqvKgepNFyCoekZXiv
133
135
  radboy/DB/__pycache__/config.cpython-313.pyc,sha256=_8wCIg_3jhyJjxnExD2Sm6aY-uZTw036p7Ki5znL7dc,376
134
136
  radboy/DB/__pycache__/db.cpython-311.pyc,sha256=rNgigyBd0D-cg1JxKAS8t0B_k0IEJivgVlRaZE10Xis,210105
135
137
  radboy/DB/__pycache__/db.cpython-312.pyc,sha256=ANDJPC0RoavbmSKFxG15vC7B4rEGyVt7xRJt7XGY3OA,334609
136
- radboy/DB/__pycache__/db.cpython-313.pyc,sha256=dcZx_5o0wGn6q4oj8NqF6p3XQ_-5-RjbG0ocb5p1ces,412019
138
+ radboy/DB/__pycache__/db.cpython-313.pyc,sha256=k5JfIueDOECa9ufjsn9MboeBUezDUbwx6Ris3Vaf71E,411900
137
139
  radboy/DB/__pycache__/glossary_db.cpython-312.pyc,sha256=8UL-29cKqtKovx0BANm6kzKKteef1BW_2qF3wumzst4,36023
138
140
  radboy/DB/__pycache__/glossary_db.cpython-313.pyc,sha256=Ke9bkvllGv5CK0JdT9DRvQ3MOdrXxoYv7TVLNkqLux0,36582
139
141
  radboy/DB/__pycache__/masterLookup.cpython-312.pyc,sha256=bQiOkmMwwHgcO18tYSWGQ-YUff4GQlKVhBMp1GoWAqY,6324
@@ -142,7 +144,7 @@ radboy/DB/__pycache__/renderText2Png.cpython-311.pyc,sha256=ivSzvyAeWhsS-a_RcFF8
142
144
  radboy/DB/__pycache__/renderText2Png.cpython-312.pyc,sha256=1CUGjOhJw_vC4DNMQ-W5jBXEKp7HzDrq7--x9VyBTo8,8991
143
145
  radboy/DB/__pycache__/renderText2Png.cpython-313.pyc,sha256=LDJOo7uFztlxw3ptN8QuHrLkr0GKiAArBu34QiE15iQ,9096
144
146
  radboy/DB/__pycache__/testClass.cpython-311.pyc,sha256=nkWap8RuBsWWOB_ZhGbR3ELbnL1F1CHZCi0dpepqw-0,1225
145
- radboy/DayLog/DayLogger.py,sha256=ZVk6Gki5ezEKSicULMCpFUDnDLQrTSNFe5JjcatPF4E,104117
147
+ radboy/DayLog/DayLogger.py,sha256=xC7rT2sBx74w_bnWx2moXhy1PX6zwT--UZ2Qq1d6wic,104284
146
148
  radboy/DayLog/TaxiFares.py,sha256=3slYjtBcTnRe8IeneJ-_iZJJ3E7alW09f6GWYXPxhOo,10882
147
149
  radboy/DayLog/Wavelength4Freq.py,sha256=MfN2EATrN3bbEDgP1qOPjV1Fk8sVnkc_4tgX6sKfSE0,2054
148
150
  radboy/DayLog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -150,7 +152,7 @@ radboy/DayLog/BhTrSa/__init__.py,sha256=q6xDsXAiWpQR2QWILKZKf--D3apR_KOE1CRbZaP7
150
152
  radboy/DayLog/BhTrSa/bhtrsaa.py,sha256=3ECYU_2yMNS_zsN0ZD6BbiIwbWcJ9mokUwOt_hkTAYs,18233
151
153
  radboy/DayLog/__pycache__/DayLogger.cpython-311.pyc,sha256=TmRnRZHp5tMTokSEB8hWTxnasi-iJdh6TmYcb_nXGoY,29557
152
154
  radboy/DayLog/__pycache__/DayLogger.cpython-312.pyc,sha256=bfDCQZrIhgQYzoUle7roicRE_bhGPYZtIbCRIiDrsxU,68240
153
- radboy/DayLog/__pycache__/DayLogger.cpython-313.pyc,sha256=KibtDP2R929a4wo-DULTECtY2PykTMKFTgdkYlqwSpE,154512
155
+ radboy/DayLog/__pycache__/DayLogger.cpython-313.pyc,sha256=nQpq8kScaAF1PknJECfix1GZPrEv2QAbaI57ne9kn7Y,154773
154
156
  radboy/DayLog/__pycache__/__init__.cpython-311.pyc,sha256=Z5Y4DdVF77LZf6-Of92MDGFdi-IXik1ASQd4AdLNNfQ,231
155
157
  radboy/DayLog/__pycache__/__init__.cpython-312.pyc,sha256=lP_GHzSPt5JTrT1jLWiRMFGPmSdJYBn4eRV__OxgJ6s,269
156
158
  radboy/DayLog/__pycache__/__init__.cpython-313.pyc,sha256=UQw5v4r7yismC9qcqP0dEme6h-lawbOA5pXYpkqUwFk,148
@@ -199,12 +201,12 @@ radboy/ExtractPkg/__pycache__/__init__.cpython-311.pyc,sha256=62yPgrgPZffZFLr6Fs
199
201
  radboy/ExtractPkg/__pycache__/__init__.cpython-312.pyc,sha256=Ll1iKcG0MDtoCIloQ_frcihvCSe1HPtyERzcAoXwQT0,273
200
202
  radboy/ExtractPkg/__pycache__/__init__.cpython-313.pyc,sha256=kL3Y3KxCTaGNg3aq5fhf2fsnQHZolGfvniEUfsx2bwY,152
201
203
  radboy/FB/FBMTXT.py,sha256=6PodraQPmIsEcbvYv-AR0AIoK630kjF50raPgqiCuvI,42230
202
- radboy/FB/FormBuilder.py,sha256=BoZQsGmB-SHDZkV8qm2WMkvoEn0PU-8nPwSn0as1qdQ,18730
204
+ radboy/FB/FormBuilder.py,sha256=ByPBfmxRL4Xb9JSCl7-ciwJgYK9LT249alw0M7MZavQ,18800
203
205
  radboy/FB/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
204
206
  radboy/FB/__pycache__/FBMTXT.cpython-312.pyc,sha256=XCVFa7Mo83LGIdRrTvcK73siUpcVIEQfXKCH2QHeViw,9626
205
207
  radboy/FB/__pycache__/FBMTXT.cpython-313.pyc,sha256=lPsj5ps9SqSccQuZKFuaAVkQT-3uma68J3FSPKHA_cc,56574
206
208
  radboy/FB/__pycache__/FormBuilder.cpython-312.pyc,sha256=lNQdB-zApsXM7OQF9MIi0zRZD1SAL6stKEN-AyQiIKg,18873
207
- radboy/FB/__pycache__/FormBuilder.cpython-313.pyc,sha256=bsKUoqWBN0nWRQo0P1iJnS_2NvMZDHNyLw387bGcuSU,25042
209
+ radboy/FB/__pycache__/FormBuilder.cpython-313.pyc,sha256=mGkAw_sTf1VisaBhK8I5gp-L2ndP137VxZe5WVpFK3c,25044
208
210
  radboy/FB/__pycache__/__init__.cpython-312.pyc,sha256=ULEL8Au_CxcYpNAcSoSbI65M7-av1W6Zuy6kQJUu-Mw,265
209
211
  radboy/FB/__pycache__/__init__.cpython-313.pyc,sha256=Mp4kqFJa86-gyUu1vr9rubcUHUDr-O75hevV5IQdSFw,144
210
212
  radboy/GDOWN/GDOWN.py,sha256=Z5q6TR92I4eQpxhsJpOwhH__f1tK2IcGctPRw8OAEr8,798
@@ -308,7 +310,7 @@ radboy/RNE/RNE.py,sha256=CVvdGbmfGHwhafGSxtSBq2hgRCMqVj0tmurS0xwwQao,39014
308
310
  radboy/RNE/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
309
311
  radboy/RNE/dateAhead.py,sha256=g5pp84vteEkYlxRi5rgo6p2Z6PyoBmozljlnWx8twMs,1594
310
312
  radboy/RNE/__pycache__/RNE.cpython-312.pyc,sha256=TCmgh08Ac9MDZgJZwb-_cpCATcLu04wp_HPNtXBrwFw,54377
311
- radboy/RNE/__pycache__/RNE.cpython-313.pyc,sha256=ZB4aNrdh1vsq3XMa0p4FmmcTgUK9bDnrj-bycWArzqM,76326
313
+ radboy/RNE/__pycache__/RNE.cpython-313.pyc,sha256=LImIKDDPVB_WvYYSnGIgVg3r54BwHK4tea4PVnHUAI4,75540
312
314
  radboy/RNE/__pycache__/__init__.cpython-312.pyc,sha256=uV2pHPbmeCebUp_7Fx1oOhe0ccQGsOtaCzVRFmj6IAg,266
313
315
  radboy/RNE/__pycache__/__init__.cpython-313.pyc,sha256=7J11knluwp7WjdVRcd4526_Y1LJo_nH4Kg3rNKIc77U,145
314
316
  radboy/Repack/Repack.py,sha256=JmGpsVWUIW71dwARwcuG_L2PP6puYbwRjVy1NJ9tYH8,42593
@@ -348,7 +350,7 @@ radboy/SystemSettings/__pycache__/__init__.cpython-312.pyc,sha256=aIzp4Po0t8EhSA
348
350
  radboy/SystemSettings/__pycache__/__init__.cpython-313.pyc,sha256=QFDuoidxMWsGVLsy5lN-rDs6TP8nKJ4yyCyiamNOhwo,156
349
351
  radboy/TasksMode/ReFormula.py,sha256=REDRJYub-OEOE6g14oRQOLOQwv8pHqVJy4NQk3CCM90,2255
350
352
  radboy/TasksMode/SetEntryNEU.py,sha256=mkV9zAZe0lfpu_3coMuIILEzh6PgCNi7g9lJ4yDUpYM,20596
351
- radboy/TasksMode/Tasks.py,sha256=90a79iRnHo3P_Fnvn2h18kv8S8bWTUJV1iNozSViQh4,355268
353
+ radboy/TasksMode/Tasks.py,sha256=Y3m1shP3WktAtnsFGQicd6RcC4pzX5EvlOsfI61XRDY,355386
352
354
  radboy/TasksMode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
353
355
  radboy/TasksMode/__pycache__/ReFormula.cpython-311.pyc,sha256=QEG3PwVw-8HTd_Mf9XbVcxU56F1fC9yBqWXYPLC39DU,4865
354
356
  radboy/TasksMode/__pycache__/ReFormula.cpython-312.pyc,sha256=aX7BWm2PPjCTnxsbGUitR-2h9hq4AjaBiHMrUXvIl0Y,3967
@@ -357,7 +359,7 @@ radboy/TasksMode/__pycache__/SetEntryNEU.cpython-312.pyc,sha256=pCdFj61aPKkHL6Sv
357
359
  radboy/TasksMode/__pycache__/SetEntryNEU.cpython-313.pyc,sha256=jMSrUX9pvEhf67uVwrPE2ZlBCems8V7tHJ1LcC15ovU,24603
358
360
  radboy/TasksMode/__pycache__/Tasks.cpython-311.pyc,sha256=6QOTJnLiXSKdF81hkhy3vyrz49PPhS20s5_0X52g3Hw,131120
359
361
  radboy/TasksMode/__pycache__/Tasks.cpython-312.pyc,sha256=hyJwdaYaaRLdcrNxgg36diJ5iijX5_3I0UAORsj-6LU,310295
360
- radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc,sha256=0Oce_YV6-LNWK_6VprrXQDMdCr9NN_ihlT0FXdIwXLM,429819
362
+ radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc,sha256=kj9bwteY6u3ETBsO74c-aPcq1B2n9uqENEv8NwaLTEI,430033
361
363
  radboy/TasksMode/__pycache__/__init__.cpython-311.pyc,sha256=PKV1JbihEacm639b53bZozRQvcllSkjGP3q8STVMxF4,234
362
364
  radboy/TasksMode/__pycache__/__init__.cpython-312.pyc,sha256=ERgnEvRMiGSecWp1BpNzLdSq_SdKw7GvFWUvUM7bLVw,272
363
365
  radboy/TasksMode/__pycache__/__init__.cpython-313.pyc,sha256=lvsTxukyvGKB3C0rdF9dQi_bvVh6ceDVINfwcuIsd0s,151
@@ -404,7 +406,7 @@ radboy/__pycache__/Run.cpython-311.pyc,sha256=G_UEfMtkLRjR6ZpGA_BJzGenuaCcP469Y9
404
406
  radboy/__pycache__/Run.cpython-312.pyc,sha256=v4xolc3mHyla991XhpYBUbBHYT0bnJ1gE-lkFoQ4GFA,241
405
407
  radboy/__pycache__/__init__.cpython-311.pyc,sha256=R-DVbUioMOW-Fnaq7FpT5F1a5p0q3b_RW-HpLRArCAY,242
406
408
  radboy/__pycache__/__init__.cpython-312.pyc,sha256=FsFzLXOlTK8_7ixoPZzakkR8Wibt-DvXLFh-oG2QlPw,164
407
- radboy/__pycache__/__init__.cpython-313.pyc,sha256=RgQJHhJiugGkABPaOZ8T_IN-3sSsfx9cwn5pV5fnQHE,165
409
+ radboy/__pycache__/__init__.cpython-313.pyc,sha256=Ph1LJ2JKrSZBtdIgQqBCEfNWigEnAwyyxfF2okfpXok,165
408
410
  radboy/__pycache__/__init__.cpython-39.pyc,sha256=D48T6x6FUeKPfubo0sdS_ZUut3FmBvPMP7qT6rYBZzU,275
409
411
  radboy/__pycache__/possibleCode.cpython-311.pyc,sha256=zFiHyzqD8gUnIWu4vtyMYIBposiRQqaRXfcT_fOl4rU,20882
410
412
  radboy/__pycache__/possibleCode.cpython-312.pyc,sha256=tk_CO-AcsO3YZj5j6vEsw3g37UmEzWc5YgeWEoJEUg4,27922
@@ -415,7 +417,7 @@ radboy/__pycache__/te.cpython-311.pyc,sha256=vI8eNUE5VVrfCQvnrJ7WuWpoKcLz-vVK3if
415
417
  radboy/__pycache__/x.cpython-311.pyc,sha256=3jIvWoO5y5WqrL_hRmXNK8O0vO7DwJ4gufjm2b0V7VI,1963
416
418
  radboy/preloader/__init__.py,sha256=lrGR0JF0dkDM8N9ORGUKH_MucUFx1-PI38YsvqS-wgA,926
417
419
  radboy/preloader/preloader.py,sha256=vLZfFehbndvkV5O6TPlaZZRqOG-RpMQ5DseCpQpU4C8,14513
418
- radboy/preloader/preloader_func.py,sha256=-VYHHtmqe-oYhWj4AoqXy5IFuzw5yn5zyxty2tTyw6E,12501
420
+ radboy/preloader/preloader_func.py,sha256=gWvdLrcM03hctD3yPH8kK5gGhvWss15OfQd1jZ4gbW8,12503
419
421
  radboy/setCode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
420
422
  radboy/setCode/setCode.py,sha256=8UOf4okbx-Zane99odeoLAS_lfIt8pIaFomN7EtnnVA,5202
421
423
  radboy/setCode/__pycache__/__init__.cpython-311.pyc,sha256=cJuP5rve6Wn7ZO789tixyOlyrHZQWsBxDn9oZGoG5WE,232
@@ -432,7 +434,7 @@ radboy/tkGui/Images/__pycache__/__init__.cpython-311.pyc,sha256=tXBYpqbOlZ24B1BI
432
434
  radboy/tkGui/__pycache__/BeginnersLuck.cpython-311.pyc,sha256=xLQOnV1wuqHGaub16mPX0dDMGU9ryCeLtNz5e517_GE,3004
433
435
  radboy/tkGui/__pycache__/Review.cpython-311.pyc,sha256=wKq24iM6Xe2OampgZ7-8U6Nvmgs2y-qWOrGwtWhc75k,4047
434
436
  radboy/tkGui/__pycache__/__init__.cpython-311.pyc,sha256=BX7DBn5qbvKTvlrKOP5gzTBPBTeTgSMjBW6EMl7N8e0,230
435
- radboy-0.0.707.dist-info/METADATA,sha256=wb1zWS4ZenfLd7aY0s7VPNU5WTtaDOTfJ6d2odl4fGI,1891
436
- radboy-0.0.707.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
437
- radboy-0.0.707.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
438
- radboy-0.0.707.dist-info/RECORD,,
437
+ radboy-0.0.709.dist-info/METADATA,sha256=kF1p-S82mTkq2lwjFkddjcBo1GWzdRX-f3ndSp9TlZk,1891
438
+ radboy-0.0.709.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
439
+ radboy-0.0.709.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
440
+ radboy-0.0.709.dist-info/RECORD,,