Use build instead of setup.py Start transitioning into the PEP517 future of Python packaging by switching from explicitly calling setup.py to using the build module. Move install requirements into setup.cfg and update the install docs to refer to the new location. Get rid of the separate documentation build requirements file by moving into tox.ini deps for the docs testenv. While we're there, add some commentary in the tox.ini about some of the more opaque choices we've made for docs builds and testing YAML style.
Switch to passlib.PasswordHash.hash Starting with passlib 1.7 the PasswordHash.encrypt() method has been renamed to PasswordHash.hash() for clarity, and the old name deprecated. Use the new name and update our minimum passlib dependency version accordingly.
Generalize copyright headers in files Since we're distributing an AUTHORS file even in wheel packages now replace the specific copyright strings with ones which generally mention "mudpy authors" instead, refer to the AUTHORS file and Git history from the LICENSE file, and embed the generated list of authors in rendered versions of the license.
Add missing copyright/license notices For clarity, add copyright and license notice headers at the tops of files which were missing them (general packaging configuration and metadata for the most part, but doesn't hurt to be thorough for the sake of future provenance inquiries).
Switch password handler to passlib's PBKDF2 The passlib implementation of PBKDF2 is strong, portable and more heavily audited. Use that instead of implementing our own custom handler. Also simplify password use by dropping optional parameters from the create and verify functions, and don't bother carrying the old upgrade_legacy_hash public function forward; it can be reworked to provide in-place hash upgrades later if desired.
Begin the transition from INI to YAML * lib/mudpy/data.py(DataFile.load): Temporarily turn this method into a selector which calls different loader methods depending on the file extension so that old INI and new YAML files can be intermixed during the transition. (DataFile.load_yaml): This new loader method handles YAML files. (DataFile.load_mpy): This is basically the old DataFile.load method. (DataFile.save,DataFile.is_writeable): Add some TODO reminders for the YAML transition. * lib/mudpy/misc.py(Element.__init__,Element.facets,Element.get) (Element.getboolean): Add conditional branching around calls deeper into mudpy.data which need different behavior depending on the underlying file formats. * requirements.txt: Start tracking Python module dependencies in this new file, and add the pyyaml module as the first entry.