From 06f23e7b2a76ade4832204536682e0150eec3479 Mon Sep 17 00:00:00 2001 From: Quratulain-bilal Date: Wed, 29 Jul 2026 12:10:44 +0500 Subject: [PATCH] fix: add utf-8 encoding to extension and preset registry file I/O Both extension and preset registry read/write calls used platform-default encoding, which on Windows (cp1252/UTF-16) would corrupt UTF-8 JSON data or raise UnicodeDecodeError. Explicitly specify encoding='utf-8' to match the JSON contract. Assisted-by: opencode (autonomous) --- src/specify_cli/extensions/__init__.py | 4 ++-- src/specify_cli/presets/__init__.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/specify_cli/extensions/__init__.py b/src/specify_cli/extensions/__init__.py index 6cd48582b0..1f4da80637 100644 --- a/src/specify_cli/extensions/__init__.py +++ b/src/specify_cli/extensions/__init__.py @@ -535,7 +535,7 @@ def _load(self) -> dict: return {"schema_version": self.SCHEMA_VERSION, "extensions": {}} try: - with open(self.registry_path, "r") as f: + with open(self.registry_path, "r", encoding="utf-8") as f: data = json.load(f) # Validate loaded data is a dict (handles corrupted registry files) if not isinstance(data, dict): @@ -551,7 +551,7 @@ def _load(self) -> dict: def _save(self): """Save registry to disk.""" self.extensions_dir.mkdir(parents=True, exist_ok=True) - with open(self.registry_path, "w") as f: + with open(self.registry_path, "w", encoding="utf-8") as f: json.dump(self.data, f, indent=2) def add(self, extension_id: str, metadata: dict): diff --git a/src/specify_cli/presets/__init__.py b/src/specify_cli/presets/__init__.py index e2f6c089a4..9461e4fc69 100644 --- a/src/specify_cli/presets/__init__.py +++ b/src/specify_cli/presets/__init__.py @@ -481,7 +481,7 @@ def _load(self) -> dict: } try: - with open(self.registry_path, 'r') as f: + with open(self.registry_path, 'r', encoding='utf-8') as f: data = json.load(f) # Validate loaded data is a dict (handles corrupted registry files) if not isinstance(data, dict): @@ -502,7 +502,7 @@ def _load(self) -> dict: def _save(self): """Save registry to disk.""" self.packs_dir.mkdir(parents=True, exist_ok=True) - with open(self.registry_path, 'w') as f: + with open(self.registry_path, 'w', encoding='utf-8') as f: json.dump(self.data, f, indent=2) def add(self, pack_id: str, metadata: dict):