Registry
dagster_authkit.core.registry
Backend Registry - Plugin Discovery System
Discovers and instantiates backends via entry points (setuptools). Allows external plugins without modifying core code.
BackendRegistry
Registry for authentication backends.
Discovers backends automatically via entry points defined in 'dagster_auth.backends' in installed packages' pyproject.toml.
discover_backends
classmethod
discover_backends()
Discovers all registered backends via entry points.
Entry point format (pyproject.toml): [project.entry-points."dagster_auth.backends"] dummy = "dagster_authkit.auth.backends.dummy:DummyAuthBackend" sqlite = "dagster_authkit.auth.backends.sqlite:SQLiteAuthBackend"
get_backend
classmethod
get_backend(name, config)
Instantiates a backend by name.
The config dict is only used on the first call for a given backend name. Subsequent calls return the cached instance regardless of config.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Backend name (sqlite, ldap, oauth, dummy) |
required |
config
|
Dict[str, Any]
|
Configuration dict (only used on first call) |
required |
Returns:
| Type | Description |
|---|---|
AuthBackend
|
Initialized AuthBackend instance |
Raises:
| Type | Description |
|---|---|
ValueError
|
If backend doesn't exist |
list_backends
classmethod
list_backends()
Lists all available backends (discovered via entry points).
Returns:
| Type | Description |
|---|---|
list
|
List of backend names |
Example
from dagster_authkit.core.registry import list_available_backends print(list_available_backends()) ['dummy', 'sqlite', 'ldap']
reset
classmethod
reset()
Resets registry (useful for tests).
Clears all discovered backends and cached instances, forcing re-discovery on next call.
get_backend
get_backend(name, config)
Convenience function to get backend.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Backend name |
required |
config
|
Dict[str, Any]
|
Configuration |
required |
Returns:
| Type | Description |
|---|---|
AuthBackend
|
AuthBackend instance |
Example
backend = get_backend('dummy', {}) user = backend.authenticate('admin', 'admin')
list_available_backends
list_available_backends()
Lists all available backends.
Returns:
| Type | Description |
|---|---|
list
|
List of names |
Example
backends = list_available_backends() print(f"Available: {backends}")