tdc_toolkit 0.4.2

Rust CLI and library, as well as Python bindings, for working with time-to-digital converters (TDCs) such as the PicoQuant MultiHarp 160.
Documentation
[project]
dynamic = [
        "author",
        "author_email",
        "description",
        "description_content_type",
        "home_page",
        "keywords",
        "license",
        "project_url",
        "summary",
        "version",
]
name = "tdc_toolkit"
requires-python = ">= 3.13"
classifiers = [
    "Development Status :: 4 - Beta",
    "Intended Audience :: Science/Research",
    "License :: OSI Approved :: BSD License",
    "Operating System :: OS Independent",
    "Programming Language :: Python :: 3.13",
    "Programming Language :: Python :: 3.14",
    "Programming Language :: Python :: 3.15",
    "Programming Language :: Rust",
    "Topic :: Scientific/Engineering :: Physics",
    "Topic :: Scientific/Engineering :: Quantum Computing",
    "Topic :: Scientific/Engineering",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Topic :: Software Development :: Libraries",
    "Typing :: Typed",
]
dependencies = []

[build-system]
requires = ["maturin>=1.4,<2.0"]
build-backend = "maturin"

[dependency-groups]
dev = [
    "black>=25.1.0",
    "cffconvert>=2.0.0",
    "isort>=6.0.1",
    'maturin>=1.9.3 ; platform_system == "Windows"',
    'maturin[patchelf]>=1.9.3 ; platform_system != "Windows"',
    "mypy>=1.17.1",
    "pip>=25.2", # maturin requires pip to be installed to build
    "pylint>=3.3.8",
    "ruff>=0.12.9",
]

[tool.hatch.metadata]
allow-direct-references = true

[tool.isort]
profile = "black"

# This will build tdc_toolkit without support for the proprietary
# MultiHarp driver library. To build the Python bindings with
# MultiHarp support, edit the `features` line to include the
# `multiharp` feature or directly use the `maturin` command line with
# `--features` instead of uv.
[tool.maturin]
features = ["pyo3/extension-module", "python"]
module-name = "tdc_toolkit"
python-source = "python"

[tool.mypy]
files = ["."]
exclude = ["^MHLib_.*_64bit/"]
strict = true

[[tool.mypy.overrides]]
module = "plotly.*"
ignore_missing_imports = true

[tool.pylint.format]
max-line-length = "88"

# See https://pylint.pycqa.org/en/latest/user_guide/messages/index.html
[tool.pylint."messages control"]
disable = ["missing-module-docstring", "missing-class-docstring", "missing-function-docstring", "too-few-public-methods"]