An example of a package developed with pipenv, built with build using setuptools, uploaded to PyPI using twine, and distributed via pip.
Project description
Magic8Ball
Magic8Ball is a lighthearted fortune-telling package designed with rigorous software engineering practices. It demonstrates the complete lifecycle of a Python package—from development (using pipenv and pytest) to building (using setuptools and build), and distribution on PyPI (via twine). The package is installable via pip and includes an example program to showcase its features.
Team Members
Project Links
- PyPI Package: https://pypi.org/project/magic8ball-se/
- Repository: GitHub Repository
- Bug Tracker: GitHub Issues
Features & Usage
Magic8Ball provides four functions that deliver different types of fortunes:
-
tell_fortune()
Returns a random general fortune.from magic8ball.fortunes import Magic8Ball print(Magic8Ball.tell_fortune())
-
personalized_fortune(name: str)
Returns a fortune that incorporates the given name.print(Magic8Ball.personalized_fortune("Alice"))
-
fortune_by_category(category: str)
Returns a fortune based on a specified category (e.g., 'love', 'career', or 'health').print(Magic8Ball.fortune_by_category("career"))
-
daily_by_birth_month(birth_month: str)
Returns a daily fortune that is consistent for the same day based on the provided birth month.print(Magic8Ball.daily_by_birth_month("March"))
Note: While
tell_fortune()does not take an argument (since it always returns a general fortune), the other three functions accept parameters that directly influence their behavior.
Installation
Magic8Ball is managed with pipenv. To set up your virtual environment and install the package along with its development dependencies, run:
pipenv install --dev
Once installed, you can also install the package via pip if you have downloaded the package artifacts from PyPI:
pip install magic8ball-se
Running the Example Program
An example program is provided within the package. To run the interactive fortune-telling interface from the command line, execute:
python -m magic8ball
This will clear your screen and prompt you to choose a type of fortune. (Note: Options 2 and 4 are marked with TODOs in the current version.)
Running Tests
Unit tests are written using pytest. To run the full test suite, simply execute:
pipenv run pytest
This will verify that each function (including handling of valid, edge, and error cases) behaves as expected.
Contributing
Contributions are welcome! Please follow these guidelines:
- Branching: Create a feature branch off of the
mainbranch. - Pull Request: Once your changes are ready, open a pull request for review.
- Review: Ensure that all tests pass and your code meets our style guidelines.
- Merge: After approval, merge your changes into the
mainbranch and delete your feature branch.
For more detailed instructions on setting up the environment, building the package, and running tests, please refer to the instructions.md file in the repository.
Configuration & Deployment
- Configuration: No additional configuration or environment variables are required to run Magic8Ball.
- CI/CD: GitHub Actions is configured to build and test the package on multiple recent Python versions for every pull request and then deploy to PyPi when pushed on main.
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 magic8ball_se-0.0.2.tar.gz.
File metadata
- Download URL: magic8ball_se-0.0.2.tar.gz
- Upload date:
- Size: 42.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0b7d1476049810539769aa3019ba6663b8f48b977c4f63722e7d6e228139de4
|
|
| MD5 |
ef55f9d954a7c6582ea0377e4bdafeeb
|
|
| BLAKE2b-256 |
233e4e61230dbaf0e5195a690b746808b11cc23382f0b11d93e70727451a1a05
|
File details
Details for the file magic8ball_se-0.0.2-py3-none-any.whl.
File metadata
- Download URL: magic8ball_se-0.0.2-py3-none-any.whl
- Upload date:
- Size: 29.5 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 |
24abd07b0f4b404abadde46f8c3d62f6efc7ec104a98305bd12eff1ff09613ad
|
|
| MD5 |
c682d4c2b391dafdf9f5f4642adf07ab
|
|
| BLAKE2b-256 |
06d2c67ce6737569d23e2fdd84c2a45b0a804db8a82a1d9d200dbb7d73683005
|