changelog

  • Update copyright year in built documentation

  • Use build instead of setup.py

  • Update test warnings for Python 3.10.0b2

  • Update test warnings for Python 3.9.5 and 3.10.0b1

  • Alphabetize entries in command data file

0.4.0

  • Be more robust with elapsed time counter

  • Retry client connections in selftest

  • Don’t wait during selftest process cleanup

  • Don’t leave dangling file descriptor in selftest

  • Make dist checking directory-agnostic

  • Get more granular with Python warnings in tests

  • Use consistent spacing in tox variables and lists

  • Stop setting a default install command for tox

  • Don’t check spelling in data directory

  • Lint autogenerated YAML

  • Use twine’s strict mode

  • Stop trying to use PYTHONWARNINGS=error for now

  • Add descriptions to tox testenvs

  • Stop using the tox-venv plugin

  • Correct package metadata

  • Bind to loopback interface by default

  • Use released codespell

  • Switch the selftest dialogue to a normal dict

  • Use PosixPath arguments with os.remove()

  • Always use ModuleNotFoundError

  • Drop support for Python 3.5

  • Move debug warning from setup to load

  • Incorporate pending logs from load during reloads

  • Reorder loglines fields

0.3.0

  • Recast is_restricted() to a bool

  • The del and return statements aren’t functions

  • Support Python 3.10

  • Don’t fail dist or docs builds on deprecations

  • Replace show result with debug evaluate command

  • Run different selftests when debug mode is engaged

  • Add warnings about debugging mode

  • Add restricted debug mode

  • Make selftest dialogue mutable

  • Skip spellcheck on logfiles

  • Add is_restricted boolean check for commands

  • Add is_admin method to Element and User classes

  • Streamline can_run access control method

0.2.1

  • Check for warnings in the to dist env

  • Explicitly close files opened by selftest

  • Handle early wrapping in test_show_result

  • Drop redundant master_doc setting from Sphinx conf

  • Switch tox to use allowlist_externals

  • Start checking codebase with the codespell tool

0.2.0

  • Revert “No longer run setup.py in docs builds”

  • Ratchet down Python warnings in tox

  • No longer run setup.py in docs builds

  • Set python_requires

  • Correct package metadata

  • Report if service does not start under selftest

  • Prefer importlib over pkg_resources

  • Record the reported rows from NAWS negotiation

  • Obtain terminal type (RFC 1091)

  • Overhaul coder guide, add commands and misc

  • Start the install guide

  • Add the beginnings of an admin guide

  • Collapse redundant exceptions

  • Indicate support for Python 3.9

  • Link the ChangeLog from package metadata

  • Drop section numbering from documentation builds

0.1.1

  • Make sure all command functions return True

0.1.0

  • Increase timer resolution in test config

  • Use call_hook_function() in handler_active()

  • Preserve loglines on reload

  • Set bandit to error on risks of any severity

  • Whitelist uses of stdlib random module for bandit

  • Clean up function names in menu definitions

  • Ratchet bandit checking down to medium severity

  • Replace eval() and exec() use for menu functions

  • Relocate main_utility menu functions

  • Relocate delete_avatar menu functions

  • Relocate delete_account menu function

  • Relocate choose_name menu functions

  • Relocate choose_gender menu function

  • Relocate checking_new_account_name menu functions

  • Relocate activate_avatar menu functions

  • Add a mudpy.menu module to hold menu functions

  • Move selected menu item into the User object

  • Rename state variable in get_menu_choices()

  • Remove exec() from handle_user_input() function

  • Eliminate exec() in Universe.new()

  • More thoroughly test account and avatar menus

  • Properly escape punctuation in test patterns

  • Tighten up eval() scope in show result subcommand

  • Replace uses of exec() in module loader

  • Use generic authors for copyright shown in docs

  • Update copyright for files edited in 2019

  • Satisfy yamllint checking of .yamllint

0.0.2

  • Log User object ID even when account is an admin

  • Log starting directory during initialization

  • Separate listening port in startup logging

  • Disable usedevelop for some tox testenvs

  • Correct reference to main config in walk-through

0.0.1

  • Add info on what’s missing and included

  • Add a demo walk-through to the coder guide

  • Recommend the tox-venv plug-in

  • Link API documentation in the coder guide

  • Drop Python 3.4 and add 3.8

  • Update minimum PBR for setup_requires

  • Improve preferences display

  • Support abbreviating portal names when moving

  • Provide normal error if command raises exception

  • Safely log when a command error cannot be sent

  • Correct data type for see_also command facets

  • Show possible abbreviations in help list

  • Correct logged error for missing action function

  • Make command actions implicit

  • Dereference command action functions

  • Test the show result command

  • Correct a TypeError in the show time command

  • Always pass parameters in commands

  • Don’t allow abbreviating administrative commands

  • Show full command name in help output

  • Implicitly support abbreviating commands

  • Allow including time in the active state prompt

  • Escape replacement macros in preferences

  • Test that macros are escaped in communication

  • Use the active state prompt as the default prompt

  • Add a prompt generator method

  • Fix selftest telopt callback for Python 3.4

  • Use ISO 8601 time in logs

  • Test for high-severity vulnerabilities with bandit

  • Test with the bugbear plugin for flake8

  • Fix comparisons for pyflakes 2.1

  • Safely log unknown Telnet options and commands

  • Be explicit about test requirements in tox.ini

  • Switch to passlib.PasswordHash.hash

  • Add support for user preferences

  • Add 2019 to copyright for docs and license

  • Rename command.set to command.c_set

  • Support using tox-venv for testing

  • Rename debug testenv to demo and use sample config

  • Use yamllint –strict when called from tox

  • Move commands into a separate command module

  • Update admin command help for new data model

  • Alphabetize the `help show` subcommand entries

  • Don’t LBYL when creating missing data directories

  • Try to make missing pidfile and logfile parent dir

  • Update copyright dates for files changed in 2018

  • Add navigation links to Sphinx config

  • Reorganize Sphinx config

  • Clarify Python version support in README

  • Generalize copyright headers in files

  • Add AUTHORS file to wheel

  • Remove docutils dep in tox dist testenv

  • Switch to `twine check` in tox testenv:dist

  • Add debug logging for Telnet protocol negotiation

  • Expand logging for User class methods

  • Support clients using CR+NUL to signal EOL

  • Add a “debug” testenv

  • Streamline selftest output

  • Clean up leading space typo in test title

  • Drop Python 3.3 support

  • Add signed artifact URL to Python package metadata

  • Clean up tox.ini

  • Apply correct Python version in tox base envs

  • Test the default example config

  • Add py3 to the default tox env list

  • Run the selftest in base tox testenvs

  • Optionally manage a daemon during selftest runs

  • Resolve included files only once

  • Fix deprecated regex pattern syntax in selftests

  • Clean up at the end of every selftest run

  • Overhaul data reloading

  • Include “docs” in default tox envs list

  • Check readme suitability for PyPI

  • Rename “initial” state to “telopt_negotiation”

  • Test that ANSI input is filtered

  • Only wrap on actual spaces

  • Filter non-ASCII input when not in binary mode

  • Retool word wrapping

  • Include show version in help

  • Clean dist directory in tox dist environment

  • Add version command and diagnostic logging

  • Provide a dist environment for tox

  • Indicate Python3.7 support

  • Note platform in package metadata

  • Add keywords to Python package metadata

  • Include license info in Python packages

  • Update URLs in package metadata

  • Correct metadata entry for README

  • Clean build directory in tox docs environment

  • Update copyright year in LICENSE

  • Add copyright to api.rst

  • Add copyright to .yamllint

  • Add a docs tox env

  • Track doc building dependencies

  • Add Sphinx configuration

  • Include a documentation index

  • Include license text in documentation

  • Include generated changelog in docs

  • Basic API documentation

  • Include the mudpy logo

  • Add client configuration notes

  • Document the data model

  • Add configuration guide

  • Update coder guide for new site redirects

  • Standardize formatting for the coder guide

  • Switch to extensionless README and LICENSE files

  • Reformat README.rst

  • Test that unknown telnet commands are filtered

  • Fix TypeError with IAC escaping

  • Trim readme file

  • Update login and banner art

  • Test sample data style with yamllint

  • Indent block sequences in emitted files

  • Convert mappings and sequences from flow to block

  • Disconnect user on ConnectionResetError

  • Be careful about marking facets modified

  • Use “group” instead of “category”

  • Drop old-style Element support

  • Convert sample data to new style

  • Use new style for menu definitions

  • Convert command Elements to new-style

  • Switch archetypes to new-style Elements

  • Switch internal counters to new-style Element

  • Switch actors to new-style elements

  • Handle connection reset in selftest

  • Make new-style facet deletion more robust

  • Catch Exception when necessary

  • Clearer selftest errors on disconnection

  • Use new-style elements for accounts

  • Fix unhandled exception in show file command

  • Display flags in show files output

  • Clean up a stray comment in find_file

  • Add descriptions to sample datafiles

  • Move sample datafile copyrights into metadata

  • Data nodes starting with “_” are metadata

  • Interpret a “.” prefix as the startdir

  • Overhaul data management to get rid of __control__

  • Error if set command is used on read-only element

  • Refuse to alter read-only elements at runtime

  • Track whether loading is underway

  • Test the set command

  • Use writeable element in show element test

  • Update copyright dates for files changed this year

  • Rename internal:storage to .mudpy.filing

  • Stop unnecessarily stripping quote marks

  • Explicitly configure the root_path in examples

  • Log missing file inclusions as more severe

  • Fix file pathing in daemon mode

  • Rename internal:time to .mudpy.timing

  • Switch example listening port from 6669 to 4000

  • Fix facets method to give new-style relative names

  • Use importlib in place of imp

  • Reduce the log message priority for reload calls

  • Exercise the reload command in tests

  • Switch quoting styles to reduce escaped quotes

  • Use raw strings when escape sequences are needed

  • Correct name of the custom loglevel test

  • Handle ValueError when setting incorrect type

  • Coerce loglevel facet to int when updating

  • Clear vestigial ord() calls in telopt negotiation

  • Stop using vary_rounds with passlib

  • Guard against KeyError on universe.contents index

  • Enable initial admin account in example config

  • Ignore unpacked *.egg directories

  • Modernize coder documentation

  • Add a generic tox env for sdist generation et al

  • Add a suitable test config for the daemon

  • Package the self-test script as an entrypoint

  • Correct filesystem permissions on daemon module

  • Make the self-test script importable

  • Add missing copyright/license notices

  • Support running flake8 under tox

  • Package the daemon executable as an entrypoint

  • Make the executable importable

  • Create a Python package

  • Appease style checks

  • Clean up trailing whitespace in documentation

  • Move documentation files for packaging preparation

  • Move lib/mudpy to mudpy for packaging preparation

  • Rename internal:process to .mudpy.process

  • Rename internal:network to .mudpy.network

  • Rename internal:directions to .mudpy.movement.*

  • Rename internal:logging: to .mudpy.log

  • Update README for recent development

  • Rename internal:limits element to .mudpy.limit

  • Strip extra separators in show element command

  • Fix 8-bit Telnet with Py3K

  • Rename internal:language: to .mudpy.linguistic

  • Implement new style element support

  • Test the show element command

  • Simplify multiline matching in functional tests

  • Fix show element command for Py3K

  • Make escape_macros no-op on nontext values

  • Check that functional tests log no errors

  • Test that the show log command works

  • Fix show log command for Py3K

  • Fix recursive BrokenPipeException on disconnect

  • Switch basic data loader unit from element to node

  • Explicitly invoke Python 3.x in shebang lines

  • Test admin account restrictions

  • More thorough match on chat mode test

  • Test actor movement

  • Mention test session capture log file names

  • Add timing data to test output

  • Test chat mode

  • Add troubleshooting note to test failure output

  • Break outer loop of functional tests on failure

  • Be more explicit with periods in test matches

  • Modularize functional testing

  • Test sentence capitalization

  • Test typo replacements

  • Test implicit punctuation

  • Read pending bytes before proceeding with test

  • Fix punctuation match order and add tests

  • Test interaction between multiple connections

  • Lay groundwork for more thorough functional tests

  • Switch to yaml.safe_load for better security

  • Be more strict about file permission masks

  • Accumulate logs if necessary while loading data

  • Remove stray non-generic references in sample data

  • Switch password handler to passlib’s PBKDF2

  • Write files directly from yaml.dump

  • Remove UTF-8 encoding header from Python files

  • Fix type mismatches in save file rotation

  • Correct avatar inheritance

  • Log missing avatars

  • Accumulate logs during setup

  • Add a .gitignore file

  • Finalize INI to YAML conversion

  • Remove the git2gch utility

  • Clean up parenthetical spacing in bin/mudpy

  • Mark unused import false positives

  • Convert sample data directory index to YAML

  • Support data directory indices in YAML

  • Convert sample prop data file to YAML

  • File read-only check supports YAML

  • Convert sample area data file to YAML

  • Don’t unnecessarily recast lists and dicts

  • Initialize data file contents on creation

  • Convert menu data file to YAML

  • Catch exceptions in YAML menus

  • Convert command data file to YAML

  • Convert archetype data file to YAML

  • Begin the transition from INI to YAML

  • Correct stray use of location

  • Clean up rendering in coder documentation

  • Use area instead of location or room

  • Simplify coder documentation

  • Make exception logging failures more robust

  • Be explicit when show result raises an exception

  • Tighten exceptions for new sockets and reads

  • Fix log spamming on premature socket disconnect

  • Stop trying to rename the daemon process

  • Wrap long lines without using backslashes

  • Clean up docstrings

  • Fix reload to use a copy of datafile keys

  • Remove unused event code

  • Correct copyright date for changelog

  • Drop support for Python 2.x

  • Clean up imports

  • Fix an incorrect TODO comment line

  • Recast to unicode when normalizing on Python 2.x

  • Byte type comparisons on the output queue

  • Import a correct configparser for the interpreter

  • Correct byte types and encoding in test script

  • Use chr instead of unichr

  • Use bytes in process table manipulation

  • Use byte type for passwords hash encoding

  • Handle byte type on sockets

  • Use new 0o notation for octal constants

  • The reload function is in the imp module

  • Use int type instead of long

  • Correct copyright years for change log

  • Recast filters when comparing

  • Work around lack of dict_keys index in catch-all

  • Work around lack of dict_keys index in data loader

  • Use range instead of xrange

  • Use absolute imports in telnet service module

  • Use absolute imports in catch-all module

  • Use absolute imports in data handler module

  • Use absolute imports in package init module

  • Use strings not unicode in telnet service module

  • Use strings not unicode in password module

  • Use strings not unicode in catch-all module

  • Use strings not unicode in data handler module

  • Use strings not unicode in package init module

  • Use strings not unicode in functional test script

  • Use strings not unicode in daemon executable

  • Use strings not unicode in changelog generator

  • Additional style cleanup

  • PEP 8 conformance for package init library

  • PEP 8 conformance for monolithic library

  • PEP 8 conformance for password management library

  • PEP 8 conformance for telnet server library

  • PEP 8 conformance for data handling library

  • PEP 8 conformance for daemon executable script

  • PEP 8 conformance for ChangeLog writer script

  • PEP 8 conformance for test script

  • Back end data storage separation

  • Inline literals are more readable in source form

  • ASCII Scrub

  • Correcting docstring format

  • Correcting minor docstring typos

  • Secure, extensible, forward-compatable passwords

  • Reformatted README for 72 columns

  • Change README for new on-line documentation link

  • New coder guide document

  • Script to generate ChangeLog file from commit log

  • Regression testing script

  • Cosmetic adjustment to disconnect message

  • Proper RFC 1143 Telnet option negotiation queue

  • Clarification in README file

  • New top-level README file

  • Reformat license

  • Annual copyright update

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive

  • Imported from archive