[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

# ------ - ------

[tool.poetry]
name = "tractor"
version = "0.1.0a6dev0"
description='structured concurrent `trio`-"actors"'
authors = ["Tyler Goodlet <goodboy_foss@protonmail.com>"]
license = "AGPlv3"
readme = "docs/README.rst"

# TODO: do we need this xontrib loader at all given pep420
# and xonsh's xontrib global-autoload-via-setuptools?
# https://xon.sh/tutorial_xontrib.html#authoring-xontribs
packages = [
  {include = 'tractor' },
  # {include = 'tractor.experimental' },
  # {include = 'tractor.trionics' },
  # {include = 'tractor.msg' },
  # {include = 'tractor.devx' },
]

# ------ - ------

[tool.poetry.dependencies]
python = "^3.11"

# trio runtime related
# proper range spec:
# https://packaging.python.org/en/latest/discussions/install-requires-vs-requirements/#id5
trio='^0.24'
tricycle = "^0.4.1"
trio-typing = "^0.10.0"

msgspec='^0.18.5'  # interchange
wrapt = "^1.16.0"  # decorators
colorlog = "^6.8.2"  # logging

# built-in multi-actor `pdb` REPL
pdbp = "^1.5.0"


# TODO: distributed transport using
# linux kernel networking
# 'pyroute2

# ------ - ------

[tool.poetry.group.dev]
optional = false
[tool.poetry.group.dev.dependencies]
# testing
pytest = "^8.2.0"
pexpect = "^4.9.0"

# .devx tooling
greenback = "^1.2.1"
stackscope = "^0.2.2"

# (light) xonsh usage/integration
xontrib-vox = "^0.0.1"
prompt-toolkit = "^3.0.43"
xonsh-vox-tabcomplete = "^0.5"

# ------ - ------

[tool.towncrier]
package = "tractor"
filename = "NEWS.rst"
directory = "nooz/"
version = "0.1.0a6"
title_format = "tractor {version} ({project_date})"
template = "nooz/_template.rst"
all_bullets = true

  [[tool.towncrier.type]]
  directory = "feature"
  name = "Features"
  showcontent = true

  [[tool.towncrier.type]]
  directory = "bugfix"
  name = "Bug Fixes"
  showcontent = true

  [[tool.towncrier.type]]
  directory = "doc"
  name = "Improved Documentation"
  showcontent = true

  [[tool.towncrier.type]]
  directory = "trivial"
  name = "Trivial/Internal Changes"
  showcontent = true

# ------ - ------

[tool.pytest.ini_options]
minversion = '6.0'
testpaths = [
  'tests'
]
addopts = [
  # TODO: figure out why this isn't working..
  '--rootdir=./tests',

  '--import-mode=importlib',
  # don't show frickin captured logs AGAIN in the report..
  '--show-capture=no',
]
log_cli = false

# TODO: maybe some of these layout choices?
# https://docs.pytest.org/en/8.0.x/explanation/goodpractices.html#choosing-a-test-layout-import-rules
# pythonpath = "src"

# ------ - ------

[project]
keywords = [
  'trio',
  'async',
  'concurrency',
  'structured concurrency',
  'actor model',
  'distributed',
  'multiprocessing'
]
classifiers = [
  "Development Status :: 3 - Alpha",
  "Operating System :: POSIX :: Linux",
  "Framework :: Trio",
  "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)",
  "Programming Language :: Python :: Implementation :: CPython",
  "Programming Language :: Python :: 3 :: Only",
  "Programming Language :: Python :: 3.11",
  "Topic :: System :: Distributed Computing",
]