[tool.poetry]
name = "textual-fastdatatable"
version = "0.12.0"
description = "A performance-focused reimplementation of Textual's DataTable widget, with a pluggable data storage backend."
authors = ["Ted Conbeer <tconbeer@users.noreply.github.com>"]
license = "MIT"
readme = "README.md"
packages = [
    { include = "textual_fastdatatable", from = "src" },
]

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"


[tool.poetry.dependencies]
python = ">=3.9,<3.14"
textual = ">=0.89.1"
pyarrow = ">=16.1.0"
polars = { version = ">=0.20.0", optional = true } 
tzdata = { version = ">=2023", markers = "sys_platform == 'win32'" } # arrow timestamptz support on windows

[tool.poetry.extras]
polars = ["polars"]

[tool.poetry.group.dev.dependencies]
pre-commit = "^3.3.1"
textual-dev = "^1.0.1"
pandas = "^2.1.1"
numpy = "^1"
pyinstrument = "^5"

[tool.poetry.group.static.dependencies]
ruff = "^0.5"
mypy = "^1.10.0"
pandas-stubs = "^2.1.1"

[tool.poetry.group.test.dependencies]
pytest = "^7.3.1"
pytest-asyncio = ">=0.21,<0.24"
pytest-textual-snapshot = ">=0.4.0"
polars = ">=0.20.0"


[tool.ruff]
target-version = "py39"

[tool.ruff.lint]
select = ["A", "B", "E", "F", "I"]

[tool.mypy]
python_version = "3.9"
files = [
    "src/**/*.py",
    "tests/unit_tests/**/*.py"
]
mypy_path = "src:stubs"

show_column_numbers = true

# show error messages from unrelated files
follow_imports = "normal"

# be strict
disallow_untyped_calls = true
disallow_untyped_defs = true
check_untyped_defs = true
disallow_untyped_decorators = true
disallow_incomplete_defs = true
disallow_subclassing_any = true
strict_optional = true

warn_return_any = true
warn_no_return = true
warn_redundant_casts = true
warn_unused_ignores = true
warn_unused_configs = true

no_implicit_reexport = true
strict_equality = true
