From 74d8014adeb75d2206101f69e39a75f00f7d2781 Mon Sep 17 00:00:00 2001 From: Pragyansh Chaturvedi Date: Mon, 13 Oct 2025 18:21:50 +0530 Subject: [PATCH] Move HelperHandlerRegistry to helper_registry.py --- pythonbpf/helper/__init__.py | 3 ++- pythonbpf/helper/bpf_helper_handler.py | 3 ++- pythonbpf/helper/helper_registry.py | 27 ++++++++++++++++++++++++++ pythonbpf/helper/helper_utils.py | 27 -------------------------- 4 files changed, 31 insertions(+), 29 deletions(-) create mode 100644 pythonbpf/helper/helper_registry.py diff --git a/pythonbpf/helper/__init__.py b/pythonbpf/helper/__init__.py index 265da51..9f301b2 100644 --- a/pythonbpf/helper/__init__.py +++ b/pythonbpf/helper/__init__.py @@ -1,4 +1,5 @@ -from .helper_utils import HelperHandlerRegistry, reset_scratch_pool +from .helper_registry import HelperHandlerRegistry +from .helper_utils import reset_scratch_pool from .bpf_helper_handler import handle_helper_call from .helpers import ktime, pid, deref, XDP_DROP, XDP_PASS diff --git a/pythonbpf/helper/bpf_helper_handler.py b/pythonbpf/helper/bpf_helper_handler.py index 8d6ea0c..4ed0442 100644 --- a/pythonbpf/helper/bpf_helper_handler.py +++ b/pythonbpf/helper/bpf_helper_handler.py @@ -1,8 +1,9 @@ import ast from llvmlite import ir from enum import Enum + +from .helper_registry import HelperHandlerRegistry from .helper_utils import ( - HelperHandlerRegistry, get_or_create_ptr_from_arg, get_flags_val, handle_fstring_print, diff --git a/pythonbpf/helper/helper_registry.py b/pythonbpf/helper/helper_registry.py new file mode 100644 index 0000000..476e3b6 --- /dev/null +++ b/pythonbpf/helper/helper_registry.py @@ -0,0 +1,27 @@ +from typing import Callable + + +class HelperHandlerRegistry: + """Registry for BPF helpers""" + + _handlers: dict[str, Callable] = {} + + @classmethod + def register(cls, helper_name): + """Decorator to register a handler function for a helper""" + + def decorator(func): + cls._handlers[helper_name] = func + return func + + return decorator + + @classmethod + def get_handler(cls, helper_name): + """Get the handler function for a helper""" + return cls._handlers.get(helper_name) + + @classmethod + def has_handler(cls, helper_name): + """Check if a handler function is registered for a helper""" + return helper_name in cls._handlers diff --git a/pythonbpf/helper/helper_utils.py b/pythonbpf/helper/helper_utils.py index b67058b..9c02b16 100644 --- a/pythonbpf/helper/helper_utils.py +++ b/pythonbpf/helper/helper_utils.py @@ -1,6 +1,5 @@ import ast import logging -from collections.abc import Callable from llvmlite import ir from pythonbpf.expr import ( @@ -13,32 +12,6 @@ from pythonbpf.expr import ( logger = logging.getLogger(__name__) -class HelperHandlerRegistry: - """Registry for BPF helpers""" - - _handlers: dict[str, Callable] = {} - - @classmethod - def register(cls, helper_name): - """Decorator to register a handler function for a helper""" - - def decorator(func): - cls._handlers[helper_name] = func - return func - - return decorator - - @classmethod - def get_handler(cls, helper_name): - """Get the handler function for a helper""" - return cls._handlers.get(helper_name) - - @classmethod - def has_handler(cls, helper_name): - """Check if a handler function is registered for a helper""" - return helper_name in cls._handlers - - class ScratchPoolManager: """Manage the temporary helper variables in local_sym_tab"""