[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "evennia"
version = "4.1.0"
maintainers = [{ name = "Griatch", email = "griatch@gmail.com" }]
description = "A full-featured toolkit and server for text-based multiplayer games (MUDs, MU*, etc)."
requires-python = ">=3.10"
readme = { file = "README.md", content-type = "text/markdown" }
license = { text = "BSD" }
keywords = [
  "MUD",
  "MUSH",
  "MUX",
  "MMO",
  "text-only",
  "multiplayer",
  "online",
  "rpg",
  "game",
  "engine",
  "framework",
  "text",
  "adventure",
  "telnet",
  "websocket",
  "blind",
  "accessible",
  "ascii",
  "utf-8",
  "terminal",
  "online",
  "server",
  "beginner",
  "tutorials",
]
classifiers = [
  "Programming Language :: Python :: 3 :: Only",
  "Programming Language :: Python :: 3.10",
  "Programming Language :: Python :: 3.11",
  "Programming Language :: JavaScript",
  "Development Status :: 5 - Production/Stable",
  "License :: OSI Approved :: BSD License",
  "Environment :: Console",
  "Environment :: Web Environment",
  "Framework :: Django",
  "Framework :: Twisted",
  "Intended Audience :: Developers",
  "Intended Audience :: Education",
  "Operating System :: MacOS",
  "Operating System :: Microsoft :: Windows",
  "Operating System :: POSIX :: Linux",
  "Topic :: Database",
  "Topic :: Education",
  "Topic :: Games/Entertainment :: Multi-User Dungeons (MUD)",
  "Topic :: Games/Entertainment :: Puzzle Games",
  "Topic :: Games/Entertainment :: Role-Playing",
  "Topic :: Games/Entertainment :: Simulation",
  "Topic :: Software Development :: Libraries :: Application Frameworks",
  "Topic :: Internet :: WWW/HTTP :: WSGI :: Server",
]
dependencies = [
  # core dependencies
  "django >= 4.2, < 4.3",
  "twisted >= 23.10, < 24",
  "pytz >= 2022.6",
  "djangorestframework >= 3.14, < 3.15",
  "pyyaml >= 6.0",
  "django-filter == 2.4",
  "django-sekizai == 2.0.0",
  "inflect >= 5.2.0",
  "autobahn >= 20.7.1, < 21.0.0",
  "lunr == 0.6.0",
  "simpleeval <= 1.0",
  "uritemplate == 4.1.1",
  "Jinja2 < 3.1",
  "tzdata >= 2022.6",
  "pydantic < 2.0",
  # for unit tests and code formatting
  "mock >= 4.0.3",
  "model_mommy >= 2.0",
  "anything ==0.2.1",
  "black >= 22.6",
  "isort >= 5.10",
  "parameterized ==0.8.1"
]

[project.optional-dependencies]

extra = [
  # contrib optional dependencies
  # install with 'pip install evennia[extra]`

  # crypto libraries for ssh support
  "cryptography >= 2.8",
  "pyasn1 >= 0.4.8",
  "bcrypt >= 3.1.7",

  # Telnet-SSL support
  "pyopenssl >= 19.1",
  "service_identity >= 18.1.0",

  # AWS storage contrib
  "boto3 >= 1.4.4",
  "botocore >= 1.15",

  # Jupyter Notebook support
  "jupyter >= 1.0.0",
  "ipython >= 7.19.0",
  "django-extensions >= 3.1.0",

  # xyzroom contrib
  "scipy == 1.12.0",

  # Git contrib
  "gitpython >= 3.1.27",
]

[project.urls]
"Homepage" = "https://www.evennia.com"
"Github" = "https://github.com/evennia/evennia"
"Documentation" = "https://www.evennia.com/docs/latest/index.html"
"Live Demo" = "https://demo.evennia.com/"
"Forums" = "https://github.com/evennia/evennia/discussions"
"Discord" = "https://discord.gg/AJJpcRUhtF"
"Dev Blog" = "https://www.evennia.com/devblog/index.html"
"Game Index" = "http://games.evennia.com"
"Issue tracker" = "https://github.com/evennia/evennia/issues"
"Patreon" = "https://www.patreon.com/griatch"

[tool.black]
line-length = 100
target-version = ['py310', 'py311']
exclude = '''

  (
    /(
        \.eggs         # exclude a few common directories in the
      | \.git          # root of the project
      | \.hg
      | \.mypy_cache
      | \.tox
      | \.venv
      | _build
      | buck-out
      | build
      | dist
    )/
    | migrations
    | docs

  )
'''

[tool.coverage]

[tool.coverage.run]
concurrency = ["multiprocessing"]
parallel = true
source = ["evennia"]
omit = [
  "*/migrations/*",
  "*/urls.py",
  "*/test*.py",
  "*.sh",
  "*.txt",
  "*.md",
  "*.pyc",
  "*.service",
]
