pypipr 1.0.113__tar.gz → 1.0.115__tar.gz

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.
Files changed (80) hide show
  1. {pypipr-1.0.113 → pypipr-1.0.115}/PKG-INFO +216 -216
  2. pypipr-1.0.115/pypipr/__terminal__.py +53 -0
  3. pypipr-1.0.115/pypipr/choices.py +65 -0
  4. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/ivars.py +10 -7
  5. {pypipr-1.0.113 → pypipr-1.0.115}/pyproject.toml +1 -1
  6. {pypipr-1.0.113 → pypipr-1.0.115}/readme.md +215 -215
  7. pypipr-1.0.113/pypipr/__terminal__.py +0 -70
  8. pypipr-1.0.113/pypipr/choices.py +0 -61
  9. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/APIMixinView.py +0 -0
  10. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/ComparePerformance.py +0 -0
  11. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/LINUX.py +0 -0
  12. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/PintUreg.py +0 -0
  13. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/PintUregQuantity.py +0 -0
  14. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/RunParallel.py +0 -0
  15. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/WINDOWS.py +0 -0
  16. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/__init__.py +0 -0
  17. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/auto_reload.py +0 -0
  18. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/avg.py +0 -0
  19. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/basename.py +0 -0
  20. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/batch_calculate.py +0 -0
  21. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/batchmaker.py +0 -0
  22. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/calculate.py +0 -0
  23. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/choices.py.bak +0 -0
  24. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/chr_to_int.py +0 -0
  25. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/chunk_array.py +0 -0
  26. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/console_run.py +0 -0
  27. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/create_folder.py +0 -0
  28. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/datetime_from_string.py +0 -0
  29. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/datetime_now.py +0 -0
  30. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/dict_first.py +0 -0
  31. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/dirname.py +0 -0
  32. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/exit_if_empty.py +0 -0
  33. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/filter_empty.py +0 -0
  34. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/get_by_index.py +0 -0
  35. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/get_class_method.py +0 -0
  36. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/get_filemtime.py +0 -0
  37. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/get_filesize.py +0 -0
  38. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/github_pull.py +0 -0
  39. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/github_push.py +0 -0
  40. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/github_user.py +0 -0
  41. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/iargv.py +0 -0
  42. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/idumps.py +0 -0
  43. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/idumps_html.py +0 -0
  44. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/ienumerate.py +0 -0
  45. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/ienv.py +0 -0
  46. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/iexec.py +0 -0
  47. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/ijoin.py +0 -0
  48. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/iloads.py +0 -0
  49. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/iloads_html.py +0 -0
  50. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/input_char.py +0 -0
  51. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/int_to_bin.py +0 -0
  52. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/int_to_chr.py +0 -0
  53. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/int_to_hex.py +0 -0
  54. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/int_to_int.py +0 -0
  55. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/int_to_oct.py +0 -0
  56. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/iopen.py +0 -0
  57. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/iprint.py +0 -0
  58. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/irange.py +0 -0
  59. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/ireplace.py +0 -0
  60. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/is_empty.py +0 -0
  61. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/is_iterable.py +0 -0
  62. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/is_valid_url.py +0 -0
  63. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/iscandir.py +0 -0
  64. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/isplit.py +0 -0
  65. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/log.py +0 -0
  66. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/password_generator.py +0 -0
  67. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/pip_freeze_without_version.py +0 -0
  68. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/poetry_publish.py +0 -0
  69. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/poetry_update_version.py +0 -0
  70. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/print_colorize.py +0 -0
  71. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/print_dir.py +0 -0
  72. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/print_log.py +0 -0
  73. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/print_to_last_line.py +0 -0
  74. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/random_bool.py +0 -0
  75. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/restart.py +0 -0
  76. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/set_timeout.py +0 -0
  77. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/sets_ordered.py +0 -0
  78. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/str_cmp.py +0 -0
  79. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/text_colorize.py +0 -0
  80. {pypipr-1.0.113 → pypipr-1.0.115}/pypipr/to_str.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pypipr
3
- Version: 1.0.113
3
+ Version: 1.0.115
4
4
  Summary: The Python Package Index Project
5
5
  Author: ufiapjj
6
6
  Author-email: ufiapjj@gmail.com
@@ -245,8 +245,8 @@ print(list(irange(10, 5)))
245
245
 
246
246
  Output:
247
247
  ```py
248
- <generator object chr_range at 0x72741289d0>
249
- <generator object chr_range at 0x72741289d0>
248
+ <generator object chr_range at 0x778b6fce10>
249
+ <generator object chr_range at 0x778b6fce10>
250
250
  ['a', 'k', 'u']
251
251
  [1, 2, 3, 4, 5, 6]
252
252
  [10, 9, 8, 7, 6]
@@ -273,7 +273,7 @@ print(list(batchmaker(s)))
273
273
 
274
274
  Output:
275
275
  ```py
276
- <generator object batchmaker at 0x7274158280>
276
+ <generator object batchmaker at 0x778b7283a0>
277
277
  ['Urutan 1 dan 10 dan j dan Z saja.', 'Urutan 1 dan 10 dan j dan K saja.', 'Urutan 4 dan 10 dan j dan Z saja.', 'Urutan 4 dan 10 dan j dan K saja.']
278
278
  ```
279
279
 
@@ -327,56 +327,83 @@ print(list(batch_calculate("{1 10} m ** {1 3}")))
327
327
 
328
328
  Output:
329
329
  ```py
330
- <generator object batch_calculate at 0x72740d3100>
330
+ <generator object batch_calculate at 0x778b6af010>
331
331
  [('1 m ** 1', <Quantity(1, 'meter')>), ('1 m ** 2', <Quantity(1, 'meter ** 2')>), ('2 m ** 1', <Quantity(2, 'meter')>), ('2 m ** 2', <Quantity(2, 'meter ** 2')>), ('3 m ** 1', <Quantity(3, 'meter')>), ('3 m ** 2', <Quantity(3, 'meter ** 2')>), ('4 m ** 1', <Quantity(4, 'meter')>), ('4 m ** 2', <Quantity(4, 'meter ** 2')>), ('5 m ** 1', <Quantity(5, 'meter')>), ('5 m ** 2', <Quantity(5, 'meter ** 2')>), ('6 m ** 1', <Quantity(6, 'meter')>), ('6 m ** 2', <Quantity(6, 'meter ** 2')>), ('7 m ** 1', <Quantity(7, 'meter')>), ('7 m ** 2', <Quantity(7, 'meter ** 2')>), ('8 m ** 1', <Quantity(8, 'meter')>), ('8 m ** 2', <Quantity(8, 'meter ** 2')>), ('9 m ** 1', <Quantity(9, 'meter')>), ('9 m ** 2', <Quantity(9, 'meter ** 2')>)]
332
332
  ```
333
333
 
334
- ## int_to_int
334
+ ## is_empty
335
335
 
336
- `int_to_int(n)`
336
+ `is_empty(variable, empty=[None, False, 0, 0, '0', '', '-0', '\n', '\t', set(), {}, [], ()])`
337
337
 
338
- Fungsi ini sama seperti fungsi int().
339
- fungsi ini dibuat hanya untuk keperluan pembuatan module semata.
338
+ Mengecek apakah variable setara dengan nilai kosong pada empty.
339
+
340
+ Pengecekan nilai yang setara menggunakan simbol '==', sedangkan untuk
341
+ pengecekan lokasi memory yang sama menggunakan keyword 'is'
340
342
 
341
343
  ```python
342
- print(int_to_int(7777))
344
+ print(is_empty("teks"))
345
+ print(is_empty(True))
346
+ print(is_empty(False))
347
+ print(is_empty(None))
348
+ print(is_empty(0))
349
+ print(is_empty([]))
343
350
  ```
344
351
 
345
352
  Output:
346
353
  ```py
347
- 7777
354
+ False
355
+ False
356
+ True
357
+ True
358
+ True
359
+ True
348
360
  ```
349
361
 
350
- ## ienumerate
362
+ ## exit_if_empty
351
363
 
352
- `ienumerate(iterator, start=0, key=<function int_to_int at 0x727e2604a0>)`
364
+ `exit_if_empty(*args)`
353
365
 
354
- ## print_to_last_line
366
+ Keluar dari program apabila seluruh variabel
367
+ setara dengan empty
368
+
369
+ ```py
370
+ var1 = None
371
+ var2 = '0'
372
+ exit_if_empty(var1, var2)
373
+ ```
355
374
 
356
- `print_to_last_line(text: str, latest=1, clear=True)`
375
+ ## input_char
357
376
 
358
- Melakukan print ke konsol tetapi akan menimpa baris terakhir.
359
- Berguna untuk memberikan progress secara interaktif.
377
+ `input_char(prompt=None, prompt_ending='', newline_after_input=True, echo_char=True, default=None)`
378
+
379
+ Meminta masukan satu huruf tanpa menekan Enter.
360
380
 
361
381
  ```py
362
- c = input("masukkan apa saja : ")
363
- print_to_last_line(f"masukkan apa saja : {c} [ok]")
382
+ input_char("Input char : ")
383
+ input_char("Input char : ", default='Y')
384
+ input_char("Input Char without print : ", echo_char=False)
364
385
  ```
365
386
 
366
- ## text_colorize
387
+ ## get_by_index
367
388
 
368
- `text_colorize(text, color='\x1b[32m', bright='\x1b[1m', color_end='\x1b[0m')`
389
+ `get_by_index(obj, index, on_error=None)`
369
390
 
370
- return text dengan warna untuk menunjukan text penting
391
+ Mendapatkan value dari object berdasarkan indexnya.
392
+ Jika error out of range maka akan mengembalikan on_error.
371
393
 
372
- ```py
373
- text_colorize("Print some text")
374
- text_colorize("Print some text", color=colorama.Fore.RED)
394
+ ```python
395
+ l = [1, 3, 5]
396
+ print(get_by_index(l, 7))
397
+ ```
398
+
399
+ Output:
400
+ ```py
401
+ None
375
402
  ```
376
403
 
377
404
  ## choices
378
405
 
379
- `choices(iterator, title=None, prompt='', default=None, key=<function int_to_int at 0x727e2604a0>)`
406
+ `choices(daftar, contains=None, prompt='Choose : ')`
380
407
 
381
408
  Memudahkan dalam membuat pilihan untuk user dalam tampilan console
382
409
 
@@ -412,7 +439,7 @@ print(list(chunk_array(arr, 5)))
412
439
 
413
440
  Output:
414
441
  ```py
415
- <generator object chunk_array at 0x727415c640>
442
+ <generator object chunk_array at 0x778b738440>
416
443
  [[2, 3, 12, 3, 3], [42, 42, 1, 43, 2], [42, 41, 4, 24, 32], [42, 3, 12, 32, 42], [42]]
417
444
  ```
418
445
 
@@ -463,9 +490,9 @@ print(datetime_now("Etc/GMT+7"))
463
490
 
464
491
  Output:
465
492
  ```py
466
- 2024-04-30 19:20:17.402143+07:00
467
- 2024-04-30 12:20:17.402865+00:00
468
- 2024-04-30 05:20:17.404179-07:00
493
+ 2024-04-30 21:41:28.090395+07:00
494
+ 2024-04-30 14:41:28.092197+00:00
495
+ 2024-04-30 07:41:28.095386-07:00
469
496
  ```
470
497
 
471
498
  ## dict_first
@@ -506,47 +533,6 @@ Output:
506
533
  /ini/nama/folder/ke
507
534
  ```
508
535
 
509
- ## is_empty
510
-
511
- `is_empty(variable, empty=[None, False, 0, 0, '0', '', '-0', '\n', '\t', set(), {}, [], ()])`
512
-
513
- Mengecek apakah variable setara dengan nilai kosong pada empty.
514
-
515
- Pengecekan nilai yang setara menggunakan simbol '==', sedangkan untuk
516
- pengecekan lokasi memory yang sama menggunakan keyword 'is'
517
-
518
- ```python
519
- print(is_empty("teks"))
520
- print(is_empty(True))
521
- print(is_empty(False))
522
- print(is_empty(None))
523
- print(is_empty(0))
524
- print(is_empty([]))
525
- ```
526
-
527
- Output:
528
- ```py
529
- False
530
- False
531
- True
532
- True
533
- True
534
- True
535
- ```
536
-
537
- ## exit_if_empty
538
-
539
- `exit_if_empty(*args)`
540
-
541
- Keluar dari program apabila seluruh variabel
542
- setara dengan empty
543
-
544
- ```py
545
- var1 = None
546
- var2 = '0'
547
- exit_if_empty(var1, var2)
548
- ```
549
-
550
536
  ## is_iterable
551
537
 
552
538
  `is_iterable(var, str_is_iterable=False)`
@@ -611,24 +597,7 @@ print(filter_empty(var))
611
597
 
612
598
  Output:
613
599
  ```py
614
- <generator object filter_empty at 0x72740d16c0>
615
- ```
616
-
617
- ## get_by_index
618
-
619
- `get_by_index(obj, index, on_error=None)`
620
-
621
- Mendapatkan value dari object berdasarkan indexnya.
622
- Jika error out of range maka akan mengembalikan on_error.
623
-
624
- ```python
625
- l = [1, 3, 5]
626
- print(get_by_index(l, 7))
627
- ```
628
-
629
- Output:
630
- ```py
631
- None
600
+ <generator object filter_empty at 0x778b6af010>
632
601
  ```
633
602
 
634
603
  ## get_class_method
@@ -657,8 +626,8 @@ print(list(get_class_method(ExampleGetClassMethod)))
657
626
 
658
627
  Output:
659
628
  ```py
660
- <generator object get_class_method at 0x72740d33d0>
661
- [<function ExampleGetClassMethod.a at 0x7274175080>, <function ExampleGetClassMethod.b at 0x7274175120>, <function ExampleGetClassMethod.c at 0x72741751c0>, <function ExampleGetClassMethod.d at 0x7274175260>]
629
+ <generator object get_class_method at 0x778b6af2e0>
630
+ [<function ExampleGetClassMethod.a at 0x778b74d3a0>, <function ExampleGetClassMethod.b at 0x778b74d1c0>, <function ExampleGetClassMethod.c at 0x778b74d4e0>, <function ExampleGetClassMethod.d at 0x778b74d580>]
662
631
  ```
663
632
 
664
633
  ## get_filesize
@@ -893,6 +862,26 @@ t:
893
862
 
894
863
  ```
895
864
 
865
+ ## int_to_int
866
+
867
+ `int_to_int(n)`
868
+
869
+ Fungsi ini sama seperti fungsi int().
870
+ fungsi ini dibuat hanya untuk keperluan pembuatan module semata.
871
+
872
+ ```python
873
+ print(int_to_int(7777))
874
+ ```
875
+
876
+ Output:
877
+ ```py
878
+ 7777
879
+ ```
880
+
881
+ ## ienumerate
882
+
883
+ `ienumerate(iterator, start=0, key=<function int_to_int at 0x778ddd1e40>)`
884
+
896
885
  ## ienv
897
886
 
898
887
  `ienv(on_windows=None, on_linux=None)`
@@ -956,7 +945,7 @@ print(ijoin(10, ' '))
956
945
 
957
946
  Output:
958
947
  ```py
959
- weq, asd, qweqw, dfs
948
+ weq, asd, dfs, qweqw
960
949
  ,ini,path,seperti,url,
961
950
  ini,path,seperti,url
962
951
  <li>satu</li>
@@ -1000,9 +989,9 @@ Output:
1000
989
  ```py
1001
990
  (['Home', 'Emas 1 Gram', 'History', 'Trend', 'Perak 1 Gram', 'Pluang'],
1002
991
  [['Harga Emas Hari Ini - Selasa, 30 April 2024'],
1003
- ['Spot Emas USD↓2.312,87 (-31,67) / oz',
992
+ ['Spot Emas USD↓2.298,30 (-46,24) / oz',
1004
993
  'Kurs IDR↑16.249,00 (+27,00) / USD',
1005
- 'Emas IDR↓1.208.284 (-14.510) / gr'],
994
+ 'Emas IDR↓1.200.672 (-22.121) / gr'],
1006
995
  ['LM Antam (Jual)1.325.000 / gr', 'LM Antam (Beli)1.221.000 / gr']],
1007
996
  [['Harga Emas Hari Ini'],
1008
997
  ['Gram', 'Gedung Antam Jakarta', 'Pegadaian'],
@@ -1040,10 +1029,10 @@ Output:
1040
1029
  'Update harga LM Pegadaian :31 Agustus 2023']],
1041
1030
  [['Spot Harga Emas Hari Ini (Market Open)'],
1042
1031
  ['Satuan', 'USD', 'Kurs\xa0Dollar', 'IDR'],
1043
- ['Ounce\xa0(oz)', '2.312,87 (-31,67)', '16.249,00 (+27,00)', '37.581.825'],
1044
- ['Gram\xa0(gr)', '74,36', '16.249,00', '1.208.284 (-14.510)'],
1045
- ['Kilogram\xa0(kg)', '74.360,50', '16.249,00', '1.208.283.720'],
1046
- ['Update harga emas :30 April 2024, pukul 19:19Update kurs :30 April 2024, '
1032
+ ['Ounce\xa0(oz)', '2.298,30 (-46,24)', '16.249,00 (+27,00)', '37.345.077'],
1033
+ ['Gram\xa0(gr)', '73,89', '16.249,00', '1.200.672 (-22.121)'],
1034
+ ['Kilogram\xa0(kg)', '73.892,06', '16.249,00', '1.200.672.098'],
1035
+ ['Update harga emas :30 April 2024, pukul 21:41Update kurs :30 April 2024, '
1047
1036
  'pukul 13:10']],
1048
1037
  [['Gram', 'UBS Gold 99.99%'],
1049
1038
  ['Jual', 'Beli'],
@@ -1065,36 +1054,36 @@ Output:
1065
1054
  ['Unit', 'USD', 'IDR'],
1066
1055
  ['Angka', '+/-', 'Angka', '+/-'],
1067
1056
  ['Hari Ini', 'Kurs', '', '', '16.222', '+27+0,17%'],
1068
- ['oz', '2.344,54', '-31,67-1,35%', '38.033.128', '-451.303-1,19%'],
1069
- ['gr', '75,38', '-1,02-1,35%', '1.222.793', '-14.510-1,19%'],
1057
+ ['oz', '2.344,54', '-46,24-1,97%', '38.033.128', '-688.051-1,81%'],
1058
+ ['gr', '75,38', '-1,49-1,97%', '1.222.793', '-22.121-1,81%'],
1070
1059
  ['30 Hari', 'Kurs', '', '', '15.853', '+396+2,50%'],
1071
- ['oz', '2.232,75', '+80,12+3,59%', '35.395.786', '+2.186.039+6,18%'],
1072
- ['gr', '71,78', '+2,58+3,59%', '1.138.001', '+70.283+6,18%'],
1060
+ ['oz', '2.232,75', '+65,55+2,94%', '35.395.786', '+1.949.291+5,51%'],
1061
+ ['gr', '71,78', '+2,11+2,94%', '1.138.001', '+62.671+5,51%'],
1073
1062
  ['2 Bulan', 'Kurs', '', '', '15.715', '+534+3,40%'],
1074
- ['oz', '2.081,20', '+231,67+11,13%', '32.706.058', '+4.875.767+14,91%'],
1075
- ['gr', '66,91', '+7,45+11,13', '1.051.524', '+156.760+14,91%'],
1063
+ ['oz', '2.081,20', '+217,10+10,43%', '32.706.058', '+4.639.019+14,18%'],
1064
+ ['gr', '66,91', '+6,98+10,43', '1.051.524', '+149.148+14,18%'],
1076
1065
  ['6 Bulan', 'Kurs', '', '', '15.946', '+303+1,90%'],
1077
- ['oz', '1.981,84', '+331,03+16,70%', '31.602.421', '+5.979.404+18,92%'],
1078
- ['gr', '63,72', '+10,64+16,70%', '1.016.041', '+192.242+18,92%'],
1066
+ ['oz', '1.981,84', '+316,46+15,97%', '31.602.421', '+5.742.656+18,17%'],
1067
+ ['gr', '63,72', '+10,17+15,97%', '1.016.041', '+184.631+18,17%'],
1079
1068
  ['1 Tahun', 'Kurs', '', '', '15.731', '+518+3,29%'],
1080
- ['oz', '1.823,86', '+489,01+26,81%', '28.691.142', '+8.890.683+30,99%'],
1081
- ['gr', '58,64', '+15,72+26,81%', '922.442', '+285.842+30,99%'],
1069
+ ['oz', '1.823,86', '+474,44+26,01%', '28.691.142', '+8.653.935+30,16%'],
1070
+ ['gr', '58,64', '+15,25+26,01%', '922.442', '+278.230+30,16%'],
1082
1071
  ['2 Tahun', 'Kurs', '', '', '14.418', '+1.831+12,70%'],
1083
- ['oz', '1.896,95', '+415,92+21,93%', '27.350.225', '+10.231.600+37,41%'],
1084
- ['gr', '60,99', '+13,37+21,93%', '879.330', '+328.954+37,41%'],
1072
+ ['oz', '1.896,95', '+401,35+21,16%', '27.350.225', '+9.994.852+36,54%'],
1073
+ ['gr', '60,99', '+12,90+21,16%', '879.330', '+321.342+36,54%'],
1085
1074
  ['3 Tahun', 'Kurs', '', '', '14.468', '+1.781+12,31%'],
1086
- ['oz', '1.768,91', '+543,96+30,75%', '25.592.590', '+11.989.235+46,85%'],
1087
- ['gr', '56,87', '+17,49+30,75%', '822.821', '+385.463+46,85%'],
1075
+ ['oz', '1.768,91', '+529,39+29,93%', '25.592.590', '+11.752.487+45,92%'],
1076
+ ['gr', '56,87', '+17,02+29,93%', '822.821', '+377.851+45,92%'],
1088
1077
  ['5 Tahun', 'Kurs', '', '', '14.245', '+2.004+14,07%'],
1089
- ['oz', '1.270,94', '+1.041,93+81,98%', '18.104.540', '+19.477.284+107,58%'],
1090
- ['gr', '40,86', '+33,50+81,98%', '582.074', '+626.209+107,58%']])
1078
+ ['oz', '1.270,94', '+1.027,36+80,83%', '18.104.540', '+19.240.536+106,27%'],
1079
+ ['gr', '40,86', '+33,03+80,83%', '582.074', '+618.598+106,27%']])
1091
1080
  (['Home', 'Emas 1 Gram', 'History', 'Trend', 'Perak 1 Gram', 'Pluang'],
1092
1081
  [[''],
1093
1082
  ['Emas 24 KaratHarga Emas 1 Gram', ''],
1094
- ['USD', '74,36↓', '-1,02-1,35%'],
1095
- ['KURS', '16.239,65↑', '+26,15+0,16%'],
1096
- ['IDR', '1.207.588,45↓', '-14.564,29-1,19%'],
1097
- ['Selasa, 30 April 2024 19:20']],
1083
+ ['USD', '73,89↓', '-1,49-1,98%'],
1084
+ ['KURS', '16.252,20↑', '+38,70+0,24%'],
1085
+ ['IDR', '1.200.908,55↓', '-21.244,19-1,74%'],
1086
+ ['Selasa, 30 April 2024 21:41']],
1098
1087
  [[''],
1099
1088
  ['Emas 1 Gram (IDR)Emas 1 Gram (USD)Kurs USD-IDR',
1100
1089
  'Hari Ini',
@@ -1105,19 +1094,19 @@ Output:
1105
1094
  '']],
1106
1095
  [['Pergerakkan Harga Emas 1 Gram'],
1107
1096
  ['', 'Penutupan Kemarin', 'Pergerakkan Hari Ini', 'Rata-rata'],
1108
- ['USD', '75,38', '74,36 - 75,38', '74,87'],
1109
- ['KURS', '16.213,50', '16.213,50 - 16.239,65', '16.226,58'],
1110
- ['IDR', '1.222.152,74', '1.207.588,45 - 1.222.152,74', '1.214.870,60'],
1097
+ ['USD', '75,38', '73,89 - 75,38', '74,64'],
1098
+ ['KURS', '16.213,50', '16.213,50 - 16.252,20', '16.232,85'],
1099
+ ['IDR', '1.222.152,74', '1.200.908,55 - 1.222.152,74', '1.211.530,65'],
1111
1100
  [''],
1112
1101
  ['', 'Awal Tahun', 'Pergerakkan YTD', '+/- YTD'],
1113
- ['USD', '66,32', '64,07 - 77,14', '+8,04 (12,12%)'],
1114
- ['KURS', '15.390,10', '15.390,00 - 16.307,80', '+849,55 (5,52%)'],
1115
- ['IDR', '1.020.729,53', '997.660,12 - 1.256.829,06', '+186.858,92 (18,31%)'],
1102
+ ['USD', '66,32', '64,07 - 77,14', '+7,57 (11,41%)'],
1103
+ ['KURS', '15.390,10', '15.390,00 - 16.307,80', '+862,10 (5,60%)'],
1104
+ ['IDR', '1.020.729,53', '997.660,12 - 1.256.829,06', '+180.179,02 (17,65%)'],
1116
1105
  [''],
1117
1106
  ['', 'Tahun Lalu / 52 Minggu', 'Pergerakkan 52 Minggu', '+/- 52 Minggu'],
1118
- ['USD', '63,97', '58,43 - 77,14', '+10,39 (16,24%)'],
1119
- ['KURS', '14.673,55', '14.669,40 - 16.307,80', '+1.566,10 (10,67%)'],
1120
- ['IDR', '938.709,73', '912.925,68 - 1.256.829,06', '+268.878,72 (28,64%)']])
1107
+ ['USD', '63,97', '58,43 - 77,14', '+9,92 (15,51%)'],
1108
+ ['KURS', '14.673,55', '14.669,40 - 16.307,80', '+1.578,65 (10,76%)'],
1109
+ ['IDR', '938.709,73', '912.925,68 - 1.256.829,06', '+262.198,82 (27,93%)']])
1121
1110
  ```
1122
1111
 
1123
1112
  ## iloads
@@ -1142,18 +1131,6 @@ Output:
1142
1131
  {'a': 123, 'l': (12, 23, [12, 42]), 't': ['disini', 'senang', 'disana', 'senang']}
1143
1132
  ```
1144
1133
 
1145
- ## input_char
1146
-
1147
- `input_char(prompt=None, prompt_ending='', newline_after_input=True, echo_char=True, default=None)`
1148
-
1149
- Meminta masukan satu huruf tanpa menekan Enter.
1150
-
1151
- ```py
1152
- input_char("Input char : ")
1153
- input_char("Input char : ", default='Y')
1154
- input_char("Input Char without print : ", echo_char=False)
1155
- ```
1156
-
1157
1134
  ## int_to_bin
1158
1135
 
1159
1136
  `int_to_bin(n)`
@@ -1259,7 +1236,7 @@ Output:
1259
1236
  ```py
1260
1237
  8
1261
1238
  ['mana', 'aja']
1262
- [<Element a at 0x727416ea80>, <Element a at 0x72741a9130>, <Element a at 0x72741a91d0>, <Element a at 0x72741a9220>, <Element a at 0x72741a9270>, <Element a at 0x72741a92c0>, <Element a at 0x72741a9310>, <Element a at 0x72741a9360>, <Element a at 0x72741a93b0>, <Element a at 0x72741a9400>, <Element a at 0x72741a9450>, <Element a at 0x72741a94a0>, <Element a at 0x72741a94f0>, <Element a at 0x72741a9540>, <Element a at 0x72741a9590>, <Element a at 0x72741a95e0>, <Element a at 0x72741a9630>, <Element a at 0x72741a9680>]
1239
+ [<Element a at 0x778b745db0>, <Element a at 0x778b780ff0>, <Element a at 0x778b781090>, <Element a at 0x778b7810e0>, <Element a at 0x778b781130>, <Element a at 0x778b781180>, <Element a at 0x778b7811d0>, <Element a at 0x778b781220>, <Element a at 0x778b781270>, <Element a at 0x778b7812c0>, <Element a at 0x778b781310>, <Element a at 0x778b781360>, <Element a at 0x778b7813b0>, <Element a at 0x778b781400>, <Element a at 0x778b781450>, <Element a at 0x778b7814a0>, <Element a at 0x778b7814f0>, <Element a at 0x778b781540>]
1263
1240
  False
1264
1241
  ```
1265
1242
 
@@ -1321,7 +1298,7 @@ print(list(iscandir("./", recursive=False, scan_file=False)))
1321
1298
 
1322
1299
  Output:
1323
1300
  ```py
1324
- <generator object iscandir at 0x727415c840>
1301
+ <generator object iscandir at 0x778b738740>
1325
1302
  [PosixPath('.git'), PosixPath('.vscode'), PosixPath('pypipr'), PosixPath('__pycache__'), PosixPath('dist')]
1326
1303
  ```
1327
1304
 
@@ -1358,73 +1335,73 @@ Output:
1358
1335
  'ComparePerformance': <class 'pypipr.ComparePerformance.ComparePerformance'>,
1359
1336
  'PintUregQuantity': <class 'pint.Quantity'>,
1360
1337
  'RunParallel': <class 'pypipr.RunParallel.RunParallel'>},
1361
- 'function': {'avg': <function avg at 0x7285dda700>,
1362
- 'get_filemtime': <function get_filemtime at 0x727e26b2e0>,
1363
- 'print_colorize': <function print_colorize at 0x727e26b4c0>,
1364
- 'print_log': <function print_log at 0x727e4f6b60>,
1365
- 'console_run': <function console_run at 0x727e26b380>,
1366
- 'auto_reload': <function auto_reload at 0x727e423ec0>,
1367
- 'basename': <function basename at 0x727e26b240>,
1368
- 'chr_to_int': <function chr_to_int at 0x727e26ba60>,
1369
- 'int_to_chr': <function int_to_chr at 0x727e26bb00>,
1370
- 'irange': <function irange at 0x727e26bd80>,
1371
- 'batchmaker': <function batchmaker at 0x727e26b740>,
1372
- 'calculate': <function calculate at 0x727e2602c0>,
1373
- 'batch_calculate': <function batch_calculate at 0x727e26b600>,
1374
- 'int_to_int': <function int_to_int at 0x727e2604a0>,
1375
- 'ienumerate': <function ienumerate at 0x727e260360>,
1376
- 'print_to_last_line': <function print_to_last_line at 0x727e260400>,
1377
- 'text_colorize': <function text_colorize at 0x727e260540>,
1378
- 'choices': <function choices at 0x727e26b6a0>,
1379
- 'chunk_array': <function chunk_array at 0x727e26b7e0>,
1380
- 'create_folder': <function create_folder at 0x727e2605e0>,
1381
- 'datetime_from_string': <function datetime_from_string at 0x727e260680>,
1382
- 'datetime_now': <function datetime_now at 0x727e260720>,
1383
- 'dict_first': <function dict_first at 0x727e2607c0>,
1384
- 'dirname': <function dirname at 0x727e260860>,
1385
- 'is_empty': <function is_empty at 0x727e260a40>,
1386
- 'exit_if_empty': <function exit_if_empty at 0x727e260900>,
1387
- 'is_iterable': <function is_iterable at 0x727e260b80>,
1388
- 'to_str': <function to_str at 0x727e260c20>,
1389
- 'filter_empty': <function filter_empty at 0x727e2609a0>,
1390
- 'get_by_index': <function get_by_index at 0x727e260ae0>,
1391
- 'get_class_method': <function get_class_method at 0x727e260cc0>,
1392
- 'get_filesize': <function get_filesize at 0x727e260e00>,
1393
- 'github_pull': <function github_pull at 0x727e260ea0>,
1394
- 'github_push': <function github_push at 0x727e261080>,
1395
- 'github_user': <function github_user at 0x727e261120>,
1396
- 'iargv': <function iargv at 0x727e260fe0>,
1397
- 'idumps_html': <function idumps_html at 0x727e2613a0>,
1398
- 'idumps': <function idumps at 0x727e261260>,
1399
- 'ienv': <function ienv at 0x727e2618a0>,
1400
- 'iexec': <function iexec at 0x727e339bc0>,
1401
- 'ijoin': <function ijoin at 0x727e339da0>,
1402
- 'iloads_html': <function iloads_html at 0x727e339f80>,
1403
- 'iloads': <function iloads at 0x727e339d00>,
1404
- 'input_char': <function input_char at 0x727e339ee0>,
1405
- 'int_to_bin': <function int_to_bin at 0x727e33a020>,
1406
- 'int_to_hex': <function int_to_hex at 0x727e33a0c0>,
1407
- 'int_to_oct': <function int_to_oct at 0x727e33a160>,
1408
- 'is_valid_url': <function is_valid_url at 0x727e33a340>,
1409
- 'iopen': <function iopen at 0x727e1767a0>,
1410
- 'iprint': <function iprint at 0x727e33a2a0>,
1411
- 'ireplace': <function ireplace at 0x727e33a660>,
1412
- 'iscandir': <function iscandir at 0x727e231ee0>,
1413
- 'isplit': <function isplit at 0x727e231f80>,
1414
- 'ivars': <function ivars at 0x727e232020>,
1415
- 'log': <function log at 0x727e2320c0>,
1416
- 'password_generator': <function password_generator at 0x727e232160>,
1417
- 'pip_freeze_without_version': <function pip_freeze_without_version at 0x727e2322a0>,
1418
- 'poetry_publish': <function poetry_publish at 0x727e232340>,
1419
- 'poetry_update_version': <function poetry_update_version at 0x727e232480>,
1420
- 'print_dir': <function print_dir at 0x727e232660>,
1421
- 'random_bool': <function random_bool at 0x727e232700>,
1422
- 'restart': <function restart at 0x727e2327a0>,
1423
- 'set_timeout': <function set_timeout at 0x727e232840>,
1424
- 'sets_ordered': <function sets_ordered at 0x727e2328e0>,
1425
- 'str_cmp': <function str_cmp at 0x727e232980>},
1338
+ 'function': {'avg': <function avg at 0x779161e700>,
1339
+ 'get_filemtime': <function get_filemtime at 0x778ded32e0>,
1340
+ 'print_colorize': <function print_colorize at 0x778ded34c0>,
1341
+ 'print_log': <function print_log at 0x778df8ab60>,
1342
+ 'console_run': <function console_run at 0x778ded3380>,
1343
+ 'auto_reload': <function auto_reload at 0x778debbec0>,
1344
+ 'basename': <function basename at 0x778ded3240>,
1345
+ 'chr_to_int': <function chr_to_int at 0x778ded3a60>,
1346
+ 'int_to_chr': <function int_to_chr at 0x778ded3b00>,
1347
+ 'irange': <function irange at 0x778ded3d80>,
1348
+ 'batchmaker': <function batchmaker at 0x778ded3740>,
1349
+ 'calculate': <function calculate at 0x778dcfc2c0>,
1350
+ 'batch_calculate': <function batch_calculate at 0x778ded3600>,
1351
+ 'is_empty': <function is_empty at 0x778dcfc540>,
1352
+ 'exit_if_empty': <function exit_if_empty at 0x778dcfc400>,
1353
+ 'input_char': <function input_char at 0x778dcfc4a0>,
1354
+ 'get_by_index': <function get_by_index at 0x778dcfc5e0>,
1355
+ 'choices': <function choices at 0x778dcfc7c0>,
1356
+ 'chunk_array': <function chunk_array at 0x778dcfc860>,
1357
+ 'create_folder': <function create_folder at 0x778dcfc900>,
1358
+ 'datetime_from_string': <function datetime_from_string at 0x778dcfc9a0>,
1359
+ 'datetime_now': <function datetime_now at 0x778dcfca40>,
1360
+ 'dict_first': <function dict_first at 0x778dcfcae0>,
1361
+ 'dirname': <function dirname at 0x778dcfcb80>,
1362
+ 'is_iterable': <function is_iterable at 0x778dcfcd60>,
1363
+ 'to_str': <function to_str at 0x778dcfce00>,
1364
+ 'filter_empty': <function filter_empty at 0x778dcfcc20>,
1365
+ 'get_class_method': <function get_class_method at 0x778dcfccc0>,
1366
+ 'get_filesize': <function get_filesize at 0x778dcfcf40>,
1367
+ 'github_pull': <function github_pull at 0x778dcfcfe0>,
1368
+ 'github_push': <function github_push at 0x778dcfd1c0>,
1369
+ 'github_user': <function github_user at 0x778dcfd260>,
1370
+ 'iargv': <function iargv at 0x778dcfd080>,
1371
+ 'idumps_html': <function idumps_html at 0x778dcfd4e0>,
1372
+ 'idumps': <function idumps at 0x778dcfd3a0>,
1373
+ 'int_to_int': <function int_to_int at 0x778ddd1e40>,
1374
+ 'ienumerate': <function ienumerate at 0x778dcfd9e0>,
1375
+ 'ienv': <function ienv at 0x778ddd1d00>,
1376
+ 'iexec': <function iexec at 0x778ddd1ee0>,
1377
+ 'ijoin': <function ijoin at 0x778ddd2020>,
1378
+ 'iloads_html': <function iloads_html at 0x778ddd2200>,
1379
+ 'iloads': <function iloads at 0x778ddd1f80>,
1380
+ 'int_to_bin': <function int_to_bin at 0x778ddd2160>,
1381
+ 'int_to_hex': <function int_to_hex at 0x778ddd22a0>,
1382
+ 'int_to_oct': <function int_to_oct at 0x778ddd2340>,
1383
+ 'is_valid_url': <function is_valid_url at 0x778ddd2520>,
1384
+ 'iopen': <function iopen at 0x778dbd2980>,
1385
+ 'iprint': <function iprint at 0x778ddd2480>,
1386
+ 'ireplace': <function ireplace at 0x778ddd2840>,
1387
+ 'iscandir': <function iscandir at 0x778dc860c0>,
1388
+ 'isplit': <function isplit at 0x778dc86160>,
1389
+ 'ivars': <function ivars at 0x778dc86200>,
1390
+ 'log': <function log at 0x778dc862a0>,
1391
+ 'password_generator': <function password_generator at 0x778dc86340>,
1392
+ 'pip_freeze_without_version': <function pip_freeze_without_version at 0x778dc86480>,
1393
+ 'poetry_publish': <function poetry_publish at 0x778dc86520>,
1394
+ 'poetry_update_version': <function poetry_update_version at 0x778dc86660>,
1395
+ 'print_dir': <function print_dir at 0x778dc86840>,
1396
+ 'print_to_last_line': <function print_to_last_line at 0x778dc868e0>,
1397
+ 'random_bool': <function random_bool at 0x778dc86980>,
1398
+ 'restart': <function restart at 0x778dc86a20>,
1399
+ 'set_timeout': <function set_timeout at 0x778dc86ac0>,
1400
+ 'sets_ordered': <function sets_ordered at 0x778dc86b60>,
1401
+ 'str_cmp': <function str_cmp at 0x778dc86c00>,
1402
+ 'text_colorize': <function text_colorize at 0x778dc86ca0>},
1426
1403
  'variable': {'LINUX': True,
1427
- 'PintUreg': <pint.registry.UnitRegistry object at 0x7285de0210>,
1404
+ 'PintUreg': <pint.registry.UnitRegistry object at 0x7791624290>,
1428
1405
  'WINDOWS': False},
1429
1406
  'module': {'asyncio': <module 'asyncio' from '/data/data/com.termux/files/usr/lib/python3.11/asyncio/__init__.py'>,
1430
1407
  'colorama': <module 'colorama' from '/data/data/com.termux/files/usr/lib/python3.11/site-packages/colorama/__init__.py'>,
@@ -1498,7 +1475,7 @@ print(password_generator())
1498
1475
 
1499
1476
  Output:
1500
1477
  ```py
1501
- V91wm5rH
1478
+ L:R/WICc
1502
1479
  ```
1503
1480
 
1504
1481
  ## pip_freeze_without_version
@@ -1556,7 +1533,7 @@ Output:
1556
1533
  __enter__ : https:/www.google.com
1557
1534
  __fspath__ : https:/www.google.com
1558
1535
  __getstate__ : (None, {'_drv': '', '_root': '', '_parts': ['https:', 'www.google.com'], '_str': 'https:/www.google.com'})
1559
- __hash__ : 8842715818035804474
1536
+ __hash__ : -1646439377113927840
1560
1537
  __init__ : None
1561
1538
  __init_subclass__ : None
1562
1539
  __module__ : pathlib
@@ -1569,8 +1546,8 @@ Output:
1569
1546
  _cached_cparts : ['https:', 'www.google.com']
1570
1547
  _cparts : ['https:', 'www.google.com']
1571
1548
  _drv :
1572
- _flavour : <pathlib._PosixFlavour object at 0x7289f10950>
1573
- _hash : 8842715818035804474
1549
+ _flavour : <pathlib._PosixFlavour object at 0x7794d18a10>
1550
+ _hash : -1646439377113927840
1574
1551
  _parts : ['https:', 'www.google.com']
1575
1552
  _root :
1576
1553
  _str : https:/www.google.com
@@ -1592,7 +1569,7 @@ Output:
1592
1569
  is_reserved : False
1593
1570
  is_socket : False
1594
1571
  is_symlink : False
1595
- iterdir : <generator object Path.iterdir at 0x72741666c0>
1572
+ iterdir : <generator object Path.iterdir at 0x778b73e7a0>
1596
1573
  joinpath : https:/www.google.com
1597
1574
  name : www.google.com
1598
1575
  parent : https:
@@ -1605,6 +1582,18 @@ Output:
1605
1582
  suffixes : ['.google', '.com']
1606
1583
  ```
1607
1584
 
1585
+ ## print_to_last_line
1586
+
1587
+ `print_to_last_line(text: str, latest=1, clear=True)`
1588
+
1589
+ Melakukan print ke konsol tetapi akan menimpa baris terakhir.
1590
+ Berguna untuk memberikan progress secara interaktif.
1591
+
1592
+ ```py
1593
+ c = input("masukkan apa saja : ")
1594
+ print_to_last_line(f"masukkan apa saja : {c} [ok]")
1595
+ ```
1596
+
1608
1597
  ## random_bool
1609
1598
 
1610
1599
  `random_bool()`
@@ -1620,7 +1609,7 @@ print(random_bool())
1620
1609
 
1621
1610
  Output:
1622
1611
  ```py
1623
- True
1612
+ False
1624
1613
  ```
1625
1614
 
1626
1615
  ## restart
@@ -1646,7 +1635,7 @@ x.cancel()
1646
1635
 
1647
1636
  Output:
1648
1637
  ```py
1649
- <Timer(Thread-2, started 491545148656)>
1638
+ <Timer(Thread-2, started 513412152560)>
1650
1639
  menghentikan timeout 7
1651
1640
  ```
1652
1641
 
@@ -1664,7 +1653,7 @@ print(list(sets_ordered(array)))
1664
1653
 
1665
1654
  Output:
1666
1655
  ```py
1667
- <generator object sets_ordered at 0x7274184e10>
1656
+ <generator object sets_ordered at 0x778b75cd40>
1668
1657
  [2, 3, 12, 42, 1, 43, 41, 4, 24, 32]
1669
1658
  ```
1670
1659
 
@@ -1686,6 +1675,17 @@ Output:
1686
1675
  True
1687
1676
  ```
1688
1677
 
1678
+ ## text_colorize
1679
+
1680
+ `text_colorize(text, color='\x1b[32m', bright='\x1b[1m', color_end='\x1b[0m')`
1681
+
1682
+ return text dengan warna untuk menunjukan text penting
1683
+
1684
+ ```py
1685
+ text_colorize("Print some text")
1686
+ text_colorize("Print some text", color=colorama.Fore.RED)
1687
+ ```
1688
+
1689
1689
  # CLASS
1690
1690
 
1691
1691
  ## APIMixinView
@@ -1739,7 +1739,7 @@ print(ExampleComparePerformance().compare_performance())
1739
1739
 
1740
1740
  Output:
1741
1741
  ```py
1742
- {'a': <generator object ExampleComparePerformance.a.<locals>.<genexpr> at 0x7274184860>,
1742
+ {'a': <generator object ExampleComparePerformance.a.<locals>.<genexpr> at 0x778b75c860>,
1743
1743
  'b': (0, 1, 2, 3, 4, 5, 6, 7, 8, 9),
1744
1744
  'c': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
1745
1745
  'd': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]}