absfuyu 3.0.0__py3-none-any.whl → 3.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of absfuyu might be problematic. Click here for more details.

@@ -3,14 +3,15 @@ Absfuyu: Generator
3
3
  ------------------
4
4
  This generate stuff (Not python's ``generator``)
5
5
 
6
- Version: 1.0.4
7
- Date updated: 24/11/2023 (dd/mm/yyyy)
6
+ Version: 1.1.0
7
+ Date updated: 06/03/2024 (dd/mm/yyyy)
8
8
 
9
9
  Features:
10
10
  ---------
11
11
  - Generate random string
12
12
  - Generate key
13
13
  - Generate check digit
14
+ - Generate combinations of list in range
14
15
  """
15
16
 
16
17
 
@@ -24,10 +25,21 @@ __all__ = [
24
25
 
25
26
  # Library
26
27
  ###########################################################################
28
+ from itertools import chain, combinations
27
29
  from random import choice
28
30
  import string
31
+ # from string import (
32
+ # ascii_letters as _ascii_letters,
33
+ # ascii_uppercase as _ascii_uppercase,
34
+ # ascii_lowercase as _ascii_lowercase,
35
+ # digits as _digits,
36
+ # printable as _printable,
37
+ # punctuation as _punctuation,
38
+ # )
39
+ from typing import List
29
40
 
30
41
  from absfuyu.logger import logger
42
+ from absfuyu.util import set_max, set_min_max
31
43
 
32
44
 
33
45
  # Class
@@ -45,10 +57,19 @@ class Charset:
45
57
  SPECIAL = string.punctuation
46
58
  ALL = string.printable
47
59
  PRODUCT_KEY = "BCDFGHJKMNPQRTVWXY2346789" # Charset that various key makers use
60
+ # DEFAULT = _ascii_letters + _digits
61
+ # ALPHABET = _ascii_letters
62
+ # FULL = _ascii_letters + _digits + _punctuation
63
+ # UPPERCASE = _ascii_uppercase
64
+ # LOWERCASE = _ascii_lowercase
65
+ # DIGIT = _digits
66
+ # SPECIAL = _punctuation
67
+ # ALL = _printable
48
68
 
49
69
  def __str__(self) -> str:
50
70
  charset = [x for x in __class__.__dict__.keys() if not x.startswith("__")]
51
- return f"List of Charset: {charset}"
71
+ return f"List of Character set: {charset}"
72
+
52
73
  def __repr__(self) -> str:
53
74
  return self.__str__()
54
75
 
@@ -258,8 +279,48 @@ class Generator:
258
279
  logger.debug(f"Output: {out}")
259
280
  return out
260
281
 
282
+ @staticmethod
283
+ def combinations_range(sequence: list, *, min_len: int = 1, max_len: int = 0) -> List[tuple]:
284
+ """
285
+ Generate all combinations of a ``sequence`` from ``min_len`` to ``max_len``
286
+
287
+ Parameters
288
+ ----------
289
+ sequence : list
290
+ A sequence that need to generate combination
291
+
292
+ min_len : int
293
+ Minimum ``r`` of ``combinations``
294
+ (Default: ``1``)
295
+
296
+ max_len : int
297
+ Maximum ``r`` of ``combinations``
298
+ (Default: ``0`` - len of ``sequence``)
299
+
300
+ Returns
301
+ -------
302
+ list[tuple]
303
+ A list of all combinations from range(``min_len``, ``max_len``) of ``sequence``
304
+ """
305
+ # Restrain
306
+ if max_len < 1:
307
+ max_len = len(sequence)
308
+ max_len = set_max(max_len, max_value=len(sequence))
309
+ min_len = set_min_max(min_len, min_value=1, max_value=max_len)
310
+ logger.debug(f"Combination range: [{min_len}, {max_len}]")
311
+
312
+ # Return
313
+ return list(
314
+ chain.from_iterable(
315
+ [
316
+ list(combinations(sequence, i))
317
+ for i in range(min_len, max_len + 1)
318
+ ]
319
+ )
320
+ )
321
+
261
322
 
262
323
  # Run
263
324
  ###########################################################################
264
325
  if __name__ == "__main__":
265
- logger.setLevel(10) # DEBUG
326
+ logger.setLevel(10) # DEBUG
absfuyu/general/human.py CHANGED
@@ -3,8 +3,8 @@ Absfuyu: Human
3
3
  --------------
4
4
  Human related stuff
5
5
 
6
- Version: 1.2.4
7
- Date updated: 26/11/2023 (dd/mm/yyyy)
6
+ Version: 1.3.0
7
+ Date updated: 08/12/2023 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
 
@@ -28,6 +28,31 @@ from absfuyu.fun import zodiac_sign
28
28
  from absfuyu.version import Version
29
29
 
30
30
 
31
+ # Sub-Class
32
+ ###########################################################################
33
+ class _FloatBase:
34
+ """To show some unit"""
35
+
36
+ def __init__(self, value: float) -> None:
37
+ self.value = value
38
+
39
+ def __str__(self) -> str:
40
+ return self.value.__str__()
41
+
42
+ def to_float(self) -> float:
43
+ return float(self.value)
44
+
45
+
46
+ class _Height(_FloatBase):
47
+ def __repr__(self) -> str:
48
+ return f"{self.value:.2f} cm"
49
+
50
+
51
+ class _Weight(_FloatBase):
52
+ def __repr__(self) -> str:
53
+ return f"{self.value:.2f} kg"
54
+
55
+
31
56
  # Class
32
57
  ###########################################################################
33
58
  class BloodType:
@@ -1,11 +1,10 @@
1
- # -*- coding: utf-8 -*-
2
1
  """
3
2
  Absfuyu: Performance
4
3
  --------------------
5
4
  Performance Check
6
5
 
7
- Version: 1.0.1
8
- Date updated: 24/11/2023 (dd/mm/yyyy)
6
+ Version: 1.1.0
7
+ Date updated: 11/12/2023 (dd/mm/yyyy)
9
8
 
10
9
  Feature:
11
10
  --------
@@ -21,16 +20,20 @@ __all__ = [
21
20
  # Wrapper
22
21
  "measure_performance",
23
22
  # Functions
24
- "var_check", "source_this"
23
+ "var_check",
24
+ "source_this",
25
25
  ]
26
26
 
27
27
 
28
28
  # Library
29
29
  ###########################################################################
30
30
  from functools import wraps as __wraps
31
- from inspect import getsource as __source
31
+ from inspect import getsource
32
32
  from time import perf_counter as __perf_counter
33
33
  import tracemalloc as __tracemalloc
34
+ from typing import Any, Callable, List, Optional, Tuple, Union
35
+
36
+ from absfuyu.general.data_extension import ListNoDunder
34
37
 
35
38
 
36
39
  # Function
@@ -47,7 +50,7 @@ def measure_performance(func):
47
50
  --------
48
51
  >>> @measure_performance
49
52
  >>> def test():
50
- >>> return 1 + 1
53
+ ... return 1 + 1
51
54
  >>> test()
52
55
  ----------------------------------------
53
56
  Function: test
@@ -104,10 +107,20 @@ def measure_performance(func):
104
107
  return wrapper
105
108
 
106
109
 
107
- def var_check(variable):
110
+ def var_check(variable: Any, full: bool = False):
108
111
  """
109
112
  Check a variable
110
-
113
+
114
+ Parameters
115
+ ----------
116
+ variable : Any
117
+ Variable that needed to check
118
+
119
+ full : bool
120
+ | ``True``: Shows full detail
121
+ | ``False``: Hides ``dir`` and ``docstring``
122
+
123
+
111
124
  Example:
112
125
  --------
113
126
  >>> test = "test"
@@ -140,14 +153,22 @@ def var_check(variable):
140
153
  dict,
141
154
  set, frozenset,
142
155
  bool,
143
- bytes,bytearray, memoryview,
144
- type(None)
156
+ bytes, bytearray, memoryview,
157
+ type(None),
145
158
  ]
146
159
  if type(variable) in lc:
147
160
  pass
148
161
  else:
149
162
  docs = variable.__doc__
150
- output["docstring"] = docs
163
+ if full:
164
+ output["docstring"] = docs
165
+ except:
166
+ pass
167
+
168
+ # Dir
169
+ try:
170
+ if full:
171
+ output["dir"] = ListNoDunder(variable.__dir__())
151
172
  except:
152
173
  pass
153
174
 
@@ -155,7 +176,7 @@ def var_check(variable):
155
176
  return output
156
177
 
157
178
 
158
- def source_this(function) -> str:
179
+ def source_this(function: Callable) -> str:
159
180
  """
160
181
  Show the source code of a function
161
182
 
@@ -169,10 +190,76 @@ def source_this(function) -> str:
169
190
  str
170
191
  Source code
171
192
  """
172
- return __source(function)
193
+ return getsource(function)
194
+
195
+
196
+ # Class
197
+ ###########################################################################
198
+ class Checker:
199
+ """Check a variable"""
200
+ def __init__(self, checker: Any) -> None:
201
+ self.item_to_check = checker
202
+ def __str__(self) -> str:
203
+ return self.item_to_check.__str__()
204
+ def __repr__(self) -> str:
205
+ return f"{self.__class__.__name__}({self.item_to_check})"
206
+
207
+ @property
208
+ def name(self) -> Union[Any, None]:
209
+ try:
210
+ return self.item_to_check.__name__
211
+ except:
212
+ return None
213
+
214
+ @property
215
+ def value(self) -> Any:
216
+ return self.item_to_check
217
+
218
+ @property
219
+ def docstring(self) -> Union[str, None]:
220
+ """:returns: ``self.item_to_check.__doc__``"""
221
+ return self.item_to_check.__doc__
222
+
223
+ @property
224
+ def class_(self) -> Any:
225
+ return type(self.item_to_check)
226
+
227
+ @property
228
+ def id_(self) -> int:
229
+ return id(self.item_to_check)
230
+
231
+ @property
232
+ def dir_(self) -> List[str]:
233
+ """:returns: ``dir(self.item_to_check)``"""
234
+ # return self.item_to_check.__dir__()
235
+ return ListNoDunder(self.item_to_check.__dir__())
236
+
237
+ @property
238
+ def source(self) -> Union[str, None]:
239
+ """:returns: Source code"""
240
+ try:
241
+ return getsource(self.item_to_check)
242
+ except:
243
+ return None
244
+
245
+ def check(self, full: bool = False):
246
+ """
247
+ Check
248
+ """
249
+ out = {
250
+ "name": self.name,
251
+ "value": self.value,
252
+ "class": self.class_,
253
+ "id": self.id_,
254
+ }
255
+ if full:
256
+ out["dir"] = self.dir_
257
+ out["docs"] = self.docstring
258
+ out["source"] = self.source
259
+ return out
173
260
 
174
261
 
175
262
  # Run
176
263
  ###########################################################################
177
264
  if __name__ == "__main__":
178
- pass
265
+ pass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: absfuyu
3
- Version: 3.0.0
3
+ Version: 3.1.0
4
4
  Summary: A small collection of code
5
5
  Author: somewhatcold (AbsoluteWinter)
6
6
  License: MIT License
@@ -59,19 +59,19 @@ Requires-Dist: typing-extensions >=4.0.1 ; python_version < "3.11"
59
59
  Provides-Extra: absfuyu-res
60
60
  Requires-Dist: absfuyu-res ; extra == 'absfuyu-res'
61
61
  Provides-Extra: all
62
- Requires-Dist: twine >=3.7.1 ; extra == 'all'
63
- Requires-Dist: sphinx >=7.0.0 ; extra == 'all'
64
- Requires-Dist: absfuyu-res ; extra == 'all'
65
- Requires-Dist: pandas ; extra == 'all'
66
- Requires-Dist: sphinx-rtd-theme ; extra == 'all'
62
+ Requires-Dist: click >=8.0.0 ; extra == 'all'
67
63
  Requires-Dist: coverage ; extra == 'all'
68
- Requires-Dist: pytest >=6.2.5 ; extra == 'all'
69
- Requires-Dist: rich ; extra == 'all'
70
- Requires-Dist: colorama >=0.4 ; extra == 'all'
71
64
  Requires-Dist: black ; extra == 'all'
72
- Requires-Dist: click >=8.0.0 ; extra == 'all'
73
- Requires-Dist: numpy ; extra == 'all'
74
65
  Requires-Dist: build ; extra == 'all'
66
+ Requires-Dist: sphinx-rtd-theme ; extra == 'all'
67
+ Requires-Dist: colorama >=0.4 ; extra == 'all'
68
+ Requires-Dist: pytest >=6.2.5 ; extra == 'all'
69
+ Requires-Dist: twine >=3.7.1 ; extra == 'all'
70
+ Requires-Dist: numpy ; extra == 'all'
71
+ Requires-Dist: pandas ; extra == 'all'
72
+ Requires-Dist: rich ; extra == 'all'
73
+ Requires-Dist: sphinx >=7.0.0 ; extra == 'all'
74
+ Requires-Dist: absfuyu-res ; extra == 'all'
75
75
  Provides-Extra: beautiful
76
76
  Requires-Dist: rich ; extra == 'beautiful'
77
77
  Provides-Extra: black
@@ -88,28 +88,28 @@ Requires-Dist: colorama >=0.4 ; extra == 'colorama'
88
88
  Provides-Extra: coverage
89
89
  Requires-Dist: coverage ; extra == 'coverage'
90
90
  Provides-Extra: dev
91
- Requires-Dist: twine >=3.7.1 ; extra == 'dev'
92
- Requires-Dist: sphinx >=7.0.0 ; extra == 'dev'
93
- Requires-Dist: sphinx-rtd-theme ; extra == 'dev'
91
+ Requires-Dist: click >=8.0.0 ; extra == 'dev'
94
92
  Requires-Dist: coverage ; extra == 'dev'
95
- Requires-Dist: pytest >=6.2.5 ; extra == 'dev'
96
- Requires-Dist: rich ; extra == 'dev'
97
- Requires-Dist: colorama >=0.4 ; extra == 'dev'
98
93
  Requires-Dist: black ; extra == 'dev'
99
- Requires-Dist: click >=8.0.0 ; extra == 'dev'
100
94
  Requires-Dist: build ; extra == 'dev'
95
+ Requires-Dist: sphinx-rtd-theme ; extra == 'dev'
96
+ Requires-Dist: colorama >=0.4 ; extra == 'dev'
97
+ Requires-Dist: pytest >=6.2.5 ; extra == 'dev'
98
+ Requires-Dist: twine >=3.7.1 ; extra == 'dev'
99
+ Requires-Dist: rich ; extra == 'dev'
100
+ Requires-Dist: sphinx >=7.0.0 ; extra == 'dev'
101
101
  Provides-Extra: extra
102
102
  Requires-Dist: click >=8.0.0 ; extra == 'extra'
103
- Requires-Dist: numpy ; extra == 'extra'
104
103
  Requires-Dist: colorama >=0.4 ; extra == 'extra'
104
+ Requires-Dist: numpy ; extra == 'extra'
105
105
  Requires-Dist: pandas ; extra == 'extra'
106
106
  Provides-Extra: full
107
- Requires-Dist: absfuyu-res ; extra == 'full'
108
- Requires-Dist: pandas ; extra == 'full'
109
- Requires-Dist: rich ; extra == 'full'
110
- Requires-Dist: colorama >=0.4 ; extra == 'full'
111
107
  Requires-Dist: click >=8.0.0 ; extra == 'full'
108
+ Requires-Dist: colorama >=0.4 ; extra == 'full'
112
109
  Requires-Dist: numpy ; extra == 'full'
110
+ Requires-Dist: pandas ; extra == 'full'
111
+ Requires-Dist: rich ; extra == 'full'
112
+ Requires-Dist: absfuyu-res ; extra == 'full'
113
113
  Provides-Extra: numpy
114
114
  Requires-Dist: numpy ; extra == 'numpy'
115
115
  Provides-Extra: pandas
@@ -6,30 +6,30 @@ absfuyu/logger.py,sha256=EjAGnz_PReigh5kowvo1h89KzpIdyeacQG2JKipKZ5I,12883
6
6
  absfuyu/sort.py,sha256=f31514lwPnp2wipSG5E6rIoLXmCHLJlujr2_o65tJcQ,6498
7
7
  absfuyu/version.py,sha256=pF4rUiN_XTUfsKF6oYzhMWkOl3NsXfrN6bFAJA8bPPc,13962
8
8
  absfuyu/config/__init__.py,sha256=tQL7ZuiY1m4fqnKRVNKX7v85srdzE5KS18BcNWWRGgg,7956
9
- absfuyu/config/config.json,sha256=sCxwSzQt8T406iKZZD4DqTTVOz7ZyNLmhqi08dMqJys,791
9
+ absfuyu/config/config.json,sha256=zO_uHCqtlBw0kOmMYX0khFhTKc6oNiPIrOH62-O8DME,791
10
10
  absfuyu/extensions/__init__.py,sha256=hxeZm3w00K4GC78cDTIo5ROWiWAZw4zEmlevfOqbNvo,146
11
11
  absfuyu/extensions/beautiful.py,sha256=zN1-_bHytW3ImIEimJhE4WRzsqf9D3l9z-GImYB0D68,5240
12
- absfuyu/extensions/dev/__init__.py,sha256=M36S76t7Piq5i7bLtCiDph6ZwarOrc07FDRMMGbJayE,2689
12
+ absfuyu/extensions/dev/__init__.py,sha256=GDHf4ojXULZu8Py20R8roxSWL7gaC7Z65a1okwrFtp0,6424
13
13
  absfuyu/extensions/dev/password_hash.py,sha256=toVWZKJ__jOxcmPhKBs58aYhzLV_0cF4AWwNzgACfBo,1794
14
14
  absfuyu/extensions/dev/passwordlib.py,sha256=Eoywj0_1tu_ALvt6_csRPznQ03nzUGSWvk2HmLy4JXM,6796
15
15
  absfuyu/extensions/dev/pkglib.py,sha256=X_SniqZbE2MdPQoh9uItJo1JTRbn43y2a8hkVy3ofW8,2215
16
16
  absfuyu/extensions/dev/project_starter.py,sha256=l16FjIwD6ImYZRw08BitzhrKvugc9Q6PBEipj6XZa-8,1561
17
17
  absfuyu/extensions/dev/shutdownizer.py,sha256=EMsUytPABrt1s3hpfwaE2ZpDNQncwKo9EDiYy3QFcT0,132
18
18
  absfuyu/extensions/extra/__init__.py,sha256=8zkMYDaPvCamCU8AecKiaBhYv39xb43JhLqi8bNm9Tk,552
19
- absfuyu/extensions/extra/data_analysis.py,sha256=9GIMp3pQpMpA3Amz8XoDKsWaSh3B_vkh2Jtt9JDXL5w,10475
19
+ absfuyu/extensions/extra/data_analysis.py,sha256=OQhR38wLCWblQRwZT25WkBgeALWgv2gANQN52PrOnUw,26826
20
20
  absfuyu/fun/WGS.py,sha256=tU6exyU2FeHB4AI0XqrKAB945XVNSb6NBGZFinjgNYg,9145
21
21
  absfuyu/fun/__init__.py,sha256=fAu2odcOx6YpGXTb7aS69V70oBC6VfYugErC6fVNI58,6249
22
- absfuyu/fun/tarot.py,sha256=xfpbnqQrguYBo4Z_blBdu46ERgC8DdOglVNrmcWxwas,2519
22
+ absfuyu/fun/tarot.py,sha256=VHFYbpZT-Ktf4LcGqXm137jEPN_4_cCMugf4ZVv9lMQ,2554
23
23
  absfuyu/game/__init__.py,sha256=2J8k8ntI8wlHjNWSWbrktW4K2-vkB6oveyt177-kUtw,4663
24
24
  absfuyu/game/sudoku.py,sha256=ub51EwTlfQLqw9la4HxfZdFE6aJXyPotXwOZ1W9h9_g,10450
25
25
  absfuyu/game/tictactoe.py,sha256=nSVTnCWEy9d5Jeo3KRb3mfeR1pzWNmKxTa5JC7usQ-Y,15278
26
- absfuyu/game/tictactoe2.py,sha256=oecwIZL-PjJu1mVSq2j6K-Xkqf60n6HOkd5niSAflWY,9517
26
+ absfuyu/game/tictactoe2.py,sha256=lV1hJhS-qn8jLTo-C8M0wUnv27L2CW-AM_ohBLlWRiY,9639
27
27
  absfuyu/game/wordle.py,sha256=ZohB73nQ7iCHMdReBtZ9bHFz6_DVKrsxeB9PbnV7L_s,101133
28
28
  absfuyu/general/__init__.py,sha256=9L83GlWKZbYEAo_rDLEhet-ILOOZ4p5KH0jGaKXgYPg,2026
29
29
  absfuyu/general/content.py,sha256=8ox5HlDuYqVuUO38BmfpIqE0t7f80mB5a6fGDFfc20c,17375
30
- absfuyu/general/data_extension.py,sha256=1j7nmK8YEodi_9fD9fWzLtrI3ys1oP0rJugIIEJgNv4,40103
31
- absfuyu/general/generator.py,sha256=h5ZEUg_6G8kU8o_E6P-0cgJ1S5ItZtULYmazFIBqJas,7844
32
- absfuyu/general/human.py,sha256=yqZ-vqlvt-R17UKKplK92OVNYG3rKaiEBxIpVb8Ve9U,9026
30
+ absfuyu/general/data_extension.py,sha256=uWUuKBjbhn6tsETX22R1pGU5ttk_w_yN8l3UGvh4Ol0,43657
31
+ absfuyu/general/generator.py,sha256=Lm4MKXOCB6orXhCk1LgrZ_Tq8aMewJqaB6PikBB2ONY,9806
32
+ absfuyu/general/human.py,sha256=WKlCYOA9lPRsWDDKXc2yAqwE_VzmMdurqQKkSX7yXV8,9591
33
33
  absfuyu/pkg_data/__init__.py,sha256=eIJGI9iXlJ6EqoNqjo2oB9HZ8KJ7lLK48SFyYWKbon8,4929
34
34
  absfuyu/pkg_data/chemistry.pkl,sha256=kYWNa_PVffoDnzT8b9Jvimmf_GZshPe1D-SnEKERsLo,4655
35
35
  absfuyu/pkg_data/tarot.pkl,sha256=ssXTCC_BQgslO5F-3a9HivbxFQ6BioIe2E1frPVi2m0,56195
@@ -44,12 +44,12 @@ absfuyu/util/api.py,sha256=h0J-RCNM1qJOwIgNuv-dPgCBvUpwgk1M1VO6m-7_0bI,4217
44
44
  absfuyu/util/json_method.py,sha256=QMgMVe4mSKXMzGFpHLsfMrusphDlei7uAWntZSbggxQ,2695
45
45
  absfuyu/util/lunar.py,sha256=Pr2wJa4JPkmKjINJOKrXx43Cco7p-3uSl_nSq0XsdwM,13839
46
46
  absfuyu/util/path.py,sha256=0MDyr0WK827WsP2IogaR0_V8Tea5ZVDf7ceBhdzNtzE,13438
47
- absfuyu/util/performance.py,sha256=fLE4kMuR9_D2E1-UdrVEygWIeXXOF2vW9ReP1rS3uN4,4283
47
+ absfuyu/util/performance.py,sha256=qtdGy9Vtf38tjY2MAO4G8KywqkzkSMpfmvzYu1VnkYw,6561
48
48
  absfuyu/util/pkl.py,sha256=3lDaXrhOaa-8tMv4YYAXd-cbfzbmSwQsmVolN9i0FoA,1577
49
49
  absfuyu/util/zipped.py,sha256=F_h-1cDYqlhZFZlmkyLPxLwyuHALOe-tyaEI4Xu2Pvs,2529
50
- absfuyu-3.0.0.dist-info/LICENSE,sha256=V0E-QreSFFwyrt5YpB6Q4ifIfQkEOlEk0P7Hmc9ZQvU,1076
51
- absfuyu-3.0.0.dist-info/METADATA,sha256=toe2K4h2N2HYNdIdtmt9W0PdOU2ku3rT2xNjXR_QepY,8185
52
- absfuyu-3.0.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
53
- absfuyu-3.0.0.dist-info/entry_points.txt,sha256=KutJbJf591TkDp3b2Llhc7r6fA8K8ELs6rL7sRJTl7I,47
54
- absfuyu-3.0.0.dist-info/top_level.txt,sha256=1Ud2uJ8XBmohoDfY4NqUpbuIMWMS3LowF_51uwUniY8,8
55
- absfuyu-3.0.0.dist-info/RECORD,,
50
+ absfuyu-3.1.0.dist-info/LICENSE,sha256=V0E-QreSFFwyrt5YpB6Q4ifIfQkEOlEk0P7Hmc9ZQvU,1076
51
+ absfuyu-3.1.0.dist-info/METADATA,sha256=VHd_XOgnNLd2RnUM02edyY9nbeZEc4AabeSA0_-xXy8,8185
52
+ absfuyu-3.1.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
53
+ absfuyu-3.1.0.dist-info/entry_points.txt,sha256=KutJbJf591TkDp3b2Llhc7r6fA8K8ELs6rL7sRJTl7I,47
54
+ absfuyu-3.1.0.dist-info/top_level.txt,sha256=1Ud2uJ8XBmohoDfY4NqUpbuIMWMS3LowF_51uwUniY8,8
55
+ absfuyu-3.1.0.dist-info/RECORD,,