Magdalena Lemanska

36 papers C 2Journal 34
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Karl Bartolo, Peter Borg, Magda Dettlaff, Magdalena Lemanska, Pawel Zylinski
2025 J jnl
Australas. J Comb.
Magda Dettlaff, Michael A. Henning, Magdalena Lemanska, Adriana Roux, Jerzy Topp
2025 J jnl
Discret. Appl. Math.
Magda Dettlaff, Magdalena Lemanska, Jerzy Topp
2025 J jnl
Ars Math. Contemp.
Magda Dettlaff, Magdalena Lemanska, Juan A. Rodríguez-Velázquez, Ismael G. Yero
2025 J jnl
Discuss. Math. Graph Theory
Abel Cabrera Martínez, Magda Dettlaff, Magdalena Lemanska, Juan Alberto Rodríguez-Velázquez
2024 J jnl
Discret. Math.
Magdalena Lemanska, Mercè Mora, María José Souto Salorio
2023 C conf
LAGOS
Magda Dettlaff, Magdalena Lemanska, Jerzy Topp
2021 J jnl
Symmetry
Magda Dettlaff, Magdalena Lemanska, Jerzy Topp
2021 J jnl
Graphs Comb.
Ammar Babikir, Magda Dettlaff, Michael A. Henning, Magdalena Lemanska
2021 J jnl
J. Comb. Optim.
Magda Dettlaff, Magdalena Lemanska, Juan A. Rodríguez-Velázquez
2021 J jnl
Discret. Appl. Math.
Sergio Bermudo, Magda Dettlaff, Magdalena Lemanska
2020 J jnl
AKCE Int. J. Graphs Comb.
Magda Dettlaff, Magdalena Lemanska, Jerzy Topp, Radoslaw Ziemann, Pawel Zylinski
2019 J jnl
Australas. J Comb.
César Hernández-Cruz, Magdalena Lemanska, Rita Zuazua
2019 J jnl
Discret. Appl. Math.
Magdalena Lemanska, Eduardo Rivera-Campo, Radoslaw Ziemann, Rita Zuazua, Pawel Zylinski
2019 J jnl
Discret. Appl. Math.
Magda Dettlaff, Magdalena Lemanska, Juan Alberto Rodríguez-Velázquez, Rita Zuazua
2019 J jnl
Discret. Appl. Math.
Magdalena Lemanska, Joaquín Tey, Rita Zuazua
2018 J jnl
Graphs Comb.
Joanna Cyman, Magda Dettlaff, Michael A. Henning, Magdalena Lemanska, Joanna Raczek
2018 J jnl
Discuss. Math. Graph Theory
Joanna Cyman, Magda Dettlaff, Michael A. Henning, Magdalena Lemanska, Joanna Raczek
2017 J jnl
Fundam. Informaticae
Magdalena Lemanska, Juan Alberto Rodríguez-Velázquez, Rolando Trujillo-Rasua
2017 J jnl
Graphs Comb.
Magdalena Lemanska, Rita Zuazua, Pawel Zylinski
2016 J jnl
Discuss. Math. Graph Theory
Magda Dettlaff, Magdalena Lemanska, Gabriel Semanisin, Rita Zuazua
2016 J jnl
Ars Comb.
Agata Kucienska, Magdalena Lemanska, Joanna Raczek
2015 J jnl
Discuss. Math. Graph Theory
Diana Avella-Alaminos, Magda Dettlaff, Magdalena Lemanska, Rita Zuazua
2014 J jnl
Discret. Appl. Math.
Magda Dettlaff, Magdalena Lemanska, Ismael González Yero
2014 J jnl
Discret. Appl. Math.
Juan Alberto Rodríguez-Velázquez, Ismael González Yero, Magdalena Lemanska
2012 J jnl
Discuss. Math. Graph Theory
Magdalena Lemanska, Rita Zuazua
2012 J jnl
Australas. J Comb.
Magda Dettlaff, Magdalena Lemanska
2012 J jnl
Period. Math. Hung.
Magdalena Lemanska, Juan Alberto Rodríguez-Velázquez, Ismael González Yero
2010 J jnl
Discret. Appl. Math.
Joanna Raczek, Magdalena Lemanska
2010 J jnl
Discuss. Math. Graph Theory
Magdalena Lemanska
2010 C conf
CTW
Ismael González Yero, Juan Alberto Rodríguez-Velázquez, Magdalena Lemanska
2010 J jnl
Australas. J Comb.
Magda Dettlaff, Magdalena Lemanska
2007 J jnl
Australas. J Comb.
Magdalena Lemanska
2006 J jnl
Discuss. Math. Graph Theory
Joanna Cyman, Magdalena Lemanska, Joanna Raczek
2005 J jnl
Discuss. Math. Graph Theory
Magdalena Lemanska
2004 J jnl
Discuss. Math. Graph Theory
Magdalena Lemanska
redb/extractor_registry.py
← Index redb/extractor_registry.py python
"""
Extractor registry with lazy loading by file type.

Groups extractors by file type (pe, elf, macho, apk) and only imports
the relevant group when that file type is first encountered. This avoids
loading heavy dependencies (pefile, lief, androguard, etc.) into workers
that don't need them.
"""
import importlib
import logging

logger = logging.getLogger(__name__)

# Registry: group name -> list of (module_path, class_names)
_REGISTRY = {
    "pe": [
        ("redb.extractors.pe_extractors", [
            "PEFeaturesExtractor",
            "PEImportExtractor",
            "PEResourceExtractor",
            "PEOverlayExtractor",
            "PESectionExtractor",
            "PESignatureExtractor",
            "PEExtraFindings",
            "PEInconstistencyTestsExtractor",
            "PEDotNetExtractor",
        ]),
    ],
    "elf": [
        ("redb.extractors.elf_extractors", [
            "ELFFeaturesExtractor",
            "ELFSegmentExtractor",
            "ELFSectionExtractor",
            "ELFDependencyExtractor",
            "ELFSymbolExtractor",
            "ELFImportExtractor",
            "ELFExportExtractor",
            "ELFRelocationExtractor",
            "ELFNotesExtractor",
        ]),
    ],
    "macho": [
        ("redb.extractors.macho_extractors", [
            "MachOFeaturesExtractor",
            "MachOSegmentExtractor",
            "MachOImportExtractor",
            "MachOExportExtractor",
            "MachODylibExtractor",
            "MachOSignatureExtractor",
        ]),
    ],
    "apk": [
        ("redb.extractors.apk_extractors", [
            "APKFeaturesExtractor",
            "APKManifestExtractor",
            "APKPermissionsExtractor",
            "APKSignatureExtractor",
            "APKDexExtractor",
            "APKResourceExtractor",
            "APKNativeLibExtractor",
            "APKInconsistencyTestsExtractor",
        ]),
        ("redb.extractors.decompiler.DecompileAPK", [
            "DecompileAPK",
        ]),
    ],
    "js": [
        ("redb.extractors.js_extractors", [
            "JSFeaturesExtractor",
            "JSSuspiciousAPIsExtractor",
            "JSStringsExtractor",
            "JSDeobfuscationExtractor",
            "JSContentExtractor",
        ]),
    ],
}

# Map filetype labels (from Magika) to registry group names
FILETYPE_TO_GROUP = {
    "pebin": "pe",
    "elf": "elf",
    "macho": "macho",
    "apk": "apk",
    "javascript": "js",
}

# Cache: group name -> {class_name: class}
_group_cache = {}


def _load_group(group_name):
    """Import all extractors for a group. Cached after first call."""
    if group_name in _group_cache:
        return _group_cache[group_name]

    logger.debug(f"Loading extractor group: {group_name}")

    # Suppress androguard logging before importing APK extractors
    if group_name == "apk":
        from loguru import logger as loguru_logger
        loguru_logger.disable("androguard")

    classes = {}
    for module_path, class_names in _REGISTRY[group_name]:
        mod = importlib.import_module(module_path)
        for name in class_names:
            classes[name] = getattr(mod, name)

    _group_cache[group_name] = classes
    return classes


def get_filetype_modules(filetype):
    """Get the list of format-specific extractor classes for a filetype.

    Returns only analysis extractors (excludes decompilers like DecompileAPK).
    """
    group = FILETYPE_TO_GROUP.get(filetype)
    if not group:
        return []
    classes = _load_group(group)
    return [cls for name, cls in classes.items() if not name.startswith("Decompile")]


def get_extractor_class(name):
    """Look up a single extractor class by name across all groups.

    Checks cached groups first, then loads groups on demand.
    """
    # Check already-loaded groups first
    for group_classes in _group_cache.values():
        if name in group_classes:
            return group_classes[name]

    # Search all groups (triggers lazy loading)
    for group_name in _REGISTRY:
        classes = _load_group(group_name)
        if name in classes:
            return classes[name]

    return None