-# Copyright (c) 2020-2021 mudpy authors. Permission to use, copy,
+# Copyright (c) 2020-2022 mudpy authors. Permission to use, copy,
# modify, and distribute this software is granted under terms
# provided in the LICENSE file distributed with this software.
[codespell]
-ignore-words-list = files',wont,teh,theyre,youre
+ignore-words-list = files',ro,teh,theyre,wont,youre
skip = *.log,*.pyc,.eggs,.git,.tox,build,data
"""User command functions for the mudpy engine."""
-# Copyright (c) 2004-2020 mudpy authors. Permission to use, copy,
+# Copyright (c) 2004-2022 mudpy authors. Permission to use, copy,
# modify, and distribute this software is granted under terms
# provided in the LICENSE file distributed with this software.
return True
+def c_get(actor, parameters):
+ """Move a prop into inventory."""
+ if not parameters:
+ message = "What do you wish to get?"
+ else:
+ message = ('Not yet implemented.')
+ actor.send(message)
+ return True
+
+
+def drop(actor, parameters):
+ """Move a prop out of inventory."""
+ if not parameters:
+ message = "What do you wish to drop?"
+ else:
+ message = ('Not yet implemented.')
+ actor.send(message)
+ return True
+
+
def halt(actor, parameters):
"""Halt the world."""
if actor.owner:
return True
+def inventory(actor, parameters):
+ """List the inventory."""
+ message = ('Not yet implemented.')
+ actor.send(message)
+ return True
+
+
def look(actor, parameters):
"""Look around."""
if parameters:
# provided in the LICENSE file distributed with this software.
[build-system]
-requires = ["pbr>=5.8.0", "setuptools>=36.6.0"]
+requires = ["pbr>=5.8", "setuptools>=61"]
build-backend = "pbr.build"
+
+[project]
+authors = [{email = "fungi@yuggoth.org"}, {name = "Jeremy Stanley"}]
+classifiers = [
+ "License :: OSI Approved :: ISC License (ISCL)",
+ "Operating System :: POSIX",
+ "Operating System :: Unix",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.7",
+ "Programming Language :: Python :: 3.8",
+ "Programming Language :: Python :: 3.9",
+ "Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: 3 :: Only",
+ "Topic :: Communications",
+ "Topic :: Communications :: BBS",
+ "Topic :: Communications :: Chat",
+ "Topic :: Games/Entertainment",
+ "Topic :: Games/Entertainment :: Multi-User Dungeons (MUD)",
+ "Topic :: Games/Entertainment :: Role-Playing",
+ "Topic :: Internet",
+]
+dependencies = ["passlib>=1.7", "pyyaml"]
+description = "The mudpy MUD server engine."
+dynamic = ["version"]
+keywords = ["game", "mud", "telnet"]
+maintainers = [{email = "fungi@yuggoth.org"}, {name = "Jeremy Stanley"}]
+name = "mudpy"
+readme = {charset = "UTF-8", content-type = "text/x-rst", file = "README"}
+requires-python = ">=3.7"
+
+[project.scripts]
+mudpy = "mudpy.daemon:main"
+mudpy_selftest = "mudpy.tests.selftest:main"
+
+[project.urls]
+"Big ChangeLog" = "https://mudpy.org/clog/mudpy/"
+"Browse Source" = "https://mudpy.org/code/mudpy/"
+"Bug Reporting" = "https://mudpy.org/bugs/mudpy/"
+"Documentation" = "https://mudpy.org/docs/mudpy/"
+"Git Clone URL" = "https://mudpy.org/code/mudpy/"
+"License Texts" = "https://mudpy.org/license/"
+"Release Files" = "https://mudpy.org/dist/mudpy/"
+
+[tool.setuptools]
+# Silence a warning about namespace packages included as data because we ship
+# subdirectories inside the mudpy package tree
+packages = ["mudpy", "mudpy.tests", "mudpy.tests.fixtures"]
[metadata]
name = mudpy
-summary = The mudpy MUD server engine.
-long_description = file: README
-long_description_content_type = text/x-rst; charset=UTF-8
-author = Jeremy Stanley
-author_email = fungi@yuggoth.org
-url = https://mudpy.org/
-project_urls =
- Big ChangeLog = https://mudpy.org/clog/mudpy/
- Browse Source = https://mudpy.org/code/mudpy/
- Bug Reporting = https://mudpy.org/bugs/mudpy/
- Documentation = https://mudpy.org/docs/mudpy/
- Git Clone URL = https://mudpy.org/code/mudpy/
- License Texts = https://mudpy.org/license/
- Release Files = https://mudpy.org/dist/mudpy/
-keywords = mud game telnet
-license = ISC License (ISCL)
-platforms = POSIX/Unix
-classifiers =
- License :: OSI Approved :: ISC License (ISCL)
- Operating System :: POSIX
- Operating System :: Unix
- Programming Language :: Python
- Programming Language :: Python :: 3
- Programming Language :: Python :: 3.7
- Programming Language :: Python :: 3.8
- Programming Language :: Python :: 3.9
- Programming Language :: Python :: 3.10
- Programming Language :: Python :: 3.11
- Programming Language :: Python :: 3 :: Only
- Topic :: Communications
- Topic :: Communications :: BBS
- Topic :: Communications :: Chat
- Topic :: Games/Entertainment
- Topic :: Games/Entertainment :: Multi-User Dungeons (MUD)
- Topic :: Games/Entertainment :: Role-Playing
- Topic :: Internet
-
-[options]
-install_requires =
- passlib>=1.7
- pyyaml
-python_requires = >=3.7
-
-[files]
-packages =
- mudpy
-
-[entry_points]
-console_scripts =
- mudpy = mudpy.daemon:main
- mudpy_selftest = mudpy.tests.selftest:main
---
-_copy: Copyright (c) 2004-2020 mudpy authors. Permission to use, copy,
+_copy: Copyright (c) 2004-2022 mudpy authors. Permission to use, copy,
modify, and distribute this software is granted under terms
provided in the LICENSE file distributed with this software.
useful for inspecting the contents of in-memory objects, for
example:$(eol)$(eol) evaluate universe.groups['actor'].keys()
+command.get.action: command.c_get
+command.get.description: Pick up or retrieve an item.
+command.get.help: To retrieve something from your environment into your
+ inventory, get it by whatever name is shown, or even a subset or keyword
+ which you think might relate to it.
+
+command.drop.description: Put an item onto the ground.
+command.drop.help: To drop something, reference it by whatever name is shown in
+ your inventory.
+
command.halt.administrative: true
command.halt.description: Shut down the world.
command.halt.help: This will save all active accounts, disconnect all clients
a brief description or, alternatively, give you detailed information on one
command.
+command.inventory.description: Look in your inventory.
+command.inventory.help: List the items you're currently carrying around.
+
command.look.description: Look around.
command.look.help: With the look command, you can see where you are.
basepython = python3
# TODO(fungi) Switch this to "error" once the following are solved
#
-# py311... Cython.Compiler.Main raises FutureWarning "Cython directive
-# 'language_level' not set, using 2 for now (Py2). This will change in a
-# later release!" but this can't be matched by message because it has a comma
-# py311... pip._vendor.pyparsing.core and pkg_resources._vendor.pyparsing raise
-# DeprecationWarning "module 'sre_constants' is deprecated" until a new
-# release containing https://github.com/pyparsing/pyparsing/commit/3c03942 is
-# vendored into pip and pkg_resources
-# py310... distutils.command.install raises DeprecationWarning "The
-# distutils.sysconfig module is deprecated, use sysconfig instead" but this
-# can't be matched by message because it contains a comma
-# flake8... flake8.plugins.manager raises DeprecationWarning "SelectableGroups
-# dict interface is deprecated. Use select."
-# multiple callers raise DeprecationWarning "The distutils package is
-# deprecated and slated for removal in Python 3.12. Use setuptools or check
-# PEP 632 for potential alternatives"
+# py311... passlib.utils raises DeprecationWarning "'crypt' is deprecated and
+# slated for removal in Python 3.13"
+# py311... mudpy.tests.selftest raises DeprecationWarning "'telnetlib' is
+# deprecated and slated for removal in Python 3.13"
# multiple callers raise DeprecationWarning "Creating a LegacyVersion has been
# deprecated and will be removed in the next major release"
# SetupTools raises
# setuptools._deprecation_warning.SetuptoolsDeprecationWarning "easy_install
# command is deprecated. Use build and pip and other standards-based tools."
# but only the message can be matched because the exception is private
-# pip._vendor.certifi.core and pip._vendor.pep517.in_process raise
-# DeprecationWarning "path is deprecated. Use files() instead. Refer to
-# https://importlib-resources.readthedocs.io/en/latest/using.html#migrating-from-legacy
-# for migration advice." but this can't be matched by message because it
-# contains a colon
+# setuptools.config.pyprojecttoml raises
+# setuptools.config.pyprojecttoml._ExperimentalProjectMetadata "Support for
+# `[tool.setuptools]` in `pyproject.toml` is still *beta*." but the parent
+# Warning class has to be used instead
setenv =
PYTHONWARNDFAULTENCODING = 1
- PYTHONWARNINGS = error, ignore::FutureWarning:Cython.Compiler.Main, ignore::DeprecationWarning:distutils.command.install, ignore:The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives:DeprecationWarning, ignore:Creating a LegacyVersion has been deprecated and will be removed in the next major release:DeprecationWarning, ignore:SelectableGroups dict interface is deprecated. Use select.:DeprecationWarning:flake8.plugins.manager, ignore:setup.py install is deprecated. Use build and pip and other standards-based tools., ignore:easy_install command is deprecated. Use build and pip and other standards-based tools., ignore::DeprecationWarning:pip._vendor.certifi.core, ignore::DeprecationWarning:pip._vendor.pep517.in_process, ignore:module 'sre_constants' is deprecated:DeprecationWarning:pip._vendor.pyparsing.core, ignore:module 'sre_constants' is deprecated:DeprecationWarning:pkg_resources._vendor.pyparsing
+ PYTHONWARNINGS = error, ignore:Creating a LegacyVersion has been deprecated and will be removed in the next major release:DeprecationWarning, ignore:setup.py install is deprecated. Use build and pip and other standards-based tools., ignore:easy_install command is deprecated. Use build and pip and other standards-based tools., ignore:'crypt' is deprecated and slated for removal in Python 3.13:DeprecationWarning:passlib.utils, ignore:'telnetlib' is deprecated and slated for removal in Python 3.13:DeprecationWarning:mudpy.tests.selftest, ignore:Support for `[tool.setuptools]` in `pyproject.toml` is still *beta*.:Warning:setuptools.config.pyprojecttoml
PYTHONUTF8 = 1
VIRTUALENV_CREATOR = venv
commands = mudpy_selftest mudpy/tests/fixtures/test_daemon.yaml
+download = true
deps = {toxinidir}
[testenv:bandit]
description = check for potential security risks in source code
+skip_install = True
deps = bandit
commands = bandit -r mudpy -x mudpy/tests {posargs}
[testenv:codespell]
description = find common spelling mistakes in code and documentation
+skip_install = True
deps = codespell
commands = codespell {posargs}
[testenv:dist]
description = build release artifacts and check for conformance
-allowlist_externals = rm
+skip_install = True
deps =
build
twine
commands =
- rm -fr {toxinidir}/dist
- python -m build
+ {envpython} -c "import shutil; shutil.rmtree('{toxinidir}/dist', ignore_errors=True)"
+ {envpython} -m build
twine check --strict {toxinidir}/dist/*
[testenv:docs]
# Build an sdist into a temporary location so we'll have AUTHORS and ChangeLog
# files to include.
description = generate hypertext documentation
-allowlist_externals = rm
deps =
- {toxinidir}
+ {[testenv]deps}
build
sphinx
commands =
- rm -fr {toxinidir}/doc/build
- python -m build --outdir={toxinidir}/doc/build/dist --sdist
+ {envpython} -c "import shutil; shutil.rmtree('{toxinidir}/doc/build', ignore_errors=True)"
+ {envpython} -m build --outdir={toxinidir}/doc/build/dist --sdist
sphinx-build -W -d doc/build/doctrees -b html doc/source/ doc/build/html
[testenv:flake8]
description = style checks and static analysis of source code
-deps =
- flake8
- flake8-bugbear
+skip_install = True
+deps = flake8-bugbear
commands = flake8 {posargs}
[testenv:selftest_config]
# them with the same style we enforce for those carried in the repository.
description = test data files for correct syntax and formatting
deps =
- {toxinidir}
+ {[testenv]deps}
yamllint
commands =
mudpy_selftest mudpy/tests/fixtures/test_daemon.yaml