pyproject.toml 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. [project]
  2. name = "exo"
  3. version = "0.3.0"
  4. description = "Exo v2"
  5. readme = "README.md"
  6. requires-python = ">=3.13"
  7. dependencies = [
  8. "aiofiles>=24.1.0",
  9. "aiohttp>=3.12.14",
  10. "types-aiofiles>=24.1.0.20250708",
  11. "typeguard>=4.4.4",
  12. "pydantic>=2.11.7",
  13. "base58>=2.1.1",
  14. "cryptography>=45.0.5",
  15. "fastapi>=0.116.1",
  16. "uvicorn>=0.35.0",
  17. "filelock>=3.18.0",
  18. "aiosqlite>=0.21.0",
  19. "networkx>=3.5",
  20. "openai>=1.99.9",
  21. "pathlib>=1.0.1",
  22. "protobuf>=6.32.0",
  23. "rich>=14.1.0",
  24. "rustworkx>=0.17.1",
  25. "sqlmodel>=0.0.24",
  26. "sqlalchemy[asyncio]>=2.0.43",
  27. "greenlet>=3.2.4",
  28. "huggingface-hub>=0.33.4",
  29. "mlx==0.29.3",
  30. "mlx-lm==0.28.3",
  31. "psutil>=7.0.0",
  32. "transformers>=4.55.2",
  33. "cobs>=1.2.2",
  34. "loguru>=0.7.3",
  35. "textual>=5.3.0",
  36. "exo_pyo3_bindings", # rust bindings
  37. "anyio>=4.10.0",
  38. "bidict>=0.23.1",
  39. ]
  40. [project.scripts]
  41. exo-master = "exo.master.main:main"
  42. exo-worker = "exo.worker.main:main"
  43. exo = "exo.main:main"
  44. # dependencies only required for development
  45. [dependency-groups]
  46. dev = [
  47. "pytest>=8.4.0",
  48. "pytest-asyncio>=1.0.0",
  49. "ruff>=0.11.13",
  50. ]
  51. # mlx[cuda] requires a newer version of mlx. the ideal on linux is: default to mlx[cpu] unless[cuda] specified.
  52. # [project.optional-dependencies]
  53. # cuda = [
  54. # "mlx[cuda]==0.26.3",
  55. # ]
  56. ###
  57. # workspace configuration
  58. ###
  59. [tool.uv.workspace]
  60. members = [
  61. "scripts",
  62. "rust/exo_pyo3_bindings",
  63. ]
  64. [tool.uv.sources]
  65. exo_pyo3_bindings = { workspace = true }
  66. [build-system]
  67. requires = ["uv_build>=0.8.9,<0.9.0"]
  68. build-backend = "uv_build"
  69. ###
  70. # type-checker configuration
  71. ###
  72. [tool.basedpyright]
  73. typeCheckingMode = "strict"
  74. failOnWarnings = true
  75. reportAny = "error"
  76. reportUnknownVariableType = "error"
  77. reportUnknownParameterType = "error"
  78. reportMissingParameterType = "error"
  79. reportMissingTypeStubs = "error"
  80. reportInvalidCast = "error"
  81. reportUnnecessaryCast = "error"
  82. reportUnnecessaryTypeIgnoreComment = "error"
  83. pythonVersion = "3.13"
  84. pythonPlatform = "Darwin"
  85. exclude = ["**/.venv", "**/venv", "**/__pycache__", "**/exo_scripts", "**/.direnv", "**/rust"]
  86. stubPath = "typings"
  87. [[tool.basedpyright.executionEnvironments]]
  88. root = "src"
  89. [[tool.basedpyright.executionEnvironments]]
  90. root = "."
  91. ###
  92. # uv configuration
  93. ###
  94. # supported platforms for this project
  95. [tool.uv]
  96. environments = [
  97. "sys_platform == 'darwin'",
  98. "sys_platform == 'linux'",
  99. ]
  100. ###
  101. # ruff configuration
  102. ###
  103. [tool.ruff]
  104. extend-exclude = ["shared/protobufs/**"]
  105. [tool.ruff.lint]
  106. extend-select = ["I", "N", "B", "A", "PIE", "SIM"]
  107. [tool.pytest.ini_options]
  108. pythonpath = "."
  109. asyncio_mode = "auto"
  110. markers = [
  111. "slow: marks tests as slow (deselected by default)"
  112. ]
  113. addopts = "-m 'not slow'"