absfuyu 2.8.1__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.
- absfuyu/__init__.py +13 -10
- absfuyu/__main__.py +55 -38
- absfuyu/config/config.json +3 -3
- absfuyu/core.py +39 -25
- absfuyu/everything.py +4 -5
- absfuyu/extensions/__init__.py +3 -2
- absfuyu/extensions/dev/__init__.py +162 -19
- absfuyu/extensions/dev/password_hash.py +11 -10
- absfuyu/extensions/dev/passwordlib.py +256 -0
- absfuyu/extensions/dev/pkglib.py +53 -57
- absfuyu/extensions/dev/project_starter.py +58 -0
- absfuyu/extensions/dev/shutdownizer.py +8 -0
- absfuyu/extensions/extra/data_analysis.py +687 -119
- absfuyu/fun/__init__.py +88 -118
- absfuyu/fun/tarot.py +32 -34
- absfuyu/game/tictactoe2.py +90 -78
- absfuyu/{collections → general}/__init__.py +14 -12
- absfuyu/{collections → general}/content.py +105 -87
- absfuyu/{collections → general}/data_extension.py +652 -172
- absfuyu/{collections → general}/generator.py +65 -4
- absfuyu/{collections → general}/human.py +28 -3
- absfuyu/pkg_data/__init__.py +14 -36
- absfuyu/pkg_data/chemistry.pkl +0 -0
- absfuyu/pkg_data/tarot.pkl +0 -0
- absfuyu/tools/converter.py +58 -31
- absfuyu/tools/obfuscator.py +4 -4
- absfuyu/tools/stats.py +4 -4
- absfuyu/tools/web.py +2 -2
- absfuyu/util/lunar.py +144 -123
- absfuyu/util/path.py +22 -3
- absfuyu/util/performance.py +101 -14
- absfuyu/version.py +93 -84
- {absfuyu-2.8.1.dist-info → absfuyu-3.1.0.dist-info}/METADATA +63 -33
- absfuyu-3.1.0.dist-info/RECORD +55 -0
- {absfuyu-2.8.1.dist-info → absfuyu-3.1.0.dist-info}/WHEEL +1 -1
- absfuyu-3.1.0.dist-info/entry_points.txt +2 -0
- absfuyu/pkg_data/chemistry.json +0 -6268
- absfuyu/pkg_data/tarot.json +0 -2593
- absfuyu-2.8.1.dist-info/RECORD +0 -52
- absfuyu-2.8.1.dist-info/entry_points.txt +0 -2
- {absfuyu-2.8.1.dist-info → absfuyu-3.1.0.dist-info}/LICENSE +0 -0
- {absfuyu-2.8.1.dist-info → absfuyu-3.1.0.dist-info}/top_level.txt +0 -0
absfuyu/fun/__init__.py
CHANGED
|
@@ -3,8 +3,8 @@ Absfuyu: Fun
|
|
|
3
3
|
------------
|
|
4
4
|
Some fun or weird stuff
|
|
5
5
|
|
|
6
|
-
Version: 1.0.
|
|
7
|
-
Date updated:
|
|
6
|
+
Version: 1.0.5
|
|
7
|
+
Date updated: 27/11/2023 (dd/mm/yyyy)
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
|
|
@@ -22,10 +22,10 @@ from absfuyu.util.lunar import LunarCalendar
|
|
|
22
22
|
# Function
|
|
23
23
|
###########################################################################
|
|
24
24
|
def zodiac_sign(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
day: int,
|
|
26
|
+
month: int,
|
|
27
|
+
zodiac13: bool = False,
|
|
28
|
+
):
|
|
29
29
|
"""
|
|
30
30
|
Calculate zodiac sign
|
|
31
31
|
|
|
@@ -33,10 +33,10 @@ def zodiac_sign(
|
|
|
33
33
|
----------
|
|
34
34
|
day : int
|
|
35
35
|
Day (in range [1, 31])
|
|
36
|
-
|
|
36
|
+
|
|
37
37
|
month : int
|
|
38
38
|
Month (in range [1, 12])
|
|
39
|
-
|
|
39
|
+
|
|
40
40
|
zodiac13 : bool
|
|
41
41
|
13 zodiacs mode (Default: ``False``)
|
|
42
42
|
|
|
@@ -44,7 +44,7 @@ def zodiac_sign(
|
|
|
44
44
|
-------
|
|
45
45
|
str
|
|
46
46
|
Zodiac sign
|
|
47
|
-
|
|
47
|
+
|
|
48
48
|
None
|
|
49
49
|
When failed
|
|
50
50
|
"""
|
|
@@ -58,122 +58,92 @@ def zodiac_sign(
|
|
|
58
58
|
raise SystemExit("Value out of range")
|
|
59
59
|
|
|
60
60
|
zodiac = {
|
|
61
|
-
"Aquarius": any(
|
|
62
|
-
month == 1 and day >= 20,
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
month ==
|
|
76
|
-
|
|
77
|
-
"
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
month ==
|
|
84
|
-
|
|
85
|
-
"
|
|
86
|
-
month ==
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
month == 9 and day <= 22
|
|
92
|
-
]), # 23/8-22/9
|
|
93
|
-
"Libra": any([
|
|
94
|
-
month == 9 and day >= 23,
|
|
95
|
-
month == 10 and day <= 22
|
|
96
|
-
]), # 23/9-22/10
|
|
97
|
-
"Scorpio": any([
|
|
98
|
-
month == 10 and day >= 23,
|
|
99
|
-
month == 11 and day <= 21
|
|
100
|
-
]), # 23/10-21/11
|
|
101
|
-
"Sagittarius":any([
|
|
102
|
-
month == 11 and day >= 22,
|
|
103
|
-
month == 12 and day <= 21
|
|
104
|
-
]), # 22/11-21/12
|
|
105
|
-
"Capricorn": any([
|
|
106
|
-
month == 12 and day >= 22,
|
|
107
|
-
month == 1 and day <= 19
|
|
108
|
-
]), # 22/12-19/1
|
|
61
|
+
"Aquarius": any(
|
|
62
|
+
[month == 1 and day >= 20, month == 2 and day <= 18]
|
|
63
|
+
), # 20/1-18/2
|
|
64
|
+
"Pisces": any(
|
|
65
|
+
[month == 2 and day >= 19, month == 3 and day <= 20]
|
|
66
|
+
), # 19/2-20/3
|
|
67
|
+
"Aries": any([month == 3 and day >= 21, month == 4 and day <= 19]), # 21/3-19/4
|
|
68
|
+
"Taurus": any(
|
|
69
|
+
[month == 4 and day >= 20, month == 5 and day <= 20]
|
|
70
|
+
), # 20/4-20/5
|
|
71
|
+
"Gemini": any(
|
|
72
|
+
[month == 5 and day >= 21, month == 6 and day <= 20]
|
|
73
|
+
), # 21/5-20/6
|
|
74
|
+
"Cancer": any(
|
|
75
|
+
[month == 6 and day >= 21, month == 7 and day <= 22]
|
|
76
|
+
), # 21/6-22/7
|
|
77
|
+
"Leo": any([month == 7 and day >= 23, month == 8 and day <= 22]), # 23/7-22/8
|
|
78
|
+
"Virgo": any([month == 8 and day >= 23, month == 9 and day <= 22]), # 23/8-22/9
|
|
79
|
+
"Libra": any(
|
|
80
|
+
[month == 9 and day >= 23, month == 10 and day <= 22]
|
|
81
|
+
), # 23/9-22/10
|
|
82
|
+
"Scorpio": any(
|
|
83
|
+
[month == 10 and day >= 23, month == 11 and day <= 21]
|
|
84
|
+
), # 23/10-21/11
|
|
85
|
+
"Sagittarius": any(
|
|
86
|
+
[month == 11 and day >= 22, month == 12 and day <= 21]
|
|
87
|
+
), # 22/11-21/12
|
|
88
|
+
"Capricorn": any(
|
|
89
|
+
[month == 12 and day >= 22, month == 1 and day <= 19]
|
|
90
|
+
), # 22/12-19/1
|
|
109
91
|
}
|
|
110
|
-
|
|
111
|
-
if zodiac13:
|
|
92
|
+
|
|
93
|
+
if zodiac13: # 13 zodiac signs
|
|
112
94
|
zodiac = {
|
|
113
|
-
"Aquarius": any(
|
|
114
|
-
month == 2 and day >= 17,
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
month == 5 and day <=
|
|
124
|
-
|
|
125
|
-
"
|
|
126
|
-
month ==
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
month ==
|
|
136
|
-
|
|
137
|
-
"
|
|
138
|
-
month ==
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
month ==
|
|
148
|
-
|
|
149
|
-
"
|
|
150
|
-
month ==
|
|
151
|
-
|
|
152
|
-
]), # 24/11-29/11
|
|
153
|
-
"Ophiuchus": any([
|
|
154
|
-
month == 11 and day >= 30,
|
|
155
|
-
month == 12 and day <= 17
|
|
156
|
-
]), # 30/11-17/12
|
|
157
|
-
"Sagittarius":any([
|
|
158
|
-
month == 12 and day >= 18,
|
|
159
|
-
month == 1 and day <= 20
|
|
160
|
-
]), # 18/12-20/1
|
|
161
|
-
"Capricorn": any([
|
|
162
|
-
month == 1 and day >= 21,
|
|
163
|
-
month == 2 and day <= 16
|
|
164
|
-
]), # 21/1-16/2
|
|
95
|
+
"Aquarius": any(
|
|
96
|
+
[month == 2 and day >= 17, month == 3 and day <= 11]
|
|
97
|
+
), # 17/2-11/3
|
|
98
|
+
"Pisces": any(
|
|
99
|
+
[month == 3 and day >= 12, month == 4 and day <= 18]
|
|
100
|
+
), # 12/3-18-4
|
|
101
|
+
"Aries": any(
|
|
102
|
+
[month == 4 and day >= 19, month == 5 and day <= 13]
|
|
103
|
+
), # 19/4-13-5
|
|
104
|
+
"Taurus": any(
|
|
105
|
+
[month == 5 and day >= 14, month == 6 and day <= 21]
|
|
106
|
+
), # 14/5-21/6
|
|
107
|
+
"Gemini": any(
|
|
108
|
+
[month == 6 and day >= 22, month == 7 and day <= 20]
|
|
109
|
+
), # 22/6-20/7
|
|
110
|
+
"Cancer": any(
|
|
111
|
+
[month == 7 and day >= 21, month == 8 and day <= 10]
|
|
112
|
+
), # 21/7-10/8
|
|
113
|
+
"Leo": any(
|
|
114
|
+
[month == 8 and day >= 11, month == 9 and day <= 16]
|
|
115
|
+
), # 11/8-16/9
|
|
116
|
+
"Virgo": any(
|
|
117
|
+
[month == 9 and day >= 17, month == 10 and day <= 30]
|
|
118
|
+
), # 17/9-30/10
|
|
119
|
+
"Libra": any(
|
|
120
|
+
[month == 10 and day >= 31, month == 11 and day <= 23]
|
|
121
|
+
), # 31/10-23/11
|
|
122
|
+
"Scorpio": any(
|
|
123
|
+
[month == 11 and day >= 24, month == 11 and day <= 29]
|
|
124
|
+
), # 24/11-29/11
|
|
125
|
+
"Ophiuchus": any(
|
|
126
|
+
[month == 11 and day >= 30, month == 12 and day <= 17]
|
|
127
|
+
), # 30/11-17/12
|
|
128
|
+
"Sagittarius": any(
|
|
129
|
+
[month == 12 and day >= 18, month == 1 and day <= 20]
|
|
130
|
+
), # 18/12-20/1
|
|
131
|
+
"Capricorn": any(
|
|
132
|
+
[month == 1 and day >= 21, month == 2 and day <= 16]
|
|
133
|
+
), # 21/1-16/2
|
|
165
134
|
}
|
|
166
135
|
|
|
167
136
|
logger.debug(zodiac)
|
|
168
|
-
|
|
137
|
+
|
|
169
138
|
for k, v in zodiac.items():
|
|
170
139
|
if v is True:
|
|
171
140
|
return k
|
|
172
141
|
|
|
142
|
+
|
|
173
143
|
def im_bored() -> str:
|
|
174
144
|
"""
|
|
175
145
|
Get random activity from ``boredapi`` website
|
|
176
|
-
|
|
146
|
+
|
|
177
147
|
:rtype: str
|
|
178
148
|
"""
|
|
179
149
|
try:
|
|
@@ -209,12 +179,12 @@ def force_shutdown():
|
|
|
209
179
|
def happy_new_year(forced: bool = False, include_lunar: bool = False):
|
|
210
180
|
"""
|
|
211
181
|
Only occurs on 01/01 every year
|
|
212
|
-
|
|
182
|
+
|
|
213
183
|
Parameters
|
|
214
184
|
----------
|
|
215
185
|
forced : bool
|
|
216
186
|
Shutdown ASAP (Default: ``False``)
|
|
217
|
-
|
|
187
|
+
|
|
218
188
|
include_lunar : bool
|
|
219
189
|
Include Lunar New Year (Default: ``False``)
|
|
220
190
|
"""
|
|
@@ -225,12 +195,12 @@ def happy_new_year(forced: bool = False, include_lunar: bool = False):
|
|
|
225
195
|
today = date.today()
|
|
226
196
|
m = today.month
|
|
227
197
|
d = today.day
|
|
228
|
-
solar_new_year = m==1 and d==1
|
|
198
|
+
solar_new_year = m == 1 and d == 1
|
|
229
199
|
logger.debug(f"Solar: {today}")
|
|
230
200
|
|
|
231
201
|
if include_lunar:
|
|
232
202
|
lunar = LunarCalendar.now().date
|
|
233
|
-
lunar_new_year = lunar.month==1 and lunar.day==1
|
|
203
|
+
lunar_new_year = lunar.month == 1 and lunar.day == 1
|
|
234
204
|
logger.debug(f"Lunar: {lunar}")
|
|
235
205
|
else:
|
|
236
206
|
lunar_new_year = False
|
|
@@ -245,4 +215,4 @@ def happy_new_year(forced: bool = False, include_lunar: bool = False):
|
|
|
245
215
|
# Run
|
|
246
216
|
###########################################################################
|
|
247
217
|
if __name__ == "__main__":
|
|
248
|
-
logger.setLevel(10)
|
|
218
|
+
logger.setLevel(10)
|
absfuyu/fun/tarot.py
CHANGED
|
@@ -4,8 +4,8 @@ Absfuyu: Tarot
|
|
|
4
4
|
Tarot stuff
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
Version: 1.0.
|
|
8
|
-
Date updated:
|
|
7
|
+
Version: 1.0.3
|
|
8
|
+
Date updated: 01/01/2024 (dd/mm/yyyy)
|
|
9
9
|
|
|
10
10
|
Usage:
|
|
11
11
|
------
|
|
@@ -15,10 +15,7 @@ Usage:
|
|
|
15
15
|
|
|
16
16
|
# Module level
|
|
17
17
|
###########################################################################
|
|
18
|
-
__all__ = [
|
|
19
|
-
"Tarot",
|
|
20
|
-
"TarotCard"
|
|
21
|
-
]
|
|
18
|
+
__all__ = ["Tarot", "TarotCard"]
|
|
22
19
|
|
|
23
20
|
|
|
24
21
|
# Library
|
|
@@ -26,62 +23,60 @@ __all__ = [
|
|
|
26
23
|
import random
|
|
27
24
|
from typing import Dict, List
|
|
28
25
|
|
|
29
|
-
from absfuyu.core import DATA_PATH
|
|
30
26
|
from absfuyu.logger import logger
|
|
31
|
-
from absfuyu.
|
|
27
|
+
from absfuyu.pkg_data import DataList
|
|
28
|
+
from absfuyu.util.pkl import Pickler
|
|
32
29
|
|
|
33
30
|
|
|
34
31
|
# Class
|
|
35
32
|
###########################################################################
|
|
36
33
|
class TarotCard:
|
|
37
34
|
"""Tarot card"""
|
|
35
|
+
|
|
38
36
|
def __init__(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
37
|
+
self,
|
|
38
|
+
name: str,
|
|
39
|
+
rank: int,
|
|
40
|
+
suit: str,
|
|
41
|
+
meanings: Dict[str, List[str]],
|
|
42
|
+
keywords: List[str],
|
|
43
|
+
fortune_telling: List[str],
|
|
44
|
+
) -> None:
|
|
47
45
|
self.name = name.title()
|
|
48
46
|
self.rank = rank
|
|
49
47
|
self.suit = suit
|
|
50
48
|
self.meanings = meanings
|
|
51
49
|
self.keywords = keywords
|
|
52
50
|
self.fortune_telling = fortune_telling
|
|
51
|
+
|
|
53
52
|
def __str__(self) -> str:
|
|
54
53
|
return f"{self.__class__.__name__}({self.name})"
|
|
54
|
+
|
|
55
55
|
def __repr__(self) -> str:
|
|
56
56
|
return self.__str__()
|
|
57
57
|
|
|
58
58
|
|
|
59
59
|
class Tarot:
|
|
60
60
|
"""Tarot data"""
|
|
61
|
+
|
|
61
62
|
def __init__(self) -> None:
|
|
62
|
-
self.
|
|
63
|
-
|
|
64
|
-
encoding="utf-8"
|
|
65
|
-
)
|
|
66
|
-
self.data_location = DATA_PATH.joinpath("tarot.json")
|
|
63
|
+
self.data_location = DataList.TAROT
|
|
64
|
+
|
|
67
65
|
def __str__(self) -> str:
|
|
68
66
|
return f"{self.__class__.__name__}()"
|
|
67
|
+
|
|
69
68
|
def __repr__(self) -> str:
|
|
70
69
|
return self.__str__()
|
|
71
70
|
|
|
72
|
-
|
|
71
|
+
@property
|
|
72
|
+
def tarot_deck(self) -> List[TarotCard]:
|
|
73
73
|
"""
|
|
74
|
-
Load tarot
|
|
74
|
+
Load pickled tarot data
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
:rtype: list[TarotCard]
|
|
77
77
|
"""
|
|
78
|
-
|
|
79
|
-
update=update,
|
|
80
|
-
json_cache=self.data_location
|
|
81
|
-
)
|
|
82
|
-
tarot_data = json_data["tarot_interpretations"]
|
|
78
|
+
tarot_data: list = Pickler.load(self.data_location)
|
|
83
79
|
logger.debug(f"{len(tarot_data)} tarot cards loaded")
|
|
84
|
-
# return tarot_data
|
|
85
80
|
return [
|
|
86
81
|
TarotCard(
|
|
87
82
|
name=x["name"],
|
|
@@ -89,10 +84,11 @@ class Tarot:
|
|
|
89
84
|
suit=x["suit"],
|
|
90
85
|
meanings=x["meanings"],
|
|
91
86
|
keywords=x["keywords"],
|
|
92
|
-
fortune_telling=x["fortune_telling"]
|
|
93
|
-
)
|
|
87
|
+
fortune_telling=x["fortune_telling"],
|
|
88
|
+
)
|
|
89
|
+
for x in tarot_data
|
|
94
90
|
]
|
|
95
|
-
|
|
91
|
+
|
|
96
92
|
def random_card(self) -> TarotCard:
|
|
97
93
|
"""
|
|
98
94
|
Pick a random tarot card
|
|
@@ -102,9 +98,11 @@ class Tarot:
|
|
|
102
98
|
TarotCard
|
|
103
99
|
Random Tarot card
|
|
104
100
|
"""
|
|
105
|
-
return random.choice(self.
|
|
101
|
+
return random.choice(self.tarot_deck)
|
|
102
|
+
|
|
106
103
|
|
|
107
104
|
# Run
|
|
108
105
|
###########################################################################
|
|
109
106
|
if __name__ == "__main__":
|
|
107
|
+
logger.setLevel(10)
|
|
110
108
|
pass
|