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.

Files changed (42) hide show
  1. absfuyu/__init__.py +13 -10
  2. absfuyu/__main__.py +55 -38
  3. absfuyu/config/config.json +3 -3
  4. absfuyu/core.py +39 -25
  5. absfuyu/everything.py +4 -5
  6. absfuyu/extensions/__init__.py +3 -2
  7. absfuyu/extensions/dev/__init__.py +162 -19
  8. absfuyu/extensions/dev/password_hash.py +11 -10
  9. absfuyu/extensions/dev/passwordlib.py +256 -0
  10. absfuyu/extensions/dev/pkglib.py +53 -57
  11. absfuyu/extensions/dev/project_starter.py +58 -0
  12. absfuyu/extensions/dev/shutdownizer.py +8 -0
  13. absfuyu/extensions/extra/data_analysis.py +687 -119
  14. absfuyu/fun/__init__.py +88 -118
  15. absfuyu/fun/tarot.py +32 -34
  16. absfuyu/game/tictactoe2.py +90 -78
  17. absfuyu/{collections → general}/__init__.py +14 -12
  18. absfuyu/{collections → general}/content.py +105 -87
  19. absfuyu/{collections → general}/data_extension.py +652 -172
  20. absfuyu/{collections → general}/generator.py +65 -4
  21. absfuyu/{collections → general}/human.py +28 -3
  22. absfuyu/pkg_data/__init__.py +14 -36
  23. absfuyu/pkg_data/chemistry.pkl +0 -0
  24. absfuyu/pkg_data/tarot.pkl +0 -0
  25. absfuyu/tools/converter.py +58 -31
  26. absfuyu/tools/obfuscator.py +4 -4
  27. absfuyu/tools/stats.py +4 -4
  28. absfuyu/tools/web.py +2 -2
  29. absfuyu/util/lunar.py +144 -123
  30. absfuyu/util/path.py +22 -3
  31. absfuyu/util/performance.py +101 -14
  32. absfuyu/version.py +93 -84
  33. {absfuyu-2.8.1.dist-info → absfuyu-3.1.0.dist-info}/METADATA +63 -33
  34. absfuyu-3.1.0.dist-info/RECORD +55 -0
  35. {absfuyu-2.8.1.dist-info → absfuyu-3.1.0.dist-info}/WHEEL +1 -1
  36. absfuyu-3.1.0.dist-info/entry_points.txt +2 -0
  37. absfuyu/pkg_data/chemistry.json +0 -6268
  38. absfuyu/pkg_data/tarot.json +0 -2593
  39. absfuyu-2.8.1.dist-info/RECORD +0 -52
  40. absfuyu-2.8.1.dist-info/entry_points.txt +0 -2
  41. {absfuyu-2.8.1.dist-info → absfuyu-3.1.0.dist-info}/LICENSE +0 -0
  42. {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.4
7
- Date updated: 24/11/2023 (dd/mm/yyyy)
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
- day: int,
26
- month: int,
27
- zodiac13: bool = False,
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
- month == 2 and day <= 18
64
- ]), # 20/1-18/2
65
- "Pisces": any([
66
- month == 2 and day >= 19,
67
- month == 3 and day <= 20
68
- ]), # 19/2-20/3
69
- "Aries": any([
70
- month == 3 and day >= 21,
71
- month == 4 and day <= 19
72
- ]), # 21/3-19/4
73
- "Taurus": any([
74
- month == 4 and day >= 20,
75
- month == 5 and day <= 20
76
- ]), # 20/4-20/5
77
- "Gemini": any([
78
- month == 5 and day >= 21,
79
- month == 6 and day <= 20
80
- ]), # 21/5-20/6
81
- "Cancer": any([
82
- month == 6 and day >= 21,
83
- month == 7 and day <= 22
84
- ]), # 21/6-22/7
85
- "Leo": any([
86
- month == 7 and day >= 23,
87
- month == 8 and day <= 22
88
- ]), # 23/7-22/8
89
- "Virgo": any([
90
- month == 8 and day >= 23,
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: # 13 zodiac signs
92
+
93
+ if zodiac13: # 13 zodiac signs
112
94
  zodiac = {
113
- "Aquarius": any([
114
- month == 2 and day >= 17,
115
- month == 3 and day <= 11
116
- ]), # 17/2-11/3
117
- "Pisces": any([
118
- month == 3 and day >= 12,
119
- month == 4 and day <= 18
120
- ]), # 12/3-18-4
121
- "Aries": any([
122
- month == 4 and day >= 19,
123
- month == 5 and day <= 13
124
- ]), # 19/4-13-5
125
- "Taurus": any([
126
- month == 5 and day >= 14,
127
- month == 6 and day <= 21
128
- ]), # 14/5-21/6
129
- "Gemini": any([
130
- month == 6 and day >= 22,
131
- month == 7 and day <= 20
132
- ]), # 22/6-20/7
133
- "Cancer": any([
134
- month == 7 and day >= 21,
135
- month == 8 and day <= 10
136
- ]), # 21/7-10/8
137
- "Leo": any([
138
- month == 8 and day >= 11,
139
- month == 9 and day <= 16
140
- ]), # 11/8-16/9
141
- "Virgo": any([
142
- month == 9 and day >= 17,
143
- month == 10 and day <= 30
144
- ]), # 17/9-30/10
145
- "Libra": any([
146
- month == 10 and day >= 31,
147
- month == 11 and day <= 23
148
- ]), # 31/10-23/11
149
- "Scorpio": any([
150
- month == 11 and day >= 24,
151
- month == 11 and day <= 29
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.1
8
- Date updated: 24/11/2023 (dd/mm/yyyy)
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.util.api import APIRequest
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
- self,
40
- name: str,
41
- rank: int,
42
- suit: str,
43
- meanings: Dict[str, List[str]],
44
- keywords: List[str],
45
- fortune_telling: List[str]
46
- ) -> None:
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.data = APIRequest(
63
- "https://raw.githubusercontent.com/dariusk/corpora/master/data/divination/tarot_interpretations.json",
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
- def _load(self, update: bool = False) -> List[TarotCard]:
71
+ @property
72
+ def tarot_deck(self) -> List[TarotCard]:
73
73
  """
74
- Load tarot json data from API
74
+ Load pickled tarot data
75
75
 
76
- update: refresh the cache
76
+ :rtype: list[TarotCard]
77
77
  """
78
- json_data = self.data.fetch_data(
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
- ) for x in tarot_data
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._load())
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