pypipr 1.0.167__py3-none-any.whl → 1.0.168__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.
pypipr/dirname.py CHANGED
@@ -1,7 +1,9 @@
1
1
  import os
2
2
 
3
+ from .filter_empty import filter_empty
3
4
 
4
- def dirname(path, indeks=-1):
5
+
6
+ def dirname(path, indeks=-1, abs_path=None):
5
7
  """
6
8
  Mengembalikan nama folder dari path.
7
9
  Tanpa trailing slash di akhir.
@@ -10,8 +12,22 @@ def dirname(path, indeks=-1):
10
12
  print(dirname("/ini/nama/folder/ke/file.py"))
11
13
  ```
12
14
  """
15
+
13
16
  paths = path.split(os.sep)
17
+
18
+ paths = list(filter_empty(paths))
19
+
14
20
  if indeks < 0:
15
21
  paths = paths[: len(paths) + indeks]
16
- return os.sep.join(paths)
22
+
23
+ path = os.sep.join(paths)
24
+
25
+ if abs_path is None:
26
+ return path
27
+
28
+ if abs_path:
29
+ return os.path.abspath(path)
30
+
31
+ return os.path.relpath(path, os.getcwd())
32
+
17
33
  return os.path.dirname(path)
pypipr/path_to_module.py CHANGED
@@ -1,7 +1,9 @@
1
1
  import os
2
2
 
3
+ from pypipr.dirname import dirname
3
4
 
4
- def path_to_module(abs_path, indeks=0):
5
+
6
+ def path_to_module(path, indeks=0):
5
7
  """
6
8
  Mengubah absolute path file menjadi path modul relatif terhadap cwd (current working directory),
7
9
  dengan opsi untuk memangkas bagian akhir path berdasarkan indeks.
@@ -16,6 +18,9 @@ def path_to_module(abs_path, indeks=0):
16
18
  Returns:
17
19
  str: Path bergaya modul Python (dipisah dengan ".")
18
20
  """
21
+ path = dirname(path, abs_path=False)
22
+ return path.replace(os.sep, ".")
23
+
19
24
  cwd = os.getcwd()
20
25
  rel_path = os.path.relpath(abs_path, cwd)
21
26
  rel_path_no_ext = os.path.splitext(rel_path)[0]
pypipr/repath.py CHANGED
@@ -2,7 +2,7 @@ from pathlib import Path
2
2
 
3
3
 
4
4
  def repath(
5
- path: Path,
5
+ path,
6
6
  folder_name=None,
7
7
  prepand_folder=None,
8
8
  append_folder=None,
@@ -13,6 +13,8 @@ def repath(
13
13
  prepand_extension=None,
14
14
  append_extension=None,
15
15
  ):
16
+ path = Path(path)
17
+
16
18
  # Handle the directory (folder) part
17
19
  parent = path.parent
18
20
  if folder_name is not None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pypipr
3
- Version: 1.0.167
3
+ Version: 1.0.168
4
4
  Summary: The Python Package Index Project
5
5
  Author: ufiapjj
6
6
  Author-email: ufiapjj@gmail.com
@@ -248,8 +248,8 @@ iprint(irange("z", "a", 4))
248
248
 
249
249
  Output:
250
250
  ```py
251
- <generator object int_range at 0x7e48a52840>
252
- <generator object int_range at 0x7e48a52940>
251
+ <generator object int_range at 0x7b91b92840>
252
+ <generator object int_range at 0x7b91b92940>
253
253
  [13, 12, 11, 10, 9, 8, 7, 6]
254
254
  [2, 5, 8]
255
255
  []
@@ -281,7 +281,7 @@ print(list(batchmaker(s)))
281
281
 
282
282
  Output:
283
283
  ```py
284
- <generator object batchmaker at 0x7e48a6b1c0>
284
+ <generator object batchmaker at 0x7b91ba32e0>
285
285
  ['Urutan 1 dan 10 dan j dan Z saja.', 'Urutan 1 dan 10 dan j dan K saja.', 'Urutan 1 dan 10 dan j dan saja.']
286
286
  ```
287
287
 
@@ -335,7 +335,7 @@ print(list(batch_calculate("{1 10} m ** {1 3}")))
335
335
 
336
336
  Output:
337
337
  ```py
338
- <generator object batch_calculate at 0x7e48a7b300>
338
+ <generator object batch_calculate at 0x7b91bbb300>
339
339
  [('1 m ** 1', <Quantity(1, 'meter')>), ('1 m ** 2', <Quantity(1, 'meter ** 2')>), ('1 m ** 3', <Quantity(1, 'meter ** 3')>)]
340
340
  ```
341
341
 
@@ -441,7 +441,7 @@ print(list(chunk_array(arr, 5)))
441
441
 
442
442
  Output:
443
443
  ```py
444
- <generator object chunk_array at 0x7e48a5f100>
444
+ <generator object chunk_array at 0x7b91b9f100>
445
445
  [[2, 3, 12, 3, 3], [42, 42, 1, 43, 2], [42, 41, 4, 24, 32], [42, 3, 12, 32, 42], [42]]
446
446
  ```
447
447
 
@@ -492,9 +492,9 @@ print(datetime_now("Etc/GMT+7"))
492
492
 
493
493
  Output:
494
494
  ```py
495
- 2025-04-10 21:42:06.953911+07:00
496
- 2025-04-10 14:42:06.956120+00:00
497
- 2025-04-10 07:42:06.958795-07:00
495
+ 2025-04-10 22:17:53.887676+07:00
496
+ 2025-04-10 15:17:53.889758+00:00
497
+ 2025-04-10 08:17:53.893586-07:00
498
498
  ```
499
499
 
500
500
  ## dict_first
@@ -519,30 +519,6 @@ Output:
519
519
  ('key3', 'value3')
520
520
  ```
521
521
 
522
- ## dirname
523
-
524
- `dirname(path, indeks=-1)`
525
-
526
- Mengembalikan nama folder dari path.
527
- Tanpa trailing slash di akhir.
528
-
529
- ```python
530
- print(dirname("/ini/nama/folder/ke/file.py"))
531
- ```
532
-
533
- Output:
534
- ```py
535
- /ini/nama/folder/ke
536
- ```
537
-
538
- ## django_clear_migrations
539
-
540
- `django_clear_migrations(appname)`
541
-
542
- ## django_runserver
543
-
544
- `django_runserver()`
545
-
546
522
  ## is_iterable
547
523
 
548
524
  `is_iterable(var, str_is_iterable=False)`
@@ -608,10 +584,34 @@ iprint(filter_empty(var))
608
584
 
609
585
  Output:
610
586
  ```py
611
- <generator object filter_empty at 0x7e48a5f2e0>
587
+ <generator object filter_empty at 0x7b91b9f2e0>
612
588
  [1, '0', True, {}, ['eee']]
613
589
  ```
614
590
 
591
+ ## dirname
592
+
593
+ `dirname(path, indeks=-1, abs_path=None)`
594
+
595
+ Mengembalikan nama folder dari path.
596
+ Tanpa trailing slash di akhir.
597
+
598
+ ```python
599
+ print(dirname("/ini/nama/folder/ke/file.py"))
600
+ ```
601
+
602
+ Output:
603
+ ```py
604
+ ini/nama/folder/ke
605
+ ```
606
+
607
+ ## django_clear_migrations
608
+
609
+ `django_clear_migrations(appname)`
610
+
611
+ ## django_runserver
612
+
613
+ `django_runserver()`
614
+
615
615
  ## get_by_index
616
616
 
617
617
  `get_by_index(obj, index, on_error=None)`
@@ -655,8 +655,8 @@ print(list(get_class_method(ExampleGetClassMethod)))
655
655
 
656
656
  Output:
657
657
  ```py
658
- <generator object get_class_method at 0x7e48a7be60>
659
- [<function ExampleGetClassMethod.a at 0x7e48acede0>, <function ExampleGetClassMethod.b at 0x7e48acee80>, <function ExampleGetClassMethod.c at 0x7e48aced40>, <function ExampleGetClassMethod.d at 0x7e48acef20>]
658
+ <generator object get_class_method at 0x7b91bbbe60>
659
+ [<function ExampleGetClassMethod.a at 0x7b91a12de0>, <function ExampleGetClassMethod.b at 0x7b91a12c00>, <function ExampleGetClassMethod.c at 0x7b91a12ca0>, <function ExampleGetClassMethod.d at 0x7b91a12e80>]
660
660
  ```
661
661
 
662
662
  ## get_filesize
@@ -1084,7 +1084,7 @@ Output:
1084
1084
 
1085
1085
  ## ienumerate
1086
1086
 
1087
- `ienumerate(iterator, start=0, key=<function int_to_int at 0x7e4c90a5c0>)`
1087
+ `ienumerate(iterator, start=0, key=<function int_to_int at 0x7b980da5c0>)`
1088
1088
 
1089
1089
  meningkatkan fungsi enumerate() pada python
1090
1090
  untuk key menggunakan huruf dan basis angka lainnya.
@@ -1097,7 +1097,7 @@ iprint(ienumerate(it, key=int_to_chr))
1097
1097
 
1098
1098
  Output:
1099
1099
  ```py
1100
- <generator object ienumerate at 0x7e48a5f2e0>
1100
+ <generator object ienumerate at 0x7b91b9f2e0>
1101
1101
  [('a', 'ini'), ('b', 'contoh'), ('c', 'enumerator')]
1102
1102
  ```
1103
1103
 
@@ -1174,7 +1174,7 @@ print(ijoin(10, ' '))
1174
1174
 
1175
1175
  Output:
1176
1176
  ```py
1177
- weq, qweqw, asd, dfs
1177
+ dfs, qweqw, asd, weq
1178
1178
  ,ini,path,seperti,url,
1179
1179
  ini,path,seperti,url
1180
1180
  <li>satu</li>
@@ -1220,9 +1220,9 @@ Output:
1220
1220
  ```py
1221
1221
  (['Home', 'Emas 1 Gram', 'History', 'Trend', 'Perak 1 Gram', 'Pluang'],
1222
1222
  [['Harga Emas Hari Ini - Kamis, 10 April 2025'],
1223
- ['Spot Emas USD↑3.151,83 (+60,79) / oz',
1223
+ ['Spot Emas USD↑3.158,05 (+67,01) / oz',
1224
1224
  'Kurs IDR1,00 / USD',
1225
- 'Emas IDR↑101 (+2) / gr'],
1225
+ 'Emas IDR↑102 (+2) / gr'],
1226
1226
  ['LM Antam (Jual)↓1.513.000 (-30.000) / gr',
1227
1227
  'LM Antam (Beli)↓1.366.000 (-30.000) / gr']],
1228
1228
  [['Harga Emas Hari Ini'],
@@ -1245,10 +1245,10 @@ Output:
1245
1245
  'Update harga LM Pegadaian :31 Desember 1969']],
1246
1246
  [['Spot Harga Emas Hari Ini (Market Open)'],
1247
1247
  ['Satuan', 'USD', 'Kurs\xa0Dollar', 'IDR'],
1248
- ['Ounce\xa0(oz)', '3.151,83 (+60,79)', '1,00', '3.152'],
1249
- ['Gram\xa0(gr)', '101,33', '1,00', '101 (+2)'],
1250
- ['Kilogram\xa0(kg)', '101.333,69', '1,00', '101.334'],
1251
- ['Update harga emas :10 April 2025, pukul 21:42Update kurs :14 Maret 2025, '
1248
+ ['Ounce\xa0(oz)', '3.158,05 (+67,01)', '1,00', '3.158'],
1249
+ ['Gram\xa0(gr)', '101,53', '1,00', '102 (+2)'],
1250
+ ['Kilogram\xa0(kg)', '101.533,67', '1,00', '101.534'],
1251
+ ['Update harga emas :10 April 2025, pukul 22:17Update kurs :14 Maret 2025, '
1252
1252
  'pukul 10:13']],
1253
1253
  [['Gram', 'UBS Gold 99.99%'],
1254
1254
  ['Jual', 'Beli'],
@@ -1286,36 +1286,36 @@ Output:
1286
1286
  ['Unit', 'USD', 'IDR'],
1287
1287
  ['Angka', '+/-', 'Angka', '+/-'],
1288
1288
  ['Hari Ini', 'Kurs', '', '', '1', '%'],
1289
- ['oz', '3.091,04', '+60,79+1,97%', '3.091', '+61+1,97%'],
1290
- ['gr', '99,38', '+1,95+1,97%', '99', '+2+1,97%'],
1289
+ ['oz', '3.091,04', '+67,01+2,17%', '3.091', '+67+2,17%'],
1290
+ ['gr', '99,38', '+2,15+2,17%', '99', '+2+2,17%'],
1291
1291
  ['30 Hari', 'Kurs', '', '', '16.326', '-16.325-99,99%'],
1292
- ['oz', '2.916,73', '+235,10+8,06%', '47.618.534', '-47.615.382-99,99%'],
1293
- ['gr', '93,78', '+7,56+8,06%', '1.530.971', '-1.530.870-99,99%'],
1292
+ ['oz', '2.916,73', '+241,32+8,27%', '47.618.534', '-47.615.376-99,99%'],
1293
+ ['gr', '93,78', '+7,76+8,27%', '1.530.971', '-1.530.870-99,99%'],
1294
1294
  ['2 Bulan', 'Kurs', '', '', '16.330', '-16.329-99,99%'],
1295
- ['oz', '2.861,26', '+290,57+10,16%', '46.724.376', '-46.721.224-99,99%'],
1296
- ['gr', '91,99', '+9,34+10,16', '1.502.224', '-1.502.122-99,99%'],
1295
+ ['oz', '2.861,26', '+296,79+10,37%', '46.724.376', '-46.721.218-99,99%'],
1296
+ ['gr', '91,99', '+9,54+10,37', '1.502.224', '-1.502.122-99,99%'],
1297
1297
  ['6 Bulan', 'Kurs', '', '', '15.658', '-15.657-99,99%'],
1298
- ['oz', '2.656,78', '+495,05+18,63%', '41.599.861', '-41.596.709-99,99%'],
1299
- ['gr', '85,42', '+15,92+18,63%', '1.337.467', '-1.337.365-99,99%'],
1298
+ ['oz', '2.656,78', '+501,27+18,87%', '41.599.861', '-41.596.703-99,99%'],
1299
+ ['gr', '85,42', '+16,12+18,87%', '1.337.467', '-1.337.365-99,99%'],
1300
1300
  ['1 Tahun', 'Kurs', '', '', '15.907', '-15.906-99,99%'],
1301
- ['oz', '2.338,57', '+813,26+34,78%', '37.199.633', '-37.196.481-99,99%'],
1302
- ['gr', '75,19', '+26,15+34,78%', '1.195.996', '-1.195.895-99,99%'],
1301
+ ['oz', '2.338,57', '+819,48+35,04%', '37.199.633', '-37.196.475-99,99%'],
1302
+ ['gr', '75,19', '+26,35+35,04%', '1.195.996', '-1.195.894-99,99%'],
1303
1303
  ['2 Tahun', 'Kurs', '', '', '15.731', '-15.730-99,99%'],
1304
- ['oz', '1.823,86', '+1.327,97+72,81%', '28.691.142', '-28.687.990-99,99%'],
1305
- ['gr', '58,64', '+42,70+72,81%', '922.442', '-922.340-99,99%'],
1304
+ ['oz', '1.823,86', '+1.334,19+73,15%', '28.691.142', '-28.687.984-99,99%'],
1305
+ ['gr', '58,64', '+42,90+73,15%', '922.442', '-922.340-99,99%'],
1306
1306
  ['3 Tahun', 'Kurs', '', '', '14.365', '-14.364-99,99%'],
1307
- ['oz', '1.942,64', '+1.209,19+62,24%', '27.906.043', '-27.902.891-99,99%'],
1308
- ['gr', '62,46', '+38,88+62,24%', '897.200', '-897.099-99,99%'],
1307
+ ['oz', '1.942,64', '+1.215,41+62,56%', '27.906.043', '-27.902.885-99,99%'],
1308
+ ['gr', '62,46', '+39,08+62,56%', '897.200', '-897.099-99,99%'],
1309
1309
  ['5 Tahun', 'Kurs', '', '', '16.241', '-16.240-99,99%'],
1310
- ['oz', '1.688,78', '+1.463,05+86,63%', '27.427.493', '-27.424.341-99,99%'],
1311
- ['gr', '54,30', '+47,04+86,63%', '881.814', '-881.713-99,99%']])
1310
+ ['oz', '1.688,78', '+1.469,27+87,00%', '27.427.493', '-27.424.335-99,99%'],
1311
+ ['gr', '54,30', '+47,24+87,00%', '881.814', '-881.713-99,99%']])
1312
1312
  (['Home', 'Emas 1 Gram', 'History', 'Trend', 'Perak 1 Gram', 'Pluang'],
1313
1313
  [[''],
1314
1314
  ['Emas 24 KaratHarga Emas 1 Gram', ''],
1315
- ['USD', '101,33↑', '+1,95+1,96%'],
1315
+ ['USD', '101,53↑', '+2,15+2,16%'],
1316
1316
  ['KURS', '16.355,25↓', '%'],
1317
- ['IDR', '1.657.337,80↑', '+31.965,42+1,97%'],
1318
- ['Kamis, 10 April 2025 21:42']],
1317
+ ['IDR', '1.660.608,48↑', '+35.236,10+2,17%'],
1318
+ ['Kamis, 10 April 2025 22:17']],
1319
1319
  [[''],
1320
1320
  ['Emas 1 Gram (IDR)Emas 1 Gram (USD)Kurs USD-IDR',
1321
1321
  'Hari Ini',
@@ -1326,25 +1326,25 @@ Output:
1326
1326
  '']],
1327
1327
  [['Pergerakkan Harga Emas 1 Gram'],
1328
1328
  ['', 'Penutupan Kemarin', 'Pergerakkan Hari Ini', 'Rata-rata'],
1329
- ['USD', '99,38', '99,38 - 101,33', '100,36'],
1329
+ ['USD', '99,38', '99,38 - 101,53', '100,46'],
1330
1330
  ['KURS', '16.355,25', '16.355,25 - 16.355,25', '16.355,25'],
1331
- ['IDR', '1.625.372,38', '1.625.372,38 - 1.657.337,80', '1.641.355,09'],
1331
+ ['IDR', '1.625.372,38', '1.625.372,38 - 1.660.608,48', '1.642.990,43'],
1332
1332
  [''],
1333
1333
  ['', 'Awal Tahun', 'Pergerakkan YTD', '+/- YTD'],
1334
- ['USD', '84,42', '84,38 - 101,33', '+16,91 (20,03%)'],
1334
+ ['USD', '84,42', '84,38 - 101,53', '+17,11 (20,27%)'],
1335
1335
  ['KURS', '16.220,76', '16.156,70 - 16.387,00', '+134,49 (0,83%)'],
1336
1336
  ['IDR',
1337
1337
  '1.369.306,75',
1338
- '1.368.695,74 - 1.657.337,80',
1339
- '+288.031,05 (21,03%)'],
1338
+ '1.368.695,74 - 1.660.608,48',
1339
+ '+291.301,73 (21,27%)'],
1340
1340
  [''],
1341
1341
  ['', 'Tahun Lalu / 52 Minggu', 'Pergerakkan 52 Minggu', '+/- 52 Minggu'],
1342
- ['USD', '75,37', '73,75 - 101,33', '+25,96 (34,44%)'],
1342
+ ['USD', '75,37', '73,75 - 101,53', '+26,16 (34,71%)'],
1343
1343
  ['KURS', '15.877,00', '15.100,00 - 16.509,65', '+478,25 (3,01%)'],
1344
1344
  ['IDR',
1345
1345
  '1.196.609,14',
1346
- '1.181.943,88 - 1.657.337,80',
1347
- '+460.728,66 (38,50%)']])
1346
+ '1.181.943,88 - 1.660.608,48',
1347
+ '+463.999,34 (38,78%)']])
1348
1348
  ```
1349
1349
 
1350
1350
  ## iloads
@@ -1474,7 +1474,7 @@ Output:
1474
1474
  ```py
1475
1475
  8
1476
1476
  ['mana', 'aja']
1477
- [<Element a at 0x7e487a9270>, <Element a at 0x7e487dfed0>, <Element a at 0x7e487dff20>, <Element a at 0x7e487dff70>, <Element a at 0x7e487dffc0>, <Element a at 0x7e48800050>, <Element a at 0x7e488000a0>, <Element a at 0x7e488000f0>, <Element a at 0x7e48800140>, <Element a at 0x7e48800190>, <Element a at 0x7e488001e0>, <Element a at 0x7e48800230>, <Element a at 0x7e48800280>, <Element a at 0x7e488002d0>, <Element a at 0x7e48800320>, <Element a at 0x7e48800370>, <Element a at 0x7e488003c0>, <Element a at 0x7e48800410>]
1477
+ [<Element a at 0x7b91a1d2c0>, <Element a at 0x7b91a53f20>, <Element a at 0x7b91a53f70>, <Element a at 0x7b91a53fc0>, <Element a at 0x7b91a74050>, <Element a at 0x7b91a740a0>, <Element a at 0x7b91a740f0>, <Element a at 0x7b91a74140>, <Element a at 0x7b91a74190>, <Element a at 0x7b91a741e0>, <Element a at 0x7b91a74230>, <Element a at 0x7b91a74280>, <Element a at 0x7b91a742d0>, <Element a at 0x7b91a74320>, <Element a at 0x7b91a74370>, <Element a at 0x7b91a743c0>, <Element a at 0x7b91a74410>, <Element a at 0x7b91a74460>]
1478
1478
  False
1479
1479
  ```
1480
1480
 
@@ -1544,7 +1544,7 @@ print(list(iscandir("./", recursive=False, scan_file=False)))
1544
1544
 
1545
1545
  Output:
1546
1546
  ```py
1547
- <generator object iscandir at 0x7e48a5f1f0>
1547
+ <generator object iscandir at 0x7b91b9f1f0>
1548
1548
  [PosixPath('.git'), PosixPath('.vscode'), PosixPath('pypipr'), PosixPath('__pycache__'), PosixPath('dist')]
1549
1549
  ```
1550
1550
 
@@ -1577,98 +1577,98 @@ iprint(ivars(__import__('pypipr')))
1577
1577
 
1578
1578
  Output:
1579
1579
  ```py
1580
- {'function': {'avg': <function avg at 0x7e55d68680>,
1581
- 'get_filemtime': <function get_filemtime at 0x7e4c85d3a0>,
1582
- 'print_colorize': <function print_colorize at 0x7e4c85d580>,
1583
- 'print_log': <function print_log at 0x7e4edc74c0>,
1584
- 'console_run': <function console_run at 0x7e4c85d440>,
1585
- 'auto_reload': <function auto_reload at 0x7e4c85cd60>,
1586
- 'basename': <function basename at 0x7e4c85d620>,
1587
- 'chr_to_int': <function chr_to_int at 0x7e4c85dbc0>,
1588
- 'int_to_chr': <function int_to_chr at 0x7e4c85dc60>,
1589
- 'irange': <function irange at 0x7e4c85e160>,
1590
- 'batchmaker': <function batchmaker at 0x7e4c85d940>,
1591
- 'calculate': <function calculate at 0x7e4c85d4e0>,
1592
- 'batch_calculate': <function batch_calculate at 0x7e4c85d6c0>,
1593
- 'bin_to_int': <function bin_to_int at 0x7e4c85d8a0>,
1594
- 'is_empty': <function is_empty at 0x7e4c85ea20>,
1595
- 'exit_if_empty': <function exit_if_empty at 0x7e4c85e8e0>,
1596
- 'input_char': <function input_char at 0x7e4c85e980>,
1597
- 'choices': <function choices at 0x7e4c85eca0>,
1598
- 'chunk_array': <function chunk_array at 0x7e4c85ed40>,
1599
- 'create_folder': <function create_folder at 0x7e4c85ede0>,
1600
- 'datetime_from_string': <function datetime_from_string at 0x7e4c85ee80>,
1601
- 'datetime_now': <function datetime_now at 0x7e4c85ef20>,
1602
- 'dict_first': <function dict_first at 0x7e4c87d1c0>,
1603
- 'dirname': <function dirname at 0x7e4c87d260>,
1604
- 'django_clear_migrations': <function django_clear_migrations at 0x7e4c87d300>,
1605
- 'django_runserver': <function django_runserver at 0x7e4c87d620>,
1606
- 'is_iterable': <function is_iterable at 0x7e4c87d9e0>,
1607
- 'to_str': <function to_str at 0x7e4c87db20>,
1608
- 'filter_empty': <function filter_empty at 0x7e4c87d8a0>,
1609
- 'get_by_index': <function get_by_index at 0x7e4c87da80>,
1610
- 'get_class_method': <function get_class_method at 0x7e4c87dbc0>,
1611
- 'get_filesize': <function get_filesize at 0x7e4c87dd00>,
1612
- 'github_init': <function github_init at 0x7e4c87dda0>,
1613
- 'github_pull': <function github_pull at 0x7e4c87de40>,
1614
- 'github_push': <function github_push at 0x7e4c87df80>,
1615
- 'github_user': <function github_user at 0x7e4c87e020>,
1616
- 'hex_to_int': <function hex_to_int at 0x7e4c87e0c0>,
1617
- 'iargv': <function iargv at 0x7e4c87e160>,
1618
- 'idir': <function idir at 0x7e4c87e200>,
1619
- 'idumps_html': <function idumps_html at 0x7e4c90a0c0>,
1620
- 'idumps': <function idumps at 0x7e4c87e2a0>,
1621
- 'int_to_int': <function int_to_int at 0x7e4c90a5c0>,
1622
- 'ienumerate': <function ienumerate at 0x7e4c8f0900>,
1623
- 'ienv': <function ienv at 0x7e4c90a480>,
1624
- 'iexec': <function iexec at 0x7e4c90a660>,
1625
- 'iinput': <function iinput at 0x7e4c90a700>,
1626
- 'ijoin': <function ijoin at 0x7e4c90a7a0>,
1627
- 'iloads_html': <function iloads_html at 0x7e4c90aac0>,
1628
- 'iloads': <function iloads at 0x7e56161260>,
1629
- 'int_to_bin': <function int_to_bin at 0x7e4c90a840>,
1630
- 'int_to_hex': <function int_to_hex at 0x7e4c90a8e0>,
1631
- 'int_to_oct': <function int_to_oct at 0x7e4c90ab60>,
1632
- 'is_valid_url': <function is_valid_url at 0x7e4c90ade0>,
1633
- 'iopen': <function iopen at 0x7e4c6ea980>,
1634
- 'iprint': <function iprint at 0x7e4c741940>,
1635
- 'is_raw_string': <function is_raw_string at 0x7e48bd4220>,
1636
- 'ireplace': <function ireplace at 0x7e4c7aa700>,
1637
- 'is_html': <function is_html at 0x7e48bd4180>,
1638
- 'iscandir': <function iscandir at 0x7e48bd42c0>,
1639
- 'isplit': <function isplit at 0x7e48bd4360>,
1640
- 'ivars': <function ivars at 0x7e48bd4400>,
1641
- 'log': <function log at 0x7e48bd44a0>,
1642
- 'no_indent': <function no_indent at 0x7e48bd45e0>,
1643
- 'oct_to_int': <function oct_to_int at 0x7e48bd4680>,
1644
- 'password_generator': <function password_generator at 0x7e48bd4540>,
1645
- 'path_to_module': <function path_to_module at 0x7e48bd47c0>,
1646
- 'pip_freeze_without_version': <function pip_freeze_without_version at 0x7e48bd4860>,
1647
- 'pip_update_pypipr': <function pip_update_pypipr at 0x7e48bd4900>,
1648
- 'poetry_publish': <function poetry_publish at 0x7e48bd49a0>,
1649
- 'poetry_update_version': <function poetry_update_version at 0x7e48bd4ae0>,
1650
- 'print_dir': <function print_dir at 0x7e48bd4c20>,
1651
- 'print_to_last_line': <function print_to_last_line at 0x7e48bd4cc0>,
1652
- 'random_bool': <function random_bool at 0x7e48bd4d60>,
1653
- 'repath': <function repath at 0x7e48bd4ea0>,
1654
- 'restart': <function restart at 0x7e48bd4f40>,
1655
- 'set_timeout': <function set_timeout at 0x7e48bd4fe0>,
1656
- 'sets_ordered': <function sets_ordered at 0x7e48bd5080>,
1657
- 'sqlite_backup': <function sqlite_backup at 0x7e48bd5120>,
1658
- 'sqlite_delete_table': <function sqlite_delete_table at 0x7e48bd51c0>,
1659
- 'sqlite_get_all_tables': <function sqlite_get_all_tables at 0x7e48bd5260>,
1660
- 'sqlite_get_data_table': <function sqlite_get_data_table at 0x7e48bd5300>,
1661
- 'str_cmp': <function str_cmp at 0x7e48bd5bc0>,
1662
- 'text_colorize': <function text_colorize at 0x7e48bd5c60>,
1663
- 'tiles': <function tiles at 0x7e48bd5d00>,
1664
- 'traceback_filename': <function traceback_filename at 0x7e48bd5da0>,
1665
- 'traceback_framename': <function traceback_framename at 0x7e48bd5e40>},
1580
+ {'function': {'avg': <function avg at 0x7b9b7e8680>,
1581
+ 'get_filemtime': <function get_filemtime at 0x7b980293a0>,
1582
+ 'print_colorize': <function print_colorize at 0x7b98029580>,
1583
+ 'print_log': <function print_log at 0x7b987cb4c0>,
1584
+ 'console_run': <function console_run at 0x7b98029440>,
1585
+ 'auto_reload': <function auto_reload at 0x7b98028d60>,
1586
+ 'basename': <function basename at 0x7b98029620>,
1587
+ 'chr_to_int': <function chr_to_int at 0x7b98029bc0>,
1588
+ 'int_to_chr': <function int_to_chr at 0x7b98029c60>,
1589
+ 'irange': <function irange at 0x7b9802a160>,
1590
+ 'batchmaker': <function batchmaker at 0x7b98029940>,
1591
+ 'calculate': <function calculate at 0x7b980294e0>,
1592
+ 'batch_calculate': <function batch_calculate at 0x7b980296c0>,
1593
+ 'bin_to_int': <function bin_to_int at 0x7b980298a0>,
1594
+ 'is_empty': <function is_empty at 0x7b9802aa20>,
1595
+ 'exit_if_empty': <function exit_if_empty at 0x7b9802a8e0>,
1596
+ 'input_char': <function input_char at 0x7b9802a980>,
1597
+ 'choices': <function choices at 0x7b9802aca0>,
1598
+ 'chunk_array': <function chunk_array at 0x7b9802ad40>,
1599
+ 'create_folder': <function create_folder at 0x7b9802ade0>,
1600
+ 'datetime_from_string': <function datetime_from_string at 0x7b9802ae80>,
1601
+ 'datetime_now': <function datetime_now at 0x7b9802af20>,
1602
+ 'dict_first': <function dict_first at 0x7b980491c0>,
1603
+ 'is_iterable': <function is_iterable at 0x7b980494e0>,
1604
+ 'to_str': <function to_str at 0x7b98049620>,
1605
+ 'filter_empty': <function filter_empty at 0x7b980493a0>,
1606
+ 'dirname': <function dirname at 0x7b98049260>,
1607
+ 'django_clear_migrations': <function django_clear_migrations at 0x7b98049300>,
1608
+ 'django_runserver': <function django_runserver at 0x7b980498a0>,
1609
+ 'get_by_index': <function get_by_index at 0x7b98049b20>,
1610
+ 'get_class_method': <function get_class_method at 0x7b98049bc0>,
1611
+ 'get_filesize': <function get_filesize at 0x7b98049d00>,
1612
+ 'github_init': <function github_init at 0x7b98049da0>,
1613
+ 'github_pull': <function github_pull at 0x7b98049e40>,
1614
+ 'github_push': <function github_push at 0x7b98049f80>,
1615
+ 'github_user': <function github_user at 0x7b9804a020>,
1616
+ 'hex_to_int': <function hex_to_int at 0x7b9804a0c0>,
1617
+ 'iargv': <function iargv at 0x7b9804a160>,
1618
+ 'idir': <function idir at 0x7b9804a200>,
1619
+ 'idumps_html': <function idumps_html at 0x7b980da0c0>,
1620
+ 'idumps': <function idumps at 0x7b9804a2a0>,
1621
+ 'int_to_int': <function int_to_int at 0x7b980da5c0>,
1622
+ 'ienumerate': <function ienumerate at 0x7b980bc900>,
1623
+ 'ienv': <function ienv at 0x7b980da480>,
1624
+ 'iexec': <function iexec at 0x7b980da660>,
1625
+ 'iinput': <function iinput at 0x7b980da700>,
1626
+ 'ijoin': <function ijoin at 0x7b980da7a0>,
1627
+ 'iloads_html': <function iloads_html at 0x7b980daac0>,
1628
+ 'iloads': <function iloads at 0x7b9c261260>,
1629
+ 'int_to_bin': <function int_to_bin at 0x7b980da840>,
1630
+ 'int_to_hex': <function int_to_hex at 0x7b980da8e0>,
1631
+ 'int_to_oct': <function int_to_oct at 0x7b980dab60>,
1632
+ 'is_valid_url': <function is_valid_url at 0x7b980dade0>,
1633
+ 'iopen': <function iopen at 0x7b97e92980>,
1634
+ 'iprint': <function iprint at 0x7b97ee9940>,
1635
+ 'is_raw_string': <function is_raw_string at 0x7b91d1c220>,
1636
+ 'ireplace': <function ireplace at 0x7b97f52700>,
1637
+ 'is_html': <function is_html at 0x7b91d1c180>,
1638
+ 'iscandir': <function iscandir at 0x7b91d1c2c0>,
1639
+ 'isplit': <function isplit at 0x7b91d1c360>,
1640
+ 'ivars': <function ivars at 0x7b91d1c400>,
1641
+ 'log': <function log at 0x7b91d1c4a0>,
1642
+ 'no_indent': <function no_indent at 0x7b91d1c540>,
1643
+ 'oct_to_int': <function oct_to_int at 0x7b91d1c5e0>,
1644
+ 'password_generator': <function password_generator at 0x7b91d1c680>,
1645
+ 'path_to_module': <function path_to_module at 0x7b91d1c720>,
1646
+ 'pip_freeze_without_version': <function pip_freeze_without_version at 0x7b91d1c7c0>,
1647
+ 'pip_update_pypipr': <function pip_update_pypipr at 0x7b91d1c860>,
1648
+ 'poetry_publish': <function poetry_publish at 0x7b91d1c900>,
1649
+ 'poetry_update_version': <function poetry_update_version at 0x7b91d1ca40>,
1650
+ 'print_dir': <function print_dir at 0x7b91d1cb80>,
1651
+ 'print_to_last_line': <function print_to_last_line at 0x7b91d1cc20>,
1652
+ 'random_bool': <function random_bool at 0x7b91d1ccc0>,
1653
+ 'repath': <function repath at 0x7b91d1ce00>,
1654
+ 'restart': <function restart at 0x7b91d1cea0>,
1655
+ 'set_timeout': <function set_timeout at 0x7b91d1cf40>,
1656
+ 'sets_ordered': <function sets_ordered at 0x7b91d1cfe0>,
1657
+ 'sqlite_backup': <function sqlite_backup at 0x7b91d1d080>,
1658
+ 'sqlite_delete_table': <function sqlite_delete_table at 0x7b91d1d120>,
1659
+ 'sqlite_get_all_tables': <function sqlite_get_all_tables at 0x7b91d1d1c0>,
1660
+ 'sqlite_get_data_table': <function sqlite_get_data_table at 0x7b91d1d260>,
1661
+ 'str_cmp': <function str_cmp at 0x7b91d1db20>,
1662
+ 'text_colorize': <function text_colorize at 0x7b91d1dbc0>,
1663
+ 'tiles': <function tiles at 0x7b91d1dc60>,
1664
+ 'traceback_filename': <function traceback_filename at 0x7b91d1dd00>,
1665
+ 'traceback_framename': <function traceback_framename at 0x7b91d1dda0>},
1666
1666
  'class': {'ComparePerformance': <class 'pypipr.ComparePerformance.ComparePerformance'>,
1667
1667
  'PintUregQuantity': <class 'pint.Quantity'>,
1668
1668
  'RunParallel': <class 'pypipr.RunParallel.RunParallel'>,
1669
1669
  'TextCase': <class 'pypipr.TextCase.TextCase'>},
1670
1670
  'variable': {'LINUX': True,
1671
- 'PintUreg': <pint.registry.UnitRegistry object at 0x7e4edafe30>,
1671
+ 'PintUreg': <pint.registry.UnitRegistry object at 0x7b9b528110>,
1672
1672
  'WINDOWS': False},
1673
1673
  'module': {'asyncio': <module 'asyncio' from '/data/data/com.termux/files/usr/lib/python3.12/asyncio/__init__.py'>,
1674
1674
  'colorama': <module 'colorama' from '/data/data/com.termux/files/home/.cache/pypoetry/virtualenvs/pypipr-ZoJyDxLL-py3.12/lib/python3.12/site-packages/colorama/__init__.py'>,
@@ -1763,12 +1763,12 @@ print(password_generator())
1763
1763
 
1764
1764
  Output:
1765
1765
  ```py
1766
- zj3:"_OV
1766
+ uFP=a;<^
1767
1767
  ```
1768
1768
 
1769
1769
  ## path_to_module
1770
1770
 
1771
- `path_to_module(abs_path, indeks=0)`
1771
+ `path_to_module(path, indeks=0)`
1772
1772
 
1773
1773
  Mengubah absolute path file menjadi path modul relatif terhadap cwd (current working directory),
1774
1774
  dengan opsi untuk memangkas bagian akhir path berdasarkan indeks.
@@ -1842,7 +1842,7 @@ Output:
1842
1842
  __enter__ : https:/www.google.com
1843
1843
  __fspath__ : https:/www.google.com
1844
1844
  __getstate__ : (None, {'_raw_paths': ['https://www.google.com/'], '_drv': '', '_root': '', '_tail_cached': ['https:', 'www.google.com'], '_str': 'https:/www.google.com'})
1845
- __hash__ : -6061392051883426523
1845
+ __hash__ : 5673470481560303578
1846
1846
  __init__ : None
1847
1847
  __init_subclass__ : None
1848
1848
  __module__ : pathlib
@@ -1854,7 +1854,7 @@ Output:
1854
1854
  __subclasshook__ : NotImplemented
1855
1855
  _drv :
1856
1856
  _flavour : <module 'posixpath' (frozen)>
1857
- _hash : -6061392051883426523
1857
+ _hash : 5673470481560303578
1858
1858
  _lines : https:
1859
1859
  www.google.com
1860
1860
  _lines_cached : https:
@@ -1888,7 +1888,7 @@ _parts_normcase_cached : ['https:', 'www.google.com']
1888
1888
  is_reserved : False
1889
1889
  is_socket : False
1890
1890
  is_symlink : False
1891
- iterdir : <generator object Path.iterdir at 0x7e487c01e0>
1891
+ iterdir : <generator object Path.iterdir at 0x7b91ba7e00>
1892
1892
  joinpath : .
1893
1893
  name :
1894
1894
  parent : https:/www.google.com
@@ -1899,7 +1899,7 @@ _parts_normcase_cached : ['https:', 'www.google.com']
1899
1899
  stem :
1900
1900
  suffix :
1901
1901
  suffixes : []
1902
- walk : <generator object Path.walk at 0x7e48c9fd80>
1902
+ walk : <generator object Path.walk at 0x7b91defd80>
1903
1903
  with_segments : .
1904
1904
  ```
1905
1905
 
@@ -1941,12 +1941,12 @@ print(random_bool())
1941
1941
 
1942
1942
  Output:
1943
1943
  ```py
1944
- False
1944
+ True
1945
1945
  ```
1946
1946
 
1947
1947
  ## repath
1948
1948
 
1949
- `repath(path: pathlib.Path, folder_name=None, prepand_folder=None, append_folder=None, file_name=None, prepand_filename=None, append_filename=None, extension=None, prepand_extension=None, append_extension=None)`
1949
+ `repath(path, folder_name=None, prepand_folder=None, append_folder=None, file_name=None, prepand_filename=None, append_filename=None, extension=None, prepand_extension=None, append_extension=None)`
1950
1950
 
1951
1951
  ## restart
1952
1952
 
@@ -1979,7 +1979,7 @@ x.cancel()
1979
1979
 
1980
1980
  Output:
1981
1981
  ```py
1982
- <Timer(Thread-2, started 542354947312)>
1982
+ <Timer(Thread-2, started 530677452016)>
1983
1983
  menghentikan timeout 7
1984
1984
  ```
1985
1985
 
@@ -1997,7 +1997,7 @@ print(list(sets_ordered(array)))
1997
1997
 
1998
1998
  Output:
1999
1999
  ```py
2000
- <generator object sets_ordered at 0x7e487c2dc0>
2000
+ <generator object sets_ordered at 0x7b91a36c20>
2001
2001
  [2, 3, 12, 42, 1, 43, 41, 4, 24, 32]
2002
2002
  ```
2003
2003
 
@@ -2119,15 +2119,15 @@ print(ExampleComparePerformance().compare_performance())
2119
2119
 
2120
2120
  Output:
2121
2121
  ```py
2122
- {'a': <generator object ExampleComparePerformance.a.<locals>.<genexpr> at 0x7e48ab4ac0>,
2122
+ {'a': <generator object ExampleComparePerformance.a.<locals>.<genexpr> at 0x7b91be4b80>,
2123
2123
  'b': (0, 1, 2, 3, 4, 5, 6, 7, 8, 9),
2124
2124
  'c': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
2125
2125
  'd': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]}
2126
- {'a': 123, 'b': 159, 'c': 100, 'd': 252}
2127
- {'a': 100, 'b': 154, 'c': 100, 'd': 200}
2128
- {'a': 100, 'b': 148, 'c': 100, 'd': 200}
2129
- {'a': 100, 'b': 155, 'c': 100, 'd': 201}
2130
- {'a': 102, 'b': 155, 'c': 100, 'd': 195}
2126
+ {'a': 100, 'b': 176, 'c': 127, 'd': 1982}
2127
+ {'a': 100, 'b': 172, 'c': 108, 'd': 234}
2128
+ {'a': 102, 'b': 158, 'c': 99, 'd': 206}
2129
+ {'a': 100, 'b': 173, 'c': 104, 'd': 211}
2130
+ {'a': 100, 'b': 161, 'c': 102, 'd': 214}
2131
2131
  ```
2132
2132
 
2133
2133
  ## PintUregQuantity
@@ -22,7 +22,7 @@ pypipr/create_folder.py,sha256=YgK3Rhg-v8314VNSgUvq7LgyLHlpHGBYXaa1RgRsbxo,523
22
22
  pypipr/datetime_from_string.py,sha256=-GJ_QHD1feUMX0o8nwCPHGflDPXr84ovN4Awnk1T9r8,466
23
23
  pypipr/datetime_now.py,sha256=YEaatUOp0KBWYRhOFnxnVW0X7C1XEx3dpdBEn5Vwy9w,379
24
24
  pypipr/dict_first.py,sha256=X_pSaY0DLGZJSR2zJBa17yqbwAFLJrVpzb2gxR5wzZg,377
25
- pypipr/dirname.py,sha256=LFYG6IiXwqtNtQ5-Z1cCJl8y2SytfSllqEBxwcVe3FE,365
25
+ pypipr/dirname.py,sha256=T6aIEOebLEQbmQ1eYrk8CuStNKUiu3kAR3SMKkqXtK8,615
26
26
  pypipr/django_clear_migrations.py,sha256=Sjb7qq7OZc1_iTNcR2mtRY6k2um9Jr6X4A4PMqOqnCU,302
27
27
  pypipr/django_runserver.py,sha256=puzQajQ_RdLqEZFplKKEKsfhaG-IxHGW4CXZc80EnA8,734
28
28
  pypipr/exit_if_empty.py,sha256=2qUqmYPSkr1NtKPqIN7BAc-WGtcmPPAw8AdO8HirOv8,321
@@ -69,7 +69,7 @@ pypipr/log.py,sha256=aQ9DeFG03xIAUQYR4TiBdh80M6WvxDtNDTSjpKOSXHk,1041
69
69
  pypipr/no_indent.py,sha256=C1lzuP_1XLs9E1V7POhGViB76CKVKfwXhtaOrJgNGl4,75
70
70
  pypipr/oct_to_int.py,sha256=IoI_XOFZi6yzmqAirGIP6YWRgghU7IcPWzUk5DO1ZVo,191
71
71
  pypipr/password_generator.py,sha256=O0KagbEEZnwm9OGy71G-wWvW1sJLdAmZNtlT4KKMrN4,357
72
- pypipr/path_to_module.py,sha256=eAVrm3Qeg2H_GAlmkzeU8f-XO_tKRYuO1MSdT7vTuSU,822
72
+ pypipr/path_to_module.py,sha256=FSIIJsWFEhbOoNvtIZr4WSYGRaCfnRxNXvATfAgJtQs,933
73
73
  pypipr/pip_freeze_without_version.py,sha256=txQ7zn-RCEsO94XK-IhSZtMgDUHvoMJm0kO0j07WEjM,675
74
74
  pypipr/pip_update_pypipr.py,sha256=bKQ-7cReZHwQYcvkm9bVxbexdda1oz7jGXPsjdr-DnQ,147
75
75
  pypipr/poetry_publish.py,sha256=2mebYHdjQ3PKaZsif_r1Nz4N-PEaoozPf4S6sm5nVkw,349
@@ -79,7 +79,7 @@ pypipr/print_dir.py,sha256=kO-YruOQ_gCaN7gsSXfcTbufWqAqtRemW8KrUqIijC8,919
79
79
  pypipr/print_log.py,sha256=Oct2xfcMv_8iK2ySioQYrtlTYou6Cd671PqgPL9IGUE,282
80
80
  pypipr/print_to_last_line.py,sha256=ym25h5MbjIaexcczDEGjNbr3dciS6_Vq8hFyMWo73PE,915
81
81
  pypipr/random_bool.py,sha256=OkvQqpusHGc5mt2nHCycA7-s2I0gbN6UxI7opMOFppE,352
82
- pypipr/repath.py,sha256=2_q8MayLZGtGvMUMe3DpdsJfosOXW5oj3-edyZa2mSQ,1275
82
+ pypipr/repath.py,sha256=hPwsgoDXkmTf1Z5OyQXdX5cROqVrUWrbO-sN6YIPSI0,1292
83
83
  pypipr/restart.py,sha256=jUhsjZACAAcItYzCuiULHLFikoVyYDJWj16hCLARmAw,272
84
84
  pypipr/set_timeout.py,sha256=heg1J3jSArgG5_75BNLrujjh7I9meTyAzHpuAY_4IBc,698
85
85
  pypipr/sets_ordered.py,sha256=ve2Nc1eNYD_7QaTf_4otEAvzL1XpZP2MjX0KHSXF5nA,325
@@ -93,7 +93,7 @@ pypipr/tiles.py,sha256=uSEYqvjBQHIz7pZKtdta1XwFhGrMFieMHOH2DKrlcXc,328
93
93
  pypipr/to_str.py,sha256=vSuspf-ZQldf4enkssa9XH0WMjkmWug51G9ia0K5occ,597
94
94
  pypipr/traceback_filename.py,sha256=4o85J0N8clI0cM6NTGcKZ4zxR9yS7W2NS_bz3J2_PnY,288
95
95
  pypipr/traceback_framename.py,sha256=_mullrAZzMhBFEFVCgdsmkYQmYUkd58o-J-HuMntKyc,291
96
- pypipr-1.0.167.dist-info/METADATA,sha256=I4QBuiVS3X9GWlQjgnBkrcyeYqSZ_8Gfs_ZqinM9g10,57945
97
- pypipr-1.0.167.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
98
- pypipr-1.0.167.dist-info/entry_points.txt,sha256=XEBtOa61BCVW4cVvoqYQnyTcenJ1tzFFB09YnuqlKBY,51
99
- pypipr-1.0.167.dist-info/RECORD,,
96
+ pypipr-1.0.168.dist-info/METADATA,sha256=JKP9Po7ILtpdl5-l2IWdPhJKBKTqT2yD6p7cMynxDJ8,57938
97
+ pypipr-1.0.168.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
98
+ pypipr-1.0.168.dist-info/entry_points.txt,sha256=XEBtOa61BCVW4cVvoqYQnyTcenJ1tzFFB09YnuqlKBY,51
99
+ pypipr-1.0.168.dist-info/RECORD,,