content: # NeuroCognitive Architecture (NCA) for LLMs
  #
  # This pyproject.toml file defines the project configuration, dependencies,
  # development tools, and build system settings for the NeuroCognitive Architecture.
  # It follows modern Python packaging standards using Poetry for dependency management.
  
  [build-system]
  requires = ["poetry-core>=1.0.0"]
  build-backend = "poetry.core.masonry.api"
  
  [project]
  name = "neuroca"
  version = "0.1.0"
  description = "NeuroCognitive Architecture (NCA) for Large Language Models"
  authors = [
      {name = "Justin Lietz", email = "jlietz93@gmail.com"},
  ]
  readme = "README.md"
  license = {text = "MIT"}
  classifiers = [
      "Development Status :: 4 - Beta",
      "Intended Audience :: Science/Research",
      "License :: OSI Approved :: MIT License",
      "Programming Language :: Python :: 3",
      "Programming Language :: Python :: 3.9",
      "Programming Language :: Python :: 3.10",
      "Programming Language :: Python :: 3.11",
      "Topic :: Scientific/Engineering :: Artificial Intelligence",
  ]
  requires-python = ">=3.9,<3.13"
  dependencies = [
      # Core dependencies
      "numpy>=1.24.0",
      "pandas>=2.0.0",
      "scipy>=1.10.0",
      "scikit-learn>=1.2.0",
      "torch>=2.0.0; python_version <= '3.11'",
      "transformers>=4.30.0",
      "pydantic>=2.0.0",
      "fastapi>=0.100.0",
      "uvicorn[standard]>=0.22.0",
      "sqlalchemy>=2.0.0",
      "alembic>=1.11.0",
      "psycopg2-binary>=2.9.6",
      "redis>=5.2.1",
      "httpx>=0.24.1",
      "python-dotenv>=0.21.0",
      "loguru>=0.7.0",
      "typer>=0.9.0",
      "rich>=13.4.0",
      "tenacity>=8.2.2",
      "prometheus-client>=0.17.0",
      "opentelemetry-api>=1.18.0",
      "opentelemetry-sdk>=1.18.0",
      "opentelemetry-exporter-otlp>=1.18.0",
      "langchain>=0.0.267",
      "langchain-core",
      "tiktoken>=0.4.0",
      "faiss-cpu>=1.7.4",
      "pyyaml>=6.0.1",
      "aiohttp>=3.9.0",
      # Add other production dependencies as needed
      "pydantic-settings (>=2.8.1,<3.0.0)"
  ]
  
  [project.urls]
  Repository = "https://github.com/neuroca/neuroca"
  Documentation = "https://docs.neuroca.dev"
  
  [project.scripts]
  neuroca = "neuroca.cli.main:app"
  neuroca-api = "neuroca.api.main:start"
  neuroca-worker = "neuroca.infrastructure.worker:start"
  
  [project.optional-dependencies]
  dev = [
      # Development tools
      "pytest>=7.3.1",
      "pytest-cov>=4.1.0",
      "pytest-asyncio>=0.21.0",
      "black>=23.3.0",
      "isort>=5.12.0",
      "mypy>=1.3.0",
      "ruff>=0.0.272", # Current version uses flat config below
      "pre-commit>=3.3.3",
      "commitizen>=3.2.2",
      "bandit>=1.7.5",
      "safety>=2.3.5",
      "sphinx>=7.0.1",
      "sphinx-rtd-theme>=1.2.2",
      "mkdocs>=1.4.3",
      "mkdocs-material>=9.1.16",
      "ipython>=8.14.0",
      "jupyter>=1.0.0"
  ]
  test = [
      # Testing specific dependencies
      "faker>=18.11.2",
      "hypothesis>=6.80.0",
      "pytest-mock>=3.11.1",
      "pytest-benchmark>=4.0.0",
      "responses>=0.23.1",
      "freezegun>=1.2.2",
  ]
  
  [tool.poetry]
  # Keep poetry-specific configurations like packages
  packages = [
      {include = "neuroca", from = "src"}
  ]
  
  [tool.poetry.group.dev.dependencies]
  mkdocs-minify-plugin = "^0.8.0"
  mkdocs-git-revision-date-localized-plugin = "^1.4.5"
  mkdocs-awesome-pages-plugin = "^2.10.1"
  mkdocs-macros-plugin = "^1.3.7"
  mkdocs-redirects = "^1.2.2"
  
  [tool.black]
  line-length = 100
  target-version = ["py39", "py310", "py311"]
  include = '\.pyi?$'
  exclude = '''
  /(
      \.git
    | \.hg
    | \.mypy_cache
    | \.tox
    | \.venv
    | _build
    | buck-out
    | build
    | dist
  )/
  '''
  
  [tool.isort]
  profile = "black"
  line_length = 100
  multi_line_output = 3
  include_trailing_comma = true
  force_grid_wrap = 0
  use_parentheses = true
  ensure_newline_before_comments = true
  
  [tool.mypy]
  python_version = "3.12"
  warn_return_any = true
  warn_unused_configs = true
  disallow_untyped_defs = true
  disallow_incomplete_defs = true
  check_untyped_defs = true
  disallow_untyped_decorators = true
  no_implicit_optional = true
  strict_optional = true
  warn_redundant_casts = true
  warn_unused_ignores = true
  warn_no_return = true
  warn_unreachable = true
  
  [[tool.mypy.overrides]]
  module = "tests.*"
  disallow_untyped_defs = false
  disallow_incomplete_defs = false
  
  # === CORRECTED RUFF CONFIGURATION (for v0.0.272) START ===
  [tool.ruff]
  # ALL settings go directly under [tool.ruff] for this version (e.g., v0.0.272)
  line-length = 100
  target-version = "py39"
  exclude = [
      ".git",
      ".mypy_cache",
      ".ruff_cache",
      ".venv",
      "__pycache__",
      "docs",
      "build",
      "dist",
      "archive",
  ]
  select = [
      "E",  # pycodestyle errors
      "F",  # pyflakes
      "B",  # flake8-bugbear
      "I",  # isort
      "N",  # pep8-naming
      "UP", # pyupgrade
      "S",  # flake8-bandit (includes S101)
      "BLE",# flake8-blind-except
      "A",  # flake8-builtins
      "C4", # flake8-comprehensions
      "T20",# flake8-print
      "PT", # flake8-pytest-style
      "RET",# flake8-return
      "SIM",# flake8-simplify
  ]
  ignore = ["E203", "E501"]
  
  # per-file-ignores also goes directly under [tool.ruff]
  # Use the inline table syntax for the value
  per-file-ignores = { "tests/**/*.py" = ["S101"] }
  
  # Optional ignores commented out below:
  # per-file-ignores = {
  #    "tests/**/*.py" = ["S101", "S311"], # Example: Ignore assert and random in tests
  #    "**/__init__.py" = ["F401"]          # Example: Ignore unused imports in __init__
  # }
  
  # DO NOT include a [tool.ruff.lint] section for this version.
  # === CORRECTED RUFF CONFIGURATION (for v0.0.272) END ===
  
  
  [tool.pytest.ini_options]
  testpaths = ["tests"]
  python_files = "test_*.py"
  python_functions = "test_*"
  python_classes = "Test*"
  addopts = "--strict-markers --cov=neuroca --cov-report=term --cov-report=xml"
  norecursedirs = ["archive", ".venv", ".git", "__pycache__"]
  collect_ignore = ["archive/development_scripts/test_cli.py"] # Explicitly ignore archived test
  markers = [
      "slow: marks tests as slow (deselect with '-m \"not slow\"')",
      "integration: marks tests as integration tests",
      "e2e: marks tests as end-to-end tests",
  ]
  
  [tool.coverage.run]
  source = ["neuroca"]
  omit = [
      "tests/*",
      "**/__init__.py",
  ]
  
  [tool.coverage.report]
  exclude_lines = [
      "pragma: no cover",
      "def __repr__",
      "raise NotImplementedError",
      "if __name__ == .__main__.:",
      "pass",
      "raise ImportError",
  ]
  
  [tool.bandit]
  exclude_dirs = ["tests", "docs"]
  skips = ["B101"]
  
  [tool.commitizen]
  name = "cz_conventional_commits"
  version = "0.1.0"
  tag_format = "v$version"
  version_files = [
      "src/neuroca/__init__.py",
      "pyproject.toml:version",
  ]
  