Reviewed-on: #1 Co-authored-by: Vishesh 'ironeagle' Bangotra <aetoskia@gmail.com> Co-committed-by: Vishesh 'ironeagle' Bangotra <aetoskia@gmail.com>
465 lines
34 KiB
JSON
465 lines
34 KiB
JSON
{
|
||
"module": "mail_intake.credentials",
|
||
"content": {
|
||
"path": "mail_intake.credentials",
|
||
"docstring": "Credential persistence interfaces and implementations for Mail Intake.\n\nThis package defines the abstractions and concrete implementations used\nto persist authentication credentials across Mail Intake components.\n\nThe credential persistence layer is intentionally decoupled from\nauthentication logic. Authentication providers are responsible for\ncredential acquisition, validation, and refresh, while implementations\nwithin this package are responsible solely for storage and retrieval.\n\nThe package provides:\n- A generic ``CredentialStore`` abstraction defining the persistence contract\n- Local filesystem–based storage for development and single-node use\n- Distributed, Redis-backed storage for production and scaled deployments\n\nCredential lifecycle management, interpretation, and security policy\ndecisions remain the responsibility of authentication providers.",
|
||
"objects": {
|
||
"CredentialStore": {
|
||
"name": "CredentialStore",
|
||
"kind": "class",
|
||
"path": "mail_intake.credentials.CredentialStore",
|
||
"signature": "<bound method Alias.signature of Alias('CredentialStore', 'mail_intake.credentials.store.CredentialStore')>",
|
||
"docstring": "Abstract base class defining a generic persistence interface for\nauthentication credentials.\n\nThis interface separates *credential lifecycle management* from\n*credential storage mechanics*. Implementations are responsible\nonly for persistence concerns, while authentication providers\nretain full control over credential creation, validation, refresh,\nand revocation logic.\n\nThe store is intentionally agnostic to:\n- The concrete credential type being stored\n- The serialization format used to persist credentials\n- The underlying storage backend or durability guarantees",
|
||
"members": {
|
||
"load": {
|
||
"name": "load",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.CredentialStore.load",
|
||
"signature": "<bound method Alias.signature of Alias('load', 'mail_intake.credentials.store.CredentialStore.load')>",
|
||
"docstring": "Load previously persisted credentials.\n\nImplementations should return ``None`` when no credentials are\npresent or when stored credentials cannot be successfully\ndecoded or deserialized.\n\nThe store must not attempt to validate, refresh, or otherwise\ninterpret the returned credentials.\n\nReturns:\n An instance of type ``T`` if credentials are available and\n loadable; otherwise ``None``."
|
||
},
|
||
"save": {
|
||
"name": "save",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.CredentialStore.save",
|
||
"signature": "<bound method Alias.signature of Alias('save', 'mail_intake.credentials.store.CredentialStore.save')>",
|
||
"docstring": "Persist credentials to the underlying storage backend.\n\nThis method is invoked when credentials are newly obtained or\nhave been refreshed and are known to be valid at the time of\npersistence.\n\nImplementations are responsible for:\n- Ensuring durability appropriate to the deployment context\n- Applying encryption or access controls where required\n- Overwriting any previously stored credentials\n\nArgs:\n credentials:\n The credential object to persist."
|
||
},
|
||
"clear": {
|
||
"name": "clear",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.CredentialStore.clear",
|
||
"signature": "<bound method Alias.signature of Alias('clear', 'mail_intake.credentials.store.CredentialStore.clear')>",
|
||
"docstring": "Remove any persisted credentials from the store.\n\nThis method is called when credentials are known to be invalid,\nrevoked, corrupted, or otherwise unusable, and must ensure that\nno stale authentication material remains accessible.\n\nImplementations should treat this operation as idempotent."
|
||
}
|
||
}
|
||
},
|
||
"PickleCredentialStore": {
|
||
"name": "PickleCredentialStore",
|
||
"kind": "class",
|
||
"path": "mail_intake.credentials.PickleCredentialStore",
|
||
"signature": "<bound method Alias.signature of Alias('PickleCredentialStore', 'mail_intake.credentials.pickle.PickleCredentialStore')>",
|
||
"docstring": "Filesystem-backed credential store using pickle serialization.\n\nThis store persists credentials as a pickled object on the local\nfilesystem. It is a simple implementation intended primarily for\ndevelopment, testing, and single-process execution contexts.\n\nThis implementation:\n- Stores credentials on the local filesystem\n- Uses pickle for serialization and deserialization\n- Does not provide encryption, locking, or concurrency guarantees\n\nCredential lifecycle management, validation, and refresh logic are\nexplicitly out of scope for this class.",
|
||
"members": {
|
||
"path": {
|
||
"name": "path",
|
||
"kind": "attribute",
|
||
"path": "mail_intake.credentials.PickleCredentialStore.path",
|
||
"signature": "<bound method Alias.signature of Alias('path', 'mail_intake.credentials.pickle.PickleCredentialStore.path')>",
|
||
"docstring": null
|
||
},
|
||
"load": {
|
||
"name": "load",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.PickleCredentialStore.load",
|
||
"signature": "<bound method Alias.signature of Alias('load', 'mail_intake.credentials.pickle.PickleCredentialStore.load')>",
|
||
"docstring": "Load credentials from the local filesystem.\n\nIf the credential file does not exist or cannot be successfully\ndeserialized, this method returns ``None``.\n\nThe store does not attempt to validate or interpret the returned\ncredentials.\n\nReturns:\n An instance of type ``T`` if credentials are present and\n successfully deserialized; otherwise ``None``."
|
||
},
|
||
"save": {
|
||
"name": "save",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.PickleCredentialStore.save",
|
||
"signature": "<bound method Alias.signature of Alias('save', 'mail_intake.credentials.pickle.PickleCredentialStore.save')>",
|
||
"docstring": "Persist credentials to the local filesystem.\n\nAny previously stored credentials at the configured path are\noverwritten.\n\nArgs:\n credentials:\n The credential object to persist."
|
||
},
|
||
"clear": {
|
||
"name": "clear",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.PickleCredentialStore.clear",
|
||
"signature": "<bound method Alias.signature of Alias('clear', 'mail_intake.credentials.pickle.PickleCredentialStore.clear')>",
|
||
"docstring": "Remove persisted credentials from the local filesystem.\n\nThis method deletes the credential file if it exists and should\nbe treated as an idempotent operation."
|
||
}
|
||
}
|
||
},
|
||
"RedisCredentialStore": {
|
||
"name": "RedisCredentialStore",
|
||
"kind": "class",
|
||
"path": "mail_intake.credentials.RedisCredentialStore",
|
||
"signature": "<bound method Alias.signature of Alias('RedisCredentialStore', 'mail_intake.credentials.redis.RedisCredentialStore')>",
|
||
"docstring": "Redis-backed implementation of ``CredentialStore``.\n\nThis store persists credentials in Redis and is suitable for\ndistributed and horizontally scaled deployments where credentials\nmust be shared across multiple processes or nodes.\n\nThe store is intentionally generic and delegates all serialization\nconcerns to caller-provided functions. This avoids unsafe mechanisms\nsuch as pickle and allows credential formats to be explicitly\ncontrolled and audited.\n\nThis class is responsible only for persistence and retrieval.\nIt does not interpret, validate, refresh, or otherwise manage\nthe lifecycle of the credentials being stored.",
|
||
"members": {
|
||
"redis": {
|
||
"name": "redis",
|
||
"kind": "attribute",
|
||
"path": "mail_intake.credentials.RedisCredentialStore.redis",
|
||
"signature": "<bound method Alias.signature of Alias('redis', 'mail_intake.credentials.redis.RedisCredentialStore.redis')>",
|
||
"docstring": null
|
||
},
|
||
"key": {
|
||
"name": "key",
|
||
"kind": "attribute",
|
||
"path": "mail_intake.credentials.RedisCredentialStore.key",
|
||
"signature": "<bound method Alias.signature of Alias('key', 'mail_intake.credentials.redis.RedisCredentialStore.key')>",
|
||
"docstring": null
|
||
},
|
||
"serialize": {
|
||
"name": "serialize",
|
||
"kind": "attribute",
|
||
"path": "mail_intake.credentials.RedisCredentialStore.serialize",
|
||
"signature": "<bound method Alias.signature of Alias('serialize', 'mail_intake.credentials.redis.RedisCredentialStore.serialize')>",
|
||
"docstring": null
|
||
},
|
||
"deserialize": {
|
||
"name": "deserialize",
|
||
"kind": "attribute",
|
||
"path": "mail_intake.credentials.RedisCredentialStore.deserialize",
|
||
"signature": "<bound method Alias.signature of Alias('deserialize', 'mail_intake.credentials.redis.RedisCredentialStore.deserialize')>",
|
||
"docstring": null
|
||
},
|
||
"ttl_seconds": {
|
||
"name": "ttl_seconds",
|
||
"kind": "attribute",
|
||
"path": "mail_intake.credentials.RedisCredentialStore.ttl_seconds",
|
||
"signature": "<bound method Alias.signature of Alias('ttl_seconds', 'mail_intake.credentials.redis.RedisCredentialStore.ttl_seconds')>",
|
||
"docstring": null
|
||
},
|
||
"load": {
|
||
"name": "load",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.RedisCredentialStore.load",
|
||
"signature": "<bound method Alias.signature of Alias('load', 'mail_intake.credentials.redis.RedisCredentialStore.load')>",
|
||
"docstring": "Load credentials from Redis.\n\nIf no value exists for the configured key, or if the stored\npayload cannot be successfully deserialized, this method\nreturns ``None``.\n\nThe store does not attempt to validate the returned credentials\nor determine whether they are expired or otherwise usable.\n\nReturns:\n An instance of type ``T`` if credentials are present and\n successfully deserialized; otherwise ``None``."
|
||
},
|
||
"save": {
|
||
"name": "save",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.RedisCredentialStore.save",
|
||
"signature": "<bound method Alias.signature of Alias('save', 'mail_intake.credentials.redis.RedisCredentialStore.save')>",
|
||
"docstring": "Persist credentials to Redis.\n\nAny previously stored credentials under the same key are\noverwritten. If a TTL is configured, the credentials will\nexpire automatically after the specified duration.\n\nArgs:\n credentials:\n The credential object to persist."
|
||
},
|
||
"clear": {
|
||
"name": "clear",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.RedisCredentialStore.clear",
|
||
"signature": "<bound method Alias.signature of Alias('clear', 'mail_intake.credentials.redis.RedisCredentialStore.clear')>",
|
||
"docstring": "Remove stored credentials from Redis.\n\nThis operation deletes the configured Redis key if it exists.\nImplementations should treat this method as idempotent."
|
||
}
|
||
}
|
||
},
|
||
"pickle": {
|
||
"name": "pickle",
|
||
"kind": "module",
|
||
"path": "mail_intake.credentials.pickle",
|
||
"signature": null,
|
||
"docstring": "Local filesystem–based credential persistence for Mail Intake.\n\nThis module provides a file-backed implementation of the\n``CredentialStore`` abstraction using Python's ``pickle`` module.\n\nThe pickle-based credential store is intended for local development,\nsingle-node deployments, and controlled environments where credentials\ndo not need to be shared across processes or machines.\n\nDue to the security and portability risks associated with pickle-based\nserialization, this implementation is not suitable for distributed or\nuntrusted environments.",
|
||
"members": {
|
||
"pickle": {
|
||
"name": "pickle",
|
||
"kind": "alias",
|
||
"path": "mail_intake.credentials.pickle.pickle",
|
||
"signature": "<bound method Alias.signature of Alias('pickle', 'pickle')>",
|
||
"docstring": null
|
||
},
|
||
"Optional": {
|
||
"name": "Optional",
|
||
"kind": "alias",
|
||
"path": "mail_intake.credentials.pickle.Optional",
|
||
"signature": "<bound method Alias.signature of Alias('Optional', 'typing.Optional')>",
|
||
"docstring": null
|
||
},
|
||
"TypeVar": {
|
||
"name": "TypeVar",
|
||
"kind": "alias",
|
||
"path": "mail_intake.credentials.pickle.TypeVar",
|
||
"signature": "<bound method Alias.signature of Alias('TypeVar', 'typing.TypeVar')>",
|
||
"docstring": null
|
||
},
|
||
"CredentialStore": {
|
||
"name": "CredentialStore",
|
||
"kind": "class",
|
||
"path": "mail_intake.credentials.pickle.CredentialStore",
|
||
"signature": "<bound method Alias.signature of Alias('CredentialStore', 'mail_intake.credentials.store.CredentialStore')>",
|
||
"docstring": "Abstract base class defining a generic persistence interface for\nauthentication credentials.\n\nThis interface separates *credential lifecycle management* from\n*credential storage mechanics*. Implementations are responsible\nonly for persistence concerns, while authentication providers\nretain full control over credential creation, validation, refresh,\nand revocation logic.\n\nThe store is intentionally agnostic to:\n- The concrete credential type being stored\n- The serialization format used to persist credentials\n- The underlying storage backend or durability guarantees",
|
||
"members": {
|
||
"load": {
|
||
"name": "load",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.pickle.CredentialStore.load",
|
||
"signature": "<bound method Alias.signature of Alias('load', 'mail_intake.credentials.store.CredentialStore.load')>",
|
||
"docstring": "Load previously persisted credentials.\n\nImplementations should return ``None`` when no credentials are\npresent or when stored credentials cannot be successfully\ndecoded or deserialized.\n\nThe store must not attempt to validate, refresh, or otherwise\ninterpret the returned credentials.\n\nReturns:\n An instance of type ``T`` if credentials are available and\n loadable; otherwise ``None``."
|
||
},
|
||
"save": {
|
||
"name": "save",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.pickle.CredentialStore.save",
|
||
"signature": "<bound method Alias.signature of Alias('save', 'mail_intake.credentials.store.CredentialStore.save')>",
|
||
"docstring": "Persist credentials to the underlying storage backend.\n\nThis method is invoked when credentials are newly obtained or\nhave been refreshed and are known to be valid at the time of\npersistence.\n\nImplementations are responsible for:\n- Ensuring durability appropriate to the deployment context\n- Applying encryption or access controls where required\n- Overwriting any previously stored credentials\n\nArgs:\n credentials:\n The credential object to persist."
|
||
},
|
||
"clear": {
|
||
"name": "clear",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.pickle.CredentialStore.clear",
|
||
"signature": "<bound method Alias.signature of Alias('clear', 'mail_intake.credentials.store.CredentialStore.clear')>",
|
||
"docstring": "Remove any persisted credentials from the store.\n\nThis method is called when credentials are known to be invalid,\nrevoked, corrupted, or otherwise unusable, and must ensure that\nno stale authentication material remains accessible.\n\nImplementations should treat this operation as idempotent."
|
||
}
|
||
}
|
||
},
|
||
"T": {
|
||
"name": "T",
|
||
"kind": "attribute",
|
||
"path": "mail_intake.credentials.pickle.T",
|
||
"signature": null,
|
||
"docstring": null
|
||
},
|
||
"PickleCredentialStore": {
|
||
"name": "PickleCredentialStore",
|
||
"kind": "class",
|
||
"path": "mail_intake.credentials.pickle.PickleCredentialStore",
|
||
"signature": "<bound method Class.signature of Class('PickleCredentialStore', 24, 96)>",
|
||
"docstring": "Filesystem-backed credential store using pickle serialization.\n\nThis store persists credentials as a pickled object on the local\nfilesystem. It is a simple implementation intended primarily for\ndevelopment, testing, and single-process execution contexts.\n\nThis implementation:\n- Stores credentials on the local filesystem\n- Uses pickle for serialization and deserialization\n- Does not provide encryption, locking, or concurrency guarantees\n\nCredential lifecycle management, validation, and refresh logic are\nexplicitly out of scope for this class.",
|
||
"members": {
|
||
"path": {
|
||
"name": "path",
|
||
"kind": "attribute",
|
||
"path": "mail_intake.credentials.pickle.PickleCredentialStore.path",
|
||
"signature": null,
|
||
"docstring": null
|
||
},
|
||
"load": {
|
||
"name": "load",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.pickle.PickleCredentialStore.load",
|
||
"signature": "<bound method Function.signature of Function('load', 52, 70)>",
|
||
"docstring": "Load credentials from the local filesystem.\n\nIf the credential file does not exist or cannot be successfully\ndeserialized, this method returns ``None``.\n\nThe store does not attempt to validate or interpret the returned\ncredentials.\n\nReturns:\n An instance of type ``T`` if credentials are present and\n successfully deserialized; otherwise ``None``."
|
||
},
|
||
"save": {
|
||
"name": "save",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.pickle.PickleCredentialStore.save",
|
||
"signature": "<bound method Function.signature of Function('save', 72, 84)>",
|
||
"docstring": "Persist credentials to the local filesystem.\n\nAny previously stored credentials at the configured path are\noverwritten.\n\nArgs:\n credentials:\n The credential object to persist."
|
||
},
|
||
"clear": {
|
||
"name": "clear",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.pickle.PickleCredentialStore.clear",
|
||
"signature": "<bound method Function.signature of Function('clear', 86, 96)>",
|
||
"docstring": "Remove persisted credentials from the local filesystem.\n\nThis method deletes the credential file if it exists and should\nbe treated as an idempotent operation."
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"redis": {
|
||
"name": "redis",
|
||
"kind": "module",
|
||
"path": "mail_intake.credentials.redis",
|
||
"signature": null,
|
||
"docstring": "Redis-backed credential persistence for Mail Intake.\n\nThis module provides a Redis-based implementation of the\n``CredentialStore`` abstraction, enabling credential persistence\nacross distributed and horizontally scaled deployments.\n\nThe Redis credential store is designed for environments where\nauthentication credentials must be shared safely across multiple\nprocesses, containers, or nodes, such as container orchestration\nplatforms and microservice architectures.\n\nKey characteristics:\n- Distributed-safe, shared storage using Redis\n- Explicit, caller-defined serialization and deserialization\n- No reliance on unsafe mechanisms such as pickle\n- Optional time-to-live (TTL) support for automatic credential expiry\n\nThis module is responsible solely for persistence concerns.\nCredential validation, refresh, rotation, and acquisition remain the\nresponsibility of authentication provider implementations.",
|
||
"members": {
|
||
"Optional": {
|
||
"name": "Optional",
|
||
"kind": "alias",
|
||
"path": "mail_intake.credentials.redis.Optional",
|
||
"signature": "<bound method Alias.signature of Alias('Optional', 'typing.Optional')>",
|
||
"docstring": null
|
||
},
|
||
"TypeVar": {
|
||
"name": "TypeVar",
|
||
"kind": "alias",
|
||
"path": "mail_intake.credentials.redis.TypeVar",
|
||
"signature": "<bound method Alias.signature of Alias('TypeVar', 'typing.TypeVar')>",
|
||
"docstring": null
|
||
},
|
||
"Callable": {
|
||
"name": "Callable",
|
||
"kind": "alias",
|
||
"path": "mail_intake.credentials.redis.Callable",
|
||
"signature": "<bound method Alias.signature of Alias('Callable', 'typing.Callable')>",
|
||
"docstring": null
|
||
},
|
||
"CredentialStore": {
|
||
"name": "CredentialStore",
|
||
"kind": "class",
|
||
"path": "mail_intake.credentials.redis.CredentialStore",
|
||
"signature": "<bound method Alias.signature of Alias('CredentialStore', 'mail_intake.credentials.store.CredentialStore')>",
|
||
"docstring": "Abstract base class defining a generic persistence interface for\nauthentication credentials.\n\nThis interface separates *credential lifecycle management* from\n*credential storage mechanics*. Implementations are responsible\nonly for persistence concerns, while authentication providers\nretain full control over credential creation, validation, refresh,\nand revocation logic.\n\nThe store is intentionally agnostic to:\n- The concrete credential type being stored\n- The serialization format used to persist credentials\n- The underlying storage backend or durability guarantees",
|
||
"members": {
|
||
"load": {
|
||
"name": "load",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.redis.CredentialStore.load",
|
||
"signature": "<bound method Alias.signature of Alias('load', 'mail_intake.credentials.store.CredentialStore.load')>",
|
||
"docstring": "Load previously persisted credentials.\n\nImplementations should return ``None`` when no credentials are\npresent or when stored credentials cannot be successfully\ndecoded or deserialized.\n\nThe store must not attempt to validate, refresh, or otherwise\ninterpret the returned credentials.\n\nReturns:\n An instance of type ``T`` if credentials are available and\n loadable; otherwise ``None``."
|
||
},
|
||
"save": {
|
||
"name": "save",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.redis.CredentialStore.save",
|
||
"signature": "<bound method Alias.signature of Alias('save', 'mail_intake.credentials.store.CredentialStore.save')>",
|
||
"docstring": "Persist credentials to the underlying storage backend.\n\nThis method is invoked when credentials are newly obtained or\nhave been refreshed and are known to be valid at the time of\npersistence.\n\nImplementations are responsible for:\n- Ensuring durability appropriate to the deployment context\n- Applying encryption or access controls where required\n- Overwriting any previously stored credentials\n\nArgs:\n credentials:\n The credential object to persist."
|
||
},
|
||
"clear": {
|
||
"name": "clear",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.redis.CredentialStore.clear",
|
||
"signature": "<bound method Alias.signature of Alias('clear', 'mail_intake.credentials.store.CredentialStore.clear')>",
|
||
"docstring": "Remove any persisted credentials from the store.\n\nThis method is called when credentials are known to be invalid,\nrevoked, corrupted, or otherwise unusable, and must ensure that\nno stale authentication material remains accessible.\n\nImplementations should treat this operation as idempotent."
|
||
}
|
||
}
|
||
},
|
||
"T": {
|
||
"name": "T",
|
||
"kind": "attribute",
|
||
"path": "mail_intake.credentials.redis.T",
|
||
"signature": null,
|
||
"docstring": null
|
||
},
|
||
"RedisCredentialStore": {
|
||
"name": "RedisCredentialStore",
|
||
"kind": "class",
|
||
"path": "mail_intake.credentials.redis.RedisCredentialStore",
|
||
"signature": "<bound method Class.signature of Class('RedisCredentialStore', 32, 142)>",
|
||
"docstring": "Redis-backed implementation of ``CredentialStore``.\n\nThis store persists credentials in Redis and is suitable for\ndistributed and horizontally scaled deployments where credentials\nmust be shared across multiple processes or nodes.\n\nThe store is intentionally generic and delegates all serialization\nconcerns to caller-provided functions. This avoids unsafe mechanisms\nsuch as pickle and allows credential formats to be explicitly\ncontrolled and audited.\n\nThis class is responsible only for persistence and retrieval.\nIt does not interpret, validate, refresh, or otherwise manage\nthe lifecycle of the credentials being stored.",
|
||
"members": {
|
||
"redis": {
|
||
"name": "redis",
|
||
"kind": "attribute",
|
||
"path": "mail_intake.credentials.redis.RedisCredentialStore.redis",
|
||
"signature": null,
|
||
"docstring": null
|
||
},
|
||
"key": {
|
||
"name": "key",
|
||
"kind": "attribute",
|
||
"path": "mail_intake.credentials.redis.RedisCredentialStore.key",
|
||
"signature": null,
|
||
"docstring": null
|
||
},
|
||
"serialize": {
|
||
"name": "serialize",
|
||
"kind": "attribute",
|
||
"path": "mail_intake.credentials.redis.RedisCredentialStore.serialize",
|
||
"signature": null,
|
||
"docstring": null
|
||
},
|
||
"deserialize": {
|
||
"name": "deserialize",
|
||
"kind": "attribute",
|
||
"path": "mail_intake.credentials.redis.RedisCredentialStore.deserialize",
|
||
"signature": null,
|
||
"docstring": null
|
||
},
|
||
"ttl_seconds": {
|
||
"name": "ttl_seconds",
|
||
"kind": "attribute",
|
||
"path": "mail_intake.credentials.redis.RedisCredentialStore.ttl_seconds",
|
||
"signature": null,
|
||
"docstring": null
|
||
},
|
||
"load": {
|
||
"name": "load",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.redis.RedisCredentialStore.load",
|
||
"signature": "<bound method Function.signature of Function('load', 94, 115)>",
|
||
"docstring": "Load credentials from Redis.\n\nIf no value exists for the configured key, or if the stored\npayload cannot be successfully deserialized, this method\nreturns ``None``.\n\nThe store does not attempt to validate the returned credentials\nor determine whether they are expired or otherwise usable.\n\nReturns:\n An instance of type ``T`` if credentials are present and\n successfully deserialized; otherwise ``None``."
|
||
},
|
||
"save": {
|
||
"name": "save",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.redis.RedisCredentialStore.save",
|
||
"signature": "<bound method Function.signature of Function('save', 117, 133)>",
|
||
"docstring": "Persist credentials to Redis.\n\nAny previously stored credentials under the same key are\noverwritten. If a TTL is configured, the credentials will\nexpire automatically after the specified duration.\n\nArgs:\n credentials:\n The credential object to persist."
|
||
},
|
||
"clear": {
|
||
"name": "clear",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.redis.RedisCredentialStore.clear",
|
||
"signature": "<bound method Function.signature of Function('clear', 135, 142)>",
|
||
"docstring": "Remove stored credentials from Redis.\n\nThis operation deletes the configured Redis key if it exists.\nImplementations should treat this method as idempotent."
|
||
}
|
||
}
|
||
},
|
||
"Any": {
|
||
"name": "Any",
|
||
"kind": "alias",
|
||
"path": "mail_intake.credentials.redis.Any",
|
||
"signature": "<bound method Alias.signature of Alias('Any', 'typing.Any')>",
|
||
"docstring": null
|
||
}
|
||
}
|
||
},
|
||
"store": {
|
||
"name": "store",
|
||
"kind": "module",
|
||
"path": "mail_intake.credentials.store",
|
||
"signature": null,
|
||
"docstring": "Credential persistence abstractions for Mail Intake.\n\nThis module defines the generic persistence contract used to store and\nretrieve authentication credentials across Mail Intake components.\n\nThe ``CredentialStore`` abstraction establishes a strict separation\nbetween credential *lifecycle management* and credential *storage*.\nAuthentication providers are responsible for acquiring, validating,\nrefreshing, and revoking credentials, while concrete store\nimplementations are responsible solely for persistence concerns.\n\nBy remaining agnostic to credential structure, serialization format,\nand storage backend, this module enables multiple persistence\nstrategies—such as local files, in-memory caches, distributed stores,\nor secrets managers—without coupling authentication logic to any\nspecific storage mechanism.",
|
||
"members": {
|
||
"ABC": {
|
||
"name": "ABC",
|
||
"kind": "alias",
|
||
"path": "mail_intake.credentials.store.ABC",
|
||
"signature": "<bound method Alias.signature of Alias('ABC', 'abc.ABC')>",
|
||
"docstring": null
|
||
},
|
||
"abstractmethod": {
|
||
"name": "abstractmethod",
|
||
"kind": "alias",
|
||
"path": "mail_intake.credentials.store.abstractmethod",
|
||
"signature": "<bound method Alias.signature of Alias('abstractmethod', 'abc.abstractmethod')>",
|
||
"docstring": null
|
||
},
|
||
"Generic": {
|
||
"name": "Generic",
|
||
"kind": "alias",
|
||
"path": "mail_intake.credentials.store.Generic",
|
||
"signature": "<bound method Alias.signature of Alias('Generic', 'typing.Generic')>",
|
||
"docstring": null
|
||
},
|
||
"Optional": {
|
||
"name": "Optional",
|
||
"kind": "alias",
|
||
"path": "mail_intake.credentials.store.Optional",
|
||
"signature": "<bound method Alias.signature of Alias('Optional', 'typing.Optional')>",
|
||
"docstring": null
|
||
},
|
||
"TypeVar": {
|
||
"name": "TypeVar",
|
||
"kind": "alias",
|
||
"path": "mail_intake.credentials.store.TypeVar",
|
||
"signature": "<bound method Alias.signature of Alias('TypeVar', 'typing.TypeVar')>",
|
||
"docstring": null
|
||
},
|
||
"T": {
|
||
"name": "T",
|
||
"kind": "attribute",
|
||
"path": "mail_intake.credentials.store.T",
|
||
"signature": null,
|
||
"docstring": null
|
||
},
|
||
"CredentialStore": {
|
||
"name": "CredentialStore",
|
||
"kind": "class",
|
||
"path": "mail_intake.credentials.store.CredentialStore",
|
||
"signature": "<bound method Class.signature of Class('CredentialStore', 27, 90)>",
|
||
"docstring": "Abstract base class defining a generic persistence interface for\nauthentication credentials.\n\nThis interface separates *credential lifecycle management* from\n*credential storage mechanics*. Implementations are responsible\nonly for persistence concerns, while authentication providers\nretain full control over credential creation, validation, refresh,\nand revocation logic.\n\nThe store is intentionally agnostic to:\n- The concrete credential type being stored\n- The serialization format used to persist credentials\n- The underlying storage backend or durability guarantees",
|
||
"members": {
|
||
"load": {
|
||
"name": "load",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.store.CredentialStore.load",
|
||
"signature": "<bound method Function.signature of Function('load', 44, 59)>",
|
||
"docstring": "Load previously persisted credentials.\n\nImplementations should return ``None`` when no credentials are\npresent or when stored credentials cannot be successfully\ndecoded or deserialized.\n\nThe store must not attempt to validate, refresh, or otherwise\ninterpret the returned credentials.\n\nReturns:\n An instance of type ``T`` if credentials are available and\n loadable; otherwise ``None``."
|
||
},
|
||
"save": {
|
||
"name": "save",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.store.CredentialStore.save",
|
||
"signature": "<bound method Function.signature of Function('save', 61, 78)>",
|
||
"docstring": "Persist credentials to the underlying storage backend.\n\nThis method is invoked when credentials are newly obtained or\nhave been refreshed and are known to be valid at the time of\npersistence.\n\nImplementations are responsible for:\n- Ensuring durability appropriate to the deployment context\n- Applying encryption or access controls where required\n- Overwriting any previously stored credentials\n\nArgs:\n credentials:\n The credential object to persist."
|
||
},
|
||
"clear": {
|
||
"name": "clear",
|
||
"kind": "function",
|
||
"path": "mail_intake.credentials.store.CredentialStore.clear",
|
||
"signature": "<bound method Function.signature of Function('clear', 80, 90)>",
|
||
"docstring": "Remove any persisted credentials from the store.\n\nThis method is called when credentials are known to be invalid,\nrevoked, corrupted, or otherwise unusable, and must ensure that\nno stale authentication material remains accessible.\n\nImplementations should treat this operation as idempotent."
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
} |