Python Package for functions that will procrastinate on their outputs
Project description
Code Procrastinator
Code Procrastinator is a Python package that humanizes your code by giving it the ability to procrastinate—just like you! :D
Instead of executing tasks efficiently, it gets distracted, mindlessly browses the internet, or justifies its procrastination with excuses.
Team Members
Bryant To Andrew Bao Jasmine Zhang Imran Ahmed
Installation
You can install Code Procrastinator from PyPI using pip:
This package requires Python 3.7 or higher
pip install code-procrastinator
Contributing
Want to improve Code Procrastinator? Follow these steps to set up your development environment!
Clone Repository
git clone https://github.com/software-students-spring2025/3-python-package-jeff-bezos.git
cd 3-python-package-jeff-bezos
Create a Virtual Environment
pip install pipenv
pipenv shell
Building
We automatically upload our package to PyPi using twine.
Before merging anything, ensure your contributions pass the unit tests
Important: PyPI will not let you upload a duplicate version, make sure to increment your version in your pyproject.toml file before pushing any changes. (Ex: 0.1.6 -> 0.1.7)
pytest procrastinator.py
Procrastinate()
The procrastinate function simulates what a human might do when procrastinating—whether it's scrolling the web, making excuses, or delaying execution.
Usage
To use Code Procrastinator in your own Python projects, simply import and call the procrastinate function:
from code_procrastinator import procrastinate
# Make your program procrastinate for up to 10 seconds, with 3 random delays
procrastinate(10, 3)
Function Behavior
- Randomly selects a number of unique delays between
0andmax_time. - After each delay, it executes a random procrastination action.
- Available actions include:
- Printing excuses for procrastination.
- Opening a fun website for distraction.
Arguments
| Argument | Type | Description |
|---|---|---|
max_time |
int |
The maximum number of seconds for any delay. Must be greater than 0. |
delay_count |
int |
The number of procrastination delays. Must be greater than 0. |
Exceptions
ValueError: Raised ifmax_timeordelay_countis less than or equal to0.
Return Value
set: A set of unique delay times used during procrastination.
Example Usage
>>> procrastinate(10, 3)
Procrastinating...
Let's take an internet break! :D https://en.wikipedia.org/wiki/Special:Random
Procrastinating...
Wow, this 4-hour video essay looks interesting...
Procrastinating...
I'll do it tomorrow
excuse_wrapper()
The excuse_wrapper function will also procrasinate on providing correct output, will relay an excuse, and has a chance to completely fail on the task.
Usage
Import excuse_wrapper, and use it as a decorator for the original function
from code_procrastinator import excuse_wrapper
@procrastinator.excuse_wrapper
def add(x, y):
return x + y
add(1, 2)
Example Usage
>>> add(1. 2)
Optimizing best possible answer
Processing... 25% done.
Still thinking... 50% done.
Someone just deleted my work... I need to start over again...
TBH... forget this I'll do it tomorrow.
reaffirm_program()
The reaffirm_program function checks if the input message contains any positive keywords. When it detects encouragement, it prints a motivational message and confirms that the program is ready to continue running. This function is useful when you want your application to "get back on track" after a period of procrastination.
Example Usage
from code_procrastinator import reaffirm_program
# Provide a message with positive keywords to trigger the function
result = reaffirm_program("You're awesome and brilliant!")
print(result) # Expected output: "Program is now running! Let's do this!"
random_fail_wrapper()
The random_fail_wrapper function decorator randomly determines whether the decorated function will execute normally or fail by raising an IllDoItLaterException. In both cases, a randomly chosen message prints to the console
Usage
Import random_fail_wrapper from Code Procrastinator
from code_procrastinator import random_fail_wrapper
@random_fail_wrapper
def compute_sum(a, b):
return a + b
compute_sum(3, 4)
Function Behavior
- Random Check: Generates a random number between 1 and 100.
- Failure Path: If the number is less than 50, it raises an IllDoItLaterException with a randomly selected excuse.
- Success Path: Otherwise, it prints a message from RUN_MESSAGE and executes the function, returning its result.
Exceptions
IllDoItLaterException: Raised if the randomly generated number is between 1 and 50.
Return Value
wrapper: A wrapper of the original function with the additional random failure "functionality"
Example Output
- Successful Execution
>>> compute_sum(3, 4)
Ugh, I guess I'll run this now.
7
- Failure (Exception Raised)
>>> compute_sum(3, 4)
IllDoItLaterException: Oh wait, I left my oven running. Sorry, but I cant run this code right now, I have to go...
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file code_procrastinator-0.1.9.tar.gz.
File metadata
- Download URL: code_procrastinator-0.1.9.tar.gz
- Upload date:
- Size: 47.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22d86518d095d4adf3f24c68ed13200ef8bdba38dbb75a2f344cfdaa17404ad2
|
|
| MD5 |
3adc09de4be276d972adecd7ada746e8
|
|
| BLAKE2b-256 |
49b0f5e6ed9975026b20a4a11f69c9bbba4d54195e317a03c9e5a39f8e41e2e0
|
File details
Details for the file code_procrastinator-0.1.9-py3-none-any.whl.
File metadata
- Download URL: code_procrastinator-0.1.9-py3-none-any.whl
- Upload date:
- Size: 32.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25bf440643cff5f08b5b575ed98d3a39227d575e0b247628512c550158d8a13f
|
|
| MD5 |
56a411ba6a3a455ce9cfdf3e8c101b33
|
|
| BLAKE2b-256 |
d475da1cd78f4cbfa86f7ca3f4d75f1759758d6d16e6c2da3bb9288b60dbf305
|