Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ Changelog
Due to this library relying on external content, older versions are not guaranteed to work.
Try to always use the latest version.

.. v6.4.0

6.4.0 (unreleased)
==================
- Add Monk vocation (``Vocation.MONK`` / ``Vocation.EXALTED_MONK``) and the matching ``AuctionVocationFilter``, ``HighscoresProfession`` and ``SpellVocationFilter`` entries.

.. v6.3.0

6.3.0 (2024-04-05)
Expand Down
11 changes: 11 additions & 0 deletions tests/tests_enums.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import tibiapy.enums
from tests.tests_tibiapy import TestCommons
from tibiapy.models import AuctionFilters
from tibiapy.utils import try_enum


class TestEnums(TestCommons):
Expand Down Expand Up @@ -30,3 +31,13 @@ def test_vocation_filter_from_name(self):
self.assertEqual(tibiapy.enums.HighscoresProfession.ALL,
tibiapy.enums.HighscoresProfession.from_name("anything"))
self.assertIsNone(tibiapy.enums.HighscoresProfession.from_name("anything", all_fallback=False))

def test_vocation_includes_monk(self):
"""Monk vocations must resolve, otherwise bazaar pages containing a Monk fail to parse."""
self.assertEqual(tibiapy.enums.Vocation.MONK, tibiapy.enums.Vocation("Monk"))
self.assertEqual(tibiapy.enums.Vocation.EXALTED_MONK, tibiapy.enums.Vocation("Exalted Monk"))
self.assertEqual(tibiapy.enums.Vocation.MONK, tibiapy.enums.Vocation.EXALTED_MONK.base)
# The bazaar parser resolves vocations through try_enum; "Monk" previously returned None.
self.assertEqual(tibiapy.enums.Vocation.MONK, try_enum(tibiapy.enums.Vocation, "Monk"))
self.assertEqual(tibiapy.enums.Vocation.EXALTED_MONK,
try_enum(tibiapy.enums.Vocation, "Exalted Monk"))
7 changes: 7 additions & 0 deletions tibiapy/enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,7 @@ class AuctionVocationFilter(NumericEnum):
KNIGHT = 3
PALADIN = 4
SORCERER = 5
MONK = 6


class AvailableForumSection(StringEnum):
Expand Down Expand Up @@ -322,6 +323,7 @@ class HighscoresProfession(NumericEnum):
PALADINS = 3
SORCERERS = 4
DRUIDS = 5
MONKS = 6

@classmethod
def from_name(cls, name: str, all_fallback: bool = True) -> Optional[Self]:
Expand Down Expand Up @@ -479,6 +481,7 @@ class SpellVocationFilter(StringEnum):
KNIGHT = "Knight"
PALADIN = "Paladin"
SORCERER = "Sorcerer"
MONK = "Monk"


class ThreadStatus(Flag):
Expand Down Expand Up @@ -555,10 +558,12 @@ class Vocation(StringEnum):
KNIGHT = "Knight"
PALADIN = "Paladin"
SORCERER = "Sorcerer"
MONK = "Monk"
ELDER_DRUID = "Elder Druid"
ELITE_KNIGHT = "Elite Knight"
ROYAL_PALADIN = "Royal Paladin"
MASTER_SORCERER = "Master Sorcerer"
EXALTED_MONK = "Exalted Monk"

@property
def base(self) -> Self:
Expand All @@ -571,6 +576,8 @@ def base(self) -> Self:
return self.PALADIN
if self == self.ELITE_KNIGHT:
return self.KNIGHT
if self == self.EXALTED_MONK:
return self.MONK
return self


Expand Down