content: [project]
  name = "oio"
  dynamic = [
    "authors",
    "classifiers",
    "description",
    "entry-points",
    "readme",
    "scripts",
    "version",
  ]
  dependencies = [
    "cliff~=4.8.0",
    "cryptography>=2.0.2",
    "eventlet~=0.38.2",
    "gevent>=22.10.2",
    "importlib_resources",
    "jsonschema>=4.17.3",
    "pika~=1.3.2",
    "PyECLib~=1.6.4",
    "PyYAML~=6.0.0",
    "redis~=5.0.8",
    "reflink>=0.2.1",
    "requests~=2.31.0",
    "simplejson~=3.19.0",
    "statsd",
    "urllib3~=1.26.20",
    "xmltodict",
  ]
  
  [build-system]
  requires = ["build", "pbr>=6.0.0", "wheel"]
  build-backend = "pbr.build"
  
  [project.optional-dependencies]
  # All dependencies needed to run the program (but not to test it)
  all = ["oio[event,object,service,zk]"]
  
  # Use the event system
  event = [
    "confluent_kafka~=2.3.0",
  ]
  # Check the code
  lint = [
    "pylint",
    "ruff",
  ]
  # Read or write objects
  object = [
    "blake3~=0.3.4",
  ]
  # Run services (account, xcute, etc.)
  service = [
    "foundationdb~=6.3.15",
    "gunicorn~=23.0.0",
    "werkzeug~=2.2.3",
  ]
  # Run tests
  test = [
    "coverage",
    "fixtures>=1.4.0",
    "gcovr",
    "mock>=1.0",
    "pytest",
    "pytest-rerunfailures",
    "pytest-timeout",
    "pytest-timer",
    "oio[all]",
    "oio[lint]",
  ]
  # Talk to Zookeeper (with openio CLI)
  zk = [
    "kazoo~=2.10.0",
  ]
  
  [tool.pytest.ini_options]
  addopts = [
    "--timer-top-n=10",
  ]
  log_level = "DEBUG"
  markers = [
    "no_thread_patch: tests which must run with unpatched thread module",
  ]
  
  [tool.ruff]
  target-version = "py37"
  line-length = 88
  extend-include = ["bin/*", "tools/**/*.py"]
  exclude = ["tools/oio-bootstrap.py", "bin/encryption_tool/README.md", "confgen.py"]
  
  [tool.ruff.lint]
  extend-select = ["E", "I"]
  ignore = ["D203", "D212"]
  
  [tool.ruff.lint.per-file-ignores]
  "{tests,tools}/**" = ["D"]
  
  [tool.setuptools.dynamic]
  readme = {file = "README.md", content-type = "text/markdown"}
  