content: [build-system]
  build-backend = "poetry.core.masonry.api"
  requires = ["poetry-core>=1.0.0"]
  
  [tool.black]
  color = true
  line-length = 88
  skip-string-normalization = true
  target-version = ['py312']
  
  [tool.mypy]
  check_untyped_defs = true
  disallow_any_decorated = false
  disallow_any_explicit = false
  disallow_any_expr = false
  disallow_any_generics = true
  disallow_incomplete_defs = true
  disallow_subclassing_any = true
  disallow_untyped_calls = true
  disallow_untyped_defs = true
  explicit_package_bases = true
  ignore_missing_imports = true
  namespace_packages = true
  no_implicit_optional = true
  no_implicit_reexport = true
  python_version = "3.12"
  show_error_codes = true
  strict_equality = true
  strict_optional = true
  warn_no_return = true
  warn_redundant_casts = true
  warn_unreachable = true
  warn_unused_configs = true
  warn_unused_ignores = false
  disable_error_code = ["type-arg"]
  
  [tool.poetry]
  authors = ["Meryll Dindin <merylldin@gmail.com>"]
  description = "Topology data analysis routines"
  name = "topologyx"
  readme = "README.md"
  version = "1.0.3"
  
  [tool.poetry.dependencies]
  python = ">=3.12,<3.14"
  gudhi = "^3.11.0"
  keras = "^3.9.0"
  matplotlib = "^3.10.1"
  numpy = "^2.2.3"
  plotly = "^6.0.0"
  scikit-learn = "^1.6.1"
  tqdm = "^4.67.1"
  
  [tool.poetry.group.dev]
  optional = true
  
  [tool.poetry.group.dev.dependencies]
  black = "^25.1.0"
  mypy = "^1.15.0"
  pytest = "^8.3.5"
  pytest-cov = "^7.0.0"
  ruff = "^0.13.0"
  
  [tool.poetry.group.types]
  optional = true
  
  [tool.poetry.group.types.dependencies]
  types-pyyaml = "^6.0"
  
  [tool.poetry.group.jupyter]
  optional = true
  
  [tool.poetry.group.jupyter.dependencies]
  ipykernel = "^6.29.5"
  
  [tool.poetry.scripts]
  topologyx = "topologyx.main:cli"
  
  [tool.pytest.ini_options]
  addopts = "--no-header -rA"
  pythonpath = ["."]
  
  [tool.ruff]
  extend-include = ["*.ipynb", "*.toml"]
  line-length = 88
  output-format = "grouped"
  show-fixes = true
  
  [tool.ruff.lint]
  dummy-variable-rgx = "_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_"
  ignore = ["D100", "D101", "E501"]
  select = ["E", "F", "I001", "W"]
  
  [tool.ruff.lint.isort]
  section-order = [
      "first-party",
      "future",
      "local-folder",
      "standard-library",
      "third-party",
  ]
  