SubjectCache

class kafkit.registry.sansio.SubjectCache(schema_cache: kafkit.registry.sansio.SchemaCache)

Bases: object

A cache of subjects in a schema registry that maps subject and version tuples to an actual schema.

Parameters

schema_cache (SchemaCache) – A schema cache instance.

Notes

The SubjectCache provides a subject-aware layer over the SchemaCache. While schemas and their IDs are unique in a schema registry, multiple subject-version combinations can point to the same schema-ID combination.

When you insert a schema into the SubjectCache, you are also inserting the schema and schema ID into the member SchemaCache.

Methods Summary

get(subject, version)

Get the full set of schema and ID information for a subject version.

get_id(subject, version)

Get the schema ID of a subject version.

get_schema(subject, version)

Get the schema of a subject version.

insert(subject, version[, schema_id, schema])

Insert a subject version into the cache.

Methods Documentation

get(subject: str, version: Union[int, str]) → Dict[str, Any]

Get the full set of schema and ID information for a subject version.

Parameters
  • subject (str) – The name of the subject.

  • version (int) – The version number of the schema in the subject. If version is given as a string ("latest"), a ValueError is raised.

Returns

schema_info – A dictionary with the full set of information about the cached schema. The keys are:

"subject"

The name of the subject.

"version"

The version number of the schema in the subject.

"id"

ID of the schema in a Schema Registry.

"schema"

The Avro schema, preparsed by fastavro.parse_schema.

Return type

dict

Raises

ValueError – Raised if the schema does not exist in the cache.

get_id(subject: str, version: int) → int

Get the schema ID of a subject version.

Parameters
  • subject (str) – The name of the subject.

  • version (int) – The version number of the schema in the subject.

Returns

schema_id – ID of the schema in a Schema Registry.

Return type

int

Raises

ValueError – Raised if the schema does not exist in the cache.

See also

get_schema(), get()

get_schema(subject: str, version: int) → Dict[str, Any]

Get the schema of a subject version.

Parameters
  • subject (str) – The name of the subject.

  • version (int) – The version number of the schema in the subject.

Returns

schema – An Avro schema, preparsed by fastavro.parse_schema.

Return type

dict

Raises

ValueError – Raised if the schema does not exist in the cache.

See also

get_id(), get()

insert(subject: str, version: int, schema_id: Optional[int] = None, schema: Optional[Mapping[str, Any]] = None) → None

Insert a subject version into the cache.

Parameters
  • subject (str) – The name of the subject.

  • version (int) – The version number of the schema in the subject.

  • schema_id (int, optional) – ID of the schema in a Schema Registry. See Notes.

  • schema (dict, optional) – The Avro schema itself. See Notes.

Raises
  • TypeError – Raised if the version parameter is a string. String-based versions, like “latest,” cannot be cached.

  • ValueError – Raised if the schema_id or schema parameters are needed but aren’t set. See Notes.

Notes

If the subject version being cached is already in the schema cache, then only one of schema_id or schema need to be passed to this method. However, if the schema isn’t cached, then both schema_id and schema need to be set. The schema_id and schema are added to the underlying schema cache.