Skip to main content

Python sound notifications made easy.

Project description

chime

Python sound notifications made easy.


I made this because I wanted something simple to monitor long-running number crunching scripts.

Installation

pip install chime

This library has no dependencies. The IPython/Jupyter functionality is only imported if you've installed the ipython library. It should work for any Python version above or equal to 3.6.

Basic usage

chime puts four functions at your disposal:

>>> import chime

>>> chime.success()
>>> chime.warning()
>>> chime.error()
>>> chime.info()

Calling any of the above functions will play a sound. Note that the sounds are played in asynchronous processes, and are thus non-blocking. Each function should take around 2ms to execute, regardless of the sound length. You're free to use each sound notification in any way you see fit. I'm not your mama.

Theming

The sounds that are played depend on which theme is being used.

>>> chime.theme()  # return the current theme
'chime'

Several themes are available:

>>> chime.themes()
['chime', 'mario', 'zelda']

The theme can be changed by passing a theme name to the theme function:

>>> chime.theme('zelda')
  • You can listen to the sounds interactively via this soundboard, which is made with Streamlit.
  • A random theme will be picked each time you play a sound if you set the theme to 'random'.

IPython/Jupyter magic

Load the extension as so:

%load_ext chime

You can wrap a line:

%chime print("I'm a line")

You can also wrap an entire cell:

%%chime

print("I'm a cell")

The magic command will call chime.success when the line/cell finishes successfully. Otherwise, chime.error is called whenever an exception is raised.

Exception notifications

If you run chime.notify_exceptions, then chime.error will be called whenever an exception is raised.

chime.notify_exceptions()

raise ValueError("I'm going to make some noise")

Platform support

Under the hood, chime runs a command in the shell to play a .wav file. The command-line program that is used depends on the platform that you're using. Platform information is available in the sys.platform variable as well as the platform module from the standard library. Currently, the supported platforms are:

  • Darwin
  • Linux
  • Windows

A UserWarning is raised if you run a chime sound on an unsupported platform. Feel free to get in touch or issue a pull request if you want to add support for a specific platform. Likewise, don't hesitate if you're encountering trouble with one of the above platforms. I won't bite.

I can't hear anything

Did you check if you turned your sound on? Just kidding. 😜

This library is designed to be non-invasive. By default, sounds are played asynchronously in unchecked processes. Therefore, if something goes wrong, the process dies silently. If you can't hear anything and you think that the issue is coming from chime, then set the sync parameter when you play a sound:

>>> chime.info(sync=True)

This will play the sound synchronously and send a warning if something goes wrong, which should allow you to debug the issue. You can also raise an exception instead of issuing a warning by setting the raise_error parameter:

>>> chime.info(sync=True, raise_error=True)

Note that setting won't do anything raise_error if sync is set to False.

Adding a new theme

I have toyed with the idea of allowing users to add their own theme(s), but at the moment I rather keep things minimal. However, I'm happy to integrate new themes into the library. You can propose a new theme by opening a pull request that adds the necessary .wav files to the themes directory. A theme is made up of four files: success.wav, warning.wav, error.wav, and info.wav. Be creative! 👩‍🎨

Things to do

  • Some mechanism to automatically call chime.warning when a warning occurs.
  • Command-line support, maybe.
  • More themes!

Acknowledgements

  • Special thanks to Michael Vlah for being a gentleman by giving up the "chime" name on PyPI.
  • Thanks to u/Pajke on reddit for helping me debug Windows support.
  • Thanks to David Chen for adding Linux support by suggesting the use of aplay.

License

As you would probably expect, this is MIT licensed.

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

chime-0.3.0.tar.gz (841.8 kB view details)

Uploaded Source

Built Distribution

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

chime-0.3.0-py3-none-any.whl (835.0 kB view details)

Uploaded Python 3

File details

Details for the file chime-0.3.0.tar.gz.

File metadata

  • Download URL: chime-0.3.0.tar.gz
  • Upload date:
  • Size: 841.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.0 CPython/3.7.4 Darwin/19.5.0

File hashes

Hashes for chime-0.3.0.tar.gz
Algorithm Hash digest
SHA256 1605f72269cc0f320b47e7afd59dd2985a5e971b97c871d77443a17368e4444f
MD5 ec267f184e09e2e76aa2380ab1d535a4
BLAKE2b-256 e7aa6c1a8b535bec1f573692e717b0190d397b8f3bfae0d30901033c84dd752b

See more details on using hashes here.

File details

Details for the file chime-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: chime-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 835.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.0 CPython/3.7.4 Darwin/19.5.0

File hashes

Hashes for chime-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cc2c2c39e11108314f718b1e85723833870af25d4b812dfe29c0b1932f46b850
MD5 c25f9ebaafce6e424a32535daee4049e
BLAKE2b-256 b770d3243061086c0e989d1f11091a806bdd9257584d99a0e846062266352a86

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