Ilias S. Kotsireas

155 papers A* 4A 1B 12C 2Misc 3Journal 103Unranked 14
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Tony Shaska, Ilias S. Kotsireas
2025 J jnl
CoRR
Ilias S. Kotsireas, Tony Shaska
2025 J jnl
Appl. Algebra Eng. Commun. Comput.
Marlene Koelbing, Bernhard Garn, Enrico Iurlano, Ilias S. Kotsireas, Dimitris E. Simos
2025 A ed.
DIS
Hossein Moosaei, Ilias S. Kotsireas, Panos M. Pardalos
2025 J jnl
Ann. Math. Artif. Intell.
Ilias S. Kotsireas, Panos M. Pardalos
2025 J jnl
Maple Trans.
Ilias S. Kotsireas
2025 J jnl
Cryptogr. Commun.
Stephen London, Ilias S. Kotsireas
2025 J jnl
Math. Comput.
Tyler Lumsden, Ilias S. Kotsireas, Curtis Bright
2025 B conf
ISSAC
Ilias S. Kotsireas, Ana-Isabel Gómez, Domingo Gómez-Pérez
2025 J jnl
Discret. Math.
Ilias S. Kotsireas, Christoph Koutschan, Arne Winterhof
2024 J jnl
J. Symb. Comput.
Ilias S. Kotsireas, Toufik Mansour, Gökhan Yildirim
2024 J jnl
Distributed Ledger Technol. Res. Pract.
Stefanos Leonardos, William J. Knottenbelt, Elise Alfieri, Panos M. Pardalos, Ilias S. Kotsireas
2024 J jnl
CoRR
Tyler Lumsden, Ilias S. Kotsireas, Curtis Bright
2024 J jnl
Discret. Math.
Radel Ben-Av, Giora Dula, Assaf Goldberger, Ilias S. Kotsireas, Yossi Strassler
2024 J jnl
J. Glob. Optim.
Konstantinos E. Parsopoulos, Vasileios A. Tatsis, Ilias S. Kotsireas, Panos M. Pardalos
2024 J jnl
J. Glob. Optim.
Ilias S. Kotsireas, Panos M. Pardalos, Julius Zilinskas
2024 conf
MARBLE
Maxwell Dann, Ilias S. Kotsireas
2023 ed.
MARBLE
Panos M. Pardalos, Ilias S. Kotsireas, Yike Guo, William J. Knottenbelt
2023 B ed.
CASC
François Boulier, Matthew England, Ilias S. Kotsireas, Timur M. Sadykov, Evgenii V. Vorozhtsov
2023 J jnl
Ann. Math. Artif. Intell.
Ilias S. Kotsireas, Panos M. Pardalos, Dimitris E. Simos
2023 J jnl
Math. Comput. Sci.
Ilias S. Kotsireas, Dimitris E. Simos, Ali Kemal Uncu
2023 ed.
MARBLE
Panos M. Pardalos, Ilias S. Kotsireas, William J. Knottenbelt, Stefanos Leonardos
2023 J jnl
Ann. Math. Artif. Intell.
Ilias S. Kotsireas, Panos M. Pardalos, Dimitris E. Simos
2023 J jnl
Maple Trans.
Robert M. Corless, Ilias S. Kotsireas
2023 J jnl
J. Symb. Comput.
Jonathan D. Hauenstein, Yang-Hui He, Ilias S. Kotsireas, Dhagash Mehta, Tingting Tang
2022 J jnl
Optim. Methods Softw.
Ludwig Kampel, Michael Wagner, Ilias S. Kotsireas, Dimitris E. Simos
2022 B conf
ISSAC
Evangelos Bartzos, Ioannis Z. Emiris, Ilias S. Kotsireas, Charalambos Tzamos
2022 ed.
LION
Dimitris E. Simos, Varvara Rasskazova, Francesco Archetti, Ilias S. Kotsireas, Panos M. Pardalos
2022 J jnl
Math. Comput. Sci.
Ilias S. Kotsireas
2022 J jnl
Ann. Math. Artif. Intell.
Ilias S. Kotsireas, Panos M. Pardalos
2022 J jnl
Oper. Res. Forum
Ilias S. Kotsireas
2022 J jnl
CoRR
Ilias S. Kotsireas, Panos M. Pardalos, Alexander Semenov, William T. Trevena, Michael N. Vrahatis
2022 J jnl
CoRR
Ilias S. Kotsireas, Panos M. Pardalos, Alexander Semenov, William T. Trevena, Michael N. Vrahatis
2022 J jnl
Commun. ACM
Curtis Bright, Ilias S. Kotsireas, Vijay Ganesh
2021 J jnl
Des. Codes Cryptogr.
Jonathan S. Turner, Ilias S. Kotsireas, Dursun A. Bulutoglu, Andrew J. Geyer
2021 A* conf
AAAI
Curtis Bright, Kevin K. H. Cheung, Brett Stevens, Ilias S. Kotsireas, Vijay Ganesh
2021 J jnl
J. Symb. Comput.
Curtis Bright, Ilias S. Kotsireas, Albert Heinle, Vijay Ganesh
2021 ed.
LION
Dimitris E. Simos, Panos M. Pardalos, Ilias S. Kotsireas
2021 ed.
MC
Robert M. Corless, Jürgen Gerhard, Ilias S. Kotsireas
2020 ed.
MARBLE
Panos M. Pardalos, Ilias S. Kotsireas, Yike Guo, William J. Knottenbelt
2020 ed.
MARBLE
Panos M. Pardalos, Ilias S. Kotsireas, Yike Guo, William J. Knottenbelt
2020 J jnl
CoRR
Curtis Bright, Kevin K. H. Cheung, Brett Stevens, Ilias S. Kotsireas, Vijay Ganesh
2020 J jnl
Appl. Algebra Eng. Commun. Comput.
Curtis Bright, Kevin K. H. Cheung, Brett Stevens, Dominique Roy, Ilias S. Kotsireas, Vijay Ganesh
2020 J jnl
J. Symb. Comput.
Curtis Bright, Ilias S. Kotsireas, Vijay Ganesh
2020 J jnl
Ann. Math. Artif. Intell.
Ilias S. Kotsireas, Temur Kutsia, Dimitris E. Simos
2020 J jnl
Math. Comput. Sci.
Anna Maria Bigatti, Francisco Botana, Thierry N. Dana-Picard, Felipe Gago, Ilias S. Kotsireas, Manuel Ladra, Wei Li
2020 J jnl
Ann. Math. Artif. Intell.
Ilias S. Kotsireas, Panos M. Pardalos
2020 ed.
PAAR+SC²@IJCAR
Pascal Fontaine, Konstantin Korovin, Ilias S. Kotsireas, Philipp Rümmer, Sophie Tourret
2020 ed.
LION
Ilias S. Kotsireas, Panos M. Pardalos
2020 ed.
MC
Jürgen Gerhard, Ilias S. Kotsireas
2020 J jnl
IEEE Trans. Inf. Theory
Curtis Bright, Ilias S. Kotsireas, Vijay Ganesh
2020 C conf
IWOCA
Curtis Bright, Kevin K. H. Cheung, Brett Stevens, Ilias S. Kotsireas, Vijay Ganesh
2020 J jnl
CoRR
Curtis Bright, Kevin K. H. Cheung, Brett Stevens, Ilias S. Kotsireas, Vijay Ganesh
2020 J jnl
Appl. Algebra Eng. Commun. Comput.
Kenza Guenda, Iiro S. Honkala, Ilias S. Kotsireas, Teo Mora, Qiang Wang
2020 A* conf
IJCAI
Curtis Bright, Kevin K. H. Cheung, Brett Stevens, Ilias S. Kotsireas, Vijay Ganesh
2020 J jnl
CoRR
Curtis Bright, Kevin K. H. Cheung, Brett Stevens, Ilias S. Kotsireas, Vijay Ganesh
2019 J jnl
CoRR
Curtis Bright, Kevin K. H. Cheung, Brett Stevens, Dominique Roy, Ilias S. Kotsireas, Vijay Ganesh
2019 A* conf
AAAI
Curtis Bright, Dragomir Z. Ðokovic, Ilias S. Kotsireas, Vijay Ganesh
2019 conf
CAI
Ludwig Kampel, Dimitris E. Simos, Bernhard Garn, Ilias S. Kotsireas, Evgeny Zhereshchin
2019 ed.
SEA²
Ilias S. Kotsireas, Panos M. Pardalos, Konstantinos E. Parsopoulos, Dimitris Souravlias, Arsenis Tsokas
2019 J jnl
CoRR
Curtis Bright, Ilias S. Kotsireas, Albert Heinle, Vijay Ganesh
2019 J jnl
Complex.
Panagiotis Vlamos, Ilias S. Kotsireas, Dimitrios Vlachakis
2019 conf
MC
Curtis Bright, Jürgen Gerhard, Ilias S. Kotsireas, Vijay Ganesh
2019 J jnl
CoRR
Curtis Bright, Jürgen Gerhard, Ilias S. Kotsireas, Vijay Ganesh
2019 J jnl
Math. Comput. Sci.
Michel Beaudin, Thierry N. Dana-Picard, Alexander B. Levin, Christoph Koutschan, Ilias S. Kotsireas, Daniel Robertz
2019 conf
LION
Ludwig Kampel, Michael Wagner, Ilias S. Kotsireas, Dimitris E. Simos
2019 ed.
LION
Roberto Battiti, Mauro Brunato, Ilias S. Kotsireas, Panos M. Pardalos
2019 J jnl
ACM Commun. Comput. Algebra
Jürgen Gerhard, Ilias S. Kotsireas
2019 J jnl
CoRR
Curtis Bright, Ilias S. Kotsireas, Vijay Ganesh
2019 B conf
CASC
Ilias S. Kotsireas, Youtong Liu, Jing Yang
2019 J jnl
Optim. Methods Softw.
Dimitris Souravlias, Ilias S. Kotsireas, Panos M. Pardalos, Konstantinos E. Parsopoulos
2019 J jnl
Theor. Comput. Sci.
Manfred Droste, Ilias S. Kotsireas, Robert Rolland
2019 B conf
CASC
Rémi Imbach, Victor Y. Pan, Chee Yap, Ilias S. Kotsireas, Vitaly Zaderman
2019 J jnl
CoRR
Curtis Bright, Ilias S. Kotsireas, Vijay Ganesh
2019 conf
CASCON
Curtis Bright, Ilias S. Kotsireas, Vijay Ganesh
2019 J jnl
CoRR
Curtis Bright, Dragomir Z. Dokovic, Ilias S. Kotsireas, Vijay Ganesh
2019 J jnl
Ann. Math. Artif. Intell.
Curtis Bright, Dragomir Z. Dokovic, Ilias S. Kotsireas, Vijay Ganesh
2018 J jnl
CoRR
Curtis Bright, Dragomir Z. Djokovic, Ilias S. Kotsireas, Vijay Ganesh
2018 A* conf
AAAI
Curtis Bright, Ilias S. Kotsireas, Vijay Ganesh
2018 J jnl
J. Comb. Optim.
Francisco J. Aragón Artacho, Rubén Campoy, Ilias S. Kotsireas, Matthew K. Tam
2018 J jnl
CoRR
Curtis Bright, Ilias S. Kotsireas, Vijay Ganesh
2018 Misc conf
AISC
Ilias S. Kotsireas, Jing Yang
2018 B conf
ISSAC
Curtis Bright, Ilias S. Kotsireas, Albert Heinle, Vijay Ganesh
2018 J jnl
CoRR
Curtis Bright, Ilias S. Kotsireas, Albert Heinle, Vijay Ganesh
2018 C conf
IWOCA
Kristoffer Kleine, Ilias S. Kotsireas, Dimitris E. Simos
2018 J jnl
Math. Comput. Sci.
Dardo Goyeneche, Ilias S. Kotsireas, Padraig Ó Catháin
2018 J jnl
Math. Comput. Sci.
Dragomir Z. Dokovic, Ilias S. Kotsireas
2018 conf
SC-Square@FLOC
Ilias S. Kotsireas
2018 J jnl
ACM Commun. Comput. Algebra
Curtis Bright, Ilias S. Kotsireas, Vijay Ganesh
2017 J jnl
J. Autom. Reason.
Edward Zulkoski, Curtis Bright, Albert Heinle, Ilias S. Kotsireas, Krzysztof Czarnecki, Vijay Ganesh
2017 J jnl
Math. Comput. Sci.
Thierry N. Dana-Picard, Wolfram Koepf, Ilias S. Kotsireas, Zoltán Kovács, Alexander N. Prokopenya, Werner M. Seiler
2017 ed.
MACIS
Johannes Blömer, Ilias S. Kotsireas, Temur Kutsia, Dimitris E. Simos
2017 J jnl
Math. Comput. Sci.
Ilias S. Kotsireas
2017 B conf
ISSAC
Ioannis Z. Emiris, Christos Konaxis, Ilias S. Kotsireas, Clément Laroche
2016 J jnl
Optim. Lett.
Dimitris Souravlias, Konstantinos E. Parsopoulos, Ilias S. Kotsireas
2016 Misc conf
ISAIM
Ilias S. Kotsireas
2016 J jnl
J. Satisf. Boolean Model. Comput.
Srinivasan Arunachalam, Ilias S. Kotsireas
2016 B conf
CASC
Curtis Bright, Vijay Ganesh, Albert Heinle, Ilias S. Kotsireas, Saeed Nejati, Krzysztof Czarnecki
2016 conf
SC²@SYNASC
Curtis Bright, Vijay Ganesh, Albert Heinle, Ilias S. Kotsireas, Saeed Nejati, Krzysztof Czarnecki
2016 ed.
MACIS
Ilias S. Kotsireas, Siegfried M. Rump, Chee K. Yap
2016 B conf
SEA
Ilias S. Kotsireas, Panos M. Pardalos, Konstantinos E. Parsopoulos, Dimitris Souravlias
2015 J jnl
Discret. Appl. Math.
Dragomir Z. Dokovic, Ilias S. Kotsireas, Daniel Recoskie, Joe Sawada
2015 J jnl
Des. Codes Cryptogr.
Dragomir Z. Dokovic, Ilias S. Kotsireas
2015 conf
RTA
Ilias S. Kotsireas, Temur Kutsia, Dimitris E. Simos
2015 J jnl
Des. Codes Cryptogr.
Ilias S. Kotsireas, Edgar Martínez-Moro
2015 J jnl
Numer. Algorithms
Dragomir Z. Dokovic, Ilias S. Kotsireas
2014 conf
LION
Ilias S. Kotsireas, Panos M. Pardalos
2014 J jnl
J. Comput. Sci.
Ilias S. Kotsireas, Lilia Krivodonova, Sabine McConnell, Erik Schnetter
2014 J jnl
ACM Commun. Comput. Algebra
Ilias S. Kotsireas
2014 J jnl
ACM Commun. Comput. Algebra
Ilias S. Kotsireas
2013 J jnl
J. Heuristics
Ilias S. Kotsireas, Panos M. Pardalos
2013 J jnl
J. Comput. Sci.
Allen M. Tesdall, Jae-Hun Jung, Ilias S. Kotsireas, Roderick V. N. Melnik
2013 J jnl
Theor. Comput. Sci.
Ilias S. Kotsireas, Bernard Mourrain, Victor Y. Pan, Lihong Zhi
2013 ch.
Number Theory and Related Fields
Ilias S. Kotsireas
2012 conf
ANTS
Ilias S. Kotsireas, Konstantinos E. Parsopoulos, Grigoris S. Piperagkas, Michael N. Vrahatis
2012 J jnl
J. Comb. Optim.
Ilias S. Kotsireas, Christos Koukouvinos, Panos M. Pardalos, Dimitris E. Simos
2012 J jnl
Math. Comput. Sci.
Ilias S. Kotsireas, Irene Marquez Corbella, Edgar Martínez-Moro
2012 J jnl
Optim. Lett.
Ilias S. Kotsireas, Christos Koukouvinos, Jennifer Seberry
2011 J jnl
J. Comb. Optim.
Ilias S. Kotsireas, Christos Koukouvinos, Panos M. Pardalos
2011 J jnl
ACM Commun. Comput. Algebra
Ilias S. Kotsireas, Eugene V. Zima
2011 J jnl
J. Symb. Comput.
Elizabeth Arnold, Ilias S. Kotsireas, Markus Rosenkranz
2011 J jnl
Informatica
Mujahid N. Syed, Ilias S. Kotsireas, Panos M. Pardalos
2011 J jnl
Theor. Comput. Sci.
Ilias S. Kotsireas, Bernard Mourrain, Victor Y. Pan
2010 J jnl
Optim. Lett.
Ilias S. Kotsireas, Christos Koukouvinos, Panos M. Pardalos
2010 J jnl
Australas. J Comb.
Ilias S. Kotsireas, Christos Koukouvinos, Jennifer Seberry, Dimitris E. Simos
2010 J jnl
Australas. J Comb.
K. T. Arasu, Ilias S. Kotsireas, Christos Koukouvinos, Jennifer Seberry
2010 J jnl
J. Comb. Optim.
Ilias S. Kotsireas, Christos Koukouvinos, Panos M. Pardalos, Oleg V. Shylo
2009 J jnl
J. Symb. Comput.
Ilias S. Kotsireas, Christos Koukouvinos
2009 J jnl
Adv. Math. Commun.
Ilias S. Kotsireas, Christos Koukouvinos, Dimitris E. Simos
2009 ed.
SNC
Hiroshi Kai, Hiroshi Sekigawa, Tateaki Sasaki, Kiyoshi Shirayanagi, Ilias S. Kotsireas
2009 J jnl
J. Symb. Comput.
Robert M. Corless, Karin Gatermann, Ilias S. Kotsireas
2008 J jnl
Math. Comput. Sci.
Ilias S. Kotsireas
2008 J jnl
Theor. Comput. Sci.
Marco Chiarandini, Ilias S. Kotsireas, Christos Koukouvinos, Luís Paquete
2008 J jnl
Australas. J Comb.
Ilias S. Kotsireas, Christos Koukouvinos, Jennifer Seberry
2008 J jnl
Australas. J Comb.
Ilias S. Kotsireas, Christos Koukouvinos
2007 J jnl
ACM Commun. Comput. Algebra
Mark Giesbrecht, Ilias S. Kotsireas, Austin Lobo
2007 conf
PASCO
Ilias S. Kotsireas, Christos Koukouvinos
2007 J jnl
Australas. J Comb.
Ilias S. Kotsireas, Christos Koukouvinos
2006 J jnl
J. Frankl. Inst.
Konstantinos Karamanos, Ilias S. Kotsireas
2006 J jnl
Australas. J Comb.
Jason Cousineau, Ilias S. Kotsireas, Christos Koukouvinos
2006 J jnl
Eur. J. Comb.
Ilias S. Kotsireas, Christos Koukouvinos, Jennifer Seberry
2006 J jnl
ACM Commun. Comput. Algebra
Ilias S. Kotsireas, Eugene A. Zima
2005 conf
HPCS
Ilias S. Kotsireas, Gil Pinheiro
2005 J jnl
J. Symb. Comput.
Ilias S. Kotsireas, Alkiviadis G. Akritas, Stanly L. Steinberg, Michael J. Wester
2005 J jnl
J. Frankl. Inst.
Konstantinos Karamanos, Ilias S. Kotsireas
2004 J jnl
SIGSAM Bull.
Ilias S. Kotsireas, Emil J. Volcheck
2004 J jnl
Int. J. Bifurc. Chaos
Ilias S. Kotsireas, Kostas Karamanos
2003 J jnl
SIGSAM Bull.
Ilias S. Kotsireas, Edmond Lau, Richard Voino
2003 conf
ICCSA (3)
Ioannis Z. Emiris, Ilias S. Kotsireas
2003 conf
Geometric and Algorithmic Aspects of Computer-Aided Design and Manufacturing
Ioannis Z. Emiris, Ilias S. Kotsireas
2002 B conf
ISSAC
Robert M. Corless, André Galligo, Ilias S. Kotsireas, Stephen M. Watt
2001 J jnl
SIGSAM Bull.
Ilias S. Kotsireas
2001 B conf
ISSAC
Robert M. Corless, Mark Giesbrecht, Mark van Hoeij, Ilias S. Kotsireas, Stephen M. Watt
2000 Misc conf
AISC
Robert M. Corless, Mark Giesbrecht, Ilias S. Kotsireas, Stephen M. Watt
1999 B conf
CASC
Jean-Charles Faugère, Ilias S. Kotsireas
tests/unit/conftest.py
← Index tests/unit/conftest.py python
"""
Unit test configuration.

Replaces the redb.extractors package with a minimal stub so that
``from redb.extractors.database_exporters import ...`` works without
pulling in the heavy __init__.py import chain (pefile, elftools,
signify, magic, etc.).

Also stubs out redb.settings so that Elasticsearch / ClickHouse
clients are never actually created during unit tests.

Additionally installs binaryninja stubs for decompiler unit tests.

Stubs heavy third-party packages (pefile, magic, psutil, etc.) so that
redb.workers, redb.queries, redb.ingestor, and redb.s3_utils can all
be imported and patched in unit tests without requiring the real packages.
"""
import sys
import types
from pathlib import Path
from unittest.mock import MagicMock

# ---------------------------------------------------------------------------
# 0. Install binaryninja stubs FIRST — must happen before any decompiler
#    module is imported (triggered by __init__.py chain).
# ---------------------------------------------------------------------------
from tests.unit.conftest_binja_stubs import install_binja_stubs as _install_binja_stubs
_install_binja_stubs()

# ---------------------------------------------------------------------------
# 1. Stub external packages required by database_exporters.py itself,
#    the decompiler chain, and the workers/ingestor modules.
# ---------------------------------------------------------------------------
_heavy_deps = [
    # Database / networking
    "elasticsearch", "clickhouse_connect", "dotenv",
    # Binary analysis — top-level packages
    "pefile", "magic", "machofile",
    # Archive handling
    "py7zr", "pyzipper",
    # File type detection
    "magika",
    # System monitoring
    "psutil",
    # S3 / MinIO (submodule paths needed for `from minio.error import S3Error`)
    "minio", "minio.error",
    # YARA
    "yara_x",
    # Binary parsing — elftools tree
    "elftools", "elftools.elf", "elftools.elf.elffile",
    "elftools.common", "elftools.common.exceptions",
    # Code signing — signify tree
    "signify", "signify.fingerprinter", "signify.authenticode",
    # LIEF
    "lief",
    # Fuzzy hashing
    "ppdeep",
    # .NET analysis
    "dotnetfile",
    # Crypto / ASN.1
    "asn1crypto", "asn1crypto.cms", "asn1crypto.pem", "asn1crypto.x509", "asn1crypto.core",
    # Hashing
    "xxhash", "blake3", "mmh3", "numpy",
    # APK analysis
    "androguard", "androguard.core", "androguard.core.apk",
    "androguard.core.dex", "androguard.core.api_specific_resources",
    "androguard.misc",
    "permhash",
]
for _mod in _heavy_deps:
    if _mod not in sys.modules:
        try:
            __import__(_mod)
        except (ImportError, ModuleNotFoundError):
            sys.modules[_mod] = MagicMock()

# Stub urllib3 with a real Warning subclass (warnings.filterwarnings needs a class)
if "urllib3" not in sys.modules or isinstance(sys.modules.get("urllib3"), MagicMock):
    try:
        import urllib3  # noqa: F401
    except (ImportError, ModuleNotFoundError):
        _urllib3_mod = types.ModuleType("urllib3")
        _urllib3_exc = types.ModuleType("urllib3.exceptions")

        class _InsecureRequestWarning(UserWarning):
            pass

        _urllib3_exc.InsecureRequestWarning = _InsecureRequestWarning
        _urllib3_mod.exceptions = _urllib3_exc
        sys.modules["urllib3"] = _urllib3_mod
        sys.modules["urllib3.exceptions"] = _urllib3_exc

# Provide a functional ppdeep stub (tests call ppdeep.hash() and expect a string).
# Must overwrite the MagicMock that the loop above may have installed.
_ppdeep_existing = sys.modules.get("ppdeep")
if _ppdeep_existing is None or isinstance(_ppdeep_existing, MagicMock):
    _ppdeep_mod = types.ModuleType("ppdeep")
    _ppdeep_mod.__name__ = "ppdeep"

    def _ppdeep_hash(data):
        """Fake ssdeep hash — returns a deterministic placeholder."""
        if isinstance(data, str):
            data = data.encode("utf-8")
        if len(data) < 50:
            return None
        import hashlib
        h = hashlib.md5(data).hexdigest()
        return f"3:{h[:16]}:{h[16:]}"

    _ppdeep_mod.hash = _ppdeep_hash
    sys.modules["ppdeep"] = _ppdeep_mod

# Stub mmh3 if the C extension is not available
_mmh3_existing = sys.modules.get("mmh3")
if _mmh3_existing is None or isinstance(_mmh3_existing, MagicMock):
    _mmh3_mod = types.ModuleType("mmh3")
    _mmh3_mod.__name__ = "mmh3"

    def _mmh3_hash(data, seed=0):
        """Fake MurmurHash3 — deterministic hash using built-in hashlib."""
        import hashlib
        if isinstance(data, str):
            data = data.encode("utf-8")
        seed_bytes = (seed & 0xFFFFFFFF).to_bytes(8, "little")
        h = hashlib.md5(data + seed_bytes).digest()
        return int.from_bytes(h[:4], "little", signed=True)

    _mmh3_mod.hash = _mmh3_hash
    sys.modules["mmh3"] = _mmh3_mod

# Stub tlsh if the C extension is not available
if "tlsh" not in sys.modules:
    try:
        import tlsh as _real_tlsh  # noqa: F401
    except (ImportError, ModuleNotFoundError):
        _tlsh_mock = types.ModuleType("tlsh")
        _tlsh_mock.__name__ = "tlsh"

        def _tlsh_hash(data):
            """Fake TLSH hash — returns a deterministic placeholder.

            Returns empty string for data < 50 bytes or data with very
            low entropy (e.g. repeating patterns), mimicking the real
            TLSH library's "TNULL" behaviour.
            """
            if isinstance(data, str):
                data = data.encode("utf-8")
            if len(data) < 50:
                return ""
            # Real TLSH returns "" for low-entropy input
            if len(set(data)) < 8:
                return ""
            import hashlib
            return "T1" + hashlib.sha256(data).hexdigest()[:70].upper()

        _tlsh_mock.hash = _tlsh_hash
        sys.modules["tlsh"] = _tlsh_mock

# ---------------------------------------------------------------------------
# 2. Stub redb.settings (package) so module-level code never runs
# ---------------------------------------------------------------------------
_settings_mock = MagicMock()
_settings_mock.__name__ = "redb.settings"
sys.modules["redb.settings"] = _settings_mock
sys.modules["redb.settings.elasticsearch"] = MagicMock()
sys.modules["redb.settings.clickhouse"] = MagicMock()

# ---------------------------------------------------------------------------
# 3. Replace redb.extractors with a minimal package that does NOT eagerly
#    import every extractor (and their heavy deps).  Sub-module imports
#    like ``from redb.extractors.database_exporters import ...`` still work
#    because __path__ points to the real package directory.
# ---------------------------------------------------------------------------
_repo_root = Path(__file__).resolve().parents[2]
_extractors_pkg = types.ModuleType("redb.extractors")
_extractors_pkg.__path__ = [str(_repo_root / "redb" / "extractors")]
_extractors_pkg.__package__ = "redb.extractors"
sys.modules["redb.extractors"] = _extractors_pkg

# ---------------------------------------------------------------------------
# 4. Force-import redb submodules so that @patch('redb.workers.xxx'),
#    @patch('redb.queries.xxx'), etc. can resolve at decoration time.
#    This works because all heavy deps are already stubbed above.
# ---------------------------------------------------------------------------
import redb.logging_utils   # noqa: F401, E402
import redb.s3_utils         # noqa: F401, E402
import redb.queries          # noqa: F401, E402
import redb.workers          # noqa: F401, E402
import redb.ingestor         # noqa: F401, E402