Accessing Briefcase packaging metadata at runtime¶
When Briefcase installs your app, it adds a PEP566 metadata file containing information about your app, and Briefcase itself. You can retrieve this information at runtime using the Python builtin library importlib.metadata. importlib.metadata was added in Python 3.8; however, it has been backported and published on PyPI as importlib.metadata for older versions of Python.
To access application metadata at runtime, you can use the following code:
import sys
try:
from importlib import metadata as importlib_metadata
except ImportError:
# Backwards compatibility - importlib.metadata was added in Python 3.8
import importlib_metadata
# Find the name of the module that was used to start the app
app_module = sys.modules['__main__'].__package__
# Retrieve the app's metadata
metadata = importlib_metadata.metadata(app_module)
The metadata returned by this code will be a dictionary-like object that contains the following identifying keys:
- Metadata-Version - The syntax version of the metadata file itself (as defined in PEP566).
- Briefcase-Version - The version of Briefcase used to package the app. The existence of this key in app metadata can be used to identify if your application code is running in a Briefcase container; it will only exist if the app has been packaged by Briefcase.
It will also have the following keys, derived from your application's pyproject.toml configuration:
- Name -
app_name - Formal-Name -
formal_name - App-ID -
bundleandapp_name, joined with a. - Version -
version - Summary -
description
The metadata may also contain the following keys, if they have been defined in your app's pyproject.toml configuration:
- Home-page -
url - Author -
author - Author-email -
author_email
For example, the metadata for the app constructed by the BeeWare Tutorial would contain:
Metadata-Version: 2.1
Briefcase-Version: 0.3.1
Name: helloworld
Formal-Name: Hello World
App-ID: com.example.helloworld
Version: 0.0.1
Home-page: https://example.com/helloworld
Author: Jane Developer
Author-email: jane@example.com
Summary: My first application