Repository navigation
v1.2.0
Coordinated public-API polish. Breaking changes are allowed in the 1.x line while the API stabilizes; no deprecation wrappers are shipped.
Added
Workspace.class_graph— lazily-built, cachedClassGraph.InheritanceGraph.from_workspace(ws)classmethod. The existingfrom_classes(classes)is preserved as the lower-level constructor.ClassInfo.workspace— public back-reference to the owningWorkspace. RaisesRuntimeErroron standaloneClassInfos.ClassInfo.fingerprints— lazy cached list ofMethodFingerprintcovering every method on the class.MethodInfoResolved.fingerprint— lazy cached fingerprint for a single method. ReturnsNoneif the body is missing or can't be decoded.- Return-type annotations on every
Workspaceanalysis property (string_index,reference_index,field_access_index,inheritance,call_graph,class_graph). - Top-level re-exports:
from flashkit import Workspace, ClassInfo.
Changed (breaking)
build_class_graph(ws)removed. Usews.class_graph(cached) orClassGraph.from_workspace(ws)(uncached).ClassInfo._abcis no longer intended for external reads. Usecls.abc.ClassInfo._workspaceis no longer intended for external reads. Usecls.workspace.CallGraph.from_workspace,ReferenceIndex.from_workspace,StringIndex.from_workspace,FieldAccessIndex.from_workspace, andbuild_all_indexesnow declareworkspace: Workspace(wasworkspace: object). Runtime behavior unchanged; type-checker users may see new errors in previously-unchecked code.ClassInfo.references_to/references_fromnow annotatedlist[Reference].ClassInfo.field_access_summarynow annotateddict[str, dict[str, list[str]]].- Empty
flashkit.searchsubpackage removed.
Migration
# Before
from flashkit.analysis import build_class_graph
g = build_class_graph(ws)
# After — cached (recommended)
g = ws.class_graph
# After — uncached / escape hatch
from flashkit.analysis import ClassGraph
g = ClassGraph.from_workspace(ws)# Before
abc = cls._abc
ws = cls._workspace
# After
abc = cls.abc
ws = cls.workspace# Before — method fingerprints required reaching into analysis helpers
from flashkit.analysis import extract_all_fingerprints, extract_fingerprint
fps = extract_all_fingerprints(cls, cls._abc)
fp = extract_fingerprint(cls, method, cls._abc)
# After
fps = cls.fingerprints
fp = method.fingerprint