Download runtime/src/resynthesis/tokenizer_backend.py from namenotfoundai/Nucleus-Resynthesis: direct link, hf CLI and curl.
- Browser
- Download file 24 kB
-
https://huggingface.co/namenotfoundai/Nucleus-Resynthesis/resolve/main/runtime/src/resynthesis/tokenizer_backend.py
- Command line
-
hf download hf://namenotfoundai/Nucleus-Resynthesis/runtime/src/resynthesis/tokenizer_backend.py
-
curl -L -o tokenizer_backend.py https://huggingface.co/namenotfoundai/Nucleus-Resynthesis/resolve/main/runtime/src/resynthesis/tokenizer_backend.py
24 kB
| """Hash-bound Fastokens ownership for Resynthesis tokenizer I/O boundaries. | |
| The native parent already owns one BPE vocabulary. Fastokens is the accelerated | |
| executor for that exact tokenizer graph; it neither changes token IDs nor | |
| replaces the trained VGE/bit-tokenizer that consumes those IDs. This module is | |
| an explicit external I/O adapter, not a model hot path. | |
| """ | |
| from __future__ import annotations | |
| import contextlib | |
| import hashlib | |
| import importlib | |
| import io | |
| import json | |
| import sys | |
| import threading | |
| from collections.abc import Mapping, Sequence | |
| from dataclasses import dataclass | |
| from pathlib import Path | |
| from types import ModuleType | |
| from typing import Any | |
| from resynthesis.config import ( | |
| RESYNTHESIS_FASTOKENS_COMMIT, | |
| RESYNTHESIS_FASTOKENS_RECEIPT_PATH, | |
| RESYNTHESIS_FASTOKENS_RECEIPT_SHA256, | |
| RESYNTHESIS_FASTOKENS_ROOT, | |
| RESYNTHESIS_FASTOKENS_SITE, | |
| RESYNTHESIS_FASTOKENS_SOURCE_ARCHIVE_SHA256, | |
| RESYNTHESIS_FASTOKENS_VERSION, | |
| RESYNTHESIS_FASTOKENS_WHEEL_SHA256, | |
| RESYNTHESIS_NATIVE_PARENT_ROOT, | |
| RESYNTHESIS_PARENT_TOKENIZER_SHA256, | |
| RESYNTHESIS_PARENT_TOKENIZER_VOCAB_SIZE, | |
| RESYNTHESIS_PROJECTION_VOCAB_SIZE, | |
| ResynthesisConfig, | |
| ) | |
| class FastokensDependencyIdentity: | |
| """Immutable dependency identity established before tokenizer loading.""" | |
| version: str | |
| commit: str | |
| dependency_receipt_path: str | |
| dependency_receipt_sha256: str | |
| source_archive_sha256: str | |
| wheel_sha256: str | |
| site_path: str | |
| verified_installed_files: int | |
| transformers_version: str | |
| class ResynthesisTokenizerIdentity: | |
| """Serializable proof that the parent BPE is executing through Fastokens.""" | |
| dependency: FastokensDependencyIdentity | |
| tokenizer_path: str | |
| tokenizer_sha256: str | |
| tokenizer_class: str | |
| backend_module: str | |
| backend_class: str | |
| vocabulary_size: int | |
| inherited_prefix_vocabulary_size: int | |
| inherited_prefix_preserved: bool | |
| def boundary_receipt(self) -> dict[str, object]: | |
| """Return JSON-ready evidence at the explicit CLI/receipt boundary.""" | |
| return { | |
| "schema": "nnf.resynthesis.fastokens_boundary.v1", | |
| "backendOwner": "Resynthesis", | |
| "fastokensVersion": self.dependency.version, | |
| "fastokensCommit": self.dependency.commit, | |
| "dependencyReceiptPath": self.dependency.dependency_receipt_path, | |
| "dependencyReceiptSha256": ( | |
| self.dependency.dependency_receipt_sha256 | |
| ), | |
| "sourceArchiveSha256": self.dependency.source_archive_sha256, | |
| "wheelSha256": self.dependency.wheel_sha256, | |
| "sitePath": self.dependency.site_path, | |
| "verifiedInstalledFiles": ( | |
| self.dependency.verified_installed_files | |
| ), | |
| "transformersVersion": self.dependency.transformers_version, | |
| "tokenizerPath": self.tokenizer_path, | |
| "tokenizerSha256": self.tokenizer_sha256, | |
| "tokenizerClass": self.tokenizer_class, | |
| "backendModule": self.backend_module, | |
| "backendClass": self.backend_class, | |
| "vocabularySize": self.vocabulary_size, | |
| "inheritedPrefixVocabularySize": ( | |
| self.inherited_prefix_vocabulary_size | |
| ), | |
| "inheritedPrefixPreserved": self.inherited_prefix_preserved, | |
| "physicalProjectionVocabularySize": ( | |
| RESYNTHESIS_PROJECTION_VOCAB_SIZE | |
| ), | |
| # Active undecodable projection rows shrink as successor token IDs | |
| # consume physical coordinates. This is receipt diagnostics only. | |
| "activeProjectionOnlyRows": ( | |
| max( | |
| RESYNTHESIS_PROJECTION_VOCAB_SIZE | |
| - self.vocabulary_size, | |
| 0, | |
| ) | |
| ), | |
| # The learned bridge retains the immutable inherited suffix as its | |
| # transfer source. Unlike the active gap above, this width never | |
| # shrinks when the lexical surface appends IDs. | |
| "vocabularyTransferSourceRows": ( | |
| RESYNTHESIS_PROJECTION_VOCAB_SIZE | |
| - min( | |
| RESYNTHESIS_PROJECTION_VOCAB_SIZE, | |
| self.inherited_prefix_vocabulary_size, | |
| ) | |
| ), | |
| "appendedLexicalRowsBeyondProjection": ( | |
| max( | |
| self.vocabulary_size | |
| - RESYNTHESIS_PROJECTION_VOCAB_SIZE, | |
| 0, | |
| ) | |
| ), | |
| "vocabularyTransferSourceRowsMappedByModel": True, | |
| "physicalProjectionVocabularyIsCeiling": False, | |
| "vocabularyGrowthPolicy": ( | |
| "prefix_preserving_additive_token_ids" | |
| ), | |
| "bpeIdentityPreserved": True, | |
| "vgeRemainsDownstreamAuthority": True, | |
| "fallbackAllowed": False, | |
| } | |
| _ACTIVATION_LOCK = threading.Lock() | |
| _DEPENDENCY_IDENTITIES: dict[ | |
| tuple[str, str, str, str, str], | |
| FastokensDependencyIdentity, | |
| ] = {} | |
| def _sha256(path: Path) -> str: | |
| digest = hashlib.sha256() | |
| with path.open("rb") as handle: | |
| for chunk in iter(lambda: handle.read(8 * 1024 * 1024), b""): | |
| digest.update(chunk) | |
| return digest.hexdigest() | |
| def _tokenizer_artifact_vocabulary_boundary( | |
| tokenizer_path: Path, | |
| ) -> dict[str, int]: | |
| """Read one tokenizer's exact token-to-ID map at the artifact boundary.""" | |
| payload = json.loads(tokenizer_path.read_text(encoding="utf-8")) | |
| if not isinstance(payload, Mapping): | |
| raise RuntimeError("Resynthesis tokenizer artifact is invalid") | |
| model = payload.get("model") | |
| model_vocab = ( | |
| model.get("vocab") if isinstance(model, Mapping) else None | |
| ) | |
| added_tokens = payload.get("added_tokens") | |
| if not isinstance(model_vocab, Mapping) or not isinstance( | |
| added_tokens, Sequence | |
| ): | |
| raise RuntimeError( | |
| "Resynthesis tokenizer artifact has no complete vocabulary" | |
| ) | |
| vocabulary: dict[str, int] = {} | |
| for token, token_id in model_vocab.items(): | |
| if ( | |
| not isinstance(token, str) | |
| or not isinstance(token_id, int) | |
| or isinstance(token_id, bool) | |
| or token_id < 0 | |
| ): | |
| raise RuntimeError( | |
| "Resynthesis tokenizer model vocabulary is invalid" | |
| ) | |
| vocabulary[token] = token_id | |
| for row in added_tokens: | |
| if not isinstance(row, Mapping): | |
| raise RuntimeError( | |
| "Resynthesis tokenizer added-token row is invalid" | |
| ) | |
| token = row.get("content") | |
| token_id = row.get("id") | |
| if ( | |
| not isinstance(token, str) | |
| or not isinstance(token_id, int) | |
| or isinstance(token_id, bool) | |
| or token_id < 0 | |
| ): | |
| raise RuntimeError( | |
| "Resynthesis tokenizer added-token identity is invalid" | |
| ) | |
| prior = vocabulary.get(token) | |
| if prior is not None and prior != token_id: | |
| raise RuntimeError( | |
| "Resynthesis tokenizer assigns one token multiple IDs" | |
| ) | |
| vocabulary[token] = token_id | |
| token_ids = tuple(vocabulary.values()) | |
| if ( | |
| not token_ids | |
| or len(set(token_ids)) != len(token_ids) | |
| or set(token_ids) != set(range(max(token_ids) + 1)) | |
| ): | |
| raise RuntimeError( | |
| "Resynthesis tokenizer IDs are not one contiguous vocabulary" | |
| ) | |
| return vocabulary | |
| def _validated_prefix_vocabulary_size_boundary( | |
| tokenizer_path: Path, | |
| *, | |
| inherited_tokenizer_path: Path | None = None, | |
| ) -> int: | |
| """Prove that a successor preserves every inherited token ID exactly.""" | |
| active_path = tokenizer_path.expanduser().resolve() | |
| if not active_path.is_file(): | |
| raise FileNotFoundError( | |
| f"Resynthesis tokenizer is absent: {active_path}" | |
| ) | |
| inherited_path = ( | |
| inherited_tokenizer_path.expanduser().resolve() | |
| if inherited_tokenizer_path is not None | |
| else Path(RESYNTHESIS_NATIVE_PARENT_ROOT).resolve() | |
| / "tokenizer.json" | |
| ) | |
| if ( | |
| not inherited_path.is_file() | |
| or _sha256(inherited_path) != RESYNTHESIS_PARENT_TOKENIZER_SHA256 | |
| ): | |
| raise RuntimeError( | |
| "Resynthesis inherited tokenizer artifact identity differs" | |
| ) | |
| inherited_vocabulary = _tokenizer_artifact_vocabulary_boundary( | |
| inherited_path | |
| ) | |
| if len(inherited_vocabulary) != RESYNTHESIS_PARENT_TOKENIZER_VOCAB_SIZE: | |
| raise RuntimeError( | |
| "Resynthesis inherited tokenizer vocabulary identity differs" | |
| ) | |
| active_vocabulary = _tokenizer_artifact_vocabulary_boundary(active_path) | |
| if len(active_vocabulary) < len(inherited_vocabulary) or any( | |
| active_vocabulary.get(token) != token_id | |
| for token, token_id in inherited_vocabulary.items() | |
| ): | |
| raise RuntimeError( | |
| "Resynthesis successor tokenizer changed its inherited prefix" | |
| ) | |
| return len(active_vocabulary) | |
| def _required_string(value: object, *, field: str) -> str: | |
| if not isinstance(value, str) or not value: | |
| raise RuntimeError(f"Fastokens receipt field {field} is absent") | |
| return value | |
| def _required_mapping(value: object, *, field: str) -> Mapping[str, object]: | |
| if not isinstance(value, Mapping): | |
| raise RuntimeError(f"Fastokens receipt field {field} is malformed") | |
| return value | |
| def _verified_artifact( | |
| record: Mapping[str, object], | |
| *, | |
| field: str, | |
| expected_root: Path, | |
| artifact_path: Path | None = None, | |
| expected_sha256: str | None = None, | |
| ) -> str: | |
| declared_path = Path( | |
| _required_string(record.get("path"), field=f"{field}.path") | |
| ).expanduser().resolve() | |
| try: | |
| declared_path.relative_to(expected_root) | |
| except ValueError as exc: | |
| raise RuntimeError(f"Fastokens {field} escaped its immutable root") from exc | |
| declared_sha256 = _required_string( | |
| record.get("sha256"), | |
| field=f"{field}.sha256", | |
| ) | |
| if expected_sha256 is not None and declared_sha256 != expected_sha256: | |
| raise RuntimeError(f"Fastokens {field} identity differs from release") | |
| path = ( | |
| artifact_path.expanduser().resolve() | |
| if artifact_path is not None | |
| else declared_path | |
| ) | |
| declared_bytes = record.get("bytes") | |
| if ( | |
| not isinstance(declared_bytes, int) | |
| or isinstance(declared_bytes, bool) | |
| or declared_bytes < 1 | |
| or not path.is_file() | |
| or path.stat().st_size != declared_bytes | |
| or _sha256(path) != declared_sha256 | |
| ): | |
| raise RuntimeError(f"Fastokens {field} bytes differ from their receipt") | |
| return declared_sha256 | |
| def _verified_dependency( | |
| cfg: ResynthesisConfig, | |
| ) -> FastokensDependencyIdentity: | |
| """Verify one canonical dependency at its configured release coordinates.""" | |
| root = Path(RESYNTHESIS_FASTOKENS_ROOT).resolve() | |
| canonical_site = Path(RESYNTHESIS_FASTOKENS_SITE).resolve() | |
| site = Path(cfg.fastokens_site_path).expanduser().resolve() | |
| receipt_path = Path(cfg.fastokens_receipt_path).expanduser().resolve() | |
| wheel_path = Path(cfg.fastokens_wheel_path).expanduser().resolve() | |
| if not receipt_path.is_file(): | |
| raise FileNotFoundError( | |
| f"Resynthesis Fastokens dependency receipt is absent: {receipt_path}" | |
| ) | |
| receipt_sha256 = _sha256(receipt_path) | |
| if ( | |
| cfg.fastokens_receipt_sha256 != RESYNTHESIS_FASTOKENS_RECEIPT_SHA256 | |
| or receipt_sha256 != cfg.fastokens_receipt_sha256 | |
| or cfg.fastokens_wheel_sha256 != RESYNTHESIS_FASTOKENS_WHEEL_SHA256 | |
| or cfg.fastokens_source_archive_sha256 | |
| != RESYNTHESIS_FASTOKENS_SOURCE_ARCHIVE_SHA256 | |
| ): | |
| raise RuntimeError("Resynthesis Fastokens dependency receipt has drifted") | |
| loaded = json.loads(receipt_path.read_text(encoding="utf-8")) | |
| receipt = _required_mapping(loaded, field="root") | |
| if ( | |
| receipt.get("schema") != "nnf.resynthesis.fastokens_dependency.v1" | |
| or receipt.get("name") != "fastokens" | |
| or receipt.get("version") != RESYNTHESIS_FASTOKENS_VERSION | |
| or receipt.get("upstreamCommit") != RESYNTHESIS_FASTOKENS_COMMIT | |
| or receipt.get("buildPassed") is not True | |
| ): | |
| raise RuntimeError("Resynthesis Fastokens dependency identity differs") | |
| installed_site = Path( | |
| _required_string(receipt.get("installedSite"), field="installedSite") | |
| ).resolve() | |
| if installed_site != canonical_site or not site.is_dir(): | |
| raise RuntimeError("Resynthesis Fastokens installed site differs") | |
| source_record = _required_mapping( | |
| receipt.get("sourceArchive"), | |
| field="sourceArchive", | |
| ) | |
| source_path = Path( | |
| _required_string( | |
| source_record.get("path"), | |
| field="sourceArchive.path", | |
| ) | |
| ).expanduser().resolve() | |
| source_sha256 = _required_string( | |
| source_record.get("sha256"), | |
| field="sourceArchive.sha256", | |
| ) | |
| if ( | |
| source_path != root / "source.tar.gz" | |
| or source_sha256 != cfg.fastokens_source_archive_sha256 | |
| ): | |
| raise RuntimeError("Fastokens source archive identity differs from release") | |
| if receipt_path == Path(RESYNTHESIS_FASTOKENS_RECEIPT_PATH).resolve(): | |
| source_sha256 = _verified_artifact( | |
| source_record, | |
| field="source archive", | |
| expected_root=root, | |
| expected_sha256=cfg.fastokens_source_archive_sha256, | |
| ) | |
| wheel_sha256 = _verified_artifact( | |
| _required_mapping(receipt.get("wheel"), field="wheel"), | |
| field="wheel", | |
| expected_root=root, | |
| artifact_path=wheel_path, | |
| expected_sha256=cfg.fastokens_wheel_sha256, | |
| ) | |
| installed_files = receipt.get("installedFiles") | |
| if ( | |
| not isinstance(installed_files, Sequence) | |
| or isinstance(installed_files, (str, bytes)) | |
| or not installed_files | |
| ): | |
| raise RuntimeError("Fastokens installed-file receipt is malformed") | |
| observed_paths: set[str] = set() | |
| for index, raw_record in enumerate(installed_files): | |
| record = _required_mapping(raw_record, field=f"installedFiles[{index}]") | |
| relative = _required_string( | |
| record.get("path"), | |
| field=f"installedFiles[{index}].path", | |
| ) | |
| if relative in observed_paths: | |
| raise RuntimeError("Fastokens installed-file receipt has duplicates") | |
| observed_paths.add(relative) | |
| candidate = (site / relative).resolve() | |
| try: | |
| candidate.relative_to(site) | |
| except ValueError as exc: | |
| raise RuntimeError("Fastokens installed file escaped its site") from exc | |
| expected_sha256 = _required_string( | |
| record.get("sha256"), | |
| field=f"installedFiles[{index}].sha256", | |
| ) | |
| if not candidate.is_file() or _sha256(candidate) != expected_sha256: | |
| raise RuntimeError( | |
| f"Fastokens installed file differs from its receipt: {relative}" | |
| ) | |
| required_runtime_files = { | |
| "fastokens/__init__.py", | |
| "fastokens/_compat.py", | |
| "fastokens/_native.abi3.so", | |
| "fastokens-0.2.1.dist-info/METADATA", | |
| } | |
| if not required_runtime_files.issubset(observed_paths): | |
| raise RuntimeError("Fastokens receipt omits required runtime files") | |
| site_string = str(site) | |
| if site_string not in sys.path: | |
| sys.path.insert(0, site_string) | |
| importlib.invalidate_caches() | |
| module = importlib.import_module("fastokens") | |
| _assert_module_owned_by_site(module, site) | |
| patch = getattr(module, "patch_transformers", None) | |
| if not callable(patch): | |
| raise RuntimeError("Fastokens patch_transformers is unavailable") | |
| patch_output = io.StringIO() | |
| with contextlib.redirect_stdout(patch_output): | |
| patch() | |
| if getattr(module, "_patched", None) is not True: | |
| raise RuntimeError("Fastokens did not retain Transformers patch authority") | |
| transformers = importlib.import_module("transformers") | |
| transformers_version = getattr(transformers, "__version__", None) | |
| if not isinstance(transformers_version, str) or not transformers_version: | |
| raise RuntimeError("Transformers version identity is unavailable") | |
| return FastokensDependencyIdentity( | |
| version=RESYNTHESIS_FASTOKENS_VERSION, | |
| commit=RESYNTHESIS_FASTOKENS_COMMIT, | |
| dependency_receipt_path=str(receipt_path), | |
| dependency_receipt_sha256=receipt_sha256, | |
| source_archive_sha256=source_sha256, | |
| wheel_sha256=wheel_sha256, | |
| site_path=str(site), | |
| verified_installed_files=len(installed_files), | |
| transformers_version=transformers_version, | |
| ) | |
| def _assert_module_owned_by_site(module: ModuleType, site: Path) -> None: | |
| module_path_raw = getattr(module, "__file__", None) | |
| if not isinstance(module_path_raw, str): | |
| raise RuntimeError("Fastokens module has no filesystem identity") | |
| module_path = Path(module_path_raw).resolve() | |
| try: | |
| module_path.relative_to(site) | |
| except ValueError as exc: | |
| raise RuntimeError("Fastokens was imported outside the pinned site") from exc | |
| def activate_resynthesis_fastokens( | |
| cfg: ResynthesisConfig | None = None, | |
| ) -> FastokensDependencyIdentity: | |
| """Verify and activate the one pinned tokenizer backend for this process.""" | |
| active_cfg = cfg or ResynthesisConfig() | |
| location_key = ( | |
| str(Path(active_cfg.fastokens_receipt_path).expanduser().resolve()), | |
| active_cfg.fastokens_receipt_sha256, | |
| str(Path(active_cfg.fastokens_site_path).expanduser().resolve()), | |
| str(Path(active_cfg.fastokens_wheel_path).expanduser().resolve()), | |
| active_cfg.fastokens_wheel_sha256, | |
| ) | |
| with _ACTIVATION_LOCK: | |
| identity = _DEPENDENCY_IDENTITIES.get(location_key) | |
| if identity is None: | |
| identity = _verified_dependency(active_cfg) | |
| _DEPENDENCY_IDENTITIES[location_key] = identity | |
| return identity | |
| def _resolve_configured_tokenizer_path(cfg: ResynthesisConfig) -> Path: | |
| tokenizer_path = Path(cfg.tokenizer_path).expanduser() | |
| if not tokenizer_path.is_absolute(): | |
| tokenizer_path = Path(cfg.base_model_dir).expanduser() / tokenizer_path | |
| return tokenizer_path.resolve() | |
| def load_resynthesis_tokenizer( | |
| model_dir: str | Path = RESYNTHESIS_NATIVE_PARENT_ROOT, | |
| *, | |
| cfg: ResynthesisConfig | None = None, | |
| local_files_only: bool = True, | |
| trust_remote_code: bool = True, | |
| ) -> Any: | |
| """Load a prefix-preserving Resynthesis BPE through Fastokens. | |
| The inherited tokenizer is the immutable ID prefix. A successor may append | |
| lexical rows, but it may not renumber, replace, or remove any inherited | |
| token. The inherited physical projection width is therefore geometry, not | |
| a vocabulary ceiling; model-owned transfer tensors learn appended rows. | |
| """ | |
| resolved_model_dir = Path(model_dir).expanduser().resolve() | |
| tokenizer_path = resolved_model_dir / "tokenizer.json" | |
| if not tokenizer_path.is_file(): | |
| raise FileNotFoundError(f"Resynthesis tokenizer is absent: {tokenizer_path}") | |
| tokenizer_sha256 = _sha256(tokenizer_path) | |
| if ( | |
| resolved_model_dir == Path(RESYNTHESIS_NATIVE_PARENT_ROOT).resolve() | |
| and tokenizer_sha256 != RESYNTHESIS_PARENT_TOKENIZER_SHA256 | |
| ): | |
| raise RuntimeError("Resynthesis native-parent tokenizer has drifted") | |
| inherited_tokenizer_path = ( | |
| _resolve_configured_tokenizer_path(cfg) | |
| if cfg is not None | |
| else Path(RESYNTHESIS_NATIVE_PARENT_ROOT).resolve() | |
| / "tokenizer.json" | |
| ) | |
| _validated_prefix_vocabulary_size_boundary( | |
| tokenizer_path, | |
| inherited_tokenizer_path=inherited_tokenizer_path, | |
| ) | |
| dependency = activate_resynthesis_fastokens(cfg) | |
| transformers = importlib.import_module("transformers") | |
| auto_tokenizer = getattr(transformers, "AutoTokenizer", None) | |
| if auto_tokenizer is None: | |
| raise RuntimeError("Transformers AutoTokenizer is unavailable") | |
| tokenizer = auto_tokenizer.from_pretrained( | |
| str(resolved_model_dir), | |
| local_files_only=local_files_only, | |
| trust_remote_code=trust_remote_code, | |
| ) | |
| identity = tokenizer_identity( | |
| tokenizer, | |
| dependency=dependency, | |
| tokenizer_path=tokenizer_path, | |
| inherited_tokenizer_path=inherited_tokenizer_path, | |
| ) | |
| if identity.tokenizer_sha256 != tokenizer_sha256: | |
| raise RuntimeError("Fastokens tokenizer identity did not bind parent bytes") | |
| setattr(tokenizer, "_resynthesis_tokenizer_identity", identity) | |
| return tokenizer | |
| def tokenizer_identity( | |
| tokenizer: Any, | |
| *, | |
| dependency: FastokensDependencyIdentity | None = None, | |
| tokenizer_path: str | Path | None = None, | |
| inherited_tokenizer_path: str | Path | None = None, | |
| ) -> ResynthesisTokenizerIdentity: | |
| """Verify a Fastokens tokenizer and its immutable inherited ID prefix.""" | |
| active_dependency = dependency or activate_resynthesis_fastokens() | |
| backend = getattr(tokenizer, "backend_tokenizer", None) | |
| backend_module = type(backend).__module__ | |
| backend_class = type(backend).__name__ | |
| if backend_module != "fastokens._compat" or backend_class != "_TokenizerShim": | |
| raise RuntimeError("Resynthesis tokenizer did not load through Fastokens") | |
| vocabulary_size = len(tokenizer) | |
| if tokenizer_path is None: | |
| loaded_root = getattr(tokenizer, "name_or_path", None) | |
| loaded_path = ( | |
| Path(loaded_root).expanduser().resolve() / "tokenizer.json" | |
| if isinstance(loaded_root, str) and loaded_root | |
| else Path(RESYNTHESIS_NATIVE_PARENT_ROOT).resolve() | |
| / "tokenizer.json" | |
| ) | |
| active_tokenizer_path = ( | |
| loaded_path | |
| if loaded_path.is_file() | |
| else Path(RESYNTHESIS_NATIVE_PARENT_ROOT).resolve() | |
| / "tokenizer.json" | |
| ) | |
| else: | |
| active_tokenizer_path = Path(tokenizer_path).expanduser().resolve() | |
| artifact_vocabulary_size = ( | |
| _validated_prefix_vocabulary_size_boundary( | |
| active_tokenizer_path, | |
| inherited_tokenizer_path=( | |
| Path(inherited_tokenizer_path) | |
| if inherited_tokenizer_path is not None | |
| else None | |
| ), | |
| ) | |
| ) | |
| if vocabulary_size != artifact_vocabulary_size: | |
| raise RuntimeError( | |
| "Resynthesis Fastokens vocabulary differs from its artifact" | |
| ) | |
| tokenizer_sha256 = _sha256(active_tokenizer_path) | |
| if ( | |
| active_tokenizer_path | |
| == Path(RESYNTHESIS_NATIVE_PARENT_ROOT).resolve() / "tokenizer.json" | |
| and tokenizer_sha256 != RESYNTHESIS_PARENT_TOKENIZER_SHA256 | |
| ): | |
| raise RuntimeError("Resynthesis parent tokenizer identity changed") | |
| return ResynthesisTokenizerIdentity( | |
| dependency=active_dependency, | |
| tokenizer_path=str(active_tokenizer_path), | |
| tokenizer_sha256=tokenizer_sha256, | |
| tokenizer_class=type(tokenizer).__name__, | |
| backend_module=backend_module, | |
| backend_class=backend_class, | |
| vocabulary_size=vocabulary_size, | |
| inherited_prefix_vocabulary_size=( | |
| RESYNTHESIS_PARENT_TOKENIZER_VOCAB_SIZE | |
| ), | |
| inherited_prefix_preserved=True, | |
| ) | |
| def tokenizer_boundary_receipt(tokenizer: Any) -> dict[str, object]: | |
| """Serialize verified backend evidence at a durable receipt boundary.""" | |
| attached = getattr(tokenizer, "_resynthesis_tokenizer_identity", None) | |
| if isinstance(attached, ResynthesisTokenizerIdentity): | |
| identity = attached | |
| else: | |
| identity = tokenizer_identity(tokenizer) | |
| return identity.boundary_receipt() | |