[build-system] requires = ["hatchling"] build-backend = "hatchling.build" # ------ build-system ------ [project] name = "tractor" version = "0.1.0a6dev0" description = 'structured concurrent `trio`-"actors"' authors = [{ name = "Tyler Goodlet", email = "goodboy_foss@protonmail.com" }] requires-python = ">= 3.11" readme = "docs/README.rst" license = "AGPL-3.0-or-later" 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", ] dependencies = [ # trio runtime and friends # (poetry) proper range specs, # https://packaging.python.org/en/latest/discussions/install-requires-vs-requirements/#id5 # TODO, for 3.13 we must go go `0.27` which means we have to # disable strict egs or port to handling them internally! "trio>0.27", "tricycle>=0.4.1,<0.5", "trio-typing>=0.10.0,<0.11", "wrapt>=1.16.0,<2", "colorlog>=6.8.2,<7", # built-in multi-actor `pdb` REPL "pdbp>=1.6,<2", # windows only (from `pdbp`) "tabcompleter>=1.4.0", # typed IPC msging # TODO, get back on release once 3.13 support is out! "msgspec", ] # ------ project ------ [dependency-groups] dev = [ # test suite # TODO: maybe some of these layout choices? # https://docs.pytest.org/en/8.0.x/explanation/goodpractices.html#choosing-a-test-layout-import-rules "pytest>=8.2.0,<9", "pexpect>=4.9.0,<5", # `tractor.devx` tooling "greenback>=1.2.1,<2", "stackscope>=0.2.2,<0.3", "pyperclip>=1.9.0", "prompt-toolkit>=3.0.50", "xonsh>=0.19.2", ] # TODO, distributed (multi-host) extensions # linux kernel networking # 'pyroute2 [tool.hatch.build.targets.sdist] include = ["tractor"] [tool.hatch.build.targets.wheel] include = ["tractor"] # ------ dependency-groups ------ [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 # ------ tool.towncrier ------ [tool.uv] # XXX NOTE, prefer the sys python bc apparently the distis from # `astral` are built in a way that breaks `pdbp`+`tabcompleter`'s # likely due to linking against `libedit` over `readline`.. # |_https://docs.astral.sh/uv/concepts/python-versions/#managed-python-distributions # |_https://gregoryszorc.com/docs/python-build-standalone/main/quirks.html#use-of-libedit-on-linux # # https://docs.astral.sh/uv/reference/settings/#python-preference python-preference = 'system' # ------ tool.uv ------ [tool.uv.sources] msgspec = { git = "https://github.com/jcrist/msgspec.git" } # XXX NOTE, only for @goodboy's hacking on `pprint(sort_dicts=False)` # for the `pp` alias.. # pdbp = { path = "../pdbp", editable = true } # ------ tool.uv.sources ------