absfuyu 5.0.0__py3-none-any.whl → 6.1.2__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.

Files changed (103) hide show
  1. absfuyu/__init__.py +5 -3
  2. absfuyu/__main__.py +3 -3
  3. absfuyu/cli/__init__.py +13 -2
  4. absfuyu/cli/audio_group.py +98 -0
  5. absfuyu/cli/color.py +30 -14
  6. absfuyu/cli/config_group.py +9 -2
  7. absfuyu/cli/do_group.py +23 -6
  8. absfuyu/cli/game_group.py +27 -2
  9. absfuyu/cli/tool_group.py +81 -11
  10. absfuyu/config/__init__.py +3 -3
  11. absfuyu/core/__init__.py +12 -8
  12. absfuyu/core/baseclass.py +929 -96
  13. absfuyu/core/baseclass2.py +44 -3
  14. absfuyu/core/decorator.py +70 -4
  15. absfuyu/core/docstring.py +64 -41
  16. absfuyu/core/dummy_cli.py +3 -3
  17. absfuyu/core/dummy_func.py +19 -6
  18. absfuyu/dxt/__init__.py +2 -2
  19. absfuyu/dxt/base_type.py +93 -0
  20. absfuyu/dxt/dictext.py +204 -16
  21. absfuyu/dxt/dxt_support.py +2 -2
  22. absfuyu/dxt/intext.py +151 -34
  23. absfuyu/dxt/listext.py +969 -127
  24. absfuyu/dxt/strext.py +77 -17
  25. absfuyu/extra/__init__.py +2 -2
  26. absfuyu/extra/audio/__init__.py +8 -0
  27. absfuyu/extra/audio/_util.py +57 -0
  28. absfuyu/extra/audio/convert.py +192 -0
  29. absfuyu/extra/audio/lossless.py +281 -0
  30. absfuyu/extra/beautiful.py +3 -2
  31. absfuyu/extra/da/__init__.py +72 -0
  32. absfuyu/extra/da/dadf.py +1600 -0
  33. absfuyu/extra/da/dadf_base.py +186 -0
  34. absfuyu/extra/da/df_func.py +181 -0
  35. absfuyu/extra/da/mplt.py +219 -0
  36. absfuyu/extra/ggapi/__init__.py +8 -0
  37. absfuyu/extra/ggapi/gdrive.py +223 -0
  38. absfuyu/extra/ggapi/glicense.py +148 -0
  39. absfuyu/extra/ggapi/glicense_df.py +186 -0
  40. absfuyu/extra/ggapi/gsheet.py +88 -0
  41. absfuyu/extra/img/__init__.py +30 -0
  42. absfuyu/extra/img/converter.py +402 -0
  43. absfuyu/extra/img/dup_check.py +291 -0
  44. absfuyu/extra/pdf.py +87 -0
  45. absfuyu/extra/rclone.py +253 -0
  46. absfuyu/extra/xml.py +90 -0
  47. absfuyu/fun/__init__.py +7 -20
  48. absfuyu/fun/rubik.py +442 -0
  49. absfuyu/fun/tarot.py +2 -2
  50. absfuyu/game/__init__.py +2 -2
  51. absfuyu/game/game_stat.py +2 -2
  52. absfuyu/game/schulte.py +78 -0
  53. absfuyu/game/sudoku.py +2 -2
  54. absfuyu/game/tictactoe.py +2 -3
  55. absfuyu/game/wordle.py +6 -4
  56. absfuyu/general/__init__.py +4 -4
  57. absfuyu/general/content.py +4 -4
  58. absfuyu/general/human.py +2 -2
  59. absfuyu/general/resrel.py +213 -0
  60. absfuyu/general/shape.py +3 -8
  61. absfuyu/general/tax.py +344 -0
  62. absfuyu/logger.py +806 -59
  63. absfuyu/numbers/__init__.py +13 -0
  64. absfuyu/numbers/number_to_word.py +321 -0
  65. absfuyu/numbers/shorten_number.py +303 -0
  66. absfuyu/numbers/time_duration.py +217 -0
  67. absfuyu/pkg_data/__init__.py +2 -2
  68. absfuyu/pkg_data/deprecated.py +2 -2
  69. absfuyu/pkg_data/logo.py +1462 -0
  70. absfuyu/sort.py +4 -4
  71. absfuyu/tools/__init__.py +28 -2
  72. absfuyu/tools/checksum.py +144 -9
  73. absfuyu/tools/converter.py +120 -34
  74. absfuyu/tools/generator.py +461 -0
  75. absfuyu/tools/inspector.py +752 -0
  76. absfuyu/tools/keygen.py +2 -2
  77. absfuyu/tools/obfuscator.py +47 -9
  78. absfuyu/tools/passwordlib.py +89 -25
  79. absfuyu/tools/shutdownizer.py +3 -8
  80. absfuyu/tools/sw.py +718 -0
  81. absfuyu/tools/web.py +10 -13
  82. absfuyu/typings.py +138 -0
  83. absfuyu/util/__init__.py +114 -6
  84. absfuyu/util/api.py +41 -18
  85. absfuyu/util/cli.py +119 -0
  86. absfuyu/util/gui.py +91 -0
  87. absfuyu/util/json_method.py +43 -14
  88. absfuyu/util/lunar.py +2 -2
  89. absfuyu/util/package.py +124 -0
  90. absfuyu/util/path.py +702 -82
  91. absfuyu/util/performance.py +122 -7
  92. absfuyu/util/shorten_number.py +244 -21
  93. absfuyu/util/text_table.py +481 -0
  94. absfuyu/util/zipped.py +8 -7
  95. absfuyu/version.py +79 -59
  96. {absfuyu-5.0.0.dist-info → absfuyu-6.1.2.dist-info}/METADATA +52 -11
  97. absfuyu-6.1.2.dist-info/RECORD +105 -0
  98. {absfuyu-5.0.0.dist-info → absfuyu-6.1.2.dist-info}/WHEEL +1 -1
  99. absfuyu/extra/data_analysis.py +0 -1078
  100. absfuyu/general/generator.py +0 -303
  101. absfuyu-5.0.0.dist-info/RECORD +0 -68
  102. {absfuyu-5.0.0.dist-info → absfuyu-6.1.2.dist-info}/entry_points.txt +0 -0
  103. {absfuyu-5.0.0.dist-info → absfuyu-6.1.2.dist-info}/licenses/LICENSE +0 -0
@@ -1,303 +0,0 @@
1
- """
2
- Absfuyu: Generator
3
- ------------------
4
- This generate stuff (Not python's ``generator``)
5
-
6
- Version: 5.0.0
7
- Date updated: 25/02/2025 (dd/mm/yyyy)
8
-
9
- Features:
10
- ---------
11
- - Generate random string
12
- - Generate key
13
- - Generate check digit
14
- - Generate combinations of list in range
15
- """
16
-
17
- # Module level
18
- # ---------------------------------------------------------------------------
19
- __all__ = ["Charset", "Generator"]
20
-
21
-
22
- # Library
23
- # ---------------------------------------------------------------------------
24
- import string
25
- from itertools import chain, combinations
26
- from random import choice
27
-
28
- from absfuyu.core import BaseClass
29
- from absfuyu.logger import logger
30
- from absfuyu.util import set_max, set_min_max
31
-
32
-
33
- # Class
34
- # ---------------------------------------------------------------------------
35
- class Charset:
36
- """
37
- Character set data class
38
- """
39
-
40
- DEFAULT = string.ascii_letters + string.digits
41
- ALPHABET = string.ascii_letters
42
- FULL = string.ascii_letters + string.digits + string.punctuation
43
- UPPERCASE = string.ascii_uppercase
44
- LOWERCASE = string.ascii_lowercase
45
- DIGIT = string.digits
46
- SPECIAL = string.punctuation
47
- ALL = string.printable
48
- PRODUCT_KEY = "BCDFGHJKMNPQRTVWXY2346789" # Charset that various key makers use
49
-
50
- def __str__(self) -> str:
51
- charset = [x for x in self.__class__.__dict__.keys() if not x.startswith("__")]
52
- return f"List of Character set: {charset}"
53
-
54
- def __repr__(self) -> str:
55
- return self.__str__()
56
-
57
-
58
- class Generator(BaseClass):
59
- """
60
- Generator that generate stuffs
61
- """
62
-
63
- @staticmethod
64
- def generate_string(
65
- charset: str = Charset.DEFAULT,
66
- size: int = 8,
67
- times: int = 1,
68
- unique: bool = False,
69
- string_type_if_1: bool = False,
70
- ):
71
- """
72
- Generate a list of random string from character set (Random string generator)
73
-
74
- Parameters
75
- ----------
76
- charset : str
77
- - Use custom character set or character sets already defined in ``Charset``
78
- - ``Charset.DEFAULT``: character in [a-zA-Z0-9] (default)
79
- - ``Charset.ALPHABET``: character in [a-zA-Z]
80
- - ``Charset.FULL``: character in [a-zA-Z0-9] + special characters
81
- - ``Charset.UPPERCASE``: character in [A-Z]
82
- - ``Charset.LOWERCASE``: character in [a-z]
83
- - ``Charset.DIGIT``: character in [0-9]
84
- - ``Charset.SPECIAL``: character in [!@#$%^&*()_+=-]
85
- - ``Charset.ALL``: character in every printable character
86
-
87
- size : int
88
- Length of each string in list
89
- (Default: ``8``)
90
-
91
- times : int
92
- How many random string generated
93
- (Default: ``1``)
94
-
95
- unique : bool
96
- Each generated text is unique
97
- (Default: ``False``)
98
-
99
- string_type_if_1 : bool
100
- Return a ``str`` type result if ``times == 1``
101
- (Default: ``False``)
102
-
103
- Returns
104
- -------
105
- list
106
- List of random string generated
107
-
108
- str
109
- When ``string_type_if_1`` is ``True``
110
-
111
- None
112
- When invalid option
113
-
114
-
115
- Example:
116
- --------
117
- >>> Generator.generate_string(times=3)
118
- ['67Xfh1fv', 'iChcGz9P', 'u82fNzlm']
119
- """
120
-
121
- try:
122
- char_lst = list(charset)
123
- except Exception:
124
- char_lst = charset # type: ignore # ! review this sometime
125
- # logger.debug(char_lst)
126
-
127
- unique_string = []
128
- count = 0
129
- logger.debug(f"Unique generated text: {unique}")
130
-
131
- while count < times:
132
- s = "".join(choice(char_lst) for _ in range(size))
133
- logger.debug(
134
- f"Time generated: {count + 1}. Remaining: {times - count - 1}. {s}"
135
- )
136
- if not unique:
137
- unique_string.append(s)
138
- count += 1
139
- else:
140
- if s not in unique_string:
141
- unique_string.append(s)
142
- count += 1
143
-
144
- logger.debug(unique_string)
145
- if string_type_if_1 and times == 1:
146
- return unique_string[0]
147
- else:
148
- return unique_string
149
-
150
- @classmethod
151
- def generate_key(
152
- cls,
153
- charset: str = Charset.PRODUCT_KEY,
154
- letter_per_block: int = 5,
155
- number_of_block: int = 5,
156
- sep: str = "-",
157
- ) -> str:
158
- """
159
- Generate custom key
160
-
161
- Parameters
162
- ----------
163
- charset : str
164
- Character set
165
- (Default: ``Charset.PRODUCT_KEY``)
166
-
167
- letter_per_block : int
168
- Number of letter per key block
169
- (Default: ``5``)
170
-
171
- number_of_block : int
172
- Number of key block
173
- (Default: ``5``)
174
-
175
- sep : str
176
- Key block separator
177
- (Default: ``-``)
178
-
179
- Returns
180
- -------
181
- str
182
- Generated key
183
-
184
-
185
- Example:
186
- --------
187
- >>> Generator.generate_key(letter_per_block=10, number_of_block=2)
188
- 'VKKPJVYD2H-M7R687QCV2'
189
- """
190
- out = sep.join(
191
- cls.generate_string(
192
- charset,
193
- size=letter_per_block,
194
- times=number_of_block,
195
- unique=False,
196
- string_type_if_1=False,
197
- )
198
- )
199
- logger.debug(out)
200
- return out
201
-
202
- @staticmethod
203
- def generate_check_digit(number: int) -> int:
204
- """
205
- Check digit generator
206
-
207
- "A check digit is a form of redundancy check used for
208
- error detection on identification numbers, such as
209
- bank account numbers, which are used in an application
210
- where they will at least sometimes be input manually.
211
- It is analogous to a binary parity bit used to
212
- check for errors in computer-generated data.
213
- It consists of one or more digits (or letters) computed
214
- by an algorithm from the other digits (or letters) in the sequence input.
215
- With a check digit, one can detect simple errors in
216
- the input of a series of characters (usually digits)
217
- such as a single mistyped digit or some permutations
218
- of two successive digits." (Wikipedia)
219
-
220
- This function use Luhn's algorithm to calculate
221
-
222
- Parameters
223
- ----------
224
- number : int
225
- Number to calculate check digit
226
-
227
- Returns
228
- -------
229
- int
230
- Check digit
231
-
232
-
233
- Example:
234
- --------
235
- >>> Generator.generate_check_digit("4129984562545")
236
- 7
237
- """
238
-
239
- logger.debug(f"Base: {number}")
240
- # turn into list then reverse the order
241
- num = list(str(number))[::-1]
242
- sum = 0
243
- logger.debug(f"Reversed: {''.join(num)}")
244
- for i in range(len(num)):
245
- # convert back into integer
246
- num[i] = int(num[i]) # type: ignore
247
- if i % 2 == 0:
248
- # double value of the even-th digit
249
- num[i] *= 2
250
- # sum the character of digit if it's >= 10
251
- if num[i] >= 10: # type: ignore
252
- num[i] -= 9 # type: ignore
253
- sum += num[i] # type: ignore
254
- logger.debug(f"Loop {i + 1}: {num[i]}, {sum}")
255
-
256
- out = (10 - (sum % 10)) % 10
257
- logger.debug(f"Output: {out}")
258
- return out
259
-
260
- @staticmethod
261
- def combinations_range(
262
- sequence: list, *, min_len: int = 1, max_len: int = 0
263
- ) -> list[tuple]:
264
- """
265
- Generate all combinations of a ``sequence`` from ``min_len`` to ``max_len``
266
-
267
- Parameters
268
- ----------
269
- sequence : list
270
- A sequence that need to generate combination
271
-
272
- min_len : int
273
- Minimum ``r`` of ``combinations``
274
- (Default: ``1``)
275
-
276
- max_len : int
277
- Maximum ``r`` of ``combinations``
278
- (Default: ``0`` - len of ``sequence``)
279
-
280
- Returns
281
- -------
282
- list[tuple]
283
- A list of all combinations from range(``min_len``, ``max_len``) of ``sequence``
284
-
285
-
286
- Example:
287
- --------
288
- >>> Generator.combinations_range([1, 2, 3], min_len=2)
289
- [(1, 2), (1, 3), (2, 3), (1, 2, 3)]
290
- """
291
- # Restrain
292
- if max_len < 1:
293
- max_len = len(sequence)
294
- max_len = int(set_max(max_len, max_value=len(sequence)))
295
- min_len = int(set_min_max(min_len, min_value=1, max_value=max_len))
296
- logger.debug(f"Combination range: [{min_len}, {max_len}]")
297
-
298
- # Return
299
- return list(
300
- chain.from_iterable(
301
- [list(combinations(sequence, i)) for i in range(min_len, max_len + 1)]
302
- )
303
- )
@@ -1,68 +0,0 @@
1
- absfuyu/__init__.py,sha256=0fFKIm3iQEyqB0IdZIIqBe5bF7CCRl7ZD4mxwa_GxF0,600
2
- absfuyu/__main__.py,sha256=vUKjwcjMvynbeygRLuXWMKR2vR7CndZ496xx2Qzb6xk,603
3
- absfuyu/logger.py,sha256=VP9-sXtGVyDkHUyRSaGUfCrl_wn8wOnmtCLcUNec-yg,13043
4
- absfuyu/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- absfuyu/sort.py,sha256=WjH0asrvl02TMlAhG77X-wGcGHIIQd-jWU_Xv9Xv-qc,3250
6
- absfuyu/version.py,sha256=KMaeXNl93L4VU2RnTySoFv23IDyTvHfy84nyatFcKaE,14128
7
- absfuyu/cli/__init__.py,sha256=mYX6lVAat9UOI9qR-ZDFw_4WOLVA9r-jTtW8d2fBEKM,1181
8
- absfuyu/cli/color.py,sha256=Cvpqwc5mb4-71OplswgfxmJ8D9jf9gkjM7l3qV902X0,774
9
- absfuyu/cli/config_group.py,sha256=FsyYm2apSyAA2PAD12CpHAizenRds_QlLf8j0AlLuVo,1230
10
- absfuyu/cli/do_group.py,sha256=QBOL3Z6E70-_kPOivaH160lmFyOL2Zl70Qjda_fV0Fc,2131
11
- absfuyu/cli/game_group.py,sha256=ySpL2hm4VCplhNY0s22kBGI5eFCdJj9fm1T58yftU74,2348
12
- absfuyu/cli/tool_group.py,sha256=ZruYcBLCjP2G0CgyE19WsRJ2kn2H1fKEZ0pa0KF6tyI,3164
13
- absfuyu/config/__init__.py,sha256=yWN-TguDXcWJg5EiCGRnKLsTZQfIYvKVHhzASNp2S0s,8238
14
- absfuyu/config/config.json,sha256=-ZQnmDuLq0aAFfsrQbSNR3tq5k9Eu9IVUQgYD9htIQM,646
15
- absfuyu/core/__init__.py,sha256=oZpRrxIU66dN4UYO61TM72oE0Ijs_3wajdYCg12SJlw,1186
16
- absfuyu/core/baseclass.py,sha256=t5oyfwBw5Mm5wLp2o_JnTNx0v9njEb_OeRlzOTbc5KM,10204
17
- absfuyu/core/baseclass2.py,sha256=5meEqRk0pPoDlhA0_qti_-p-fHvxT6XqwitHLpFVl_Q,5366
18
- absfuyu/core/decorator.py,sha256=MpmgAb1gsXgRDEyMJLvSxUWEG0WC4aTFYJAEwjdauAI,1901
19
- absfuyu/core/docstring.py,sha256=2TmPXXtJKszfBPPHXDMPjrTCpVFwxmS8J5XhWb4myNc,5228
20
- absfuyu/core/dummy_cli.py,sha256=_-Gsmg2beO7fTSP-3nSGwqVmiVKpzTICIuHfGetQbw8,1884
21
- absfuyu/core/dummy_func.py,sha256=AS7kgMWeXZoYF94gocyydAfkyOM7W2v1F9wNQ40ta-Q,1097
22
- absfuyu/dxt/__init__.py,sha256=IHTjk-GdeKp5s9mhH87WUrHVb9gY34WUzrjQEw0q9II,986
23
- absfuyu/dxt/dictext.py,sha256=_q45v98x2sB38QBROg-Fbd6Aw63HO5hPIEJENI39d-E,5998
24
- absfuyu/dxt/dxt_support.py,sha256=dWMbFYiRUhX9QHxChYo_YzwCywylUi1R5h28y13Wn4I,2109
25
- absfuyu/dxt/intext.py,sha256=wMmjt24c-0Kk3gJx1ln0ULNdrxmgeDh3zUOUTD6cQBo,16716
26
- absfuyu/dxt/listext.py,sha256=lqWVQ1uBZ3zm0d1S0oVz0qjTagbucZjQ3htcFzc24tg,13964
27
- absfuyu/dxt/strext.py,sha256=UDS818z4Rv92gCgdlfz_ibr3vsip6Sgxp-yfI8JyPho,14628
28
- absfuyu/extra/__init__.py,sha256=lyJwiRHvCL3qNYKK9mbjNrzIHGDPERyfwl8_V6g4PEE,182
29
- absfuyu/extra/beautiful.py,sha256=llxgAYco5-bg6VC1kMwA7VyCSJgu4LdCHBG0pM1PWs8,8072
30
- absfuyu/extra/data_analysis.py,sha256=0zfjWm3t1nyp0n0rsPKzWmcR0ZvF7BpQsjn9niGqhps,32005
31
- absfuyu/fun/__init__.py,sha256=tDSDIDHrJPQ_hWV7ASpbAUCIQ6B1t1IPq4ahrZQqfWk,5435
32
- absfuyu/fun/tarot.py,sha256=E9NKwhebU4EGOcbQkt4Ni7o6ZIYq8-h7_Fz3jk0Arpw,2401
33
- absfuyu/game/__init__.py,sha256=tkNxTbdkPtAhGEdqXFQARHYApEhcD68CeDF_oHMzVeA,4691
34
- absfuyu/game/game_stat.py,sha256=mOs6UOvNUmr-vNOomNJK0lY9o9m9Rs0b9GEMGeXaAdE,1236
35
- absfuyu/game/sudoku.py,sha256=ascN8ey7SimldXT8ae3AWv4bxlfwT4X14JdmxY2o808,10405
36
- absfuyu/game/tictactoe.py,sha256=_JLeIhxHEIDLRJay7i1kagxx8kCDhZNgTrXt7Rl0ntc,9960
37
- absfuyu/game/wordle.py,sha256=izvV_lOZwPnslDdQ73PnwD5t5ECKVWGhpZvHAZH-2EY,101576
38
- absfuyu/general/__init__.py,sha256=EITlDmPAp6lcAWR9Bq707j4FZ9jAD9PblftOK1XvGDA,480
39
- absfuyu/general/content.py,sha256=wGzYufji8PmHy6ygGFclf_u6DZudnYaeHtR9d2of_1E,17122
40
- absfuyu/general/generator.py,sha256=C54TJ3DZ5TXFYRI7_jLdtjTMcWxACX4Jmlo27Zh90Ew,8996
41
- absfuyu/general/human.py,sha256=o1TswjgN8zRfCmkEgchS1HVq036twBB64u1Dt4KLI1I,8099
42
- absfuyu/general/shape.py,sha256=dAYSihPnanax4jMPSvZMIzMbo9puvxIqdQxuSlDLl4I,38619
43
- absfuyu/pkg_data/__init__.py,sha256=Jn8fHDsPCd8w4YoOo3EpoExxda5BRAjHQJRdYwwTYeA,5510
44
- absfuyu/pkg_data/chemistry.pkl,sha256=kYWNa_PVffoDnzT8b9Jvimmf_GZshPe1D-SnEKERsLo,4655
45
- absfuyu/pkg_data/deprecated.py,sha256=L1ju3m_P8DbqQ1l18XgneVixorWiLJ5HeKh_K3wovXM,4349
46
- absfuyu/pkg_data/passwordlib_lzma.pkl,sha256=rT5lJT8t42BATU5Cp2qFwbnZkbx-QlUgodSvR0wFY6I,891877
47
- absfuyu/pkg_data/tarot.pkl,sha256=ssXTCC_BQgslO5F-3a9HivbxFQ6BioIe2E1frPVi2m0,56195
48
- absfuyu/tools/__init__.py,sha256=g6-2banBKxGfAbsVTd-OZhLujixXApsQmx2RlAB_aGE,118
49
- absfuyu/tools/checksum.py,sha256=1WLC9GGmjehxhhV-BgdxJbA45QhN850u_znOgwoYDP0,5156
50
- absfuyu/tools/converter.py,sha256=tdDQpdzbB9RdcZIlcV6LzldDkVEiwCFzRoWCfJVCpn4,11615
51
- absfuyu/tools/keygen.py,sha256=JxhUiiaUHaGqVicXY46JjVrH3ke2QlnsRJqgIvlxUsg,7115
52
- absfuyu/tools/obfuscator.py,sha256=vy_nIyQeDci6vHFbHL907Ha6RUZm9axsSZw_nKyyYBc,12687
53
- absfuyu/tools/passwordlib.py,sha256=jEmKW63fTyGOtBPPVi44fMtcNu1W7m2Qkox-GHxTxH4,9632
54
- absfuyu/tools/shutdownizer.py,sha256=z5z5ofdAtOBat1m7lz95FwXZI0fMarl2mChBMwUMi4I,8549
55
- absfuyu/tools/web.py,sha256=rVF-60IT8J_RVxMPzz5bhgBq3i1WmwbR5ouzQ_CZwhQ,1240
56
- absfuyu/util/__init__.py,sha256=3Ylck5HBHAhFd_B_v6Bh3C1qyI1M0Kk9sK9nNIBLHqU,3831
57
- absfuyu/util/api.py,sha256=xXwffnpq1qxBIag_MOriKe3ueaCdsaq-WFRIH-8yFqI,4288
58
- absfuyu/util/json_method.py,sha256=a4xVabcw18HBLJthkmf5KNUcQya45-A8AFEpcGIDx3Q,2197
59
- absfuyu/util/lunar.py,sha256=8dxXdGU7V_5L9fOeq36oKDzs_DcLnIiFwIpHa1O22yc,13630
60
- absfuyu/util/path.py,sha256=0hRzobegpblgCIluy9wXFNCwlDoovz_ccVCwaVqvgo8,16434
61
- absfuyu/util/performance.py,sha256=aN_0WGJfupqh8FdgsEU4llkDpUNAlojlWXtlRGMFmJE,8585
62
- absfuyu/util/shorten_number.py,sha256=7-uH4zwy594pVnqqGe75IoS7vqEXx3DIA9nRl8hrQpw,7788
63
- absfuyu/util/zipped.py,sha256=fXLVt4hnIgN2hwhvbwxzYQC1r--RX2Hgb429r767WDI,2979
64
- absfuyu-5.0.0.dist-info/METADATA,sha256=J29q7jABMmx_LkCQVw9aL9BYsGk3QdTBsA4W0WyeF2s,4839
65
- absfuyu-5.0.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
66
- absfuyu-5.0.0.dist-info/entry_points.txt,sha256=bW5CgJRTTWJ2Pywojo07sf-YucRPcnHzMmETh5avbX0,79
67
- absfuyu-5.0.0.dist-info/licenses/LICENSE,sha256=pFCHBSNSzdXwYG1AHpq7VcofI1NMQ1Fc77RzZ4Ln2O4,1097
68
- absfuyu-5.0.0.dist-info/RECORD,,