pypipr 1.0.111__tar.gz → 1.0.113__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 (78) hide show
  1. {pypipr-1.0.111 → pypipr-1.0.113}/PKG-INFO +163 -163
  2. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/__terminal__.py +4 -2
  3. pypipr-1.0.113/pypipr/choices.py +61 -0
  4. {pypipr-1.0.111 → pypipr-1.0.113}/pyproject.toml +1 -1
  5. {pypipr-1.0.111 → pypipr-1.0.113}/readme.md +162 -162
  6. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/APIMixinView.py +0 -0
  7. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/ComparePerformance.py +0 -0
  8. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/LINUX.py +0 -0
  9. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/PintUreg.py +0 -0
  10. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/PintUregQuantity.py +0 -0
  11. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/RunParallel.py +0 -0
  12. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/WINDOWS.py +0 -0
  13. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/__init__.py +0 -0
  14. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/auto_reload.py +0 -0
  15. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/avg.py +0 -0
  16. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/basename.py +0 -0
  17. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/batch_calculate.py +0 -0
  18. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/batchmaker.py +0 -0
  19. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/calculate.py +0 -0
  20. /pypipr-1.0.111/pypipr/choices.py → /pypipr-1.0.113/pypipr/choices.py.bak +0 -0
  21. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/chr_to_int.py +0 -0
  22. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/chunk_array.py +0 -0
  23. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/console_run.py +0 -0
  24. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/create_folder.py +0 -0
  25. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/datetime_from_string.py +0 -0
  26. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/datetime_now.py +0 -0
  27. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/dict_first.py +0 -0
  28. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/dirname.py +0 -0
  29. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/exit_if_empty.py +0 -0
  30. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/filter_empty.py +0 -0
  31. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/get_by_index.py +0 -0
  32. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/get_class_method.py +0 -0
  33. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/get_filemtime.py +0 -0
  34. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/get_filesize.py +0 -0
  35. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/github_pull.py +0 -0
  36. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/github_push.py +0 -0
  37. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/github_user.py +0 -0
  38. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/iargv.py +0 -0
  39. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/idumps.py +0 -0
  40. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/idumps_html.py +0 -0
  41. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/ienumerate.py +0 -0
  42. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/ienv.py +0 -0
  43. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/iexec.py +0 -0
  44. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/ijoin.py +0 -0
  45. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/iloads.py +0 -0
  46. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/iloads_html.py +0 -0
  47. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/input_char.py +0 -0
  48. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/int_to_bin.py +0 -0
  49. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/int_to_chr.py +0 -0
  50. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/int_to_hex.py +0 -0
  51. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/int_to_int.py +0 -0
  52. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/int_to_oct.py +0 -0
  53. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/iopen.py +0 -0
  54. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/iprint.py +0 -0
  55. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/irange.py +0 -0
  56. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/ireplace.py +0 -0
  57. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/is_empty.py +0 -0
  58. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/is_iterable.py +0 -0
  59. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/is_valid_url.py +0 -0
  60. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/iscandir.py +0 -0
  61. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/isplit.py +0 -0
  62. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/ivars.py +0 -0
  63. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/log.py +0 -0
  64. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/password_generator.py +0 -0
  65. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/pip_freeze_without_version.py +0 -0
  66. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/poetry_publish.py +0 -0
  67. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/poetry_update_version.py +0 -0
  68. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/print_colorize.py +0 -0
  69. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/print_dir.py +0 -0
  70. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/print_log.py +0 -0
  71. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/print_to_last_line.py +0 -0
  72. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/random_bool.py +0 -0
  73. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/restart.py +0 -0
  74. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/set_timeout.py +0 -0
  75. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/sets_ordered.py +0 -0
  76. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/str_cmp.py +0 -0
  77. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/text_colorize.py +0 -0
  78. {pypipr-1.0.111 → pypipr-1.0.113}/pypipr/to_str.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pypipr
3
- Version: 1.0.111
3
+ Version: 1.0.113
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 0x7426cec9d0>
249
- <generator object chr_range at 0x7426cec9d0>
248
+ <generator object chr_range at 0x72741289d0>
249
+ <generator object chr_range at 0x72741289d0>
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 0x7426d18280>
276
+ <generator object batchmaker at 0x7274158280>
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,38 +327,30 @@ print(list(batch_calculate("{1 10} m ** {1 3}")))
327
327
 
328
328
  Output:
329
329
  ```py
330
- <generator object batch_calculate at 0x7426c97010>
330
+ <generator object batch_calculate at 0x72740d3100>
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
- ## is_iterable
334
+ ## int_to_int
335
335
 
336
- `is_iterable(var, str_is_iterable=False)`
336
+ `int_to_int(n)`
337
337
 
338
- Mengecek apakah suatu variabel bisa dilakukan forloop atau tidak
338
+ Fungsi ini sama seperti fungsi int().
339
+ fungsi ini dibuat hanya untuk keperluan pembuatan module semata.
339
340
 
340
341
  ```python
341
- s = 'ini string'
342
- print(is_iterable(s))
343
-
344
- l = [12,21,2,1]
345
- print(is_iterable(l))
346
-
347
- r = range(100)
348
- print(is_iterable(r))
349
-
350
- d = {'a':1, 'b':2}
351
- print(is_iterable(d.values()))
342
+ print(int_to_int(7777))
352
343
  ```
353
344
 
354
345
  Output:
355
346
  ```py
356
- False
357
- True
358
- True
359
- True
347
+ 7777
360
348
  ```
361
349
 
350
+ ## ienumerate
351
+
352
+ `ienumerate(iterator, start=0, key=<function int_to_int at 0x727e2604a0>)`
353
+
362
354
  ## print_to_last_line
363
355
 
364
356
  `print_to_last_line(text: str, latest=1, clear=True)`
@@ -384,7 +376,7 @@ text_colorize("Print some text", color=colorama.Fore.RED)
384
376
 
385
377
  ## choices
386
378
 
387
- `choices(iterator, title=None, prompt='', default=None)`
379
+ `choices(iterator, title=None, prompt='', default=None, key=<function int_to_int at 0x727e2604a0>)`
388
380
 
389
381
  Memudahkan dalam membuat pilihan untuk user dalam tampilan console
390
382
 
@@ -420,7 +412,7 @@ print(list(chunk_array(arr, 5)))
420
412
 
421
413
  Output:
422
414
  ```py
423
- <generator object chunk_array at 0x7426d24540>
415
+ <generator object chunk_array at 0x727415c640>
424
416
  [[2, 3, 12, 3, 3], [42, 42, 1, 43, 2], [42, 41, 4, 24, 32], [42, 3, 12, 32, 42], [42]]
425
417
  ```
426
418
 
@@ -471,9 +463,9 @@ print(datetime_now("Etc/GMT+7"))
471
463
 
472
464
  Output:
473
465
  ```py
474
- 2024-04-30 18:51:07.832996+07:00
475
- 2024-04-30 11:51:07.834956+00:00
476
- 2024-04-30 04:51:07.841376-07:00
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
477
469
  ```
478
470
 
479
471
  ## dict_first
@@ -555,6 +547,34 @@ var2 = '0'
555
547
  exit_if_empty(var1, var2)
556
548
  ```
557
549
 
550
+ ## is_iterable
551
+
552
+ `is_iterable(var, str_is_iterable=False)`
553
+
554
+ Mengecek apakah suatu variabel bisa dilakukan forloop atau tidak
555
+
556
+ ```python
557
+ s = 'ini string'
558
+ print(is_iterable(s))
559
+
560
+ l = [12,21,2,1]
561
+ print(is_iterable(l))
562
+
563
+ r = range(100)
564
+ print(is_iterable(r))
565
+
566
+ d = {'a':1, 'b':2}
567
+ print(is_iterable(d.values()))
568
+ ```
569
+
570
+ Output:
571
+ ```py
572
+ False
573
+ True
574
+ True
575
+ True
576
+ ```
577
+
558
578
  ## to_str
559
579
 
560
580
  `to_str(value)`
@@ -591,7 +611,7 @@ print(filter_empty(var))
591
611
 
592
612
  Output:
593
613
  ```py
594
- <generator object filter_empty at 0x7426c955d0>
614
+ <generator object filter_empty at 0x72740d16c0>
595
615
  ```
596
616
 
597
617
  ## get_by_index
@@ -637,8 +657,8 @@ print(list(get_class_method(ExampleGetClassMethod)))
637
657
 
638
658
  Output:
639
659
  ```py
640
- <generator object get_class_method at 0x7426c972e0>
641
- [<function ExampleGetClassMethod.a at 0x7426d38ea0>, <function ExampleGetClassMethod.b at 0x7426d39120>, <function ExampleGetClassMethod.c at 0x7426d391c0>, <function ExampleGetClassMethod.d at 0x7426d39260>]
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>]
642
662
  ```
643
663
 
644
664
  ## get_filesize
@@ -873,26 +893,6 @@ t:
873
893
 
874
894
  ```
875
895
 
876
- ## int_to_int
877
-
878
- `int_to_int(n)`
879
-
880
- Fungsi ini sama seperti fungsi int().
881
- fungsi ini dibuat hanya untuk keperluan pembuatan module semata.
882
-
883
- ```python
884
- print(int_to_int(7777))
885
- ```
886
-
887
- Output:
888
- ```py
889
- 7777
890
- ```
891
-
892
- ## ienumerate
893
-
894
- `ienumerate(iterator, start=0, key=<function int_to_int at 0x742e811bc0>)`
895
-
896
896
  ## ienv
897
897
 
898
898
  `ienv(on_windows=None, on_linux=None)`
@@ -956,7 +956,7 @@ print(ijoin(10, ' '))
956
956
 
957
957
  Output:
958
958
  ```py
959
- qweqw, dfs, asd, weq
959
+ weq, asd, qweqw, dfs
960
960
  ,ini,path,seperti,url,
961
961
  ini,path,seperti,url
962
962
  <li>satu</li>
@@ -1000,9 +1000,9 @@ Output:
1000
1000
  ```py
1001
1001
  (['Home', 'Emas 1 Gram', 'History', 'Trend', 'Perak 1 Gram', 'Pluang'],
1002
1002
  [['Harga Emas Hari Ini - Selasa, 30 April 2024'],
1003
- ['Spot Emas USD↓2.311,17 (-33,37) / oz',
1003
+ ['Spot Emas USD↓2.312,87 (-31,67) / oz',
1004
1004
  'Kurs IDR↑16.249,00 (+27,00) / USD',
1005
- 'Emas IDR↓1.207.396 (-15.398) / gr'],
1005
+ 'Emas IDR↓1.208.284 (-14.510) / gr'],
1006
1006
  ['LM Antam (Jual)1.325.000 / gr', 'LM Antam (Beli)1.221.000 / gr']],
1007
1007
  [['Harga Emas Hari Ini'],
1008
1008
  ['Gram', 'Gedung Antam Jakarta', 'Pegadaian'],
@@ -1040,10 +1040,10 @@ Output:
1040
1040
  'Update harga LM Pegadaian :31 Agustus 2023']],
1041
1041
  [['Spot Harga Emas Hari Ini (Market Open)'],
1042
1042
  ['Satuan', 'USD', 'Kurs\xa0Dollar', 'IDR'],
1043
- ['Ounce\xa0(oz)', '2.311,17 (-33,37)', '16.249,00 (+27,00)', '37.554.201'],
1044
- ['Gram\xa0(gr)', '74,31', '16.249,00', '1.207.396 (-15.398)'],
1045
- ['Kilogram\xa0(kg)', '74.305,84', '16.249,00', '1.207.395.611'],
1046
- ['Update harga emas :30 April 2024, pukul 18:51Update kurs :30 April 2024, '
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, '
1047
1047
  'pukul 13:10']],
1048
1048
  [['Gram', 'UBS Gold 99.99%'],
1049
1049
  ['Jual', 'Beli'],
@@ -1065,36 +1065,36 @@ Output:
1065
1065
  ['Unit', 'USD', 'IDR'],
1066
1066
  ['Angka', '+/-', 'Angka', '+/-'],
1067
1067
  ['Hari Ini', 'Kurs', '', '', '16.222', '+27+0,17%'],
1068
- ['oz', '2.344,54', '-33,37-1,42%', '38.033.128', '-478.927-1,26%'],
1069
- ['gr', '75,38', '-1,07-1,42%', '1.222.793', '-15.398-1,26%'],
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%'],
1070
1070
  ['30 Hari', 'Kurs', '', '', '15.853', '+396+2,50%'],
1071
- ['oz', '2.232,75', '+78,42+3,51%', '35.395.786', '+2.158.416+6,10%'],
1072
- ['gr', '71,78', '+2,52+3,51%', '1.138.001', '+69.395+6,10%'],
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%'],
1073
1073
  ['2 Bulan', 'Kurs', '', '', '15.715', '+534+3,40%'],
1074
- ['oz', '2.081,20', '+229,97+11,05%', '32.706.058', '+4.848.143+14,82%'],
1075
- ['gr', '66,91', '+7,39+11,05', '1.051.524', '+155.871+14,82%'],
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%'],
1076
1076
  ['6 Bulan', 'Kurs', '', '', '15.946', '+303+1,90%'],
1077
- ['oz', '1.981,84', '+329,33+16,62%', '31.602.421', '+5.951.781+18,83%'],
1078
- ['gr', '63,72', '+10,59+16,62%', '1.016.041', '+191.354+18,83%'],
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%'],
1079
1079
  ['1 Tahun', 'Kurs', '', '', '15.731', '+518+3,29%'],
1080
- ['oz', '1.823,86', '+487,31+26,72%', '28.691.142', '+8.863.060+30,89%'],
1081
- ['gr', '58,64', '+15,67+26,72%', '922.442', '+284.954+30,89%'],
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%'],
1082
1082
  ['2 Tahun', 'Kurs', '', '', '14.418', '+1.831+12,70%'],
1083
- ['oz', '1.896,95', '+414,22+21,84%', '27.350.225', '+10.203.976+37,31%'],
1084
- ['gr', '60,99', '+13,32+21,84%', '879.330', '+328.065+37,31%'],
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%'],
1085
1085
  ['3 Tahun', 'Kurs', '', '', '14.468', '+1.781+12,31%'],
1086
- ['oz', '1.768,91', '+542,26+30,66%', '25.592.590', '+11.961.611+46,74%'],
1087
- ['gr', '56,87', '+17,43+30,66%', '822.821', '+384.575+46,74%'],
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%'],
1088
1088
  ['5 Tahun', 'Kurs', '', '', '14.245', '+2.004+14,07%'],
1089
- ['oz', '1.270,94', '+1.040,23+81,85%', '18.104.540', '+19.449.661+107,43%'],
1090
- ['gr', '40,86', '+33,44+81,85%', '582.074', '+625.321+107,43%']])
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%']])
1091
1091
  (['Home', 'Emas 1 Gram', 'History', 'Trend', 'Perak 1 Gram', 'Pluang'],
1092
1092
  [[''],
1093
1093
  ['Emas 24 KaratHarga Emas 1 Gram', ''],
1094
- ['USD', '74,31↓', '-1,07-1,42%'],
1095
- ['KURS', '16.243,25↑', '+29,75+0,18%'],
1096
- ['IDR', '1.206.968,35↓', '-15.184,39-1,24%'],
1097
- ['Selasa, 30 April 2024 18:51']],
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']],
1098
1098
  [[''],
1099
1099
  ['Emas 1 Gram (IDR)Emas 1 Gram (USD)Kurs USD-IDR',
1100
1100
  'Hari Ini',
@@ -1105,19 +1105,19 @@ Output:
1105
1105
  '']],
1106
1106
  [['Pergerakkan Harga Emas 1 Gram'],
1107
1107
  ['', 'Penutupan Kemarin', 'Pergerakkan Hari Ini', 'Rata-rata'],
1108
- ['USD', '75,38', '74,31 - 75,38', '74,85'],
1109
- ['KURS', '16.213,50', '16.213,50 - 16.243,25', '16.228,38'],
1110
- ['IDR', '1.222.152,74', '1.206.968,35 - 1.222.152,74', '1.214.560,55'],
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'],
1111
1111
  [''],
1112
1112
  ['', 'Awal Tahun', 'Pergerakkan YTD', '+/- YTD'],
1113
- ['USD', '66,32', '64,07 - 77,14', '+7,99 (12,05%)'],
1114
- ['KURS', '15.390,10', '15.390,00 - 16.307,80', '+853,15 (5,54%)'],
1115
- ['IDR', '1.020.729,53', '997.660,12 - 1.256.829,06', '+186.238,82 (18,25%)'],
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%)'],
1116
1116
  [''],
1117
1117
  ['', 'Tahun Lalu / 52 Minggu', 'Pergerakkan 52 Minggu', '+/- 52 Minggu'],
1118
- ['USD', '63,97', '58,43 - 77,14', '+10,34 (16,16%)'],
1119
- ['KURS', '14.673,55', '14.669,40 - 16.307,80', '+1.569,70 (10,70%)'],
1120
- ['IDR', '938.709,73', '912.925,68 - 1.256.829,06', '+268.258,62 (28,58%)']])
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%)']])
1121
1121
  ```
1122
1122
 
1123
1123
  ## iloads
@@ -1259,7 +1259,7 @@ Output:
1259
1259
  ```py
1260
1260
  8
1261
1261
  ['mana', 'aja']
1262
- [<Element a at 0x7426d2e990>, <Element a at 0x7426d6d040>, <Element a at 0x7426d6d0e0>, <Element a at 0x7426d6d130>, <Element a at 0x7426d6d180>, <Element a at 0x7426d6d1d0>, <Element a at 0x7426d6d220>, <Element a at 0x7426d6d270>, <Element a at 0x7426d6d2c0>, <Element a at 0x7426d6d310>, <Element a at 0x7426d6d360>, <Element a at 0x7426d6d3b0>, <Element a at 0x7426d6d400>, <Element a at 0x7426d6d450>, <Element a at 0x7426d6d4a0>, <Element a at 0x7426d6d4f0>, <Element a at 0x7426d6d540>, <Element a at 0x7426d6d590>]
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>]
1263
1263
  False
1264
1264
  ```
1265
1265
 
@@ -1321,7 +1321,7 @@ print(list(iscandir("./", recursive=False, scan_file=False)))
1321
1321
 
1322
1322
  Output:
1323
1323
  ```py
1324
- <generator object iscandir at 0x7426d24740>
1324
+ <generator object iscandir at 0x727415c840>
1325
1325
  [PosixPath('.git'), PosixPath('.vscode'), PosixPath('pypipr'), PosixPath('__pycache__'), PosixPath('dist')]
1326
1326
  ```
1327
1327
 
@@ -1358,73 +1358,73 @@ Output:
1358
1358
  'ComparePerformance': <class 'pypipr.ComparePerformance.ComparePerformance'>,
1359
1359
  'PintUregQuantity': <class 'pint.Quantity'>,
1360
1360
  'RunParallel': <class 'pypipr.RunParallel.RunParallel'>},
1361
- 'function': {'avg': <function avg at 0x74376da700>,
1362
- 'get_filemtime': <function get_filemtime at 0x742e73f2e0>,
1363
- 'print_colorize': <function print_colorize at 0x742e73f4c0>,
1364
- 'print_log': <function print_log at 0x742e9cab60>,
1365
- 'console_run': <function console_run at 0x742e73f380>,
1366
- 'auto_reload': <function auto_reload at 0x742e8fbec0>,
1367
- 'basename': <function basename at 0x742e73f240>,
1368
- 'chr_to_int': <function chr_to_int at 0x742e73fa60>,
1369
- 'int_to_chr': <function int_to_chr at 0x742e73fb00>,
1370
- 'irange': <function irange at 0x742e73fd80>,
1371
- 'batchmaker': <function batchmaker at 0x742e73f740>,
1372
- 'calculate': <function calculate at 0x742e7342c0>,
1373
- 'batch_calculate': <function batch_calculate at 0x742e73f600>,
1374
- 'is_iterable': <function is_iterable at 0x742e734360>,
1375
- 'print_to_last_line': <function print_to_last_line at 0x742e734400>,
1376
- 'text_colorize': <function text_colorize at 0x742e7344a0>,
1377
- 'choices': <function choices at 0x742e73f6a0>,
1378
- 'chunk_array': <function chunk_array at 0x742e73f7e0>,
1379
- 'create_folder': <function create_folder at 0x742e734540>,
1380
- 'datetime_from_string': <function datetime_from_string at 0x742e7345e0>,
1381
- 'datetime_now': <function datetime_now at 0x742e734680>,
1382
- 'dict_first': <function dict_first at 0x742e734720>,
1383
- 'dirname': <function dirname at 0x742e7347c0>,
1384
- 'is_empty': <function is_empty at 0x742e7349a0>,
1385
- 'exit_if_empty': <function exit_if_empty at 0x742e73f560>,
1386
- 'to_str': <function to_str at 0x742e734ae0>,
1387
- 'filter_empty': <function filter_empty at 0x742e734860>,
1388
- 'get_by_index': <function get_by_index at 0x742e734a40>,
1389
- 'get_class_method': <function get_class_method at 0x742e734b80>,
1390
- 'get_filesize': <function get_filesize at 0x742e734cc0>,
1391
- 'github_pull': <function github_pull at 0x742e734d60>,
1392
- 'github_push': <function github_push at 0x742e734f40>,
1393
- 'github_user': <function github_user at 0x742e734fe0>,
1394
- 'iargv': <function iargv at 0x742e734e00>,
1395
- 'idumps_html': <function idumps_html at 0x742e735260>,
1396
- 'idumps': <function idumps at 0x742e735120>,
1397
- 'int_to_int': <function int_to_int at 0x742e811bc0>,
1398
- 'ienumerate': <function ienumerate at 0x742e735760>,
1399
- 'ienv': <function ienv at 0x742e811a80>,
1400
- 'iexec': <function iexec at 0x742e811c60>,
1401
- 'ijoin': <function ijoin at 0x742e811da0>,
1402
- 'iloads_html': <function iloads_html at 0x742e811f80>,
1403
- 'iloads': <function iloads at 0x742e811d00>,
1404
- 'input_char': <function input_char at 0x742e811ee0>,
1405
- 'int_to_bin': <function int_to_bin at 0x742e812020>,
1406
- 'int_to_hex': <function int_to_hex at 0x742e8120c0>,
1407
- 'int_to_oct': <function int_to_oct at 0x742e812160>,
1408
- 'is_valid_url': <function is_valid_url at 0x742e812340>,
1409
- 'iopen': <function iopen at 0x742e5fe7a0>,
1410
- 'iprint': <function iprint at 0x742e8122a0>,
1411
- 'ireplace': <function ireplace at 0x742e812660>,
1412
- 'iscandir': <function iscandir at 0x742e6b9ee0>,
1413
- 'isplit': <function isplit at 0x742e6b9f80>,
1414
- 'ivars': <function ivars at 0x742e6ba020>,
1415
- 'log': <function log at 0x742e6ba0c0>,
1416
- 'password_generator': <function password_generator at 0x742e6ba160>,
1417
- 'pip_freeze_without_version': <function pip_freeze_without_version at 0x742e6ba2a0>,
1418
- 'poetry_publish': <function poetry_publish at 0x742e6ba340>,
1419
- 'poetry_update_version': <function poetry_update_version at 0x742e6ba480>,
1420
- 'print_dir': <function print_dir at 0x742e6ba660>,
1421
- 'random_bool': <function random_bool at 0x742e6ba700>,
1422
- 'restart': <function restart at 0x742e6ba7a0>,
1423
- 'set_timeout': <function set_timeout at 0x742e6ba840>,
1424
- 'sets_ordered': <function sets_ordered at 0x742e6ba8e0>,
1425
- 'str_cmp': <function str_cmp at 0x742e6ba980>},
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>},
1426
1426
  'variable': {'LINUX': True,
1427
- 'PintUreg': <pint.registry.UnitRegistry object at 0x74374d1810>,
1427
+ 'PintUreg': <pint.registry.UnitRegistry object at 0x7285de0210>,
1428
1428
  'WINDOWS': False},
1429
1429
  'module': {'asyncio': <module 'asyncio' from '/data/data/com.termux/files/usr/lib/python3.11/asyncio/__init__.py'>,
1430
1430
  'colorama': <module 'colorama' from '/data/data/com.termux/files/usr/lib/python3.11/site-packages/colorama/__init__.py'>,
@@ -1498,7 +1498,7 @@ print(password_generator())
1498
1498
 
1499
1499
  Output:
1500
1500
  ```py
1501
- JC%l}I"Y
1501
+ V91wm5rH
1502
1502
  ```
1503
1503
 
1504
1504
  ## pip_freeze_without_version
@@ -1556,7 +1556,7 @@ Output:
1556
1556
  __enter__ : https:/www.google.com
1557
1557
  __fspath__ : https:/www.google.com
1558
1558
  __getstate__ : (None, {'_drv': '', '_root': '', '_parts': ['https:', 'www.google.com'], '_str': 'https:/www.google.com'})
1559
- __hash__ : 7552599354939882057
1559
+ __hash__ : 8842715818035804474
1560
1560
  __init__ : None
1561
1561
  __init_subclass__ : None
1562
1562
  __module__ : pathlib
@@ -1569,8 +1569,8 @@ Output:
1569
1569
  _cached_cparts : ['https:', 'www.google.com']
1570
1570
  _cparts : ['https:', 'www.google.com']
1571
1571
  _drv :
1572
- _flavour : <pathlib._PosixFlavour object at 0x7440454790>
1573
- _hash : 7552599354939882057
1572
+ _flavour : <pathlib._PosixFlavour object at 0x7289f10950>
1573
+ _hash : 8842715818035804474
1574
1574
  _parts : ['https:', 'www.google.com']
1575
1575
  _root :
1576
1576
  _str : https:/www.google.com
@@ -1592,7 +1592,7 @@ Output:
1592
1592
  is_reserved : False
1593
1593
  is_socket : False
1594
1594
  is_symlink : False
1595
- iterdir : <generator object Path.iterdir at 0x7426d227a0>
1595
+ iterdir : <generator object Path.iterdir at 0x72741666c0>
1596
1596
  joinpath : https:/www.google.com
1597
1597
  name : www.google.com
1598
1598
  parent : https:
@@ -1646,7 +1646,7 @@ x.cancel()
1646
1646
 
1647
1647
  Output:
1648
1648
  ```py
1649
- <Timer(Thread-2, started 498839043312)>
1649
+ <Timer(Thread-2, started 491545148656)>
1650
1650
  menghentikan timeout 7
1651
1651
  ```
1652
1652
 
@@ -1664,7 +1664,7 @@ print(list(sets_ordered(array)))
1664
1664
 
1665
1665
  Output:
1666
1666
  ```py
1667
- <generator object sets_ordered at 0x7426d48e10>
1667
+ <generator object sets_ordered at 0x7274184e10>
1668
1668
  [2, 3, 12, 42, 1, 43, 41, 4, 24, 32]
1669
1669
  ```
1670
1670
 
@@ -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 0x7426d48860>,
1742
+ {'a': <generator object ExampleComparePerformance.a.<locals>.<genexpr> at 0x7274184860>,
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]}
@@ -10,7 +10,8 @@ def main():
10
10
  while isinstance(m, list):
11
11
  if a is None:
12
12
  pd = True
13
- for i, v in dict(enumerate(m)).items():
13
+ # for i, v in dict(enumerate(m)).items():
14
+ for i, v in enumerate(m):
14
15
  print(f"{i}. {v}")
15
16
  pypipr.print_colorize("Masukan Nomor Urut atau Nama Fungsi : ", text_end="")
16
17
  a = input()
@@ -20,7 +21,8 @@ def main():
20
21
  if a.isdigit():
21
22
  m = pypipr.get_by_index(m, int(a))
22
23
  else:
23
- m = [v for v in m if v.__contains__(a)]
24
+ # m = [v for v in m if v.__contains__(a)]
25
+ m = [v for v in m if a in v]
24
26
  if len(m) == 1:
25
27
  m = pypipr.get_by_index(m, 0)
26
28
  pypipr.exit_if_empty(m)
@@ -0,0 +1,61 @@
1
+ from .ienumerate import ienumerate
2
+ from .WINDOWS import WINDOWS
3
+ from .print_to_last_line import print_to_last_line
4
+ from .text_colorize import text_colorize
5
+ from .int_to_int import int_to_int
6
+
7
+
8
+ def choices(iterator, title=None, prompt="", default=None, key=int_to_int):
9
+ """
10
+ Memudahkan dalam membuat pilihan untuk user dalam tampilan console
11
+
12
+ ```py
13
+ a = choices("ini hanya satu pilihan")
14
+ b = choices(
15
+ {
16
+ "sedan": "audi",
17
+ "suv": "volvo",
18
+ "truck": "tesla",
19
+ },
20
+ title="Car Model",
21
+ prompt="Pilih Mobil : ",
22
+ )
23
+ c = choices(
24
+ iscandir(recursive=False),
25
+ title="List File dan Folder",
26
+ prompt="Pilih File atau Folder : ",
27
+ )
28
+ ```
29
+ """
30
+
31
+ def build_iterator(iterator):
32
+ return dict(ienumerate(iterator, key=key))
33
+
34
+ def print_choices(dictionary, title=None):
35
+ if title:
36
+ print(title)
37
+ for k, v in dictionary.items():
38
+ print(f"{k}. {v}")
39
+
40
+ def input_choices(prompt):
41
+ i = input(prompt)
42
+ if WINDOWS:
43
+ i = i.decode()
44
+ if i.isdigit():
45
+ i = int(i)
46
+ return i
47
+
48
+ def return_choices(iterator, key, on_error):
49
+ try:
50
+ result = iterator[key]
51
+ except Exception:
52
+ result = on_error
53
+ return result
54
+
55
+ d = build_iterator(iterator)
56
+ print_choices(d, title)
57
+ key = input_choices(prompt)
58
+ result = return_choices(d, key, default)
59
+ r = text_colorize(result)
60
+ print_to_last_line(f"{prompt}{key} [{r}]")
61
+ return result
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pypipr"
3
- version = "1.0.111"
3
+ version = "1.0.113"
4
4
  description = "The Python Package Index Project"
5
5
  authors = ["ufiapjj <ufiapjj@gmail.com>"]
6
6
  readme = "readme.md"