Kai Ruhl

16 papers A* 2Journal 1Unranked 11
YearRankTypeTitle / Venue / Authors
2015 A* conf
ACM Multimedia
Kai Ruhl, Martin Eisemann, Anna Hilsmann, Peter Eisert, Marcus A. Magnor
2015
Kai Ruhl
2015 ch.
Digital Representations of the Real World
Kai Ruhl
2013 conf
Time-of-Flight and Depth Imaging
Rahul Nair, Kai Ruhl, Frank Lenzen, Stephan Meister, Henrik Schäfer, Christoph S. Garbe, Martin Eisemann, Marcus A. Magnor, Daniel Kondermann
2013 conf
CVMP
Kai Ruhl, Martin Eisemann, Marcus A. Magnor
2013 conf
VMV
Kai Ruhl, Stephan Wenger, Dennis Franke, Julius Saretzki, Marcus A. Magnor
2012 J jnl
Image Vis. Comput.
Anita Sellent, Kai Ruhl, Marcus A. Magnor
2012 A* conf
ACM Multimedia
Kai Ruhl, Benjamin Hell, Felix Klose, Christian Lipski, Sören Petersen, Marcus A. Magnor
2012 conf
CVMP
Kai Ruhl, Felix Klose, Christian Lipski, Marcus A. Magnor
2011 conf
IC3D
Felix Klose, Christian Lipski, Kai Ruhl, Benjamin Meyer, Marcus A. Magnor
2011 conf
CVMP
Felix Klose, Kai Ruhl, Christian Lipski, Marcus A. Magnor
2011 conf
SIGGRAPH Posters
Kai Ruhl, Kai Berger, Christian Lipski, Felix Klose, Yannic Schröder, Alexander Scholz, Marcus A. Magnor
2011 conf
CVMP
Christian Lipski, Felix Klose, Kai Ruhl, Marcus A. Magnor
2011 conf
VMV
Kai Berger, Kai Ruhl, Yannic Schröder, Christian Brümmer, Alexander Scholz, Marcus A. Magnor
2011 conf
EUSIPCO
Felix Klose, Kai Ruhl, Christian Lipski, Christian Linz, Marcus A. Magnor
2011 conf
ICCV Workshops
Kai Berger, Kai Ruhl, M. Albers, Yannic Schröder, Alexander Scholz, Jan Kokemüller, Stefan Guthe, Marcus A. Magnor
pyproject.toml
← Index pyproject.toml ini
[tool.black]
line-length = 120
target-version = ['py38']
include = '\.pyi?$'
extend-exclude = '''
/(
  # directories
  \.eggs
  | \.git
  | \.hg
  | \.mypy_cache
  | \.tox
  | \.venv
  | build
  | dist
  | venv
)/
'''

[tool.isort]
profile = "black"
line_length = 120
multi_line_output = 3
include_trailing_comma = true
force_grid_wrap = 0
use_parentheses = true
ensure_newline_before_comments = true

[tool.flake8]
max-line-length = 120
ignore = ["E501", "W503", "E203", "F401"]
exclude = [
    "__pycache__",
    ".git",
    "venv",
    "build",
    "dist",
    "*.egg-info",
]

[tool.pylint.messages_control]
disable = [
    "C0114",  # missing-module-docstring
    "C0115",  # missing-class-docstring
    "C0116",  # missing-function-docstring
    "C0103",  # invalid-name
    "R0903",  # too-few-public-methods
    "R0913",  # too-many-arguments
    "R0914",  # too-many-locals
    "R0915",  # too-many-statements
]

[tool.pylint.format]
max-line-length = 120

# ============================================================================
# Pytest Configuration
# ============================================================================
[tool.pytest.ini_options]
testpaths = ["tests/unit", "tests/integration"]
python_files = ["test_*.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]

# Default options: verbose, show locals on failure, strict markers
addopts = [
    "-v",
    "--strict-markers",
    "--tb=short",
]

# Custom markers for selective test execution
markers = [
    "unit: Pure unit tests - no external deps, no disk I/O, fast (< 1s each)",
    "integration: Integration tests - use real test binaries on disk",
    "slow: Tests that take > 5s (e.g. entropy on large files, full extraction pipelines)",
    "pe: Tests specific to PE binary analysis",
    "elf: Tests specific to ELF binary analysis",
    "macho: Tests specific to Mach-O binary analysis",
    "apk: Tests specific to APK binary analysis",
    "exporters: Tests for database exporters (ClickHouse, Elasticsearch, Print)",
    "dataclass: Tests for dataclass construction and field validation",
    "binja: Tests for Binary Ninja decompiler extractors (mocked, no license needed)",
]