FunKitPy 0.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.
- funkitpy/__init__.py +10 -0
- funkitpy/data/dad_jokes.json +402 -0
- funkitpy/data/jokes.json +402 -0
- funkitpy/data/roasts.json +422 -0
- funkitpy/jokes.py +17 -0
- funkitpy/roasts.py +12 -0
- funkitpy/version.py +1 -0
- funkitpy-0.1.0.dist-info/METADATA +197 -0
- funkitpy-0.1.0.dist-info/RECORD +12 -0
- funkitpy-0.1.0.dist-info/WHEEL +5 -0
- funkitpy-0.1.0.dist-info/licenses/LICENSE +201 -0
- funkitpy-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": 1,
|
|
4
|
+
"roast": "You're like a cloud. When you disappear, it's a beautiful day."
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
"id": 2,
|
|
8
|
+
"roast": "I'd agree with you but then we'd both be wrong."
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": 3,
|
|
12
|
+
"roast": "Your face makes onions cry."
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": 4,
|
|
16
|
+
"roast": "You're the reason the gene pool needs a lifeguard."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": 5,
|
|
20
|
+
"roast": "Mirrors can't talk, and lucky for you, they can't laugh either."
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": 6,
|
|
24
|
+
"roast": "I would smack you, but I'm strictly against animal abuse."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": 7,
|
|
28
|
+
"roast": "You're the reason gene pools need lifeguards."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": 8,
|
|
32
|
+
"roast": "I forgot the world revolves around you. My apologies! How silly of me."
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": 9,
|
|
36
|
+
"roast": "It's impossible to underestimate you."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": 10,
|
|
40
|
+
"roast": "If I throw a stick, will you chase it? I want out of this conversation."
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": 11,
|
|
44
|
+
"roast": "You're the reason we have to put instructions on shampoo bottles."
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": 12,
|
|
48
|
+
"roast": "I gave out all my trophies a while ago, but here's a participation award."
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": 13,
|
|
52
|
+
"roast": "You look like a 'before' picture in a weight-loss ad."
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"id": 14,
|
|
56
|
+
"roast": "I'm not saying I hate you, but I would unplug your life support to charge my phone."
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": 15,
|
|
60
|
+
"roast": "Keep rolling your eyes. Maybe you'll find a brain back there."
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": 16,
|
|
64
|
+
"roast": "Your birth certificate is an apology letter from the condom factory."
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": 17,
|
|
68
|
+
"roast": "I'd agree with you, but then we'd both be wrong."
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"id": 18,
|
|
72
|
+
"roast": "You are the human equivalent of a participation award."
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": 19,
|
|
76
|
+
"roast": "You're like a software update. Every time I see you, I immediately think 'Not now.'"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"id": 20,
|
|
80
|
+
"roast": "It's kind of sad how you spend so much time making an absolute fool of yourself."
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": 21,
|
|
84
|
+
"roast": "I'd explain it to you, but I don't have enough crayons."
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": 22,
|
|
88
|
+
"roast": "You are as useless as the 'ue' in queue."
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"id": 23,
|
|
92
|
+
"roast": "You're about as sharp as a bowling ball."
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"id": 24,
|
|
96
|
+
"roast": "If I had a face like yours, I'd sue my parents."
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": 25,
|
|
100
|
+
"roast": "I don't know what makes you so stupid, but it's definitely doing the job."
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"id": 26,
|
|
104
|
+
"roast": "I could eat a bowl of alphabet soup and take a better dump than whatever comes out of your mouth."
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"id": 27,
|
|
108
|
+
"roast": "You're the human version of a headache."
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": 28,
|
|
112
|
+
"roast": "I'm jealous of people who don't know you."
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"id": 29,
|
|
116
|
+
"roast": "You must have been born on a highway, because that's where most accidents happen."
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"id": 30,
|
|
120
|
+
"roast": "Is your middle name 'google' because you assume you have all the answers?"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": 31,
|
|
124
|
+
"roast": "I look at you and I think, 'Where have all the intelligent people gone?'"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"id": 32,
|
|
128
|
+
"roast": "You have a face made for radio."
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"id": 33,
|
|
132
|
+
"roast": "You look like the 'after' picture of a massive electrical fire."
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"id": 34,
|
|
136
|
+
"roast": "You're one of those people that makes life worth living... for other people."
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"id": 35,
|
|
140
|
+
"roast": "Some people bring joy wherever they go. You bring joy whenever you go."
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"id": 36,
|
|
144
|
+
"roast": "Your secrets are safe with me. I never listen to them anyway."
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"id": 37,
|
|
148
|
+
"roast": "You're a gray cloud disguised as a human."
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"id": 38,
|
|
152
|
+
"roast": "I'd love to stay and chat, but I'd rather do absolutely anything else."
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"id": 39,
|
|
156
|
+
"roast": "You're the human equivalent of a rainy Monday."
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"id": 40,
|
|
160
|
+
"roast": "You look like a potato that tried to be a human and failed halfway through."
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"id": 41,
|
|
164
|
+
"roast": "I've met a lot of pricks in my life, but you are the whole cactus."
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"id": 42,
|
|
168
|
+
"roast": "I'm glad to see you're not letting your education get in the way of your ignorance."
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"id": 43,
|
|
172
|
+
"roast": "You're about as useful as a screen door on a submarine."
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"id": 44,
|
|
176
|
+
"roast": "You have the perfect personality for a doormat."
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"id": 45,
|
|
180
|
+
"roast": "Every time you open your mouth, a part of my soul dies."
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"id": 46,
|
|
184
|
+
"roast": "You're a fascinating specimen of what happens when evolution takes a wrong turn."
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"id": 47,
|
|
188
|
+
"roast": "I'd love to insult you, but nature already did a phenomenal job."
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"id": 48,
|
|
192
|
+
"roast": "You look like you were dragged through a bush backwards by a pack of angry raccoons."
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"id": 49,
|
|
196
|
+
"roast": "I'm busy, but I'm never too busy to ignore you."
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"id": 50,
|
|
200
|
+
"roast": "You are a magnificent monument to human disappointment."
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"id": 51,
|
|
204
|
+
"roast": "I'd love to argue with you, but I prefer dealing with opponents who have a fighting chance."
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"id": 52,
|
|
208
|
+
"roast": "Your idea of a good time is probably a long walk off a short pier."
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"id": 53,
|
|
212
|
+
"roast": "You're the human version of a typo."
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"id": 54,
|
|
216
|
+
"roast": "If laughter is the best medicine, your face must be curing the world."
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"id": 55,
|
|
220
|
+
"roast": "You possess an astonishing ability to say absolutely nothing of value."
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
"id": 56,
|
|
224
|
+
"roast": "You look like you just realized you forgot how to breathe."
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"id": 57,
|
|
228
|
+
"roast": "You are a stellar example of why some people should never speak."
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"id": 58,
|
|
232
|
+
"roast": "Your personality is a lot like a broken pencil: completely pointless."
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"id": 59,
|
|
236
|
+
"roast": "I'd give you a nasty look, but it looks like you've already got one."
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"id": 60,
|
|
240
|
+
"roast": "You're one of those people that everyone is thinking about when they invent new rules."
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"id": 61,
|
|
244
|
+
"roast": "You look like someone who got hit in the face with a shovel."
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"id": 62,
|
|
248
|
+
"roast": "I'm not insulting you, I'm describing you."
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"id": 63,
|
|
252
|
+
"roast": "You are a classic example of too much personality and not enough brain."
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"id": 64,
|
|
256
|
+
"roast": "You're about as refreshing as a lukewarm glass of tap water."
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"id": 65,
|
|
260
|
+
"roast": "You look like the rough draft of a person."
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"id": 66,
|
|
264
|
+
"roast": "Your face could stop a clock, and not in a good way."
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"id": 67,
|
|
268
|
+
"roast": "I'm not saying you're ugly, but you probably shouldn't wear your face in public."
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"id": 68,
|
|
272
|
+
"roast": "You're the human equivalent of a buffering screen."
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"id": 69,
|
|
276
|
+
"roast": "If you were any slower, you'd be going backwards."
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"id": 70,
|
|
280
|
+
"roast": "You're the kind of person who needs a manual to open a banana."
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"id": 71,
|
|
284
|
+
"roast": "Your brain is always on vacation, and it never comes back with souvenirs."
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
"id": 72,
|
|
288
|
+
"roast": "You look like the kind of person who claps when the plane lands."
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"id": 73,
|
|
292
|
+
"roast": "You are the perfect example of why you should never judge a book by its cover, because the inside is just as disappointing."
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
"id": 74,
|
|
296
|
+
"roast": "You're the human equivalent of a participation trophy."
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"id": 75,
|
|
300
|
+
"roast": "I'd rather eat a bowl of nails than spend five minutes in your presence."
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"id": 76,
|
|
304
|
+
"roast": "Your face makes a great argument for contraception."
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"id": 77,
|
|
308
|
+
"roast": "You look like the 'before' picture in an antidepressant commercial."
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"id": 78,
|
|
312
|
+
"roast": "You're the reason people have trust issues."
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"id": 79,
|
|
316
|
+
"roast": "You have the charisma of a wet paper towel."
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
"id": 80,
|
|
320
|
+
"roast": "I'd love to tell you what I really think of you, but I don't have enough time or energy."
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"id": 81,
|
|
324
|
+
"roast": "You look like someone who got their sense of humor from a cereal box."
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
"id": 82,
|
|
328
|
+
"roast": "You're the kind of person who stands in the middle of a crowded hallway and wonders why everyone is bumping into you."
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"id": 83,
|
|
332
|
+
"roast": "Your thought process is like a game of ping-pong with no paddles."
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"id": 84,
|
|
336
|
+
"roast": "I'd love to debate you, but you've already brought nothing to the table."
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
"id": 85,
|
|
340
|
+
"roast": "You're one of those people who makes the world a darker place simply by existing in it."
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
"id": 86,
|
|
344
|
+
"roast": "You look like you've been practicing that blank stare for years."
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"id": 87,
|
|
348
|
+
"roast": "You're the human equivalent of a flat tire."
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"id": 88,
|
|
352
|
+
"roast": "Your conversation is like a trip to the dentist: painful and necessary to endure as quickly as possible."
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
"id": 89,
|
|
356
|
+
"roast": "I'd love to help you out, but I'd rather watch you struggle."
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"id": 90,
|
|
360
|
+
"roast": "You look like you were built by a committee that couldn't agree on anything."
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
"id": 91,
|
|
364
|
+
"roast": "You're a living, breathing testament to low standards."
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
"id": 92,
|
|
368
|
+
"roast": "Your jokes are like a broken record: repetitive and annoying."
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
"id": 93,
|
|
372
|
+
"roast": "I'm not ignoring you, I'm just prioritizing things that actually matter."
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
"id": 94,
|
|
376
|
+
"roast": "You look like the kind of person who orders a salad at a steakhouse."
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"id": 95,
|
|
380
|
+
"roast": "You're the human equivalent of an empty threat."
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"id": 96,
|
|
384
|
+
"roast": "Your opinions are like a dumpster fire: messy, smelly, and impossible to look away from."
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
"id": 97,
|
|
388
|
+
"roast": "I'd love to give you a piece of my mind, but I can't spare any."
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
"id": 98,
|
|
392
|
+
"roast": "You look like someone who got their fashion advice from a blindfolded toddler."
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
"id": 99,
|
|
396
|
+
"roast": "You're the kind of person who explains things to people who already know more than you."
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
"id": 100,
|
|
400
|
+
"roast": "Your voice is like nails on a chalkboard."
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
"id": 101,
|
|
404
|
+
"roast": "I'm not saying you're dumb, but you have terrible luck thinking."
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
"id": 102,
|
|
408
|
+
"roast": "You look like you just heard a joke and are still waiting for someone to explain it to you."
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"id": 103,
|
|
412
|
+
"roast": "You're the human equivalent of a spam email."
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
"id": 104,
|
|
416
|
+
"roast": "Your presence is a lot like a root canal: it hurts while it's happening and you're just glad it's over."
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
"id": 105,
|
|
420
|
+
"roast": "I'd love to give you the benefit of the doubt, but you've proven you don't deserve it."
|
|
421
|
+
}
|
|
422
|
+
]
|
funkitpy/jokes.py
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import random
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
DATA = Path(__file__).parent / "data"
|
|
6
|
+
|
|
7
|
+
with open(DATA / "jokes.json", encoding="utf-8") as f:
|
|
8
|
+
JOKES = json.load(f)
|
|
9
|
+
|
|
10
|
+
with open(DATA / "dad_jokes.json", encoding="utf-8") as f:
|
|
11
|
+
DAD_JOKES = json.load(f)
|
|
12
|
+
|
|
13
|
+
def joke() -> str:
|
|
14
|
+
return random.choice(JOKES)["joke"]
|
|
15
|
+
|
|
16
|
+
def dad_joke() -> str:
|
|
17
|
+
return random.choice(DAD_JOKES)["joke"]
|
funkitpy/roasts.py
ADDED
funkitpy/version.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.0"
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: FunKitPy
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A lightweight Python toolkit for fetching and generating jokes, dad jokes, and roasts.
|
|
5
|
+
Author: fmasterpro27
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
|
+
Project-URL: Homepage, https://github.com/fmasterpro27/FunKitPy
|
|
8
|
+
Project-URL: Repository, https://github.com/fmasterpro27/FunKitPy
|
|
9
|
+
Project-URL: Issues, https://github.com/fmasterpro27/FunKitPy/issues
|
|
10
|
+
Keywords: jokes,dad-jokes,roasts,fun
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
+
Requires-Python: >=3.8
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
License-File: LICENSE
|
|
18
|
+
Dynamic: license-file
|
|
19
|
+
|
|
20
|
+
# FunKitPy
|
|
21
|
+
|
|
22
|
+
> A lightweight Python library for jokes, dad jokes, and roasts — bring the laughs to your Python projects.
|
|
23
|
+
|
|
24
|
+
[](https://pypi.org/project/funkitpy/)
|
|
25
|
+
[](https://pypi.org/project/funkitpy/)
|
|
26
|
+
[](LICENSE)
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Table of Contents
|
|
31
|
+
|
|
32
|
+
- [Features](#features)
|
|
33
|
+
- [Installation](#installation)
|
|
34
|
+
- [Quick Start](#quick-start)
|
|
35
|
+
- [Usage](#usage)
|
|
36
|
+
- [API Reference](#api-reference)
|
|
37
|
+
- [Contributing](#contributing)
|
|
38
|
+
- [License](#license)
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Features
|
|
43
|
+
|
|
44
|
+
- 🎭 **Random Jokes** — Fetch a random joke from a curated collection
|
|
45
|
+
- 👨 **Dad Jokes** — Classic, groan-worthy dad jokes on demand
|
|
46
|
+
- 🔥 **Roasts** — Playful roasts for light-hearted banter
|
|
47
|
+
- 📦 **Zero dependencies** — Pure Python, no external packages required
|
|
48
|
+
- ⚡ **Fast & lightweight** — All data is bundled locally, no network calls needed
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Installation
|
|
53
|
+
|
|
54
|
+
Install FunKitPy from PyPI using pip:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
pip install funkitpy
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Requires Python 3.8 or higher.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Quick Start
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
from funkitpy import get_joke, get_dad_joke, get_roast
|
|
68
|
+
|
|
69
|
+
# Get a random joke
|
|
70
|
+
print(get_joke())
|
|
71
|
+
|
|
72
|
+
# Get a dad joke
|
|
73
|
+
print(get_dad_joke())
|
|
74
|
+
|
|
75
|
+
# Get a roast
|
|
76
|
+
print(get_roast())
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Usage
|
|
82
|
+
|
|
83
|
+
### Random Jokes
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
from funkitpy import get_joke
|
|
87
|
+
|
|
88
|
+
joke = get_joke()
|
|
89
|
+
print(joke)
|
|
90
|
+
# Output: "Why don't scientists trust atoms? Because they make up everything!"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Dad Jokes
|
|
94
|
+
|
|
95
|
+
```python
|
|
96
|
+
from funkitpy import get_dad_joke
|
|
97
|
+
|
|
98
|
+
joke = get_dad_joke()
|
|
99
|
+
print(joke)
|
|
100
|
+
# Output: "I'm reading a book about anti-gravity. It's impossible to put down."
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Roasts
|
|
104
|
+
|
|
105
|
+
```python
|
|
106
|
+
from funkitpy import get_roast
|
|
107
|
+
|
|
108
|
+
roast = get_roast()
|
|
109
|
+
print(roast)
|
|
110
|
+
# Output: "I'd roast you, but my mom said I'm not allowed to burn trash."
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## API Reference
|
|
116
|
+
|
|
117
|
+
### `get_joke() -> str`
|
|
118
|
+
|
|
119
|
+
Returns a random joke from the built-in collection.
|
|
120
|
+
|
|
121
|
+
```python
|
|
122
|
+
from funkitpy import get_joke
|
|
123
|
+
|
|
124
|
+
joke = get_joke() # str
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### `get_dad_joke() -> str`
|
|
128
|
+
|
|
129
|
+
Returns a random dad joke.
|
|
130
|
+
|
|
131
|
+
```python
|
|
132
|
+
from funkitpy import get_dad_joke
|
|
133
|
+
|
|
134
|
+
joke = get_dad_joke() # str
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### `get_roast() -> str`
|
|
138
|
+
|
|
139
|
+
Returns a random playful roast.
|
|
140
|
+
|
|
141
|
+
```python
|
|
142
|
+
from funkitpy import get_roast
|
|
143
|
+
|
|
144
|
+
roast = get_roast() # str
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Project Structure
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
funkitpy/
|
|
153
|
+
├── funkitpy/
|
|
154
|
+
│ ├── __init__.py
|
|
155
|
+
│ ├── jokes.py
|
|
156
|
+
│ ├── dad_jokes.py
|
|
157
|
+
│ ├── roasts.py
|
|
158
|
+
│ └── data/
|
|
159
|
+
│ ├── jokes.json
|
|
160
|
+
│ ├── dad_jokes.json
|
|
161
|
+
│ └── roasts.json
|
|
162
|
+
├── tests/
|
|
163
|
+
│ ├── test_jokes.py
|
|
164
|
+
│ └── test_roasts.py
|
|
165
|
+
├── pyproject.toml
|
|
166
|
+
├── demo.py
|
|
167
|
+
├── LICENSE
|
|
168
|
+
└── README.md
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Contributing
|
|
174
|
+
|
|
175
|
+
Contributions are welcome! Whether it's adding new jokes, fixing bugs, or improving the docs — all help is appreciated.
|
|
176
|
+
|
|
177
|
+
1. Fork the repository
|
|
178
|
+
2. Create a new branch (`git checkout -b feature/add-puns`)
|
|
179
|
+
3. Commit your changes (`git commit -m 'Add pun support'`)
|
|
180
|
+
4. Push to your branch (`git push origin feature/add-puns`)
|
|
181
|
+
5. Open a Pull Request
|
|
182
|
+
|
|
183
|
+
Please make sure your code passes any existing tests before submitting.
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Links
|
|
188
|
+
|
|
189
|
+
- **Homepage:** [github.com/fmasterpro27/FunKitPy](https://github.com/fmasterpro27/FunKitPy)
|
|
190
|
+
- **Issues:** [github.com/fmasterpro27/FunKitPy/issues](https://github.com/fmasterpro27/FunKitPy/issues)
|
|
191
|
+
- **PyPI:** [pypi.org/project/funkitpy](https://pypi.org/project/funkitpy/)
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## License
|
|
196
|
+
|
|
197
|
+
This project is licensed under the **Apache License 2.0**. See the [LICENSE](LICENSE) file for details.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
funkitpy/__init__.py,sha256=Be6bkxYCLFTCCaU4nqmYZteZtE7BvPQ2i5QERn5do8Q,180
|
|
2
|
+
funkitpy/jokes.py,sha256=MqVhxjbo0Fbfib9QW9PGWB-no057nr8enn-a7XaF_u8,403
|
|
3
|
+
funkitpy/roasts.py,sha256=ifPMhtghAmlxveC3IEj1vHQ2ueaX4QtSqp8duDJW-sw,249
|
|
4
|
+
funkitpy/version.py,sha256=QTYqXqSTHFRkM9TEgpDFcHvwLbvqHDqvqfQ9EiXkcAM,23
|
|
5
|
+
funkitpy/data/dad_jokes.json,sha256=6u65nAgAEi7bIWgQSd8p-M8v3xgWVsfogjxEaxcvHCo,9745
|
|
6
|
+
funkitpy/data/jokes.json,sha256=K2BrafnDOBOeD0kTfkbIf33Ro27gr7JfiwqFlKKN-pg,17387
|
|
7
|
+
funkitpy/data/roasts.json,sha256=hkgCGPRBtGxORPIRbTxSA8EKfooigtLi2lMG_E2Obh0,12525
|
|
8
|
+
funkitpy-0.1.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
9
|
+
funkitpy-0.1.0.dist-info/METADATA,sha256=g-dsDQ-z2mrlmV9ofcvHP4Lq_Auz5Mz3HdxfDG92Bn4,4546
|
|
10
|
+
funkitpy-0.1.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
11
|
+
funkitpy-0.1.0.dist-info/top_level.txt,sha256=yIr2EPWt_kqT8Q2V9_7V1qiJEBDw6AiJreiy9jU7Qec,9
|
|
12
|
+
funkitpy-0.1.0.dist-info/RECORD,,
|