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.
@@ -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
@@ -0,0 +1,12 @@
1
+ import json
2
+ import random
3
+ from pathlib import Path
4
+
5
+ DATA = Path(__file__).parent / "data"
6
+
7
+
8
+ with open(DATA / "roasts.json", encoding="utf-8") as f:
9
+ ROASTS = json.load(f)
10
+
11
+ def roast() -> str:
12
+ return random.choice(ROASTS)["roast"]
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
+ [![PyPI version](https://img.shields.io/pypi/v/funkitpy.svg)](https://pypi.org/project/funkitpy/)
25
+ [![Python versions](https://img.shields.io/pypi/pyversions/funkitpy.svg)](https://pypi.org/project/funkitpy/)
26
+ [![License](https://img.shields.io/pypi/l/funkitpy.svg)](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,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+