mex.drop package

Subpackages

Submodules

mex.drop.exceptions module

mex.drop.exceptions.custom_backend_handler(exception: Exception) EventSpec

Custom backend exception handler.

Reflex calls this without a state, so there is no session locale to translate with. Errors that a user can actually act on are caught and translated in the state event that raises them, leaving only unexpected errors for this fallback.

mex.drop.files_io module

mex.drop.files_io.check_duplicate_filenames(files: list[UploadFile]) None

Check for duplicate filenames.

async mex.drop.files_io.validate_file_extension(content_type: str | None, filename: str) None

Validate uploaded file content type and extension.

async mex.drop.files_io.write_to_file(content: bytes, out_file: Path) None

Write content to file. Parse content according to file type.

mex.drop.label_var module

mex.drop.label_var.label_var(fget: None = None, label_id: str = '', initial_value: Any | Unset = types.Unset(), cache: bool = True, deps: list[str | Var[str]] | None = None, interval: timedelta | int | None = None, backend: bool | None = None, **kwargs: Any) Callable[[Callable[[StateT], ReturnT]], ComputedVar[str]]
mex.drop.label_var.label_var(fget: Callable[[StateT], ReturnT], label_id: str, initial_value: ReturnT | types.Unset = types.Unset(), cache: bool = True, deps: list[str | Var[str]] | None = None, interval: timedelta | int | None = None, backend: bool | None = None, **kwargs: Any) ComputedVar[str]

A decorator to translate the given label_id base on the current locale.

Parameters:
  • fget – The getter function.

  • label_id – The msgid to search for in the currents locale .po file

  • initial_value – The initial value of the computed var.

  • cache – Whether to cache the computed value.

  • deps – Explicit var dependencies to track.

  • interval – Interval at which the computed var should be updated.

  • backend – Whether the computed var is a backend var.

  • **kwargs – additional attributes to set on the instance

Returns:

A ComputedVar instance containing the translated label_id.

Raises:
  • ValueError – If caching is disabled and an update interval is set.

  • VarDependencyError – If user supplies dependencies without caching.

  • ComputedVarSignatureError – If the getter function has more than one argument.

mex.drop.layout module

Return the app logo with the MEx wordmark and the app name.

mex.drop.layout.language_switcher() Component

Return a language switcher with one button segment per available locale.

mex.drop.layout.language_switcher_segment(locale: MExLocale) Component

Return one segment of the language switcher for the given locale.

mex.drop.layout.logout_button() Component

Return a logout button with a trailing arrow icon.

mex.drop.layout.mex_wordmark() Component

Return the MEx wordmark as an inline svg, tinted with the text color.

The path is filled with currentColor, so the same component works on the light login card and on the solid accent nav bar.

mex.drop.layout.nav_bar() Component

Return a navigation bar component.

Return a link component for the given navigation item.

mex.drop.layout.page(*children: Component) Component

Return a page fragment with navigation bar and given children.

mex.drop.layout.user_menu() Component

Return a flat user menu with the current X-System and a logout button.

mex.drop.locale_service module

class mex.drop.locale_service.LocaleService

Bases: object

A service singleton to control the current locale used by the app.

__init__() None

Initialize with all available locales in _drop_locale_path.

classmethod get() Self

Get singleton instance of the LocaleService.

Returns:

The LocaleService singleton.

get_available_locales() list[MExLocale]

Get all available locales.

Returns:

All available locales.

get_ui_label(locale_id: str, msg_id: str) str

Get the text for a given locale_id and the msg_id.

Parameters:
  • locale_id – The locale to use.

  • msg_id – The message id of the message to get the text for.

Returns:

The message of the msg_id for the given locale_id.

class mex.drop.locale_service.MExLocale(*, id: str, label: str, language: str, code: str)

Bases: BaseModel

Represents a locale with id and label.

code: str
id: str
label: str
language: str
model_config = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

values() Iterable[str]

Expose locale values to avoid reflex bug.

mex.drop.logging module

mex.drop.main module

mex.drop.main.drop_api() None

Start the drop api.

mex.drop.main.drop_frontend() None

Start the drop frontend.

mex.drop.main.main() None

Start the drop api together with frontend.

mex.drop.models module

class mex.drop.models.NavItem(*, title: str, route_ids: list[str], raw_path: str, active: bool = False)

Bases: BaseModel

Model for one navigation bar item.

active: bool
model_config = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

raw_path: str
route_ids: list[str]
title: str
class mex.drop.models.User(*, x_system: str, api_key: str)

Bases: BaseModel

Info on the currently logged-in user.

api_key: str
model_config = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

x_system: str

mex.drop.security module

mex.drop.security.get_authorized_x_systems(user_database: UserDatabase, api_key: APIKey) list[Annotated[str, Annotated[str, StringConstraints(strip_whitespace=None, to_upper=None, to_lower=None, strict=None, min_length=None, max_length=None, pattern='^[a-zA-Z0-9\\._-]{1,128}$', ascii_only=None)]]] | None

Get authorized x-systems from database.

Parameters:
  • user_database – database dictionary

  • api_key – API key to check

Returns:

optional list of authorized x-systems

mex.drop.security.get_current_authorized_x_systems(api_key: ~typing.Annotated[str | None, ~fastapi.params.Depends(dependency=<fastapi.security.api_key.APIKeyHeader object at 0x7f2437ee0440>, use_cache=True, scope=None)]) list[Annotated[str, Annotated[str, StringConstraints(strip_whitespace=None, to_upper=None, to_lower=None, strict=None, min_length=None, max_length=None, pattern='^[a-zA-Z0-9\\._-]{1,128}$', ascii_only=None)]]]

Get the current authorized x-systems.

Raises:

HTTPException if no header is provided or no x-system is authorized

Parameters:

api_key – the API key for x-system lookup

Settings:

drop_user_database: checked for presence of api_key

Returns:

list of authorized x-systems

mex.drop.security.is_authorized(x_system: Annotated[str, Annotated[str, StringConstraints(strip_whitespace=None, to_upper=None, to_lower=None, strict=None, min_length=None, max_length=None, pattern='^[a-zA-Z0-9\\._-]{1,128}$', ascii_only=None)]], authorized_x_systems: list[Annotated[str, Annotated[str, StringConstraints(strip_whitespace=None, to_upper=None, to_lower=None, strict=None, min_length=None, max_length=None, pattern='^[a-zA-Z0-9\\._-]{1,128}$', ascii_only=None)]]]) bool

Check if the provided x-system is in the authorized x-systems.

Parameters:
  • x_system – x-system to check

  • authorized_x_systems – list of authorized x-systems

Returns:

True if x_system or admin is in the authorized_x_systems else False

mex.drop.settings module

class mex.drop.settings.DropSettings(_env_file: Path | str | Sequence[Path | str] | None = PosixPath('.'), _env_file_encoding: str | None = None, _env_nested_delimiter: str | None = None, _secrets_dir: str | Path | None = None, *, MEX_DEBUG: bool = False, MEX_SINK: list[Sink] = [Sink.NDJSON], MEX_ASSETS_DIR: Path = PosixPath('/home/runner/work/mex-drop/mex-drop/assets'), MEX_OPS_DIR: Path = PosixPath('/home/runner/work/mex-drop/mex-drop/ops'), MEX_WORK_DIR: Path = PosixPath('/home/runner/work/mex-drop/mex-drop'), MEX_IDENTITY_PROVIDER: IdentityProvider = IdentityProvider.MEMORY, MEX_ASSETS_CONNECTOR: AssetsConnectorType = AssetsConnectorType.FILESYSTEM, MEX_BACKEND_API_URL: HttpUrl = HttpUrl('http://localhost:8080/'), MEX_BACKEND_API_KEY: SecretStr = SecretStr('**********'), MEX_BACKEND_API_PARALLELIZATION: int = 1, MEX_BACKEND_API_CHUNK_SIZE: int = 25, MEX_VERIFY_SESSION: bool | OpsPath = True, MEX_ORGANIGRAM_PATH: str = 'raw-data/organigram/organizational_units.json', MEX_PRIMARY_SOURCES_PATH: str = 'raw-data/primary-sources/primary-sources.json', MEX_LDAP_URL: SecretStr = SecretStr('**********'), MEX_LDAP_SEARCH_BASE: str = 'dc=ldapmock,dc=local', MEX_WIKI_API_URL: HttpUrl = HttpUrl('http://wikidata/'), MEX_WEB_USER_AGENT: str = 'rki/mex', MEX_ORCID_API_URL: HttpUrl = HttpUrl('https://orcid/'), MEX_DROP_API_HOST: Annotated[str, MinLen(min_length=1), MaxLen(max_length=250)] = 'localhost', MEX_DROP_API_PORT: Annotated[int, Gt(gt=0), Lt(lt=65536)] = 8021, MEX_DROP_FRONTEND_PORT: Annotated[int, Gt(gt=0), Lt(lt=65536)] = 8020, MEX_DROP_API_ROOT_PATH: str = '', MEX_DROP_DIRECTORY: WorkPath = WorkPath('data'), MEX_DROP_API_KEY_DATABASE: UserDatabase = {})

Bases: BaseSettings

Settings definition for the drop server.

drop_api_host: str
drop_api_key_database: UserDatabase
drop_api_port: int
drop_api_root_path: str
drop_directory: WorkPath
drop_frontend_port: int
model_config = {'arbitrary_types_allowed': True, 'case_sensitive': False, 'cli_avoid_json': False, 'cli_enforce_required': False, 'cli_exit_on_error': True, 'cli_flag_prefix_char': '-', 'cli_hide_none_type': False, 'cli_ignore_unknown_args': False, 'cli_implicit_flags': False, 'cli_kebab_case': False, 'cli_parse_args': None, 'cli_parse_none_str': None, 'cli_prefix': '', 'cli_prog_name': None, 'cli_shortcuts': None, 'cli_show_env_vars': False, 'cli_use_class_docs_for_groups': False, 'enable_decoding': True, 'env_file': '.env', 'env_file_encoding': 'utf-8', 'env_ignore_empty': False, 'env_nested_delimiter': '__', 'env_nested_max_split': None, 'env_parse_enums': None, 'env_parse_none_str': None, 'env_prefix': 'mex_', 'env_prefix_target': 'variable', 'extra': 'ignore', 'json_file': None, 'json_file_encoding': None, 'nested_model_default_partial_update': False, 'populate_by_name': True, 'protected_namespaces': ('model_validate', 'model_dump', 'settings_customise_sources'), 'secrets_dir': None, 'toml_file': None, 'validate_assignment': True, 'validate_by_alias': True, 'validate_by_name': True, 'validate_default': True, 'yaml_config_section': None, 'yaml_file': None, 'yaml_file_encoding': None}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

classmethod validate_user_database(value: dict[str, list[str]]) UserDatabase

Ensure keys are APIKeys and values are XSystems.

mex.drop.state module

class mex.drop.state.State(parent_state: BaseState | None = None, init_substates: bool = True, _reflex_internal_init: bool = False, **kwargs)

Bases: State

The app state.

backend_vars: ClassVar[dict[str, Any]] = {'_available_locales': [MExLocale(id='de', label='Deutsch', language='de', code='DEU'), MExLocale(id='en', label='English', language='en', code='ENG')], '_locale_service': <mex.drop.locale_service.LocaleService object>, '_nav_items': [NavItem(title='layout.nav_bar.upload_navitem', route_ids=['/', '/index'], raw_path='/', active=False), NavItem(title='layout.nav_bar.browse_navitem', route_ids=['/browse'], raw_path='/browse', active=False)], '_reflex_internal_links': None}
base_vars: ClassVar[dict[str, Var]] = {'current_locale': Var.__init_subclass__.<locals>.StringCastedVar(_js_expr='reflex___state____state__mex___drop___state____state.current_locale_rx_state_', _var_type=<class 'str'>, _var_data=None, _original=Var(_js_expr='reflex___state____state__mex___drop___state____state.current_locale_rx_state_', _var_type=<class 'str'>, _var_data=VarData(state='reflex___state____state.mex___drop___state____state', field_name='current_locale', imports=(('$/utils/context', (ImportVar(tag='StateContexts', is_default=False, alias=None, install=True, render=True, package_path='/'),)), ('react', (ImportVar(tag='useContext', is_default=False, alias=None, install=True, render=True, package_path='/'),))), hooks=('const reflex___state____state__mex___drop___state____state = useContext(StateContexts.reflex___state____state__mex___drop___state____state)',), deps=(), position=None, components=()))), 'user': Var.__init_subclass__.<locals>.ObjectCastedVar(_js_expr='reflex___state____state__mex___drop___state____state.user_rx_state_', _var_type=mex.drop.models.User | None, _var_data=None, _original=Var(_js_expr='reflex___state____state__mex___drop___state____state.user_rx_state_', _var_type=mex.drop.models.User | None, _var_data=VarData(state='reflex___state____state.mex___drop___state____state', field_name='user', imports=(('$/utils/context', (ImportVar(tag='StateContexts', is_default=False, alias=None, install=True, render=True, package_path='/'),)), ('react', (ImportVar(tag='useContext', is_default=False, alias=None, install=True, render=True, package_path='/'),))), hooks=('const reflex___state____state__mex___drop___state____state = useContext(StateContexts.reflex___state____state__mex___drop___state____state)',), deps=(), position=None, components=())))}
change_locale = EventHandler(event_actions={}, fn=<function State.change_locale>, state_full_name='reflex___state____state.mex___drop___state____state')
check_login = EventHandler(event_actions={}, fn=<function State.check_login>, state_full_name='reflex___state____state.mex___drop___state____state')
class_subclasses: ClassVar[set[type[BaseState]]] = {<class 'mex.drop.browse.state.BrowseState'>, <class 'mex.drop.login.state.LoginState'>, <class 'mex.drop.upload.state.UploadState'>}
computed_vars: ClassVar[dict[str, ComputedVar]] = {'label_nav_bar_logout_button': FakeComputedVarBaseClass(_js_expr='label_nav_bar_logout_button_rx_state_', _var_type=<class 'str'>, _var_data=VarData(state='reflex___state____state.mex___drop___state____state', field_name='label_nav_bar_logout_button', imports=(('$/utils/context', (ImportVar(tag='StateContexts', is_default=False, alias=None, install=True, render=True, package_path='/'),)), ('react', (ImportVar(tag='useContext', is_default=False, alias=None, install=True, render=True, package_path='/'),))), hooks=('const reflex___state____state__mex___drop___state____state = useContext(StateContexts.reflex___state____state__mex___drop___state____state)',), deps=(), position=None, components=()), _cache=True, _backend=False, _initial_value=Unset, _static_deps={None: {'current_locale'}}, _auto_deps=False, _update_interval=None, _fget=<function State.label_nav_bar_logout_button>, _name='label_nav_bar_logout_button'), 'nav_items_translated': FakeComputedVarBaseClass(_js_expr='nav_items_translated_rx_state_', _var_type=list[mex.drop.models.NavItem], _var_data=VarData(state='reflex___state____state.mex___drop___state____state', field_name='nav_items_translated', imports=(('$/utils/context', (ImportVar(tag='StateContexts', is_default=False, alias=None, install=True, render=True, package_path='/'),)), ('react', (ImportVar(tag='useContext', is_default=False, alias=None, install=True, render=True, package_path='/'),))), hooks=('const reflex___state____state__mex___drop___state____state = useContext(StateContexts.reflex___state____state__mex___drop___state____state)',), deps=(), position=None, components=()), _cache=True, _backend=False, _initial_value=Unset, _static_deps={None: {'_locale_service', '_nav_items', 'current_locale'}}, _auto_deps=True, _update_interval=None, _fget=<function State.nav_items_translated>, _name='nav_items_translated')}
current_locale: str = Var.__init_subclass__.<locals>.StringCastedVar(_js_expr='reflex___state____state__mex___drop___state____state.current_locale_rx_state_', _var_type=<class 'str'>, _var_data=None, _original=Var(_js_expr='reflex___state____state__mex___drop___state____state.current_locale_rx_state_', _var_type=<class 'str'>, _var_data=VarData(state='reflex___state____state.mex___drop___state____state', field_name='current_locale', imports=(('$/utils/context', (ImportVar(tag='StateContexts', is_default=False, alias=None, install=True, render=True, package_path='/'),)), ('react', (ImportVar(tag='useContext', is_default=False, alias=None, install=True, render=True, package_path='/'),))), hooks=('const reflex___state____state__mex___drop___state____state = useContext(StateContexts.reflex___state____state__mex___drop___state____state)',), deps=(), position=None, components=())))
event_handlers: ClassVar[dict[str, EventHandler]] = {'change_locale': EventHandler(event_actions={}, fn=<function State.change_locale>, state_full_name='reflex___state____state.mex___drop___state____state'), 'check_login': EventHandler(event_actions={}, fn=<function State.check_login>, state_full_name='reflex___state____state.mex___drop___state____state'), 'load_nav': EventHandler(event_actions={}, fn=<function State.load_nav>, state_full_name='reflex___state____state.mex___drop___state____state'), 'logout': EventHandler(event_actions={}, fn=<function State.logout>, state_full_name='reflex___state____state.mex___drop___state____state'), 'set_current_locale': BaseState._create_setter.<locals>.EventHandlerDeprecatedSetter(event_actions={}, fn=<function set_current_locale>, state_full_name='reflex___state____state.mex___drop___state____state'), 'set_user': BaseState._create_setter.<locals>.EventHandlerDeprecatedSetter(event_actions={}, fn=<function set_user>, state_full_name='reflex___state____state.mex___drop___state____state'), 'setvar': EventHandlerSetVar(event_actions={}, fn=<function EventHandlerSetVar.setvar>, state_full_name='reflex___state____state.mex___drop___state____state', state_cls=<class 'mex.drop.state.State'>)}
inherited_backend_vars: ClassVar[dict[str, Any]] = {'_reflex_internal_links': None}
inherited_vars: ClassVar[dict[str, Var]] = {'is_hydrated': Var.__init_subclass__.<locals>.BooleanCastedVar(_js_expr='reflex___state____state.is_hydrated_rx_state_', _var_type=<class 'bool'>, _var_data=None, _original=Var(_js_expr='reflex___state____state.is_hydrated_rx_state_', _var_type=<class 'bool'>, _var_data=VarData(state='reflex___state____state', field_name='is_hydrated', imports=(('$/utils/context', (ImportVar(tag='StateContexts', is_default=False, alias=None, install=True, render=True, package_path='/'),)), ('react', (ImportVar(tag='useContext', is_default=False, alias=None, install=True, render=True, package_path='/'),))), hooks=('const reflex___state____state = useContext(StateContexts.reflex___state____state)',), deps=(), position=None, components=()))), 'router': Var.__init_subclass__.<locals>.ObjectCastedVar(_js_expr='reflex___state____state.router_rx_state_', _var_type=<class 'reflex.istate.data.RouterData'>, _var_data=None, _original=Var(_js_expr='reflex___state____state.router_rx_state_', _var_type=<class 'reflex.istate.data.RouterData'>, _var_data=VarData(state='reflex___state____state', field_name='router', imports=(('$/utils/context', (ImportVar(tag='StateContexts', is_default=False, alias=None, install=True, render=True, package_path='/'),)), ('react', (ImportVar(tag='useContext', is_default=False, alias=None, install=True, render=True, package_path='/'),))), hooks=('const reflex___state____state = useContext(StateContexts.reflex___state____state)',), deps=(), position=None, components=())))}
label_nav_bar_logout_button

Base class of converting a var to another var type.

load_nav = EventHandler(event_actions={}, fn=<function State.load_nav>, state_full_name='reflex___state____state.mex___drop___state____state')
logout = EventHandler(event_actions={}, fn=<function State.logout>, state_full_name='reflex___state____state.mex___drop___state____state')
nav_items_translated

Base class of converting a var to another var type.

set_current_locale = BaseState._create_setter.<locals>.EventHandlerDeprecatedSetter(event_actions={}, fn=<function set_current_locale>, state_full_name='reflex___state____state.mex___drop___state____state')
set_user = BaseState._create_setter.<locals>.EventHandlerDeprecatedSetter(event_actions={}, fn=<function set_user>, state_full_name='reflex___state____state.mex___drop___state____state')
setvar: ClassVar[EventHandler] = EventHandlerSetVar(event_actions={}, fn=<function EventHandlerSetVar.setvar>, state_full_name='reflex___state____state.mex___drop___state____state', state_cls=<class 'mex.drop.state.State'>)
user: User | None

Base class of converting a var to another var type.

vars: ClassVar[dict[str, Var]] = {'current_locale': Var.__init_subclass__.<locals>.StringCastedVar(_js_expr='reflex___state____state__mex___drop___state____state.current_locale_rx_state_', _var_type=<class 'str'>, _var_data=None, _original=Var(_js_expr='reflex___state____state__mex___drop___state____state.current_locale_rx_state_', _var_type=<class 'str'>, _var_data=VarData(state='reflex___state____state.mex___drop___state____state', field_name='current_locale', imports=(('$/utils/context', (ImportVar(tag='StateContexts', is_default=False, alias=None, install=True, render=True, package_path='/'),)), ('react', (ImportVar(tag='useContext', is_default=False, alias=None, install=True, render=True, package_path='/'),))), hooks=('const reflex___state____state__mex___drop___state____state = useContext(StateContexts.reflex___state____state__mex___drop___state____state)',), deps=(), position=None, components=()))), 'is_hydrated': Var.__init_subclass__.<locals>.BooleanCastedVar(_js_expr='reflex___state____state.is_hydrated_rx_state_', _var_type=<class 'bool'>, _var_data=None, _original=Var(_js_expr='reflex___state____state.is_hydrated_rx_state_', _var_type=<class 'bool'>, _var_data=VarData(state='reflex___state____state', field_name='is_hydrated', imports=(('$/utils/context', (ImportVar(tag='StateContexts', is_default=False, alias=None, install=True, render=True, package_path='/'),)), ('react', (ImportVar(tag='useContext', is_default=False, alias=None, install=True, render=True, package_path='/'),))), hooks=('const reflex___state____state = useContext(StateContexts.reflex___state____state)',), deps=(), position=None, components=()))), 'label_nav_bar_logout_button': FakeComputedVarBaseClass(_js_expr='label_nav_bar_logout_button_rx_state_', _var_type=<class 'str'>, _var_data=VarData(state='reflex___state____state.mex___drop___state____state', field_name='label_nav_bar_logout_button', imports=(('$/utils/context', (ImportVar(tag='StateContexts', is_default=False, alias=None, install=True, render=True, package_path='/'),)), ('react', (ImportVar(tag='useContext', is_default=False, alias=None, install=True, render=True, package_path='/'),))), hooks=('const reflex___state____state__mex___drop___state____state = useContext(StateContexts.reflex___state____state__mex___drop___state____state)',), deps=(), position=None, components=()), _cache=True, _backend=False, _initial_value=Unset, _static_deps={None: {'current_locale'}}, _auto_deps=False, _update_interval=None, _fget=<function State.label_nav_bar_logout_button>, _name='label_nav_bar_logout_button'), 'nav_items_translated': FakeComputedVarBaseClass(_js_expr='nav_items_translated_rx_state_', _var_type=list[mex.drop.models.NavItem], _var_data=VarData(state='reflex___state____state.mex___drop___state____state', field_name='nav_items_translated', imports=(('$/utils/context', (ImportVar(tag='StateContexts', is_default=False, alias=None, install=True, render=True, package_path='/'),)), ('react', (ImportVar(tag='useContext', is_default=False, alias=None, install=True, render=True, package_path='/'),))), hooks=('const reflex___state____state__mex___drop___state____state = useContext(StateContexts.reflex___state____state__mex___drop___state____state)',), deps=(), position=None, components=()), _cache=True, _backend=False, _initial_value=Unset, _static_deps={None: {'_locale_service', '_nav_items', 'current_locale'}}, _auto_deps=True, _update_interval=None, _fget=<function State.nav_items_translated>, _name='nav_items_translated'), 'router': Var.__init_subclass__.<locals>.ObjectCastedVar(_js_expr='reflex___state____state.router_rx_state_', _var_type=<class 'reflex.istate.data.RouterData'>, _var_data=None, _original=Var(_js_expr='reflex___state____state.router_rx_state_', _var_type=<class 'reflex.istate.data.RouterData'>, _var_data=VarData(state='reflex___state____state', field_name='router', imports=(('$/utils/context', (ImportVar(tag='StateContexts', is_default=False, alias=None, install=True, render=True, package_path='/'),)), ('react', (ImportVar(tag='useContext', is_default=False, alias=None, install=True, render=True, package_path='/'),))), hooks=('const reflex___state____state = useContext(StateContexts.reflex___state____state)',), deps=(), position=None, components=()))), 'user': Var.__init_subclass__.<locals>.ObjectCastedVar(_js_expr='reflex___state____state__mex___drop___state____state.user_rx_state_', _var_type=mex.drop.models.User | None, _var_data=None, _original=Var(_js_expr='reflex___state____state__mex___drop___state____state.user_rx_state_', _var_type=mex.drop.models.User | None, _var_data=VarData(state='reflex___state____state.mex___drop___state____state', field_name='user', imports=(('$/utils/context', (ImportVar(tag='StateContexts', is_default=False, alias=None, install=True, render=True, package_path='/'),)), ('react', (ImportVar(tag='useContext', is_default=False, alias=None, install=True, render=True, package_path='/'),))), hooks=('const reflex___state____state__mex___drop___state____state = useContext(StateContexts.reflex___state____state__mex___drop___state____state)',), deps=(), position=None, components=())))}

mex.drop.types module

class mex.drop.types.APIKey(secret_value: SecretType)

Bases: SecretStr

An API Key used for authenticating and authorizing a client.

class mex.drop.types.UserDatabase

Bases: dict[APIKey, list[str]]

A lookup of which x-systems each APIKey is allowed to access.

mex.drop.utils module

mex.drop.utils.load_settings() DropSettings

Reset the settings store and fetch the drop settings.

Module contents