content: [build-system]
  requires = ["setuptools>=45", "wheel", "setuptools_scm[toml]>=6.2"]
  
  [project]
  name = "astsynth"
  description = "A library from python program synthesis from restricted abstract syntax trees"
  
  dynamic = ["version", "readme"]
  license = { text = "GNU General Public License v3 or later (GPLv3+)" }
  requires-python = ">=3.7"
  authors = [
      { name = "AutoMathïs" },
      { name = "AutoMathïs", email = "automathis@protonmail.com" },
  ]
  keywords = [
      "python",
      "program",
      "synthesis",
      "ast",
      "abstract",
      "syntax",
      "tree"
  ]
  dependencies = [
      "astor>=0.8.1",
      "networkx>=2.6.0",
      "pydantic>=2.5.0",
  ]
  
  
  [dependency-groups]
  dev = ["pytest", "pytest-cov", "pytest-mock", "pre-commit", "ruff", "mypy"]
  
  [project.urls]
  Source = "https://github.com/MathisFederico/Arc"
  
  [tool.setuptools]
  license-files = ['LICEN[CS]E*', 'COPYING*', 'NOTICE*', 'AUTHORS*']
  
  
  [tool.setuptools.dynamic]
  readme = { file = ["README.md"] , content-type = "text/markdown"}
  dependencies = { file = ["requirements.txt"] }
  
  [tool.setuptools_scm]
  
  [tool.pytest.ini_options]
  markers = [
      "slow: marks tests as slow (deselect with '-m \"not slow\"')",
  ]
  testpaths = ["tests"]
  log_level = "DEBUG"
  
  [tool.coverage.run]
  source = ["src"]
  
  [tool.coverage.report]
  exclude = [".tests/"]
  
  # Regexes for lines to exclude from consideration
  exclude_also = [
      # Don't complain if tests don't hit defensive code:
      "raise",
  
      # Don't complain if non-runnable code isn't run:
      "if TYPE_CHECKING:",
  
      # Don't complain if explicitly said so:
      "pragma: no cover"
  ]
  
  
  [tool.ruff]
  # Same as Black.
  line-length = 88
  
  # Assume Python 3.10.
  target-version = "py310"
  
  [tool.ruff.lint]
  # Enable pycodestyle (`E`) and Pyflakes (`F`) codes by default.
  select = ["E", "F"]
  ignore = ["E501"]
  
  # Allow autofix for all enabled rules (when `--fix`) is provided.
  fixable = ["A", "B", "C", "D", "E", "F"]
  unfixable = []
  
  # Exclude a variety of commonly ignored directories.
  exclude = [
      ".bzr",
      ".direnv",
      ".eggs",
      ".git",
      ".hg",
      ".mypy_cache",
      ".nox",
      ".pants.d",
      ".pytype",
      ".ruff_cache",
      ".svn",
      ".tox",
      ".venv",
      "__pypackages__",
      "_build",
      "buck-out",
      "build",
      "dist",
      "node_modules",
      "venv",
  ]
  
  
  # Allow unused variables when underscore-prefixed.
  dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
  
  
  [tool.ruff.lint.mccabe]
  # Unlike Flake8, default to a complexity level of 10.
  max-complexity = 10
  
  [tool.mypy]
  files = "src"
  check_untyped_defs = true
  disallow_any_generics = false
  disallow_incomplete_defs = true
  no_implicit_optional = false
  no_implicit_reexport = true
  strict_equality = true
  warn_redundant_casts = true
  warn_unused_ignores = true
  ignore_missing_imports = true
  