From 479d5202c93b88057de90892e369159e8f2a1764 Mon Sep 17 00:00:00 2001 From: Vetapalem Pravallika Date: Sat, 21 Feb 2026 17:17:34 +0530 Subject: [PATCH 1/5] test: add a temporary line to README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index be00233c2..cf627834a 100644 --- a/README.md +++ b/README.md @@ -228,3 +228,4 @@ We couldn't have done it without these incredible people: +"# Test change from my-feature-branch" From c06923a4e4d997288a68107bbee566ce0bafdad2 Mon Sep 17 00:00:00 2001 From: Vetapalem Pravallika Date: Sat, 21 Feb 2026 18:48:52 +0530 Subject: [PATCH 2/5] feat: add registry pattern PoC for dynamic backend discovery Signed-off-by: Vetapalem Pravallika --- poc_registry.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 poc_registry.py diff --git a/poc_registry.py b/poc_registry.py new file mode 100644 index 000000000..e69de29bb From 22d7e1e61e2d2f2a89391861ff8d14f4f93f5ade Mon Sep 17 00:00:00 2001 From: Vetapalem Pravallika Date: Sat, 21 Feb 2026 18:57:40 +0530 Subject: [PATCH 3/5] feat: add registry logic to poc_registry Signed-off-by: Vetapalem Pravallika --- poc_registry.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/poc_registry.py b/poc_registry.py index e69de29bb..bf7d86a75 100644 --- a/poc_registry.py +++ b/poc_registry.py @@ -0,0 +1,45 @@ +import abc + +# 1. The Registry: This is the core idea for Project 10 +BACKEND_REGISTRY = {} + +def register_backend(name): + """Decorator to register new backends dynamically.""" + def wrapper(cls): + BACKEND_REGISTRY[name] = cls + return cls + return wrapper + +# 2. The Base Class template +class BaseBackend(abc.ABC): + @abc.abstractmethod + def train(self): + pass + +# 3. Dynamic Implementation (How we will add new LLM backends) +@register_backend("kubernetes") +class KubernetesBackend(BaseBackend): + def train(self): + return "Training on Kubernetes Cluster..." + +@register_backend("local") +class LocalBackend(BaseBackend): + def train(self): + return "Training on Local Process..." + +# 4. The Refactored Client that uses the Registry +class TrainerClient: + def __init__(self, backend_type): + backend_class = BACKEND_REGISTRY.get(backend_type) + if not backend_class: + raise ValueError(f"Backend {backend_type} not found!") + self.backend = backend_class() + + def train(self): + print(self.backend.train()) + +# --- Test the Logic --- +if __name__ == "__main__": + print("Available Backends:", list(BACKEND_REGISTRY.keys())) + client = TrainerClient("kubernetes") + client.train() \ No newline at end of file From d28605f8fadab793c125beb536f3d02952c24f65 Mon Sep 17 00:00:00 2001 From: Vetapalem Pravallika Date: Sat, 21 Feb 2026 19:31:32 +0530 Subject: [PATCH 4/5] refactor: add validation and type hints to registry PoC per review Signed-off-by: Vetapalem Pravallika --- README.md | 1 - poc_registry.py | 44 +++++++++++++++++++++++++++----------------- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index cf627834a..be00233c2 100644 --- a/README.md +++ b/README.md @@ -228,4 +228,3 @@ We couldn't have done it without these incredible people: -"# Test change from my-feature-branch" diff --git a/poc_registry.py b/poc_registry.py index bf7d86a75..61e9be0b4 100644 --- a/poc_registry.py +++ b/poc_registry.py @@ -1,11 +1,20 @@ import abc - -# 1. The Registry: This is the core idea for Project 10 -BACKEND_REGISTRY = {} - -def register_backend(name): - """Decorator to register new backends dynamically.""" - def wrapper(cls): +from typing import Dict, Type, Any + +# 1. The Registry: Now with Type Hinting as requested by review +BACKEND_REGISTRY: Dict[str, Type['BaseBackend']] = {} + +def register_backend(name: str): + """Decorator to register new backends dynamically with validation.""" + def wrapper(cls: Type[Any]): + # Validation: Ensure we don't overwrite existing backends + if name in BACKEND_REGISTRY: + raise ValueError(f"Backend '{name}' is already registered.") + + # Validation: Ensure the class inherits from BaseBackend + if not issubclass(cls, BaseBackend): + raise TypeError(f"Class {cls.__name__} must inherit from BaseBackend") + BACKEND_REGISTRY[name] = cls return cls return wrapper @@ -13,33 +22,34 @@ def wrapper(cls): # 2. The Base Class template class BaseBackend(abc.ABC): @abc.abstractmethod - def train(self): + def train(self) -> str: pass -# 3. Dynamic Implementation (How we will add new LLM backends) +# 3. Dynamic Implementation @register_backend("kubernetes") class KubernetesBackend(BaseBackend): - def train(self): + def train(self) -> str: return "Training on Kubernetes Cluster..." @register_backend("local") class LocalBackend(BaseBackend): - def train(self): + def train(self) -> str: return "Training on Local Process..." -# 4. The Refactored Client that uses the Registry +# 4. The Refactored Client class TrainerClient: - def __init__(self, backend_type): + def __init__(self, backend_type: str): backend_class = BACKEND_REGISTRY.get(backend_type) if not backend_class: - raise ValueError(f"Backend {backend_type} not found!") + raise ValueError(f"Backend '{backend_type}' not found in registry!") self.backend = backend_class() - def train(self): - print(self.backend.train()) + def train(self) -> str: + # Returning value instead of printing for better API design + return self.backend.train() # --- Test the Logic --- if __name__ == "__main__": print("Available Backends:", list(BACKEND_REGISTRY.keys())) client = TrainerClient("kubernetes") - client.train() \ No newline at end of file + print(f"Result: {client.train()}") \ No newline at end of file From 21b46b7d6a093132894a50827643be8bef859ec8 Mon Sep 17 00:00:00 2001 From: Vetapalem Pravallika Date: Sat, 21 Feb 2026 19:42:09 +0530 Subject: [PATCH 5/5] refactor: move PoC to examples folder per review Signed-off-by: Vetapalem Pravallika --- poc_registry.py => examples/poc_registry.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename poc_registry.py => examples/poc_registry.py (100%) diff --git a/poc_registry.py b/examples/poc_registry.py similarity index 100% rename from poc_registry.py rename to examples/poc_registry.py