Keyring

class proton.keyring._base.Keyring

Base class for keyring implementations.

Keyrings emulate a dictionary, with:

  • keys: lower case alphanumeric strings (dashes are allowed)

  • values: JSON-serializable list or dictionary.

classmethod get_from_factory(backend: str = None) Keyring
param backend:

Optional. Specific backend name.

If backend is passed then it will attempt to get that specific backend, otherwise it will attempt to get the default backend. The definition of default is as follows:

  • The backend passes the _validate()

  • The backend with the highest _get_priority() value

Raises:

RuntimeError – if there’s no available backend

__getitem__(key: str)

Get an item from the keyring

Parameters:

key (str) – Key (lowercaps alphanumeric, dashes are allowed)

Raises:
  • TypeError – if key is not of valid type

  • ValueError – if key doesn’t satisfy constraints

  • KeyError – if key does not exist

  • KeyringLocked – if keyring is locked when it shouldn’t be

  • KeyringError – if there’s something broken with keyring

__delitem__(key: str)

Remove an item from the keyring

Parameters:

key (str) – Key (lowercaps alphanumeric, dashes are allowed)

Raises:
  • TypeError – if key is not of valid type

  • ValueError – if key doesn’t satisfy constraints

  • KeyError – if key does not exist

  • KeyringLocked – if keyring is locked when it shouldn’t be

  • KeyringError – if there’s something broken with keyring

__setitem__(key: str, value: dict | list)

Add or replace an item in the keyring

Parameters:
  • key (str) – Key (lowercaps alphanumeric, dashes are allowed)

  • value (dict or list) – Value to set. It has to be json-serializable.

Raises:
  • TypeError – if key or value is not of valid type

  • ValueError – if key or value doesn’t satisfy constraints

  • KeyringLocked – if keyring is locked when it shouldn’t be

  • KeyringError – if there’s something broken with keyring

_ensure_key_is_valid(key)

Ensure key satisfies requirements

_ensure_value_is_valid(value)

Ensure value satisfies requirements

class proton.keyring.textfile.KeyringBackendJsonFiles(path_config=None)

Primitive data storage implementation, to be used when no better keyring is present.

It stores each entry a json in the configuration path.