A simple resolver to analyze wynntils' encoded equipment in chat.
Project description
Wynntils Resolver
A simple resolver to analyze Artemis' encoded items in chat.
Requires
Install
pip install wynntilsresolver -U
Usage
Use Predefined Resolvers
from wynntilsresolver import GearItemResolver
shiny_warp = ""
sw = GearItemResolver.from_utf16(shiny_warp)
assert sw.name == "Warp"
assert sw.identifications
assert sw.identifications == [
Identification(id="rawAgility", internal_id=41, base=20, roll=-1, value=20),
Identification(id="healthRegen", internal_id=24, base=-200, roll=87, value=-174),
Identification(id="manaRegen", internal_id=34, base=-45, roll=77, value=-35),
Identification(id="reflection", internal_id=69, base=90, roll=98, value=88),
Identification(id="exploding", internal_id=17, base=50, roll=71, value=36),
Identification(id="walkSpeed", internal_id=81, base=180, roll=116, value=209),
Identification(id="healthRegenRaw", internal_id=25, base=-600, roll=80, value=-480),
Identification(id="airDamage", internal_id=4, base=15, roll=110, value=16),
Identification(id="raw1stSpellCost", internal_id=37, base=4, roll=88, value=4),
Identification(id="raw2ndSpellCost", internal_id=38, base=-299, roll=104, value=-311),
]
assert sw.powder
assert sw.powder.powder_slots == 3
assert sw.powder.powders == ["A6", "A6", "A6"]
assert sw.shiny
assert sw.shiny.name == "warsWon"
assert sw.shiny.value == 69
assert sw.shiny.display_name == "Wars Won"
assert sw.shiny.internal_id == 4
assert sw.reroll == 0
Create your own resolver
from typing import Optional
from wynntilsresolver.blocks import GearItem, Name,Identifications, Reroll, Powder, Shiny
from wynntilsresolver.resolver import Resolver
# Create a custom resolver like this
class MyResolver2(Resolver):
item_type: GearItem
name: Name
identifications: Optional[Identifications]
reroll: Optional[Reroll]
powder: Optional[Powder]
shiny: Optional[Shiny]
shiny_warp = ""
# Decode from Artemis shared utf16 text
b = MyResolver2.from_utf16(shiny_warp)
print(b.name.name) # Warp
if b.identifications:
# Identification(id='rawAgility', internal_id=41, base=20, roll=-1, value=20)
b.identifications.identifications[0]
Environment Variables
DATA_LOCATION: The directory to store the cache files. Default:pathlib.Path.home() / "AppData" / "Local" / "wynntilsresolver"orpathlib.Path.home() / ".local" / "share" / "wynntilsresolver"ITEMDB_PATH: The path to the itemdb file.SHINY_TABLE_PATH: The path to the shiny table file.ID_TABLE_PATH: The path to the id table file.
Note that setting the path to those files will disable auto update.
Benchmark
Resolver Creation With Cache
[!IMPORTANT] The benchmark is done with data files downloaded to local. For each 24 hours, the cache will be updated and will take several seconds depending on the network speed.
> hyperfine --warmup 3 'python ./temp/benchmark_resolver.py'
Benchmark 1: python ./temp/benchmark_resolver.py
Time (mean ± σ): 584.0 ms ± 5.4 ms [User: 112.8 ms, System: 161.2 ms]
Range (min … max): 577.5 ms … 594.0 ms 10 runs
Script:
from wynntilsresolver.item import GearItemResolver
shiny_warp = ""
sw = GearItemResolver.from_utf16(shiny_warp)
Resolving an GearItem from utf16 string
> python ./temp/benchmark_decode.py
Tested 10000 times, time elapsed: 0.71 seconds. Estimated qps: 14146
Script:
import timeit
from wynntilsresolver import GearItemResolver
shiny_warp = ""
time_elapsed = timeit.timeit('GearItemResolver.from_utf16(shiny_warp)', globals=globals(), number=10000)
print(f"Tested 10000 times, time elapsed: {time_elapsed:.2f} seconds. Estimated qps: {10000 / time_elapsed:.0f}")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wynntilsresolver-1.4.2.tar.gz.
File metadata
- Download URL: wynntilsresolver-1.4.2.tar.gz
- Upload date:
- Size: 12.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
504cb08aee19d2f83e16feed5cf0f7da57e7052be98a0c94dcbe5c4b61eb32a6
|
|
| MD5 |
f3201e18ab75c82bb328cd60c7ef4a48
|
|
| BLAKE2b-256 |
b155e820b6515fb6c6c11d56819d58b6dbb86b585bc0ed9652458c2916d89c0f
|
File details
Details for the file wynntilsresolver-1.4.2-py3-none-any.whl.
File metadata
- Download URL: wynntilsresolver-1.4.2-py3-none-any.whl
- Upload date:
- Size: 19.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c306ac513ab84237823ece1134cc459760bab9643204d4fcae8a00482ddc310b
|
|
| MD5 |
0a8d2a1660077b1a687bb1112422bf85
|
|
| BLAKE2b-256 |
487a42f9c2ace685d9e5fd80469d5fee85435b95b2aa18427850d02fbc227f53
|