pyproject.toml 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. [build-system]
  2. requires = ["setuptools>=68.0"]
  3. build-backend = "setuptools.build_meta"
  4. [project]
  5. name = "chattolib"
  6. version = "0.5.0a5"
  7. description = "Async Python client library for the Chatto webchat Connect API"
  8. requires-python = ">=3.11"
  9. license = "MPL-2.0 AND Apache-2.0"
  10. license-files = ["LICENSE", "LICENSES/*.txt"]
  11. readme = "README.md"
  12. authors = [
  13. { name = "Felix", email = "chatto@f3l1x.it" },
  14. ]
  15. keywords = ["chatto", "connect", "connectrpc", "async", "webchat", "client"]
  16. classifiers = [
  17. "Development Status :: 3 - Alpha",
  18. "Intended Audience :: Developers",
  19. "Programming Language :: Python :: 3",
  20. "Programming Language :: Python :: 3.11",
  21. "Programming Language :: Python :: 3.12",
  22. "Programming Language :: Python :: 3.13",
  23. "Topic :: Communications :: Chat",
  24. "Framework :: AsyncIO",
  25. ]
  26. dependencies = [
  27. "protobuf>=5.28",
  28. "httpx>=0.27",
  29. ]
  30. [project.urls]
  31. Homepage = "https://chat.chatto.run"
  32. [project.optional-dependencies]
  33. realtime = [
  34. "websockets>=13.0",
  35. ]
  36. dev = [
  37. "pytest>=8.0",
  38. "pytest-asyncio>=0.24",
  39. "respx>=0.22",
  40. "ruff>=0.8",
  41. "mypy>=1.13",
  42. ]
  43. [tool.setuptools.packages.find]
  44. where = ["src"]
  45. [tool.pytest.ini_options]
  46. asyncio_mode = "auto"
  47. testpaths = ["tests"]
  48. [tool.ruff]
  49. target-version = "py311"
  50. line-length = 100
  51. extend-exclude = ["src/chattolib/_pb", "src/chattolib/_codegen"]
  52. [tool.ruff.lint]
  53. select = ["E", "F", "I", "N", "W", "UP"]
  54. [tool.mypy]
  55. python_version = "3.11"
  56. strict = true
  57. warn_return_any = true
  58. warn_unused_configs = true
  59. exclude = ["src/chattolib/_pb", "src/chattolib/_codegen"]
  60. [[tool.mypy.overrides]]
  61. # Generated protobuf modules and third-party libs that ship no type info are
  62. # treated as untyped: protobuf bundles no .pyi/py.typed, and websockets is only
  63. # used behind the [realtime] extra. ignore_missing_imports keeps mypy from
  64. # flagging the `import google.protobuf...` lines in the hand-written transport.
  65. module = [
  66. "chattolib._pb.*",
  67. "chattolib._codegen.*",
  68. "google.protobuf.*",
  69. "websockets.*",
  70. ]
  71. follow_imports = "skip"
  72. ignore_missing_imports = true