Default configuration can be found in the module bel_commons.config.

By default, PyBEL searches for a configuration file called config.json in ~/.config/pybel/. This directory can be modified with the environment variable PYBEL_CONFIG_DIRECTORY. Additioanlly, the location of another custom configuration can be specified by the environment variable BEL_COMMONS_CONFIG_JSON.

In config.json add an entry PYBEL_MERGE_SERVER_PREFIX for the address of the server. Example: http://lisa:5000 with no trailing backslash. This is necessary since celery has a problem with flask’s url builder function flask.url_for.

Add an entry PYBEL_CONNECTION with the database connection string to either a local SQLite database or a proper relational database management system. It’s suggested to pip install psycopg2-binary in combination with MySQL since it enables multi-threading.

For a deployment with a local instance of RabbitMQ, the default configuration already contains a setting for amqp://localhost. Otherwise, an entry CELERY_BROKER_URL can be set.

class bel_commons.config.BELCommonsConfig(SECRET_KEY: str, BUTLER_PASSWORD: str, BUTLER_EMAIL: str = 'butler', BUTLER_NAME: str = 'BEL Commons Butler', DEBUG: bool = False, TESTING: bool = False, JSONIFY_PRETTYPRINT_REGULAR: bool = True, SQLALCHEMY_TRACK_MODIFICATIONS: bool = False, SQLALCHEMY_DATABASE_URI: str = <factory>, DISALLOW_PRIVATE: bool = True, LOCKDOWN: bool = False, USE_CELERY: bool = True, CELERY_BROKER_URL: str = 'amqp://localhost', CELERY_BACKEND_URL: str = 'redis://localhost', SECURITY_REGISTERABLE: bool = True, SECURITY_CONFIRMABLE: bool = False, SECURITY_SEND_REGISTER_EMAIL: bool = False, SECURITY_RECOVERABLE: bool = False, SECURITY_PASSWORD_HASH: str = 'pbkdf2_sha512', SECURITY_PASSWORD_SALT: str = 'default_please_override', MAIL_SERVER: Optional[str] = None, MAIL_DEFAULT_SENDER_NAME: str = 'BEL Commons', MAIL_DEFAULT_SENDER_EMAIL: Optional[str] = None, REGISTER_EXAMPLES: bool = False, REGISTER_USERS: Optional[str] = None, REGISTER_ADMIN: bool = True, REGISTER_TRANSFORMATIONS: bool = True, WRITE_REPORTS: bool = False, ENABLE_UPLOADER: bool = False, ENABLE_PARSER: bool = False, ENABLE_ANALYSIS: bool = False, ENABLE_CURATION: bool = False, SWAGGER_CONFIG: Mapping[str, Any] = <factory>)[source]

Configuration for BEL Commons.

It assumes you have:

  • SQLite for the PyBEL Cache on localhost

  • RabbitMQ or another message broker supporting the AMQP protocol running on localhost


The Flask app secret key.


Password for the butler account

DEBUG: bool = False

Flask app debug mode

TESTING: bool = False

Flask app testing mode


Database and SQLAlchemy settings


Should private network uploads be allowed?

LOCKDOWN: bool = False

Should all endpoints require authentication?

USE_CELERY: bool = True

Should celery be used?

CELERY_BACKEND_URL: str = 'redis://localhost'

Celery backend url

SECURITY_PASSWORD_HASH: str = 'pbkdf2_sha512'

What hash algorithm should we use for passwords

SECURITY_PASSWORD_SALT: str = 'default_please_override'

What salt should to use to hash passwords


Should example graphs be automatically included?

REGISTER_USERS: Optional[str] = None

Path to user manifest file


Register the Flask-Admin interface

WRITE_REPORTS: bool = False

Which parts of BEL Commons should run?

classmethod load_dict() → Mapping[str, Any][source]

Get configuration as a dictionary.