diff --git a/.github/ISSUE_TEMPLATE/bug-report-develop.md b/.github/ISSUE_TEMPLATE/bug-report-develop.md deleted file mode 100644 index 9dd7e94994..0000000000 --- a/.github/ISSUE_TEMPLATE/bug-report-develop.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -name: Bug report (branch-develop) -about: Use this to report errors in the Evennia `develop` branch -title: "[BUG - Develop] (Enter a brief description here)" -labels: bug, branch-develop, needs-triage -assignees: '' - ---- - -#### Describe the bug - - -#### To Reproduce -Steps to reproduce the behavior: -1. -2. -3. -4. See error - -#### Expected behavior -) - -#### Develop-branch commit - - -#### Additional context - diff --git a/.github/workflows/github_action_build_docs.yml b/.github/workflows/github_action_build_docs.yml index 1c0bc38604..8b31597007 100644 --- a/.github/workflows/github_action_build_docs.yml +++ b/.github/workflows/github_action_build_docs.yml @@ -4,12 +4,12 @@ name: documentation on: push: - branches: [ master, develop ] + branches: [ main, develop ] paths: - 'docs/**' - 'evennia/contrib/**' pull_request: - branches: [ master, develop ] + branches: [ main, develop ] paths: - 'docs/**' - 'evennia/contrib/**' @@ -48,8 +48,8 @@ jobs: cd gamedir evennia migrate - - name: Build and deploy docs (only from master/develop branch) - if: ${{ github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/master'}} + - name: Build and deploy docs (only from main/develop branch) + if: ${{ github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/main'}} run: | git config --global user.email "docbuilder@evennia.com" git config --global user.name "Evennia docbuilder action" diff --git a/.github/workflows/github_action_publish_to_pypi.yml b/.github/workflows/github_action_publish_to_pypi.yml deleted file mode 100644 index 48d3c246fa..0000000000 --- a/.github/workflows/github_action_publish_to_pypi.yml +++ /dev/null @@ -1,37 +0,0 @@ -# This Evennia workflow will deploy the Evennia package automatically to -# pypi if vNN tag was given. -# - -name: publish-evennia - -on: - push: - tags: ['v*'] - -jobs: - build-and-publish: - name: Build and publish Evennia to PyPi - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@master - - - name: Set up Python 3.11 - uses: actions/setup-python@v3 - with: - python-version: "3.11" - - - name: Install build - run: | - python -m pip install --upgrade pip - python -m pip install build --user - - - name: Build binary wheel and source tarball - run: | - python -m build --sdist --wheel --outdir dist/ . - - - name: Publish Evennia PyPi (on tag) - if: startsWith(github.ref, 'refs/tags') - uses: pypa/gh-action-pypi-publish@release/v1 - with: - password: ${{ secrets.PYPI_API_TOKEN }} diff --git a/.github/workflows/github_action_test_suite.yml b/.github/workflows/github_action_test_suite.yml index b8305cfd74..cab529dcf6 100644 --- a/.github/workflows/github_action_test_suite.yml +++ b/.github/workflows/github_action_test_suite.yml @@ -26,6 +26,12 @@ jobs: TESTING_DB: "sqlite3" coverage-test: true + timeout-minutes: 35 + + env: + UNIT_TEST_SETTINGS: "--settings=settings --keepdb --parallel 4 --timing" + COVERAGE_TEST_SETTINGS: "--settings=settings --timing" + steps: - uses: actions/checkout@v3 @@ -67,12 +73,7 @@ jobs: if: ${{ ! matrix.coverage-test }} working-directory: testing_mygame run: | - evennia test \ - --settings=settings \ - --keepdb \ - --parallel 4 \ - --timing \ - evennia + evennia test ${{ env.UNIT_TEST_SETTINGS }} evennia # OBS - it's important to not run the coverage tests with --parallel, it messes up the coverage # calculation! @@ -80,13 +81,8 @@ jobs: if: ${{ matrix.coverage-test }} working-directory: testing_mygame run: | - coverage run \ - --source=evennia \ - --omit=*/migrations/*,*/urls.py,*/test*.py,*.sh,*.txt,*.md,*.pyc,*.service \ - ../bin/unix/evennia test \ - --settings=settings \ - --timing \ - evennia + coverage run --rcfile=../pyproject.toml ../bin/unix/evennia test ${{ env.COVERAGE_TEST_SETTINGS }} evennia + coverage combine coverage xml coverage --version coverage report | grep TOTAL @@ -107,7 +103,7 @@ jobs: name: Deploy Docker Image needs: test runs-on: ubuntu-latest - if: ${{ github.repository == 'evennia/evennia' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/develop') }} + if: ${{ github.repository == 'evennia/evennia' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop') }} steps: - uses: actions/checkout@v3 @@ -123,9 +119,9 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build and push for master - if: ${{ github.ref == 'refs/heads/master' }} - id: docker_build_master + - name: Build and push for main + if: ${{ github.ref == 'refs/heads/main' }} + id: docker_build_main uses: docker/build-push-action@v3 with: push: true diff --git a/.release.sh b/.release.sh new file mode 100755 index 0000000000..78ae44d287 --- /dev/null +++ b/.release.sh @@ -0,0 +1,45 @@ +# Release helper + +VERSION=$(cat evennia/VERSION.txt) + +echo "This will release Evennia $VERSION (based on evennia/VERSION.txt)." +echo "Before continuing:" +echo " 1. Make sure you have Evennia upload credentials for Github (tagging) and PyPi (main package)." +echo " 2. Update CHANGELOG.md." +echo " 3. Run 'make local' in docs/ to update dynamic docs and autodocstrings (may have to run twice)." +echo " 4. Make sure VERSION.txt and pyproject.toml both show version $VERSION." +echo " 5. Make sure all changes are committed, e.g. as 'Evennia 1.x.x bug-fix release' (un-staged files will be wiped)." +echo " 6. Make sure all unit tests pass!" + +read -p "Continue? [Y/n]> " yn + +case $yn in + [nN] ) echo "Aborting."; + exit;; + * ) echo "Starting release ...";; +esac + +# clean and build the pypi distribution +echo "Preparing and Building PyPi package ..." +rm -Rf dist/ +git clean -xdf +pip install --upgrade pip +pip install build twine +python -m build --sdist --wheel --outdir dist/ . + +echo "Uploading PyPi package (requires PyPi credentials) ..." + +python -m twine upload dist/* + +# tag the latest git commit +echo "Creating and pushing release tag tag v$VERSION (requires GitHub credentials)..." +git tag -a v$VERSION -m "Evennia release v$VERSION" +git push --tags + +echo "... Release complete." +echo "" +echo "Post-release actions:" +echo " 1. Make sure to push all commits." +echo " 2. Update github discussions to report on release." +echo " 2. Make post in discord #announcements channel pointing to discussion post." +echo " 3. Any other announcements as needed." diff --git a/CHANGELOG.md b/CHANGELOG.md index 73051f6d75..0432d4d94c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,22 @@ # Changelog -### Evennia 1.0 +### Evennia 1.0.2 +Dec 21, 2022 -2019-2022 develop branch +Bug fix release. Fix more issues with discord bot reconnecting. Some doc +updates. -Changed to using `main` branch to follow github standard. Old `master` branch remains -for now but will not be used anymore, so as to not break installs during transition. +### Evennia 1.0.1 +Dec 7, 2022 + +Bug fix release. Main issue was reconnect bug for discord bot. + +## Evennia 1.0 + +2019-2022 + +_Changed to using `main` branch to follow github standard. Old `master` branch remains +for now but will not be used anymore, so as to not break installs during transition._ Increase requirements: Django 4.1+, Twisted 22.10+ Python 3.10, 3.11. PostgreSQL 11+. diff --git a/Makefile b/Makefile index 373c253269..8ccf3f355d 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ default: @echo " make test - run evennia test suite with all default values." @echo " make tests=evennia.path test - run only specific test or tests." @echo " make testp - run test suite using multiple cores." - @echo " make publish - publish evennia to pypi (requires pypi credentials) + @echo " make release - publish evennia to pypi (requires pypi credentials) install: pip install -e . @@ -44,10 +44,8 @@ testp: evennia migrate;\ evennia test --keepdb --parallel 4 $(TESTS);\ +version: + echo $(VERSION) + release: - rm -Rf dist/ - git clean -xdf - pip install --upgrade pip - pip install build twine - python -m build --sdist --wheel --outdir dist/ . - python -m twine upload dist/* + ./.release.sh diff --git a/README.md b/README.md index 5e2e543f2f..92e91fb246 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Evennia MUD/MU\* Creation System ![][logo] -[![Build Status][unittestciimg]][unittestcilink] [![Coverage Status][coverimg]][coverlink] [![Pypi Version][pypibadge]][pypilink] +[![unittestciimg]][unittestcilink] [![Coverage Status][coverimg]][coverlink] [![Pypi Version][pypibadge]][pypilink] [Evennia][homepage] is a modern library for creating [online multiplayer text @@ -48,8 +48,8 @@ Welcome! [logo]: https://github.com/evennia/evennia/blob/master/evennia/web/website/static/website/images/evennia_logo.png [unittestciimg]: https://github.com/evennia/evennia/workflows/test-suite/badge.svg [unittestcilink]: https://github.com/evennia/evennia/actions?query=workflow%3Atest-suite -[coverimg]: https://coveralls.io/repos/github/evennia/evennia/badge.svg?branch=master -[coverlink]: https://coveralls.io/github/evennia/evennia?branch=master +[coverimg]: https://coveralls.io/repos/github/evennia/evennia/badge.svg?branch=main +[coverlink]: https://coveralls.io/github/evennia/evennia?branch=main [pypibadge]: https://img.shields.io/pypi/v/evennia?color=blue [pypilink]: https://pypi.org/project/evennia/ [introduction]: https://www.evennia.com/docs/latest/Evennia-Introduction.html diff --git a/docs/source/Coding/Changelog.md b/docs/source/Coding/Changelog.md index 73051f6d75..0432d4d94c 100644 --- a/docs/source/Coding/Changelog.md +++ b/docs/source/Coding/Changelog.md @@ -1,11 +1,22 @@ # Changelog -### Evennia 1.0 +### Evennia 1.0.2 +Dec 21, 2022 -2019-2022 develop branch +Bug fix release. Fix more issues with discord bot reconnecting. Some doc +updates. -Changed to using `main` branch to follow github standard. Old `master` branch remains -for now but will not be used anymore, so as to not break installs during transition. +### Evennia 1.0.1 +Dec 7, 2022 + +Bug fix release. Main issue was reconnect bug for discord bot. + +## Evennia 1.0 + +2019-2022 + +_Changed to using `main` branch to follow github standard. Old `master` branch remains +for now but will not be used anymore, so as to not break installs during transition._ Increase requirements: Django 4.1+, Twisted 22.10+ Python 3.10, 3.11. PostgreSQL 11+. diff --git a/docs/source/Coding/Release-Notes-1.0.md b/docs/source/Coding/Release-Notes-1.0.md index 3b3265f93e..2f35334f0c 100644 --- a/docs/source/Coding/Release-Notes-1.0.md +++ b/docs/source/Coding/Release-Notes-1.0.md @@ -2,6 +2,8 @@ This summarizes the changes. See the [Changelog](./Changelog.md) for the full list. +- Main development now on `main` branch. `master` branch remains, but will not be updated anymore. + ## Minimum requirements - Python 3.10 is now required minimum. Ubuntu LTS now installs with 3.10. Evennia 1.0 is also tested with Python 3.11 - this is the recommended version for Linux/Mac. Windows users may want to stay on Python 3.10 unless they are okay with installing a C++ compiler. diff --git a/docs/source/Coding/Unit-Testing.md b/docs/source/Coding/Unit-Testing.md index 0b8bf95c58..ce47c2452a 100644 --- a/docs/source/Coding/Unit-Testing.md +++ b/docs/source/Coding/Unit-Testing.md @@ -43,7 +43,7 @@ forces Evennia to use this settings file over the default one. You can also test specific things by giving their path - evennia test --settings settings.py .world.tests.YourTest + evennia test --settings settings.py world.tests.YourTest ## Writing new unit tests @@ -106,15 +106,15 @@ To test this, run to run the entire test module - evennia test --settings setings.py .world.tests + evennia test --settings setings.py world.tests or a specific class: - evennia test --settings settings.py .world.tests.TestObj + evennia test --settings settings.py world.tests.TestObj You can also run a specific test: - evennia test --settings settings.py .world.tests.TestObj.test_alternative_call + evennia test --settings settings.py world.tests.TestObj.test_alternative_call You might also want to read the [Python documentation for the unittest module](https://docs.python.org/library/unittest.html). @@ -303,4 +303,4 @@ After doing so, you can then run tests without migrations by adding the `--nomig ``` evennia test --settings settings.py --nomigrations . -``` \ No newline at end of file +``` diff --git a/docs/source/Coding/Version-Control.md b/docs/source/Coding/Version-Control.md index 9f66014a7b..f8af7a380e 100644 --- a/docs/source/Coding/Version-Control.md +++ b/docs/source/Coding/Version-Control.md @@ -295,7 +295,7 @@ You can't do `git push upstream` unless you have write-access to the upstream Ev This should be done in your fork of Evennia. You should _always_ do this in a _separate git branch_ based off the Evennia branch you want to improve. git checkout main (or develop) - git branch - b myfixbranch + git branch -b myfixbranch Now fix whatever needs fixing. Abide by the [Evennia code style](./Evennia-Code-Style.md). You can `git commit` commit your changes along the way as normal. diff --git a/docs/source/Concepts/Internationalization.md b/docs/source/Concepts/Internationalization.md index 539125bf08..144bdab805 100644 --- a/docs/source/Concepts/Internationalization.md +++ b/docs/source/Concepts/Internationalization.md @@ -19,7 +19,7 @@ updated after Sept 2022 will be missing some translations. +---------------+----------------------+--------------+ | es | Spanish | Aug 2019 | +---------------+----------------------+--------------+ -| fr | French | Mar 2022 | +| fr | French | Dec 2022 | +---------------+----------------------+--------------+ | it | Italian | Oct 2022 | +---------------+----------------------+--------------+ diff --git a/docs/source/Contribs/Contrib-Crafting.md b/docs/source/Contribs/Contrib-Crafting.md index d7754b8093..36e9071350 100644 --- a/docs/source/Contribs/Contrib-Crafting.md +++ b/docs/source/Contribs/Contrib-Crafting.md @@ -42,7 +42,7 @@ is being combined instead): See the [sword example](evennia.contrib.game_systems.crafting.example_recipes) for an example of how to design a recipe tree for crafting a sword from base elements. -## Intallation and Usage +## Installation and Usage Import the `CmdCraft` command from evennia/contrib/crafting/crafting.py and add it to your Character cmdset. Reload and the `craft` command will be diff --git a/docs/source/Contribs/Contrib-Extended-Room.md b/docs/source/Contribs/Contrib-Extended-Room.md index 6f7b6e135e..e71745f6eb 100644 --- a/docs/source/Contribs/Contrib-Extended-Room.md +++ b/docs/source/Contribs/Contrib-Extended-Room.md @@ -16,11 +16,12 @@ In more detail, in `mygame/commands/default_cmdsets.py`: ```python ... -from evennia.contrib import extended_room # <--- +from evennia.contrib.grid import extended_room # <--- -class CharacterCmdset(default_cmds.Character_CmdSet): +class CharacterCmdset(default_cmds.CharacterCmdSet): ... def at_cmdset_creation(self): + super().at_cmdset_creation() ... self.add(extended_room.ExtendedRoomCmdSet) # <--- @@ -28,7 +29,10 @@ class CharacterCmdset(default_cmds.Character_CmdSet): Then reload to make the new commands available. Note that they only work on rooms with the typeclass `ExtendedRoom`. Create new rooms with the right -typeclass or use the `typeclass` command to swap existing rooms. +typeclass or use the `typeclass` command to swap existing rooms. Note that since +this contrib overrides the `look` command, you will need to add the +`extended_room.ExtendedRoomCmdSet` to the default character cmdset *after* +super().at_cmdset_creation(), or it will be overridden by the default look. ## Features diff --git a/docs/source/Evennia-Introduction.md b/docs/source/Evennia-Introduction.md index c04414c05b..3e781375b9 100644 --- a/docs/source/Evennia-Introduction.md +++ b/docs/source/Evennia-Introduction.md @@ -64,6 +64,7 @@ Start small. Evennia's [Beginner tutorial](Howtos/Beginner-Tutorial/Beginner-Tut ```{sidebar} See also our [link page](./Links.md) for some reading suggestions. ``` + While Python is considered a very easy programming language to get into, you do have a learning curve to climb if you are new to programming. The beginner-tutorial has a [basic introduction to Python](Howtos/Beginner-Tutorial/Part1/Beginner-Tutorial-Python-basic-introduction.md), but if you are completely new, you should probably also sit down with a full Python beginner's tutorial at some point. There are plenty of them on the web if you look around. To code your dream game in Evennia you don't need to be a Python guru, but you do need to be able to read example code containing at least these basic Python features: diff --git a/docs/source/Howtos/Beginner-Tutorial/Part3/Beginner-Tutorial-Characters.md b/docs/source/Howtos/Beginner-Tutorial/Part3/Beginner-Tutorial-Characters.md index f24bc07ec6..28c4624ef8 100644 --- a/docs/source/Howtos/Beginner-Tutorial/Part3/Beginner-Tutorial-Characters.md +++ b/docs/source/Howtos/Beginner-Tutorial/Part3/Beginner-Tutorial-Characters.md @@ -113,7 +113,7 @@ class LivingMixin: healed = min(damage, hp) self.hp += healed - self.msg("You heal for {healed} HP.") + self.msg(f"You heal for {healed} HP.") def at_pay(self, amount): """When paying coins, make sure to never detract more than we have""" diff --git a/docs/source/Setup/Installation-Troubleshooting.md b/docs/source/Setup/Installation-Troubleshooting.md index 8564924f8d..cebfe986bb 100644 --- a/docs/source/Setup/Installation-Troubleshooting.md +++ b/docs/source/Setup/Installation-Troubleshooting.md @@ -92,6 +92,7 @@ If `localhost` doesn't work when trying to connect to your local game, try `127. instead. Some MUD clients on Windows does not appear to understand the alias `localhost`. - Some Windows users get an error installing the Twisted 'wheel'. A wheel is a pre-compiled binary package for Python. A common reason for this error is that you are using a 32-bit version of Python, but Twisted has not yet uploaded the latest 32-bit wheel. Easiest way to fix this is to install a slightly older Twisted version. So if, say, version `22.1` failed, install `22.0` manually with `pip install twisted==22.0`. Alternatively you could check that you are using the 64-bit version of Python and uninstall any 32bit one. If so, you must then `deactivate` the virtualenv, delete the `evenv` folder and recreate it anew with your new Python. +- If you've done a git installation, and your server won't start with an error message like `AttributeError: module 'evennia' has no attribute '_init'`, it may be a python path issue. In a terminal, cd to `(your python directory)\site-packages` and run the command `echo "C:\absolute\path\to\evennia" > local-vendors.pth`. Open the created file in your favorite IDE and make sure it is saved with *UTF-8* encoding and not *UTF-8 with BOM*. - If your server won't start, with no error messages (and no log files at all when starting from scratch), try to start with `evennia ipstart` instead. If you then see an error about `system cannot find the path specified`, it may be that the file `evennia\evennia\server\twistd.bat` has the wrong path to the `twistd` executable. This file is auto-generated, so try to delete it and then run `evennia start` to rebuild it and see if it works. If it still doesn't work you need to open it in a text editor like Notepad. It's just one line containing the path to the `twistd.exe` executable as determined by Evennia. If you installed Twisted in a non-standard location this might be wrong and you should update the line to the real location. - Some users have reported issues with Windows WSL and anti-virus software during Evennia diff --git a/docs/source/Setup/Installation-Upgrade.md b/docs/source/Setup/Installation-Upgrade.md index e16310875b..6f343aa3d8 100644 --- a/docs/source/Setup/Installation-Upgrade.md +++ b/docs/source/Setup/Installation-Upgrade.md @@ -16,8 +16,8 @@ Prior to 1.0, all Evennia installs were [Git-installs](./Installation-Git.md). T - Make a _new_ `evenv` virtualenv (see the [virtualenv instructions](./Installation-Git.md#virtualenv) for help) and make sure it's active - `cd` into your `evennia/` root folder (you want to be where you see the `docs/` and `bin/` directories as well as a nested `evennia/` folder) - `git pull` -- `git checkout main` (the `master`) -- `pip install -e --upgrade .` +- `git checkout main` (instead of `master` which was used for `0.9.5`) +- `pip install --upgrade -e .` - If you want the optional extra libs (needed by some contribs), do `pip install -e --upgrade .[extra]` - Test that you can run the `evennia` command. diff --git a/docs/source/Setup/Online-Setup.md b/docs/source/Setup/Online-Setup.md index 3788c64314..46c563200b 100644 --- a/docs/source/Setup/Online-Setup.md +++ b/docs/source/Setup/Online-Setup.md @@ -328,7 +328,7 @@ Evennia users: | [Amazon Lightsail][9] | Cloud | $5/month | Free first month. AWS's "fixed cost" offering.| | [Azure App Services][12] | Cloud | Free | Free tier with limited regions for hobbyists. | | [Huawei Cloud][13] | Cloud | on demand | Similar to Amazon. Free 12-month tier with limited regions. | -| [Host1Plus][5] | VPS & Cloud | $4/month | $4-$8/month depending on length of sign-up period. +| [Heficed][5] | VPS & Cloud | $6/month | $6/month for a 1GB ram server. | | [Scaleway][6] | Cloud | €3/month / on-demand | EU based (Paris, Amsterdam). Smallest option provides 2GB RAM. | | [Prgmr][10] | VPS | $5/month | 1 month free with a year prepay. You likely want some experience with servers with this option as they don't have a lot of support.| | [Linode][11] | Cloud | $5/month / on-demand | Multiple regions. Smallest option provides 1GB RAM| @@ -340,7 +340,7 @@ Evennia users: [2]: https://www.digitalocean.com/pricing [3]: https://aws.amazon.com/pricing/ [4]: https://www.genesismuds.com/ -[5]: https://www.host1plus.com/ +[5]: https://www.heficed.com/ [6]: https://www.scaleway.com/ [7]: https://lowendbox.com/ [8]: https://www.lowendtalk.com diff --git a/evennia/VERSION.txt b/evennia/VERSION.txt index 15ba4a5203..6d7de6e6ab 100644 --- a/evennia/VERSION.txt +++ b/evennia/VERSION.txt @@ -1 +1 @@ -1.0-dev +1.0.2 diff --git a/evennia/commands/default/account.py b/evennia/commands/default/account.py index af920a2325..0001dd543a 100644 --- a/evennia/commands/default/account.py +++ b/evennia/commands/default/account.py @@ -22,7 +22,6 @@ import time from codecs import lookup as codecs_lookup from django.conf import settings - from evennia.server.sessionhandler import SESSIONS from evennia.utils import create, logger, search, utils @@ -191,7 +190,8 @@ class CmdCharCreate(COMMAND_DEFAULT_CLASS): elif not new_character.db.desc: new_character.db.desc = "This is a character." self.msg( - f"Created new character {new_character.key}. Use |wic {new_character.key}|n to enter the game as this character." + f"Created new character {new_character.key}. Use |wic {new_character.key}|n to enter" + " the game as this character." ) logger.log_sec( f"Character Created: {new_character} (Caller: {account}, IP: {self.session.address})." @@ -317,11 +317,13 @@ class CmdIC(COMMAND_DEFAULT_CLASS): if account.db._playable_characters: # look at the playable_characters list first character_candidates.extend( - account.search( - self.args, - candidates=account.db._playable_characters, - search_object=True, - quiet=True, + utils.make_iter( + account.search( + self.args, + candidates=account.db._playable_characters, + search_object=True, + quiet=True, + ) ) ) @@ -370,12 +372,14 @@ class CmdIC(COMMAND_DEFAULT_CLASS): account.puppet_object(session, new_character) account.db._last_puppet = new_character logger.log_sec( - f"Puppet Success: (Caller: {account}, Target: {new_character}, IP: {self.session.address})." + f"Puppet Success: (Caller: {account}, Target: {new_character}, IP:" + f" {self.session.address})." ) except RuntimeError as exc: self.msg(f"|rYou cannot become |C{new_character.name}|n: {exc}") logger.log_sec( - f"Puppet Failed: %s (Caller: {account}, Target: {new_character}, IP: {self.session.address})." + f"Puppet Failed: %s (Caller: {account}, Target: {new_character}, IP:" + f" {self.session.address})." ) @@ -670,7 +674,8 @@ class CmdOption(COMMAND_DEFAULT_CLASS): else: flags[new_name] = new_val self.msg( - f"Option |w{new_name}|n was changed from '|w{old_val}|n' to '|w{new_val}|n'." + f"Option |w{new_name}|n was changed from '|w{old_val}|n' to" + f" '|w{new_val}|n'." ) return {new_name: new_val} except Exception as err: @@ -1024,7 +1029,7 @@ class CmdStyle(COMMAND_DEFAULT_CLASS): style