Jonxslays/wom.py

View on GitHub
CHANGELOG.md

Summary

Maintainability
Test Coverage
# v1.0.0-rc.2 (Aug 2024)

- Added Araxxor to the `Bosses` enum.

---

# v1.0.0-rc.1 (Aug 2024)

Stable Release Candidate 1

10x performance increase when serializing/deserializing models!

## Breaking changes

- Removed internal `wom._cli` module.
- Renamed project info `wompy` cli command to `wom`.
- Models are now `msgspec.Struct` models instead of `attrs` models.
- `PlayerDetail` now inherits from `Player` and so the `player` property was removed.
- `PlayerAchievementProgress` now inherits from `AchievementProgress` and so the
  `achievement` property was removed.
- `PlayerCompetitionStanding` now inherits from `PlayerParticipation` and so the
  `participation` property was removed.
- `GroupMembership` and `PlayerMembership` now inherit from `Membership` and so the
  `membership` property was removed.
- `PlayerArchive` now inherits from `Archive` and so the `archive` property was removed.
- Renamed `RecordService.get_global_record_leaderboards` to `get_global_leaderboards`.
- `RecordLeaderboardEntry` now inherits from `Record` and so the `record` property
  was removed.
- Removed `DeniedNameChangeReviewContext`, and `SkippedNameChangeReviewContext`,
  their properties now live on `NameChangeReviewContext`.
- `CompetitionParticipationDetail` now inherits from `CompetitionParticipation`
  and so the `participation` property was removed.
- `CompetitionDetail` now inherits from `Competition` and so the `competition`
  property was removed.
- `CompetitionService.edit_competition` now returns a `Competition`.
- All methods in the `Serializer` prefixed with `deserialize_` were removed.
- `GroupDetail` now inherits from `Group` and so the `group` property was removed.
- The `verification_code` property on `GroupDetail` was removed.
- Converted the `Skills`, `Activities`, `Bosses`, and `ComputedMetrics` enums
  into `frozenset`s.
- `CompetitionWithParticipations` was renamed to `CreatedCompetitionDetail` because the
  `participations` property was removed and added to `Competition` and the name was no
  longer an accurate representation of the object.
- `EfficiencyService.get_global_leaderboard` was renamed to `get_global_leaderboards`
  to be in line with the other leaderboard method names.
- The `from_str` and `from_str_maybe` methods were removed from the `Metric` enum.

## Additions

- Added `CreatedGroupDetail` model which always has the verification code present.
- Added `previous_role` property to `GroupActivity`.
- Added `CompetitionService.get_details_csv` method.
- Added `MetricLeader` class for the different flavors of leader to derive from.
- Added `CompetitionCSVTableType` enum for the competition details csv endpoint.
- Added pagination to `PlayerService.get_snapshots`.

## Changes

- `Record.value` is now a `float` instead of an `int`.
- `ComputedMetricLeader.value` is now a `float` instead of an `int`.
- The `Metric` enum now includes all variants of the old `Skills`, `Activities`,
  `Bosses`, and `ComputedMetrics` enums.
- `GroupService.create_group` now returns a `CreatedGroupDetail` model.
- Updated docstrings for group classes.
- Fixed broken poetry install link in contributing guide.

---

# v0.9.5 (Mar 2024)

## Additions

- Add varlamore metrics (ColosseumGlory, LunarChests, SolHeredit).

---

# v0.9.4 (Mar 2024)

## Bugfixes

- Fix bug where `PlayerDetail` with no latest snapshot would fail to deserialize.

---

# v0.9.3 (Jan 2024)

## Additions

- Add `Scurrius` to `Bosses`.

---

# v0.9.2 (Jan 2024)

## Additions

- Add `archive` property to `PlayerDetail`.
- Add `Archive` and `PlayerArchive` models/serialization methods.
- Add `get_archives` method to `PlayerService`.
- Add `to_dict` method to `Result`.

## Fixes

- Fix some Python 3.8 incompatible type hints.

---

# v0.9.1 (Nov 2023)

## Bugfixes

- Fix invalid key regression for social links.

---

# v0.9.0 (Nov 2023)

## Additions

- Add `at_random` method to `BaseEnum` for generating an enum variant at random.
- Add `levels` property to `CompetitionParticipationDetail`.
- Add `patron`, `banner_image`, and `profile_image` properties to `Group`.
- Add `SocialLinks` model and `social_links` property to `GroupDetail`.
- Add getting started guide to the documentation.

## Changes

- Methods that previously accepted only `GroupMemberFragment` now accept strings as well.
- Update examples in `GroupService` that work with `GroupMemberFragment`.
- Remove usage of weakref slots throughout the project, improving memory footprint.

---

# v0.8.1 (Nov 2023)

## Additions

- Add `rank` property to `SnapshotTimelineEntry`.

---

# v0.8.0 (Oct 2023)

## Additions

- Add `GroupActivity` and `GroupActivityType` models.
- Add `deserialize_group_activity` serializer method.
- Add `get_activity` group service method.
- Add `GROUP_ACTIVITY` Route.

---

# v0.7.0 (Oct 2023)

## Changes

- `Player.updated_at` is now optional.

## Additions

- Add `FailedToDeserialize` error.

## Fixes

- Fix typo in docstring for `PlayerService.get_records`.

---

# v0.6.1 (Sep 2023)

## Additions

- Add `F2P Lvl 3` player build.

---

# v0.6.0 (Jul 2023)

## Additions

- Add support for Desert Treasure 2 bosses.

---

# v0.5.0 (Jul 2023)

## Additions

- Add `PlayerService.get_snapshots_timeline` method.
- Add `SnapshotTimelineEntry` model and corresponding serializer method.
- Add `GroupMemberGains` model and corresponding serializer method.

## Changes

- `GroupService.get_gains` method now returns a `GroupMemberGains` model.

---

# v0.4.2 (Jun 2023)

## Additions

- Add `Banned` player status.
- Add helpful error message if new enum variants are not yet added to the lib.

---

# v0.4.1 (May 2023)

## Breaking Changes

- Make `MetricLeaders.player` optional, indicating no player leads in the metric.
- Fix typos in the `Bosses` enum.

---

# v0.4.0 (May 2023)

## Breaking Changes

- Remove `NameChangeService.get_name_change_details` as it is no longer supported by WOM.
- Remove models and serialization methods associated with the above method.

## Additions

- Add new `review_context` field to `NameChange`.
- Add `NameChangeReviewContext`, `SkippedNameChangeReviewContext`, and
  `DeniedNameChangeReviewContext` models.
- Add `NameChangeReviewReason` enum.
- Add serialization method for the above models.

## Bugfixes

- Fix support for Python 3.8 and 3.9 by using older style type hints.

---

# v0.3.3 (Apr 2023)

## Bugfixes

- Fix bug in `Route` that caused requests to be made to incorrect URI's.

---

# v0.3.2 (Apr 2023)

## Breaking Changes

- Add a new *required* async `Client.start` method to fix deprecation warning emitted
  by creating a `ClientSession` in a non-async function.

---

# v0.3.1 (Apr 2023)

## Additions

- Add new wildy bosses Artio, Calvarion, and Spindel to the `Bosses` enum.

---

# v0.3.0 (Apr 2023)

## Breaking Changes

- `MetricLeaders`, `PlayerGainsData`, and `SnapshotData` now contain mappings of their
  `enums.Skills` key to values of the associated type that was previously contained in the list.
- The deserialization methods associated with the above types were also updated to accommodate
  this.
- the `Player.flagged` field was removed in favor of the `Player.status` field.

## Changes

- Only include the type of the value, not the value itself, in the error message raised when
  calling `unwrap_err` on an `Ok` variant.
- `Skill.ehp`, `Boss.ehb`, and `ComputedMetric.value` are now `float` type.

## Additions

- Tests! :eyes:
- A `PlayerStatus` enum representing the statuses a player can be in (flagged, active, etc)

---

# v0.2.0 (Feb 2023)

## Breaking Changes

- `GroupStatistics.average_stats` is now a `Snapshot` rather than a `GroupSnapshot`.
- Remove `GroupSnapshot` model since `created_at` on `Snapshot` is now guaranteed to be present.

## Bugfixes

- Add some missing models to `__all__`.

## Additions

- Add leaders models: `SkillLeader`, `BossLeader`, `ActivityLeader`, `ComputedMetricLeader`,
  and `MetricLeaders`.
- Add `metric_leaders` property to `GroupStatistics`.
- Add deserialization methods for the new leader models.

---

# v0.1.1 (Feb 2023)

## Bugfixes

- `EfficiencyService.get_global_leaderboard` now accepts a `both` kwarg, and will no longer
  erroneously allow you to pass many computed metrics as `*args`.

## Changes

- Relaxed the pinned dependencies for better compatibility.
- The `metric` parameter to `EfficiencyService.get_global_leaderboard` is now defaulted to EHP.

---

# v0.1.0 (Feb 2023)

- Initial release!