[project] name = "veritext" version = "0.1.0-dev" description = "Semantic text validation framework" readme = "readme.md" requires-python = ">=3.11" license = "MIT" authors = [{ name = "Kai Chappell", email = "git@kschappell.com" }] keywords = ["validation", "text", "nlp", "testing", "quality"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Software Development :: Testing", "Topic :: Text Processing", "Typing :: Typed", ] dependencies = [ "pydantic>=2.0", "pydantic-settings>=2.0", "structlog>=23.0", "typer>=0.9", "rich>=13.0", ] [project.optional-dependencies] semantic = ["sentence-transformers>=2.2"] dev = [ "pytest>=7.0", "pytest-cov>=4.0", "mypy>=1.0", "ruff>=0.1", ] all = ["veritext[semantic]"] [project.scripts] veritext = "veritext.cli.main:app" [project.entry-points.pytest11] veritext = "veritext.pytest_plugin" [project.urls] Repository = "https://gitea.kschappell.com/kschappell/veritext" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/veritext"] [tool.ruff] line-length = 88 target-version = "py311" src = ["src", "tests"] [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions "UP", # pyupgrade "ARG", # flake8-unused-arguments "SIM", # flake8-simplify "TCH", # flake8-type-checking "PTH", # flake8-use-pathlib "RUF", # ruff-specific ] ignore = [ "E501", # line too long (handled by formatter) ] [tool.ruff.lint.isort] known-first-party = ["veritext"] [tool.mypy] python_version = "3.11" mypy_path = ["src"] strict = true warn_return_any = true warn_unused_ignores = true disallow_untyped_defs = true disallow_incomplete_defs = true check_untyped_defs = true disallow_untyped_decorators = true no_implicit_optional = true warn_redundant_casts = true warn_unused_configs = true show_error_codes = true files = ["src/veritext"] [[tool.mypy.overrides]] module = ["sentence_transformers.*"] ignore_missing_imports = true [[tool.mypy.overrides]] module = ["structlog", "structlog.*"] ignore_missing_imports = true [tool.pytest.ini_options] testpaths = ["tests"] addopts = "-v --tb=short" pythonpath = ["src"] [tool.coverage.run] source = ["src/veritext"] branch = true [tool.coverage.report] exclude_lines = [ "pragma: no cover", "if TYPE_CHECKING:", "raise NotImplementedError", ]