Skip to main content

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

Build Status

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

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:

  1. Branching: Create a feature branch off of the main branch.
  2. Pull Request: Once your changes are ready, open a pull request for review.
  3. Review: Ensure that all tests pass and your code meets our style guidelines.
  4. Merge: After approval, merge your changes into the main branch 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

magic8ball_se-0.0.2.tar.gz (42.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

magic8ball_se-0.0.2-py3-none-any.whl (29.5 kB view details)

Uploaded Python 3

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

Hashes for magic8ball_se-0.0.2.tar.gz
Algorithm Hash digest
SHA256 a0b7d1476049810539769aa3019ba6663b8f48b977c4f63722e7d6e228139de4
MD5 ef55f9d954a7c6582ea0377e4bdafeeb
BLAKE2b-256 233e4e61230dbaf0e5195a690b746808b11cc23382f0b11d93e70727451a1a05

See more details on using hashes here.

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

Hashes for magic8ball_se-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 24abd07b0f4b404abadde46f8c3d62f6efc7ec104a98305bd12eff1ff09613ad
MD5 c682d4c2b391dafdf9f5f4642adf07ab
BLAKE2b-256 06d2c67ce6737569d23e2fdd84c2a45b0a804db8a82a1d9d200dbb7d73683005

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page