[build-system] requires = ["hatchling>=1.32,<2"] build-backend = "hatchling.build" [project] name = "gpt3discord" description = "A Discord bot for current OpenAI chat, images, audio, and moderation APIs" readme = "README.md" requires-python = ">=3.11,<3.14" license = "MIT" authors = [ { name = "Kaveen Kumarasinghe", email = "contact@kaveenk.com" }, ] classifiers = [ "Development Status :: 4 - Beta", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", ] dependencies = [ "aiofiles>=25.1,<26", "aiohttp>=3.14.5,<4", "backoff>=2.2.1,<3", "Flask>=3.1.3,<4", "openai>=2.45,<4", "Pillow>=12.3,<13", "py-cord>=2.8.1,<3", "pycord-multicog>=2.1.1,<3", "python-dotenv>=1.2.4,<2", "requests>=2.34.2,<3", "sqlitedict>=2.1,<3", "tiktoken>=0.14,<1", "Unidecode>=1.4,<2", "yt-dlp>=2026.8.19", ] dynamic = ["version"] [project.scripts] gpt3discord = "gpt3discord:init" [project.urls] Documentation = "https://github.com/Kav-K/GPTDiscord#readme" Issues = "https://github.com/Kav-K/GPTDiscord/issues" Source = "https://github.com/Kav-K/GPTDiscord" [project.optional-dependencies] # LlamaIndex currently requires OpenAI SDK 2.x; the resolver selects that SDK # only when installing this integration. The core also supports SDK 3.x. index = [ "beautifulsoup4>=4.15,<5", "docx2txt>=0.9,<1", "EbookLib>=0.20,<1", "html2text>=2025.4.15,<2027", "openpyxl>=3.1.5,<4", "python-pptx>=1.0.2,<2", "google-api-python-client>=2.201,<3", "langchain-classic>=1.0.8,<2", "langchain-community>=0.4.2,<0.5", "langchain-core>=1.6.10,<2", "langchain-openai>=1.7.2,<2", "llama-index-core>=0.14.25,<0.15", "llama-index-embeddings-openai>=0.6,<0.8", "llama-index-llms-openai>=0.8.3,<0.9", "llama-index-readers-file>=0.7,<0.8", "llama-index-readers-github>=0.12,<0.13", "youtube-transcript-api>=1.2,<2", ] search = ["gpt3discord[index]"] code = [ "e2b-code-interpreter>=2.11,<3", "google-api-python-client>=2.201,<3", "langchain-classic>=1.0.8,<2", "langchain-community>=0.4.2,<0.5", "langchain-core>=1.6.10,<2", "langchain-openai>=1.7.2,<2", ] pinecone = ["pinecone>=10,<11"] qdrant = ["qdrant-client>=1.19,<2"] replicate = ["replicate>=1.0.7,<2"] full = ["gpt3discord[code,index,pinecone,qdrant,replicate]"] dev = [ "build>=1.6,<2", "packaging>=24", "pytest>=9.1,<10", "pytest-asyncio>=1.4,<2", "PyYAML>=6,<7", "ruff>=0.17,<0.18", "twine>=7,<8", ] [tool.hatch.version] path = "gpt3discord.py" [tool.hatch.build.targets.wheel] only-include = ["gpt3discord.py", "cogs", "models", "services", "utils"] [tool.hatch.build.targets.wheel.force-include] "conversation_drawing_ability_extraction_snippet.txt" = "gptdiscord_data/conversation_drawing_ability_extraction_snippet.txt" "conversation_drawing_ability_snippet.txt" = "gptdiscord_data/conversation_drawing_ability_snippet.txt" "conversation_starter_pretext.txt" = "gptdiscord_data/conversation_starter_pretext.txt" "conversation_starter_pretext_minimal.txt" = "gptdiscord_data/conversation_starter_pretext_minimal.txt" "conversation_starter_pretext_vision.txt" = "gptdiscord_data/conversation_starter_pretext_vision.txt" "image_optimizer_pretext.txt" = "gptdiscord_data/image_optimizer_pretext.txt" "language_detection_pretext.txt" = "gptdiscord_data/language_detection_pretext.txt" "openers" = "gptdiscord_data/openers" [tool.hatch.build.targets.sdist] include = [ "/cogs", "/models", "/services", "/utils", "/tests", "/openers", "/scripts", "/docs", "/gpt3discord.py", "/pyproject.toml", "/README.md", "/LICENSE", "/requirements*.txt", "/Dockerfile", "/docker-compose.yml", "/sample.env", "/*_pretext*.txt", "/conversation_drawing_ability*_snippet.txt", ] [tool.pytest.ini_options] asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "function" testpaths = ["tests"] markers = ["integration: opt-in tests requiring a live API and credentials"] [tool.ruff] target-version = "py311" [tool.ruff.lint] select = ["E9", "F63", "F7", "F82"]