Compare commits
No commits in common. "66748d47337358f61e09362bb2971c126fb4a79a" and "e846707461bc310720fb5ff1ca75d284b1fcb9c6" have entirely different histories.
66748d4733
...
e846707461
13 changed files with 64 additions and 115 deletions
|
|
@ -44,20 +44,8 @@ def deploy():
|
|||
os.system("git fetch")
|
||||
os.system("git checkout gh-pages")
|
||||
|
||||
proc = subprocess.Popen(
|
||||
["git", "checkout gh-pages"],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
stdin=subprocess.PIPE,
|
||||
shell=True,
|
||||
)
|
||||
if proc.returncode:
|
||||
print("Could not checkout gh-pages branch.")
|
||||
sys.exit(1)
|
||||
else:
|
||||
print("Checked out gh-pages branch.")
|
||||
|
||||
os.system("pwd")
|
||||
os.system("ls")
|
||||
|
||||
names_to_skip = legacy_versions + ["build"]
|
||||
|
||||
|
|
|
|||
|
|
@ -2,55 +2,11 @@
|
|||
|
||||
## Main branch
|
||||
|
||||
- Security dependency updates: Django >5.2.8 (<5.3), Django RestFramework 3.16
|
||||
- [Feat][pull3599]: Make at_pre_cmd
|
||||
- [Fix]: API /openapi/setattribute endpoints were both POST and PUT, causing schema
|
||||
errors; now changed to PUT only. (Griatch)
|
||||
- [Fix][pull3799]: Fix typo in `basic_tc.py` contrib for beginner tutorial (Tharic99)
|
||||
- [Fix][pull3806]: EvMore wouldn't pass Session to next cmd when exiting (gas-public-wooden-clean)
|
||||
- [Fix][pull3809]: Admin page - Repair link to Account button (UserlandAlchemist)
|
||||
- [Fix][pull3811]: Website login banner shows before login attempt (UserlandAlchemist)
|
||||
- [Fix][pull3817]: `ingame_reports` i18n fix (peddn)
|
||||
- [Fix][pull3818]: Update spawn hook to use `new_prototype` (InspectorCaracal)
|
||||
- [Fix][pull3815]: Performance improvement in large cmdset mergers (blongden)
|
||||
- [Fix][pull3831]: Performance optimization in ANSIString, performance boost for large colored
|
||||
strings (count-infinity)
|
||||
- [Fix][pull3832]: Fix typo in prototype causing homogenized locks to use
|
||||
fallbacks incorrectly (count-infinity)
|
||||
- [Fix][pull3834]: Fix so `$obj(#123)` inline function works in prototype spawning (count-infinity)
|
||||
- [Fix][pull3836]: Correctly handling calling `create_object` with `key=None` (count-infinity)
|
||||
- [Fix][pull3852]: Django 5.2+ was not properly detected. Fixing distutils being
|
||||
removed in py3.12 for new installs (count-infinity)
|
||||
- [Fix][pull3845]: Fix exponential ANSI markup explosions when slicing
|
||||
ANSIString after reset (speeds up EvForm other string ops, fixes compatibility) (count-infinity)
|
||||
- [Fix][pull3853]: Properly handle multimatch separations with native dashes, like
|
||||
't-shirt-1' (count-infinity)
|
||||
- [Doc][pull3801]: Move Evennia doc build system to latest Sphinx/myST
|
||||
(PowershellNinja, also honorary mention to electroglyph)
|
||||
- [Doc][pull3800]: Describe support for Telnet SSH in HAProxy documentation (holl0wstar)
|
||||
- [Doc][pull3825]: Update Portuguese translation (marado)
|
||||
- [Doc][pull3826]: Fix broken links in README (marado)
|
||||
- Docs: marado, Griatch, Hasna878, count-infinity
|
||||
|
||||
[pull3799]: https://github.com/evennia/evennia/pull/3799
|
||||
[pull3800]: https://github.com/evennia/evennia/pull/3800
|
||||
[pull3801]: https://github.com/evennia/evennia/pull/3801
|
||||
[pull3806]: https://github.com/evennia/evennia/pull/3806
|
||||
[pull3809]: https://github.com/evennia/evennia/pull/3809
|
||||
[pull3811]: https://github.com/evennia/evennia/pull/3811
|
||||
[pull3815]: https://github.com/evennia/evennia/pull/3815
|
||||
[pull3817]: https://github.com/evennia/evennia/pull/3817
|
||||
[pull3818]: https://github.com/evennia/evennia/pull/3818
|
||||
[pull3825]: https://github.com/evennia/evennia/pull/3825
|
||||
[pull3826]: https://github.com/evennia/evennia/pull/3826
|
||||
[pull3831]: https://github.com/evennia/evennia/pull/3831
|
||||
[pull3832]: https://github.com/evennia/evennia/pull/3832
|
||||
[pull3834]: https://github.com/evennia/evennia/pull/3834
|
||||
[pull3836]: https://github.com/evennia/evennia/pull/3836
|
||||
[pull3599]: https://github.com/evennia/evennia/pull/3599
|
||||
[pull3852]: https://github.com/evennia/evennia/pull/3852
|
||||
[pull3853]: https://github.com/evennia/evennia/pull/3853
|
||||
[pull3854]: https://github.com/evennia/evennia/pull/3853
|
||||
[pull3799]: https://github.com/evennia/evennia/issues/3799
|
||||
[pull3800]: https://github.com/evennia/evennia/issues/3800
|
||||
|
||||
|
||||
## Evennia 5.0.1
|
||||
|
|
@ -75,10 +31,10 @@ This upgrade requires running `evennia migrate` on your existing database
|
|||
|
||||
- Feat (backwards incompatible): RUN MIGRATIONS (`evennia migrate`): Now requiring Django 5.1 (Griatch)
|
||||
- Feat (backwards incompatible): Drop support and testing for Python 3.10 (Griatch)
|
||||
- [Feat][pull3719]: Support Python 3.13. (electroglyph)
|
||||
- [Feat][pull3719]: Support Python 3.13. (0xDEADFED5)
|
||||
- [Feat][pull3633]: Default object's default descs are now taken from a `default_description`
|
||||
class variable instead of the `desc` Attribute always being set (count-infinity)
|
||||
- [Feat][pull3718]: Remove twistd.bat creation for Windows, should not be needed anymore (electroglyph)
|
||||
- [Feat][pull3718]: Remove twistd.bat creation for Windows, should not be needed anymore (0xDEADFED5)
|
||||
- [Feat][pull3756]: Updated German translation (JohnFi)
|
||||
- [Feat][pull3757]: Add more i18n strings to `DefaultObject` for easier translation (JohnFi)
|
||||
- [Feat][pull3783]: Support users of `ruff` linter by adding compatible config in `pyproject.toml` (jaborsh)
|
||||
|
|
@ -94,8 +50,8 @@ This upgrade requires running `evennia migrate` on your existing database
|
|||
- [Fix][pull3690]: In searches, allow special 'here' and 'me' keywords only be valid queries
|
||||
unless current location and/or caller is in valid search candidates respectively (InspectorCaracal)
|
||||
- [Fix][pull3694]: Funcparser swallowing rest of line after a `\`-escape (count-infinity)
|
||||
- [Fix][pull3705]: Properly serialize `IntFlag` enum types (electroglyph)
|
||||
- [Fix][pull3707]: Correct links in `about` command (electroglyph)
|
||||
- [Fix][pull3705]: Properly serialize `IntFlag` enum types (0xDEADFED5)
|
||||
- [Fix][pull3707]: Correct links in `about` command (0xDEADFED5)
|
||||
- [Fix][pull3710]: Clean reduntant session clearin in `at_server_cold_start` (InspectorCaracal)
|
||||
- [Fix][pull3711]: Usability improvements in the Discord integration (InspectorCaracal)
|
||||
- [Fix][pull3721]: Avoid loading cmdsets that don't need to be checked, avoiding
|
||||
|
|
@ -111,7 +67,7 @@ This upgrade requires running `evennia migrate` on your existing database
|
|||
- [Fix][pull3743]: Log full stack trace on failed object creation (aMiss-aWry)
|
||||
- [Fix][pull3747]: TutorialWorld bridge-room didn't correctly randomize weather effects (SpyrosRoum)
|
||||
- [Fix][pull3765]: Storing TickerHandler `store_key` in a db attribute would not
|
||||
work correctly (electroglyph)
|
||||
work correctly (0xDEADFED5)
|
||||
- [Fix][pull3753]: Make sure `AttributeProperty`s are initialized with default values also in parent class (JohnFi)
|
||||
- [Fix][pull3751]: The `access` and `inventory` commands would traceback if run on a character without an Account (EliasWatson)
|
||||
- [Fix][pull3768]: Make sure the `CmdCopy` command copies object categories,
|
||||
|
|
@ -126,7 +82,7 @@ This upgrade requires running `evennia migrate` on your existing database
|
|||
it caused an OnDemandHandler save error on reload. Will now clean up on save. (Griatch)
|
||||
used as the task's category (Griatch)
|
||||
- Fix: Correct aws contrib's use of legacy django string utils (Griatch)
|
||||
- [Docs]: Fixes from InspectorCaracal, Griatch, ChrisLR, JohnFi, electroglyph, jaborsh, Problematic, BlaneWins
|
||||
- [Docs]: Fixes from InspectorCaracal, Griatch, ChrisLR, JohnFi, 0xDEADFED5, jaborsh, Problematic, BlaneWins
|
||||
|
||||
[pull3633]: https://github.com/evennia/evennia/pull/3633
|
||||
[pull3677]: https://github.com/evennia/evennia/pull/3677
|
||||
|
|
@ -248,7 +204,7 @@ Sep 29, 2024
|
|||
|
||||
- Feat: Support `scripts key:typeclass` to create global scripts
|
||||
with dynamic keys (rather than just relying on typeclass' key) (Griatch)
|
||||
- [Feat][pull3595]: Tweak Sqlite3 PRAGMAs for better performance (electroglyph)
|
||||
- [Feat][pull3595]: Tweak Sqlite3 PRAGMAs for better performance (0xDEADFED5)
|
||||
- Feat: Make Sqlite3 PRAGMAs configurable via settings (Griatch)
|
||||
- [Feat][pull3592]: Revised German locationlization ('Du' instead of 'Sie',
|
||||
cleanup) (Drakon72)
|
||||
|
|
@ -257,7 +213,7 @@ with dynamic keys (rather than just relying on typeclass' key) (Griatch)
|
|||
- [Feat][pull3588]: New `DefaultObject` hooks: `at_object_post_creation`, called once after
|
||||
first creation but after any prototypes have been applied, and
|
||||
`at_object_post_spawn(prototype)`, called only after creation/update with a prototype (InspectorCaracal)
|
||||
- [Fix][pull3594]: Update/clean some Evennia dependencies (electroglyph)
|
||||
- [Fix][pull3594]: Update/clean some Evennia dependencies (0xDEADFED5)
|
||||
- [Fix][issue3556]: Better error if trying to treat ObjectDB as a typeclass (Griatch)
|
||||
- [Fix][issue3590]: Make `examine` command properly show `strattr` type
|
||||
Attribute values (Griatch)
|
||||
|
|
@ -271,7 +227,7 @@ did not add it to the handler's object (Griatch)
|
|||
- [Fix][pull3605]: Correctly pass node kwargs through `@list_node` decorated evmenu nodes
|
||||
(InspectorCaracal)
|
||||
- [Fix][pull3597]: Address timing issue for testing `new_task_waiting_input `on
|
||||
Windows (electroglyph)
|
||||
Windows (0xDEADFED5)
|
||||
- [Fix][pull3611]: Fix and update for Reports contrib (InspectorCaracal)
|
||||
- [Fix][pull3625]: Lycanthropy tutorial page had some issues (feyrkh)
|
||||
- [Fix][pull3622]: Fix for examine command tracebacking with strvalue error
|
||||
|
|
@ -317,10 +273,10 @@ Aug 11, 2024
|
|||
- [Feat][pull3531]: New contrib; `in-game reports` for handling user reports,
|
||||
bugs etc in-game (InspectorCaracal)
|
||||
- [Feat][pull3586]: Add ANSI color support `|U`, `|I`, `|i`, `|s`, `|S` for
|
||||
underline reset, italic/reset and strikethrough/reset (electroglyph)
|
||||
underline reset, italic/reset and strikethrough/reset (0xDEADFED5)
|
||||
- Feat: Add `Trait.traithandler` back-reference so custom Traits from the Traits
|
||||
contrib can find and reference other Traits. (Griatch)
|
||||
- [Feat][pull3582]: Add true-color parsing/fallback for ANSIString (electroglyph)
|
||||
- [Feat][pull3582]: Add true-color parsing/fallback for ANSIString (0xDEADFED5)
|
||||
- [Fix][pull3571]: Better visual display of partial multimatch search results
|
||||
(InspectorCaracal)
|
||||
- [Fix][issue3378]: Prototype 'alias' key was not properly homogenized to a list
|
||||
|
|
@ -330,8 +286,8 @@ underline reset, italic/reset and strikethrough/reset (electroglyph)
|
|||
- [Fix][pull3585]: `TagCmd.switch_options` was misnamed (erratic-pattern)
|
||||
- [Fix][pull3580]: Fix typo that made `find/loc` show the wrong dbref in result (erratic-pattern)
|
||||
- [Fix][pull3589]: Fix regex escaping in `utils.py` for future Python versions (hhsiao)
|
||||
- [Docs]: Add True-color description for Colors documentation (electroglyph)
|
||||
- [Docs]: Doc fixes (Griatch, InspectorCaracal, electroglyph)
|
||||
- [Docs]: Add True-color description for Colors documentation (0xDEADFED5)
|
||||
- [Docs]: Doc fixes (Griatch, InspectorCaracal, 0xDEADFED5)
|
||||
|
||||
[pull3585]: https://github.com/evennia/evennia/pull/3585
|
||||
[pull3580]: https://github.com/evennia/evennia/pull/3580
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
# Installation
|
||||
|
||||
```{important}
|
||||
If you are converting an existing game from a previous Evennia version, you will need to upgrade.
|
||||
```
|
||||
|
||||
The fastest way to install Evennia is to use the `pip` installer that comes with Python (read on). You can also [clone Evennia from github](./Installation-Git.md) or use [docker](./Installation-Docker.md). Some users have also experimented with [installing Evennia on Android](./Installation-Android.md).
|
||||
|
||||
If you are converting an existing game, please follow the [upgrade instructions](./Installation-Upgrade.md).
|
||||
|
|
|
|||
|
|
@ -376,16 +376,16 @@ WEBCLIENT_OPTIONS = {
|
|||
# The command parser module to use. See the default module for which
|
||||
# functions it must implement
|
||||
COMMAND_PARSER = "evennia.commands.cmdparser.cmdparser"
|
||||
# On a multi-match when searching objects or commands, the user has the
|
||||
# On a multi-match when search objects or commands, the user has the
|
||||
# ability to search again with an index marker that differentiates
|
||||
# the results. If multiple "box" objects are found, they can by default
|
||||
# be separated as box-1, box-2. Below you can change the regular expression
|
||||
# used. The regex must have two capturing groups (?P<number>...) and
|
||||
# (?P<name>...) - the default parser expects this. It may also have an
|
||||
# optional (?P<args>...) group. It should also involve a number starting
|
||||
# from 1. When changing this you must also update SEARCH_MULTIMATCH_TEMPLATE
|
||||
# the results. If multiple "box" objects
|
||||
# are found, they can by default be separated as 1-box, 2-box. Below you
|
||||
# can change the regular expression used. The regex must have one
|
||||
# have two capturing groups (?P<number>...) and (?P<name>...) - the default
|
||||
# parser expects this. It should also involve a number starting from 1.
|
||||
# When changing this you must also update SEARCH_MULTIMATCH_TEMPLATE
|
||||
# to properly describe the syntax.
|
||||
SEARCH_MULTIMATCH_REGEX = r"^(?P<name>.*?)-(?P<number>[0-9]+)(?P<args>(?:\s.*)?)$"
|
||||
SEARCH_MULTIMATCH_REGEX = r"(?P<name>[^-]*)-(?P<number>[0-9]+)(?P<args>.*)"
|
||||
# To display multimatch errors in various listings we must display
|
||||
# the syntax in a way that matches what SEARCH_MULTIMATCH_REGEX understand.
|
||||
# The template will be populated with data and expects the following markup:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Evennia Documentation
|
||||
|
||||
This is the manual of [Evennia](https://www.evennia.com), the open source Python `MU*` creation system. Use the Search bar on the left to find or discover interesting articles. This manual was last updated January 12, 2026, see the [Evennia Changelog](Coding/Changelog.md). Latest released Evennia version is 5.0.1.
|
||||
This is the manual of [Evennia](https://www.evennia.com), the open source Python `MU*` creation system. Use the Search bar on the left to find or discover interesting articles. This manual was last updated October 26, 2024, see the [Evennia Changelog](Coding/Changelog.md). Latest released Evennia version is 5.0.1.
|
||||
|
||||
- [Introduction](./Evennia-Introduction.md) - what is this Evennia thing?
|
||||
- [Evennia in Pictures](./Evennia-In-Pictures.md) - a visual overview of Evennia
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
# `value = number` and only specific names supported by the handler.
|
||||
|
||||
PYTHON_MIN = 3.11
|
||||
PYTHON_MAX_TESTED = 3.14.100
|
||||
PYTHON_MAX_TESTED = 3.13.100
|
||||
TWISTED_MIN = 24.11
|
||||
DJANGO_MIN = 5.2.8
|
||||
DJANGO_MAX_TESTED = 5.2.100
|
||||
|
|
|
|||
|
|
@ -4241,7 +4241,7 @@ class CmdSpawn(COMMAND_DEFAULT_CLASS):
|
|||
# treat as string
|
||||
eval_err = err
|
||||
prototype = utils.to_str(inp)
|
||||
|
||||
finally:
|
||||
# it's possible that the input was a prototype-key, in which case
|
||||
# it's okay for the LITERAL_EVAL to fail. Only if the result does not
|
||||
# match the expected type do we have a problem.
|
||||
|
|
|
|||
|
|
@ -2264,7 +2264,6 @@ class TestSystemCommands(BaseEvenniaCommandTest):
|
|||
|
||||
self.call(multimatch, "look", "")
|
||||
|
||||
|
||||
class TestPreCmdOutputTestable(BaseEvenniaCommandTest):
|
||||
def test_pre_cmd(self):
|
||||
class CmdTest(Command):
|
||||
|
|
|
|||
|
|
@ -45,7 +45,10 @@ def menunode_list_reports(caller, raw_string, **kwargs):
|
|||
new_report_list = report_list.filter(db_tags__db_key=kwargs["status"])
|
||||
# we don't filter reports if there are no reports under that filter
|
||||
if not new_report_list:
|
||||
text = _("(No {status} reports)\n" "{text}").format(status=status, text=text)
|
||||
text = _(
|
||||
"(No {status} reports)\n"
|
||||
"{text}"
|
||||
).format(status=status, text=text)
|
||||
else:
|
||||
report_list = new_report_list
|
||||
text = _("Managing {status} {hub_name}").format(status=status, hub_name=hub_name)
|
||||
|
|
@ -82,12 +85,10 @@ def menunode_list_reports(caller, raw_string, **kwargs):
|
|||
options.append(
|
||||
{
|
||||
"key": (
|
||||
_("|uP|nrevious {_REPORTS_PER_PAGE}").format(
|
||||
_REPORTS_PER_PAGE, _REPORTS_PER_PAGE
|
||||
),
|
||||
_("|uP|nrevious {_REPORTS_PER_PAGE}").format(_REPORTS_PER_PAGE, _REPORTS_PER_PAGE),
|
||||
_("previous"),
|
||||
_("prev"),
|
||||
_("p"),
|
||||
_("p")
|
||||
),
|
||||
"goto": (
|
||||
"menunode_list_reports",
|
||||
|
|
@ -101,7 +102,7 @@ def menunode_list_reports(caller, raw_string, **kwargs):
|
|||
"key": (
|
||||
_("|uN|next {_REPORTS_PER_PAGE}").format(_REPORTS_PER_PAGE=_REPORTS_PER_PAGE),
|
||||
_("next"),
|
||||
_("n"),
|
||||
_("n")
|
||||
),
|
||||
"goto": (
|
||||
"menunode_list_reports",
|
||||
|
|
@ -150,12 +151,16 @@ def menunode_manage_report(caller, raw_string, report, **kwargs):
|
|||
else:
|
||||
about_clause = ""
|
||||
|
||||
text = _("{message}\n" "{timestamp} by {senders}{about_clause}\n" "{tags}").format(
|
||||
text = _(
|
||||
"{message}\n"
|
||||
"{timestamp} by {senders}{about_clause}\n"
|
||||
"{tags}"
|
||||
).format(
|
||||
message=message,
|
||||
timestamp=timestamp,
|
||||
senders=senders_str,
|
||||
about_clause=about_clause,
|
||||
tags=tags_str,
|
||||
tags=tags_str
|
||||
)
|
||||
|
||||
options = []
|
||||
|
|
|
|||
|
|
@ -1119,7 +1119,6 @@ class TestIssue3824(BaseEvenniaTest):
|
|||
self.assertIn(self.room1, objlist)
|
||||
self.assertIn(self.room2, objlist)
|
||||
|
||||
|
||||
class TestIssue3101(EvenniaCommandTest):
|
||||
"""
|
||||
Spawning and using create_object should store the same `typeclass_path` if using
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ _IDLE_COMMAND = str.encode(settings.IDLE_COMMAND + "\n")
|
|||
|
||||
# identify HTTP indata
|
||||
_HTTP_REGEX = re.compile(
|
||||
b"(GET|HEAD|POST|PUT|DELETE|TRACE|OPTIONS|CONNECT|PATCH) (.*? HTTP/[0-9]\\.[0-9])", re.I
|
||||
b"(GET|HEAD|POST|PUT|DELETE|TRACE|OPTIONS|CONNECT|PATCH) (.*? HTTP/[0-9]\.[0-9])", re.I
|
||||
)
|
||||
|
||||
_HTTP_WARNING = bytes(
|
||||
|
|
|
|||
|
|
@ -93,7 +93,6 @@ class TestBatchCommandProcessor(TestCase):
|
|||
[mock.call("foopath", file_ending=".ev"), mock.call("x", file_ending=".ev")],
|
||||
)
|
||||
|
||||
|
||||
class TestReadBatchFile(TestCase):
|
||||
"""Test read_batchfile line ending normalization."""
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,6 @@ classifiers = [
|
|||
"Programming Language :: Python :: 3.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
"Programming Language :: Python :: 3.13",
|
||||
"Programming Language :: Python :: 3.14",
|
||||
"Programming Language :: JavaScript",
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
"License :: OSI Approved :: BSD License",
|
||||
|
|
@ -71,12 +70,12 @@ dependencies = [
|
|||
"pytz >= 2022.6",
|
||||
"djangorestframework >= 3.16, < 3.17",
|
||||
"pyyaml >= 6.0",
|
||||
"django-filter == 25.2",
|
||||
"django-filter == 2.4",
|
||||
"django-sekizai == 2.0.0",
|
||||
"inflect >= 5.2.0",
|
||||
"autobahn >= 20.7.1, < 21.0.0",
|
||||
"lunr == 0.7.0.post1",
|
||||
"simpleeval ~= 1.0.3",
|
||||
"simpleeval <= 1.0",
|
||||
"uritemplate == 4.1.1",
|
||||
"tzdata >= 2022.6",
|
||||
"inflection == 0.5.1",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue