Compare commits
10 commits
e846707461
...
66748d4733
| Author | SHA1 | Date | |
|---|---|---|---|
| 66748d4733 | |||
| ed6c0b1045 | |||
| c50939da70 | |||
| 0cc31d3a06 | |||
|
|
b49438a819 | ||
|
|
97060f86c1 | ||
|
|
e098a57cce | ||
|
|
6073e56e3f | ||
|
|
2742515241 | ||
|
|
99229c7de8 |
13 changed files with 115 additions and 64 deletions
|
|
@ -44,8 +44,20 @@ def deploy():
|
||||||
os.system("git fetch")
|
os.system("git fetch")
|
||||||
os.system("git checkout gh-pages")
|
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("pwd")
|
||||||
os.system("ls")
|
|
||||||
|
|
||||||
names_to_skip = legacy_versions + ["build"]
|
names_to_skip = legacy_versions + ["build"]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,55 @@
|
||||||
|
|
||||||
## Main branch
|
## 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][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][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/issues/3799
|
[pull3799]: https://github.com/evennia/evennia/pull/3799
|
||||||
[pull3800]: https://github.com/evennia/evennia/issues/3800
|
[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
|
||||||
|
|
||||||
|
|
||||||
## Evennia 5.0.1
|
## Evennia 5.0.1
|
||||||
|
|
@ -31,10 +75,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): RUN MIGRATIONS (`evennia migrate`): Now requiring Django 5.1 (Griatch)
|
||||||
- Feat (backwards incompatible): Drop support and testing for Python 3.10 (Griatch)
|
- Feat (backwards incompatible): Drop support and testing for Python 3.10 (Griatch)
|
||||||
- [Feat][pull3719]: Support Python 3.13. (0xDEADFED5)
|
- [Feat][pull3719]: Support Python 3.13. (electroglyph)
|
||||||
- [Feat][pull3633]: Default object's default descs are now taken from a `default_description`
|
- [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)
|
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 (0xDEADFED5)
|
- [Feat][pull3718]: Remove twistd.bat creation for Windows, should not be needed anymore (electroglyph)
|
||||||
- [Feat][pull3756]: Updated German translation (JohnFi)
|
- [Feat][pull3756]: Updated German translation (JohnFi)
|
||||||
- [Feat][pull3757]: Add more i18n strings to `DefaultObject` for easier 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)
|
- [Feat][pull3783]: Support users of `ruff` linter by adding compatible config in `pyproject.toml` (jaborsh)
|
||||||
|
|
@ -50,8 +94,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
|
- [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)
|
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][pull3694]: Funcparser swallowing rest of line after a `\`-escape (count-infinity)
|
||||||
- [Fix][pull3705]: Properly serialize `IntFlag` enum types (0xDEADFED5)
|
- [Fix][pull3705]: Properly serialize `IntFlag` enum types (electroglyph)
|
||||||
- [Fix][pull3707]: Correct links in `about` command (0xDEADFED5)
|
- [Fix][pull3707]: Correct links in `about` command (electroglyph)
|
||||||
- [Fix][pull3710]: Clean reduntant session clearin in `at_server_cold_start` (InspectorCaracal)
|
- [Fix][pull3710]: Clean reduntant session clearin in `at_server_cold_start` (InspectorCaracal)
|
||||||
- [Fix][pull3711]: Usability improvements in the Discord integration (InspectorCaracal)
|
- [Fix][pull3711]: Usability improvements in the Discord integration (InspectorCaracal)
|
||||||
- [Fix][pull3721]: Avoid loading cmdsets that don't need to be checked, avoiding
|
- [Fix][pull3721]: Avoid loading cmdsets that don't need to be checked, avoiding
|
||||||
|
|
@ -67,7 +111,7 @@ This upgrade requires running `evennia migrate` on your existing database
|
||||||
- [Fix][pull3743]: Log full stack trace on failed object creation (aMiss-aWry)
|
- [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][pull3747]: TutorialWorld bridge-room didn't correctly randomize weather effects (SpyrosRoum)
|
||||||
- [Fix][pull3765]: Storing TickerHandler `store_key` in a db attribute would not
|
- [Fix][pull3765]: Storing TickerHandler `store_key` in a db attribute would not
|
||||||
work correctly (0xDEADFED5)
|
work correctly (electroglyph)
|
||||||
- [Fix][pull3753]: Make sure `AttributeProperty`s are initialized with default values also in parent class (JohnFi)
|
- [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][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,
|
- [Fix][pull3768]: Make sure the `CmdCopy` command copies object categories,
|
||||||
|
|
@ -82,7 +126,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)
|
it caused an OnDemandHandler save error on reload. Will now clean up on save. (Griatch)
|
||||||
used as the task's category (Griatch)
|
used as the task's category (Griatch)
|
||||||
- Fix: Correct aws contrib's use of legacy django string utils (Griatch)
|
- Fix: Correct aws contrib's use of legacy django string utils (Griatch)
|
||||||
- [Docs]: Fixes from InspectorCaracal, Griatch, ChrisLR, JohnFi, 0xDEADFED5, jaborsh, Problematic, BlaneWins
|
- [Docs]: Fixes from InspectorCaracal, Griatch, ChrisLR, JohnFi, electroglyph, jaborsh, Problematic, BlaneWins
|
||||||
|
|
||||||
[pull3633]: https://github.com/evennia/evennia/pull/3633
|
[pull3633]: https://github.com/evennia/evennia/pull/3633
|
||||||
[pull3677]: https://github.com/evennia/evennia/pull/3677
|
[pull3677]: https://github.com/evennia/evennia/pull/3677
|
||||||
|
|
@ -204,7 +248,7 @@ Sep 29, 2024
|
||||||
|
|
||||||
- Feat: Support `scripts key:typeclass` to create global scripts
|
- Feat: Support `scripts key:typeclass` to create global scripts
|
||||||
with dynamic keys (rather than just relying on typeclass' key) (Griatch)
|
with dynamic keys (rather than just relying on typeclass' key) (Griatch)
|
||||||
- [Feat][pull3595]: Tweak Sqlite3 PRAGMAs for better performance (0xDEADFED5)
|
- [Feat][pull3595]: Tweak Sqlite3 PRAGMAs for better performance (electroglyph)
|
||||||
- Feat: Make Sqlite3 PRAGMAs configurable via settings (Griatch)
|
- Feat: Make Sqlite3 PRAGMAs configurable via settings (Griatch)
|
||||||
- [Feat][pull3592]: Revised German locationlization ('Du' instead of 'Sie',
|
- [Feat][pull3592]: Revised German locationlization ('Du' instead of 'Sie',
|
||||||
cleanup) (Drakon72)
|
cleanup) (Drakon72)
|
||||||
|
|
@ -213,7 +257,7 @@ with dynamic keys (rather than just relying on typeclass' key) (Griatch)
|
||||||
- [Feat][pull3588]: New `DefaultObject` hooks: `at_object_post_creation`, called once after
|
- [Feat][pull3588]: New `DefaultObject` hooks: `at_object_post_creation`, called once after
|
||||||
first creation but after any prototypes have been applied, and
|
first creation but after any prototypes have been applied, and
|
||||||
`at_object_post_spawn(prototype)`, called only after creation/update with a prototype (InspectorCaracal)
|
`at_object_post_spawn(prototype)`, called only after creation/update with a prototype (InspectorCaracal)
|
||||||
- [Fix][pull3594]: Update/clean some Evennia dependencies (0xDEADFED5)
|
- [Fix][pull3594]: Update/clean some Evennia dependencies (electroglyph)
|
||||||
- [Fix][issue3556]: Better error if trying to treat ObjectDB as a typeclass (Griatch)
|
- [Fix][issue3556]: Better error if trying to treat ObjectDB as a typeclass (Griatch)
|
||||||
- [Fix][issue3590]: Make `examine` command properly show `strattr` type
|
- [Fix][issue3590]: Make `examine` command properly show `strattr` type
|
||||||
Attribute values (Griatch)
|
Attribute values (Griatch)
|
||||||
|
|
@ -227,7 +271,7 @@ did not add it to the handler's object (Griatch)
|
||||||
- [Fix][pull3605]: Correctly pass node kwargs through `@list_node` decorated evmenu nodes
|
- [Fix][pull3605]: Correctly pass node kwargs through `@list_node` decorated evmenu nodes
|
||||||
(InspectorCaracal)
|
(InspectorCaracal)
|
||||||
- [Fix][pull3597]: Address timing issue for testing `new_task_waiting_input `on
|
- [Fix][pull3597]: Address timing issue for testing `new_task_waiting_input `on
|
||||||
Windows (0xDEADFED5)
|
Windows (electroglyph)
|
||||||
- [Fix][pull3611]: Fix and update for Reports contrib (InspectorCaracal)
|
- [Fix][pull3611]: Fix and update for Reports contrib (InspectorCaracal)
|
||||||
- [Fix][pull3625]: Lycanthropy tutorial page had some issues (feyrkh)
|
- [Fix][pull3625]: Lycanthropy tutorial page had some issues (feyrkh)
|
||||||
- [Fix][pull3622]: Fix for examine command tracebacking with strvalue error
|
- [Fix][pull3622]: Fix for examine command tracebacking with strvalue error
|
||||||
|
|
@ -273,10 +317,10 @@ Aug 11, 2024
|
||||||
- [Feat][pull3531]: New contrib; `in-game reports` for handling user reports,
|
- [Feat][pull3531]: New contrib; `in-game reports` for handling user reports,
|
||||||
bugs etc in-game (InspectorCaracal)
|
bugs etc in-game (InspectorCaracal)
|
||||||
- [Feat][pull3586]: Add ANSI color support `|U`, `|I`, `|i`, `|s`, `|S` for
|
- [Feat][pull3586]: Add ANSI color support `|U`, `|I`, `|i`, `|s`, `|S` for
|
||||||
underline reset, italic/reset and strikethrough/reset (0xDEADFED5)
|
underline reset, italic/reset and strikethrough/reset (electroglyph)
|
||||||
- Feat: Add `Trait.traithandler` back-reference so custom Traits from the Traits
|
- Feat: Add `Trait.traithandler` back-reference so custom Traits from the Traits
|
||||||
contrib can find and reference other Traits. (Griatch)
|
contrib can find and reference other Traits. (Griatch)
|
||||||
- [Feat][pull3582]: Add true-color parsing/fallback for ANSIString (0xDEADFED5)
|
- [Feat][pull3582]: Add true-color parsing/fallback for ANSIString (electroglyph)
|
||||||
- [Fix][pull3571]: Better visual display of partial multimatch search results
|
- [Fix][pull3571]: Better visual display of partial multimatch search results
|
||||||
(InspectorCaracal)
|
(InspectorCaracal)
|
||||||
- [Fix][issue3378]: Prototype 'alias' key was not properly homogenized to a list
|
- [Fix][issue3378]: Prototype 'alias' key was not properly homogenized to a list
|
||||||
|
|
@ -286,8 +330,8 @@ underline reset, italic/reset and strikethrough/reset (0xDEADFED5)
|
||||||
- [Fix][pull3585]: `TagCmd.switch_options` was misnamed (erratic-pattern)
|
- [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][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)
|
- [Fix][pull3589]: Fix regex escaping in `utils.py` for future Python versions (hhsiao)
|
||||||
- [Docs]: Add True-color description for Colors documentation (0xDEADFED5)
|
- [Docs]: Add True-color description for Colors documentation (electroglyph)
|
||||||
- [Docs]: Doc fixes (Griatch, InspectorCaracal, 0xDEADFED5)
|
- [Docs]: Doc fixes (Griatch, InspectorCaracal, electroglyph)
|
||||||
|
|
||||||
[pull3585]: https://github.com/evennia/evennia/pull/3585
|
[pull3585]: https://github.com/evennia/evennia/pull/3585
|
||||||
[pull3580]: https://github.com/evennia/evennia/pull/3580
|
[pull3580]: https://github.com/evennia/evennia/pull/3580
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,5 @@
|
||||||
# Installation
|
# 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).
|
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).
|
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
|
# The command parser module to use. See the default module for which
|
||||||
# functions it must implement
|
# functions it must implement
|
||||||
COMMAND_PARSER = "evennia.commands.cmdparser.cmdparser"
|
COMMAND_PARSER = "evennia.commands.cmdparser.cmdparser"
|
||||||
# On a multi-match when search objects or commands, the user has the
|
# On a multi-match when searching objects or commands, the user has the
|
||||||
# ability to search again with an index marker that differentiates
|
# ability to search again with an index marker that differentiates
|
||||||
# the results. If multiple "box" objects
|
# the results. If multiple "box" objects are found, they can by default
|
||||||
# are found, they can by default be separated as 1-box, 2-box. Below you
|
# be separated as box-1, box-2. Below you can change the regular expression
|
||||||
# can change the regular expression used. The regex must have one
|
# used. The regex must have two capturing groups (?P<number>...) and
|
||||||
# have two capturing groups (?P<number>...) and (?P<name>...) - the default
|
# (?P<name>...) - the default parser expects this. It may also have an
|
||||||
# parser expects this. It should also involve a number starting from 1.
|
# optional (?P<args>...) group. It should also involve a number starting
|
||||||
# When changing this you must also update SEARCH_MULTIMATCH_TEMPLATE
|
# from 1. When changing this you must also update SEARCH_MULTIMATCH_TEMPLATE
|
||||||
# to properly describe the syntax.
|
# to properly describe the syntax.
|
||||||
SEARCH_MULTIMATCH_REGEX = r"(?P<name>[^-]*)-(?P<number>[0-9]+)(?P<args>.*)"
|
SEARCH_MULTIMATCH_REGEX = r"^(?P<name>.*?)-(?P<number>[0-9]+)(?P<args>(?:\s.*)?)$"
|
||||||
# To display multimatch errors in various listings we must display
|
# To display multimatch errors in various listings we must display
|
||||||
# the syntax in a way that matches what SEARCH_MULTIMATCH_REGEX understand.
|
# the syntax in a way that matches what SEARCH_MULTIMATCH_REGEX understand.
|
||||||
# The template will be populated with data and expects the following markup:
|
# The template will be populated with data and expects the following markup:
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Evennia Documentation
|
# 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 October 26, 2024, 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 January 12, 2026, see the [Evennia Changelog](Coding/Changelog.md). Latest released Evennia version is 5.0.1.
|
||||||
|
|
||||||
- [Introduction](./Evennia-Introduction.md) - what is this Evennia thing?
|
- [Introduction](./Evennia-Introduction.md) - what is this Evennia thing?
|
||||||
- [Evennia in Pictures](./Evennia-In-Pictures.md) - a visual overview of Evennia
|
- [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.
|
# `value = number` and only specific names supported by the handler.
|
||||||
|
|
||||||
PYTHON_MIN = 3.11
|
PYTHON_MIN = 3.11
|
||||||
PYTHON_MAX_TESTED = 3.13.100
|
PYTHON_MAX_TESTED = 3.14.100
|
||||||
TWISTED_MIN = 24.11
|
TWISTED_MIN = 24.11
|
||||||
DJANGO_MIN = 5.2.8
|
DJANGO_MIN = 5.2.8
|
||||||
DJANGO_MAX_TESTED = 5.2.100
|
DJANGO_MAX_TESTED = 5.2.100
|
||||||
|
|
|
||||||
|
|
@ -4241,23 +4241,23 @@ class CmdSpawn(COMMAND_DEFAULT_CLASS):
|
||||||
# treat as string
|
# treat as string
|
||||||
eval_err = err
|
eval_err = err
|
||||||
prototype = utils.to_str(inp)
|
prototype = utils.to_str(inp)
|
||||||
finally:
|
|
||||||
# it's possible that the input was a prototype-key, in which case
|
# 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
|
# it's okay for the LITERAL_EVAL to fail. Only if the result does not
|
||||||
# match the expected type do we have a problem.
|
# match the expected type do we have a problem.
|
||||||
if not isinstance(prototype, expect):
|
if not isinstance(prototype, expect):
|
||||||
if eval_err:
|
if eval_err:
|
||||||
string = (
|
string = (
|
||||||
f"{inp}\n{eval_err}\n|RCritical Python syntax error in argument. Only"
|
f"{inp}\n{eval_err}\n|RCritical Python syntax error in argument. Only"
|
||||||
" primitive Python structures are allowed. \nMake sure to use correct"
|
" primitive Python structures are allowed. \nMake sure to use correct"
|
||||||
" Python syntax. Remember especially to put quotes around all strings"
|
" Python syntax. Remember especially to put quotes around all strings"
|
||||||
" inside lists and dicts.|n For more advanced uses, embed funcparser"
|
" inside lists and dicts.|n For more advanced uses, embed funcparser"
|
||||||
" callables ($funcs) in the strings."
|
" callables ($funcs) in the strings."
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
string = f"Expected {expect}, got {type(prototype)}."
|
string = f"Expected {expect}, got {type(prototype)}."
|
||||||
self.msg(string)
|
self.msg(string)
|
||||||
return
|
return
|
||||||
|
|
||||||
if expect == dict:
|
if expect == dict:
|
||||||
# an actual prototype. We need to make sure it's safe,
|
# an actual prototype. We need to make sure it's safe,
|
||||||
|
|
|
||||||
|
|
@ -2264,6 +2264,7 @@ class TestSystemCommands(BaseEvenniaCommandTest):
|
||||||
|
|
||||||
self.call(multimatch, "look", "")
|
self.call(multimatch, "look", "")
|
||||||
|
|
||||||
|
|
||||||
class TestPreCmdOutputTestable(BaseEvenniaCommandTest):
|
class TestPreCmdOutputTestable(BaseEvenniaCommandTest):
|
||||||
def test_pre_cmd(self):
|
def test_pre_cmd(self):
|
||||||
class CmdTest(Command):
|
class CmdTest(Command):
|
||||||
|
|
@ -2275,4 +2276,4 @@ class TestPreCmdOutputTestable(BaseEvenniaCommandTest):
|
||||||
self.msg("This should never be executed")
|
self.msg("This should never be executed")
|
||||||
return
|
return
|
||||||
|
|
||||||
self.call(CmdTest(), "test", "This should be testable")
|
self.call(CmdTest(), "test", "This should be testable")
|
||||||
|
|
|
||||||
|
|
@ -45,10 +45,7 @@ def menunode_list_reports(caller, raw_string, **kwargs):
|
||||||
new_report_list = report_list.filter(db_tags__db_key=kwargs["status"])
|
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
|
# we don't filter reports if there are no reports under that filter
|
||||||
if not new_report_list:
|
if not new_report_list:
|
||||||
text = _(
|
text = _("(No {status} reports)\n" "{text}").format(status=status, text=text)
|
||||||
"(No {status} reports)\n"
|
|
||||||
"{text}"
|
|
||||||
).format(status=status, text=text)
|
|
||||||
else:
|
else:
|
||||||
report_list = new_report_list
|
report_list = new_report_list
|
||||||
text = _("Managing {status} {hub_name}").format(status=status, hub_name=hub_name)
|
text = _("Managing {status} {hub_name}").format(status=status, hub_name=hub_name)
|
||||||
|
|
@ -85,10 +82,12 @@ def menunode_list_reports(caller, raw_string, **kwargs):
|
||||||
options.append(
|
options.append(
|
||||||
{
|
{
|
||||||
"key": (
|
"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"),
|
_("previous"),
|
||||||
_("prev"),
|
_("prev"),
|
||||||
_("p")
|
_("p"),
|
||||||
),
|
),
|
||||||
"goto": (
|
"goto": (
|
||||||
"menunode_list_reports",
|
"menunode_list_reports",
|
||||||
|
|
@ -102,7 +101,7 @@ def menunode_list_reports(caller, raw_string, **kwargs):
|
||||||
"key": (
|
"key": (
|
||||||
_("|uN|next {_REPORTS_PER_PAGE}").format(_REPORTS_PER_PAGE=_REPORTS_PER_PAGE),
|
_("|uN|next {_REPORTS_PER_PAGE}").format(_REPORTS_PER_PAGE=_REPORTS_PER_PAGE),
|
||||||
_("next"),
|
_("next"),
|
||||||
_("n")
|
_("n"),
|
||||||
),
|
),
|
||||||
"goto": (
|
"goto": (
|
||||||
"menunode_list_reports",
|
"menunode_list_reports",
|
||||||
|
|
@ -151,16 +150,12 @@ def menunode_manage_report(caller, raw_string, report, **kwargs):
|
||||||
else:
|
else:
|
||||||
about_clause = ""
|
about_clause = ""
|
||||||
|
|
||||||
text = _(
|
text = _("{message}\n" "{timestamp} by {senders}{about_clause}\n" "{tags}").format(
|
||||||
"{message}\n"
|
|
||||||
"{timestamp} by {senders}{about_clause}\n"
|
|
||||||
"{tags}"
|
|
||||||
).format(
|
|
||||||
message=message,
|
message=message,
|
||||||
timestamp=timestamp,
|
timestamp=timestamp,
|
||||||
senders=senders_str,
|
senders=senders_str,
|
||||||
about_clause=about_clause,
|
about_clause=about_clause,
|
||||||
tags=tags_str
|
tags=tags_str,
|
||||||
)
|
)
|
||||||
|
|
||||||
options = []
|
options = []
|
||||||
|
|
|
||||||
|
|
@ -1119,6 +1119,7 @@ class TestIssue3824(BaseEvenniaTest):
|
||||||
self.assertIn(self.room1, objlist)
|
self.assertIn(self.room1, objlist)
|
||||||
self.assertIn(self.room2, objlist)
|
self.assertIn(self.room2, objlist)
|
||||||
|
|
||||||
|
|
||||||
class TestIssue3101(EvenniaCommandTest):
|
class TestIssue3101(EvenniaCommandTest):
|
||||||
"""
|
"""
|
||||||
Spawning and using create_object should store the same `typeclass_path` if using
|
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
|
# identify HTTP indata
|
||||||
_HTTP_REGEX = re.compile(
|
_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(
|
_HTTP_WARNING = bytes(
|
||||||
|
|
|
||||||
|
|
@ -93,6 +93,7 @@ class TestBatchCommandProcessor(TestCase):
|
||||||
[mock.call("foopath", file_ending=".ev"), mock.call("x", file_ending=".ev")],
|
[mock.call("foopath", file_ending=".ev"), mock.call("x", file_ending=".ev")],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class TestReadBatchFile(TestCase):
|
class TestReadBatchFile(TestCase):
|
||||||
"""Test read_batchfile line ending normalization."""
|
"""Test read_batchfile line ending normalization."""
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ classifiers = [
|
||||||
"Programming Language :: Python :: 3.11",
|
"Programming Language :: Python :: 3.11",
|
||||||
"Programming Language :: Python :: 3.12",
|
"Programming Language :: Python :: 3.12",
|
||||||
"Programming Language :: Python :: 3.13",
|
"Programming Language :: Python :: 3.13",
|
||||||
|
"Programming Language :: Python :: 3.14",
|
||||||
"Programming Language :: JavaScript",
|
"Programming Language :: JavaScript",
|
||||||
"Development Status :: 5 - Production/Stable",
|
"Development Status :: 5 - Production/Stable",
|
||||||
"License :: OSI Approved :: BSD License",
|
"License :: OSI Approved :: BSD License",
|
||||||
|
|
@ -70,12 +71,12 @@ dependencies = [
|
||||||
"pytz >= 2022.6",
|
"pytz >= 2022.6",
|
||||||
"djangorestframework >= 3.16, < 3.17",
|
"djangorestframework >= 3.16, < 3.17",
|
||||||
"pyyaml >= 6.0",
|
"pyyaml >= 6.0",
|
||||||
"django-filter == 2.4",
|
"django-filter == 25.2",
|
||||||
"django-sekizai == 2.0.0",
|
"django-sekizai == 2.0.0",
|
||||||
"inflect >= 5.2.0",
|
"inflect >= 5.2.0",
|
||||||
"autobahn >= 20.7.1, < 21.0.0",
|
"autobahn >= 20.7.1, < 21.0.0",
|
||||||
"lunr == 0.7.0.post1",
|
"lunr == 0.7.0.post1",
|
||||||
"simpleeval <= 1.0",
|
"simpleeval ~= 1.0.3",
|
||||||
"uritemplate == 4.1.1",
|
"uritemplate == 4.1.1",
|
||||||
"tzdata >= 2022.6",
|
"tzdata >= 2022.6",
|
||||||
"inflection == 0.5.1",
|
"inflection == 0.5.1",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue