magpie.constants ================ .. py:module:: magpie.constants .. autoapi-nested-parse:: Constant settings for Magpie application. Constants defined with format ``MAGPIE_[VARIABLE_NAME]`` can be matched with corresponding settings formatted as ``magpie.[variable_name]`` in the ``magpie.ini`` configuration file. .. note:: Since the ``magpie.ini`` file has to be loaded by the application to retrieve various configuration settings, constant ``MAGPIE_INI_FILE_PATH`` (or any other `path variable` defined before it - see below) has to be defined by environment variable if the default location is not desired (ie: if you want to provide your own configuration). Attributes ---------- .. autoapisummary:: magpie.constants.MAGPIE_MODULE_DIR magpie.constants.MAGPIE_ROOT magpie.constants.MAGPIE_CONFIG_DIR magpie.constants.MAGPIE_PROVIDERS_CONFIG_PATH magpie.constants.MAGPIE_PROVIDERS_HOOKS_PATH magpie.constants.MAGPIE_PERMISSIONS_CONFIG_PATH magpie.constants.MAGPIE_WEBHOOKS_CONFIG_PATH magpie.constants.MAGPIE_CONFIG_PATH magpie.constants.MAGPIE_INI_FILE_PATH magpie.constants.MAGPIE_ENV_DIR magpie.constants.MAGPIE_ENV_FILE magpie.constants.MAGPIE_POSTGRES_ENV_FILE magpie.constants._MAGPIE_ENV_EXAMPLE magpie.constants._POSTGRES_ENV_EXAMPLE magpie.constants.MAGPIE_URL magpie.constants.MAGPIE_SECRET magpie.constants.MAGPIE_COOKIE_NAME magpie.constants.MAGPIE_COOKIE_EXPIRE magpie.constants.MAGPIE_PASSWORD_MIN_LENGTH magpie.constants.MAGPIE_ADMIN_USER magpie.constants.MAGPIE_ADMIN_PASSWORD magpie.constants.MAGPIE_ADMIN_EMAIL magpie.constants.MAGPIE_ADMIN_GROUP magpie.constants.MAGPIE_ANONYMOUS_USER magpie.constants.MAGPIE_ANONYMOUS_PASSWORD magpie.constants.MAGPIE_ANONYMOUS_EMAIL magpie.constants.MAGPIE_ANONYMOUS_GROUP magpie.constants.MAGPIE_EDITOR_GROUP magpie.constants.MAGPIE_USERS_GROUP magpie.constants.MAGPIE_CRON_LOG magpie.constants.MAGPIE_DB_MIGRATION magpie.constants.MAGPIE_DB_MIGRATION_ATTEMPTS magpie.constants.MAGPIE_NETWORK_ENABLED magpie.constants.MAGPIE_NETWORK_INSTANCE_NAME magpie.constants.MAGPIE_NETWORK_DEFAULT_TOKEN_EXPIRY magpie.constants.MAGPIE_NETWORK_INTERNAL_TOKEN_EXPIRY magpie.constants.MAGPIE_NETWORK_NAME_PREFIX magpie.constants.MAGPIE_NETWORK_PEM_FILES magpie.constants.MAGPIE_NETWORK_PEM_PASSWORDS magpie.constants.MAGPIE_NETWORK_CREATE_MISSING_PEM_FILE magpie.constants.MAGPIE_LOG_LEVEL magpie.constants.MAGPIE_LOG_PRINT magpie.constants.MAGPIE_LOG_REQUEST magpie.constants.MAGPIE_LOG_EXCEPTION magpie.constants.MAGPIE_UI_ENABLED magpie.constants.MAGPIE_UI_THEME magpie.constants.PHOENIX_USER magpie.constants.PHOENIX_PASSWORD magpie.constants.PHOENIX_HOST magpie.constants.PHOENIX_PORT magpie.constants.PHOENIX_PUSH magpie.constants.TWITCHER_PROTECTED_PATH magpie.constants.TWITCHER_PROTECTED_URL magpie.constants.TWITCHER_HOST magpie.constants.GITHUB_CLIENT_ID magpie.constants.GITHUB_CLIENT_SECRET magpie.constants.WSO2_HOSTNAME magpie.constants.WSO2_CLIENT_ID magpie.constants.WSO2_CLIENT_SECRET magpie.constants.WSO2_CERTIFICATE_FILE magpie.constants.WSO2_SSL_VERIFY magpie.constants.MAGPIE_POSTGRES_USERNAME magpie.constants.MAGPIE_POSTGRES_PASSWORD magpie.constants.MAGPIE_POSTGRES_HOST magpie.constants.MAGPIE_POSTGRES_PORT magpie.constants.MAGPIE_POSTGRES_DB magpie.constants.MAGPIE_ADMIN_PERMISSION magpie.constants.MAGPIE_LOGGED_PERMISSION magpie.constants.MAGPIE_CONTEXT_PERMISSION magpie.constants.MAGPIE_LOGGED_USER magpie.constants.MAGPIE_DEFAULT_PROVIDER magpie.constants.MAGPIE_NETWORK_TOKEN_NAME magpie.constants.MAGPIE_NETWORK_PROVIDER magpie.constants.MAGPIE_NETWORK_ANONYMOUS_EMAIL_FORMAT magpie.constants.MAGPIE_NETWORK_GROUP_NAME magpie.constants.MAGPIE_USER_NAME_MAX_LENGTH magpie.constants.MAGPIE_GROUP_NAME_MAX_LENGTH magpie.constants.MAGPIE_CONSTANTS magpie.constants._REGEX_ASCII_ONLY Functions --------- .. autoapisummary:: magpie.constants._get_default_log_level magpie.constants.protected_user_name_regex magpie.constants.protected_user_email_regex magpie.constants.protected_group_name_regex magpie.constants.network_enabled magpie.constants.get_constant_setting_name magpie.constants.get_constant Module Contents --------------- .. py:data:: MAGPIE_MODULE_DIR :value: b'.' .. py:data:: MAGPIE_ROOT .. py:data:: MAGPIE_CONFIG_DIR .. py:data:: MAGPIE_PROVIDERS_CONFIG_PATH .. py:data:: MAGPIE_PROVIDERS_HOOKS_PATH .. py:data:: MAGPIE_PERMISSIONS_CONFIG_PATH .. py:data:: MAGPIE_WEBHOOKS_CONFIG_PATH .. py:data:: MAGPIE_CONFIG_PATH .. py:data:: MAGPIE_INI_FILE_PATH .. py:data:: MAGPIE_ENV_DIR .. py:data:: MAGPIE_ENV_FILE .. py:data:: MAGPIE_POSTGRES_ENV_FILE .. py:data:: _MAGPIE_ENV_EXAMPLE .. py:data:: _POSTGRES_ENV_EXAMPLE .. py:function:: _get_default_log_level() -> magpie.typedefs.Str Get logging level from INI configuration file or fallback to default ``INFO`` if it cannot be retrieved. .. py:data:: MAGPIE_URL .. py:data:: MAGPIE_SECRET .. py:data:: MAGPIE_COOKIE_NAME .. py:data:: MAGPIE_COOKIE_EXPIRE .. py:data:: MAGPIE_PASSWORD_MIN_LENGTH .. py:data:: MAGPIE_ADMIN_USER .. py:data:: MAGPIE_ADMIN_PASSWORD .. py:data:: MAGPIE_ADMIN_EMAIL :value: '' .. py:data:: MAGPIE_ADMIN_GROUP .. py:data:: MAGPIE_ANONYMOUS_USER .. py:data:: MAGPIE_ANONYMOUS_PASSWORD .. py:data:: MAGPIE_ANONYMOUS_EMAIL :value: '' .. py:data:: MAGPIE_ANONYMOUS_GROUP .. py:data:: MAGPIE_EDITOR_GROUP .. py:data:: MAGPIE_USERS_GROUP .. py:data:: MAGPIE_CRON_LOG .. py:data:: MAGPIE_DB_MIGRATION :value: False .. py:data:: MAGPIE_DB_MIGRATION_ATTEMPTS .. py:data:: MAGPIE_NETWORK_ENABLED :value: False .. py:data:: MAGPIE_NETWORK_INSTANCE_NAME .. py:data:: MAGPIE_NETWORK_DEFAULT_TOKEN_EXPIRY .. py:data:: MAGPIE_NETWORK_INTERNAL_TOKEN_EXPIRY .. py:data:: MAGPIE_NETWORK_NAME_PREFIX .. py:data:: MAGPIE_NETWORK_PEM_FILES .. py:data:: MAGPIE_NETWORK_PEM_PASSWORDS .. py:data:: MAGPIE_NETWORK_CREATE_MISSING_PEM_FILE :value: False .. py:data:: MAGPIE_LOG_LEVEL .. py:data:: MAGPIE_LOG_PRINT :value: False .. py:data:: MAGPIE_LOG_REQUEST :value: False .. py:data:: MAGPIE_LOG_EXCEPTION :value: False .. py:data:: MAGPIE_UI_ENABLED :value: False .. py:data:: MAGPIE_UI_THEME .. py:data:: PHOENIX_USER .. py:data:: PHOENIX_PASSWORD .. py:data:: PHOENIX_HOST .. py:data:: PHOENIX_PORT .. py:data:: PHOENIX_PUSH :value: False .. py:data:: TWITCHER_PROTECTED_PATH .. py:data:: TWITCHER_PROTECTED_URL .. py:data:: TWITCHER_HOST .. py:data:: GITHUB_CLIENT_ID .. py:data:: GITHUB_CLIENT_SECRET .. py:data:: WSO2_HOSTNAME .. py:data:: WSO2_CLIENT_ID .. py:data:: WSO2_CLIENT_SECRET .. py:data:: WSO2_CERTIFICATE_FILE .. py:data:: WSO2_SSL_VERIFY .. py:data:: MAGPIE_POSTGRES_USERNAME .. py:data:: MAGPIE_POSTGRES_PASSWORD .. py:data:: MAGPIE_POSTGRES_HOST .. py:data:: MAGPIE_POSTGRES_PORT .. py:data:: MAGPIE_POSTGRES_DB .. py:data:: MAGPIE_ADMIN_PERMISSION :value: 'admin' .. py:data:: MAGPIE_LOGGED_PERMISSION :value: 'MAGPIE_LOGGED_USER' .. py:data:: MAGPIE_CONTEXT_PERMISSION :value: 'MAGPIE_CONTEXT_USER' .. py:data:: MAGPIE_LOGGED_USER :value: 'current' .. py:data:: MAGPIE_DEFAULT_PROVIDER :value: 'ziggurat' .. py:data:: MAGPIE_NETWORK_TOKEN_NAME :value: 'magpie_token' .. py:data:: MAGPIE_NETWORK_PROVIDER :value: 'magpie_network' .. py:data:: MAGPIE_NETWORK_ANONYMOUS_EMAIL_FORMAT :value: '' .. py:data:: MAGPIE_NETWORK_GROUP_NAME :value: 'magpie_network' .. py:data:: MAGPIE_USER_NAME_MAX_LENGTH :value: 64 .. py:data:: MAGPIE_GROUP_NAME_MAX_LENGTH :value: 64 .. py:data:: MAGPIE_CONSTANTS :value: ['MAGPIE_CONSTANTS', 'MAGPIE_ADMIN_PERMISSION', 'MAGPIE_LOGGED_PERMISSION',... .. py:data:: _REGEX_ASCII_ONLY .. py:function:: protected_user_name_regex(include_admin: bool = True, include_anonymous: bool = True, include_network: bool = True, additional_patterns: Optional[Tuple[magpie.typedefs.Str]] = None, settings_container: Optional[magpie.typedefs.AnySettingsContainer] = None) -> re.Pattern Return a regular expression that matches all user names that are protected, meaning that they are generated by Magpie itself and no regular user account should be created with these user names. .. py:function:: protected_user_email_regex(include_admin: bool = True, include_anonymous: bool = True, include_network: bool = True, additional_patterns: Optional[Tuple[magpie.typedefs.Str]] = None, settings_container: Optional[magpie.typedefs.AnySettingsContainer] = None) -> re.Pattern Return a regular expression that matches all user emails that are protected, meaning that they are generated by Magpie itself and no regular user account should be created with these user emails. .. py:function:: protected_group_name_regex(include_admin: bool = True, include_anonymous: bool = True, include_network: bool = True, settings_container: Optional[magpie.typedefs.AnySettingsContainer] = None) -> re.Pattern Return a regular expression that matches all group names that are protected, meaning that they are generated by Magpie itself and no regular user account should be created with these group names. .. py:function:: network_enabled(settings_container: Optional[magpie.typedefs.AnySettingsContainer] = None) -> bool Return whether network mode is enabled. .. py:function:: get_constant_setting_name(name: magpie.typedefs.Str) -> magpie.typedefs.Str Find the equivalent setting name of the provided environment variable name. Lower-case name and replace all non-ascii chars by `_`. Then, convert known prefixes with their dotted name. .. py:function:: get_constant(constant_name: magpie.typedefs.Str, settings_container: Optional[magpie.typedefs.AnySettingsContainer] = None, settings_name: Optional[magpie.typedefs.Str] = None, default_value: Optional[magpie.typedefs.SettingValue] = None, raise_not_set: bool = True, raise_missing: bool = True, print_missing: bool = False, empty_missing: bool = False) -> magpie.typedefs.SettingValue Search in order for matched value of :paramref:`constant_name`: 1. search in :py:data:`MAGPIE_CONSTANTS` 2. search in settings if specified 3. search alternative setting names (see below) 4. search in :mod:`magpie.constants` definitions 5. search in environment variables Parameter :paramref:`constant_name` is expected to have the format ``MAGPIE_[VARIABLE_NAME]`` although any value can be passed to retrieve generic settings from all above-mentioned search locations. If :paramref:`settings_name` is provided as alternative name, it is used as is to search for results if :paramref:`constant_name` was not found. Otherwise, ``magpie.[variable_name]`` is used for additional search when the format ``MAGPIE_[VARIABLE_NAME]`` was used for :paramref:`constant_name` (i.e.: ``MAGPIE_ADMIN_USER`` will also search for ``magpie.admin_user`` and so on for corresponding constants). :param constant_name: key to search for a value :param settings_container: WSGI application settings container (if not provided, uses found one in current thread) :param settings_name: alternative name for `settings` if specified :param default_value: default value to be returned if not found anywhere, and exception raises are disabled. :param raise_not_set: raise an exception if the found key is ``None``, search until last case if others are ``None`` :param raise_missing: raise exception if key is not found anywhere :param print_missing: print message if key is not found anywhere, return ``None`` :param empty_missing: consider an empty value for an existing key as if it was missing (i.e.: as if not set). :returns: found value or `default_value` :raises ValueError: if resulting value is invalid based on options (by default raise missing/empty/``None`` value) :raises LookupError: if no appropriate value could be found from all search locations (according to options)