{"id":21194,"library":"edx-ace","title":"ACE - Automated Communication Engine","description":"A Django based framework for sending messages (email, push, etc.) as part of the Open edX platform. Version 1.15.0 released April 2025. Dropped Python 3.8 support in v1.13.0 and added Django 5.2 support. Maintained by edX team.","status":"active","version":"1.15.0","language":"python","source_language":"en","source_url":"https://github.com/openedx/edx-ace","tags":["messaging","email","push","django","openedx"],"install":[{"cmd":"pip install edx-ace","lang":"bash","label":"PyPI"}],"dependencies":[{"reason":"Core framework dependency","package":"Django","optional":false},{"reason":"Breaking change in v1.15.0: Braze push channel moved to this package","package":"edx-braze-client","optional":true}],"imports":[{"note":"","wrong":"","symbol":"send_ace_message","correct":"from edx_ace import send_ace_message"},{"note":"","wrong":"","symbol":"ace","correct":"import edx_ace.ace as ace"},{"note":"","wrong":"","symbol":"Message","correct":"from edx_ace.message import Message"},{"note":"","wrong":"","symbol":"Recipient","correct":"from edx_ace.recipient import Recipient"}],"quickstart":{"code":"from edx_ace import send_ace_message\nfrom edx_ace.message import Message\nfrom edx_ace.recipient import Recipient\n\nmsg = Message(\n    app_name='myapp',\n    name='welcome_email',\n    language='en',\n    recipient=Recipient(username='learner', email='learner@example.com')\n)\n# Add context data as needed\nmsg.context.update({'name': 'John'})\n\nsend_ace_message(msg)","lang":"python","description":"Create and send a basic message using the ACE framework."},"warnings":[{"fix":"Add edx-braze-client to your requirements and update imports from edx_ace.channel.braze_push to edx_braze_client.","message":"v1.15.0: Braze push channel moved to edx-braze-client. If you rely on the BrazePushChannel, you must install edx-braze-client separately.","severity":"breaking","affected_versions":">=1.15.0"},{"fix":"Upgrade to Python 3.9+ and update Django to 5.2 if using that version.","message":"v1.13.0: Python 3.8 support dropped. Django 5.2 added. Ensure your environment uses Python >=3.9.","severity":"breaking","affected_versions":">=1.13.0"},{"fix":"Always provide all required arguments to Message(). At minimum: app_name, name, language, and recipient.","message":"Do not instantiate Message without the required app_name, name, language, and recipient fields. Missing fields will cause silent failures or AttributeErrors at send time.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Install edx-braze-client and import from there: from edx_braze_client.channel import BrazePushChannel","cause":"Braze push channel was removed in v1.15.0 and moved to edx-braze-client.","error":"ImportError: cannot import name 'BrazePushChannel' from 'edx_ace.channel'"},{"fix":"Provide all required fields: Message(app_name='...', name='...', language='en', recipient=Recipient(...))","cause":"Missing required arguments when creating a Message instance.","error":"TypeError: __init__() missing 4 required positional arguments: 'app_name', 'name', 'language', and 'recipient'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}