# Changelog This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## 4.2.1 and newer See GitHub Releases: - https://github.com/pylast/pylast/releases ## [4.2.0] - 2021-03-14 ## Changed - Fix unsafe creation of temp file for caching, and improve exception raising (#356) @kvanzuijlen - [pre-commit.ci] pre-commit autoupdate (#362) @pre-commit-ci ## [4.1.0] - 2021-01-04 ## Added - Add support for streaming (#336) @kvanzuijlen - Add Python 3.9 final to Travis CI (#350) @sheetalsingala ## Changed - Update copyright year (#360) @hugovk - Replace Travis CI with GitHub Actions (#352) @hugovk - [pre-commit.ci] pre-commit autoupdate (#359) @pre-commit-ci ## Fixed - Set limit to 50 by default, not 1 (#355) @hugovk ## [4.0.0] - 2020-10-07 ## Added - Add support for Python 3.9 (#347) @hugovk ## Removed - Remove deprecated `Artist.get_cover_image`, `User.get_artist_tracks` and `STATUS_TOKEN_ERROR` (#348) @hugovk - Drop support for EOL Python 3.5 (#346) @hugovk ## [3.3.0] - 2020-06-25 ### Added - `User.get_now_playing`: Add album and cover image to info (#330) @hugovk ### Changed - Improve handling of error responses from the API (#327) @spiritualized ### Deprecated - Deprecate `Artist.get_cover_image`, they're no longer available from Last.fm (#332) @hugovk ### Fixed - Fix `artist.get_bio_content()` to return `None` if bio is empty (#326) @hugovk ## [3.2.1] - 2020-03-05 ### Fixed - Only Python 3 is supported: don't create universal wheel (#318) @hugovk - Fix regression calling `get_recent_tracks` with `limit=None` (#320) @hugovk - Fix `DeprecationWarning`: Please use `assertRegex` instead (#323) @hugovk ## [3.2.0] - 2020-01-03 ### Added - Support for Python 3.8 - Store album art URLs when you call `GetTopAlbums` ([#307]) - Retry paging through results on exception ([#297]) - More error status codes from https://last.fm/api/errorcodes ([#297]) ### Changed - Respect `get_recent_tracks`' limit when there's a now playing track ([#310]) - Move installable code to `src/` ([#301]) - Update `get_weekly_artist_charts` docstring: only for `User` ([#311]) - Remove Python 2 warnings, `python_requires` should be enough ([#312]) - Use setuptools_scm to simplify versioning during release ([#316]) - Various lint and test updates ### Deprecated - Last.fm's `user.getArtistTracks` has now been deprecated by Last.fm and is no longer available. Last.fm returns a "Deprecated - This type of request is no longer supported" error when calling it. A future version of pylast will remove its `User.get_artist_tracks` altogether. ([#305]) - `STATUS_TOKEN_ERROR` is deprecated and will be removed in a future version. Use `STATUS_OPERATION_FAILED` instead. ## [3.1.0] - 2019-03-07 ### Added - Extract username from session via new `SessionKeyGenerator.get_web_auth_session_key_username` ([#290]) - `User.get_track_scrobbles` ([#298]) ### Deprecated - `User.get_artist_tracks`. Use `User.get_track_scrobbles` as a partial replacement. ([#298]) ## [3.0.0] - 2019-01-01 ### Added - This changelog file ([#273]) ### Removed - Support for Python 2.7 ([#265]) - Constants `COVER_SMALL`, `COVER_MEDIUM`, `COVER_LARGE`, `COVER_EXTRA_LARGE` and `COVER_MEGA`. Use `SIZE_SMALL` etc. instead. ([#282]) ## [2.4.0] - 2018-08-08 ### Deprecated - Support for Python 2.7 ([#265]) [4.2.0]: https://github.com/pylast/pylast/compare/4.1.0...4.2.0 [4.1.0]: https://github.com/pylast/pylast/compare/4.0.0...4.1.0 [4.0.0]: https://github.com/pylast/pylast/compare/3.3.0...4.0.0 [3.3.0]: https://github.com/pylast/pylast/compare/3.2.1...3.3.0 [3.2.1]: https://github.com/pylast/pylast/compare/3.2.0...3.2.1 [3.2.0]: https://github.com/pylast/pylast/compare/3.1.0...3.2.0 [3.1.0]: https://github.com/pylast/pylast/compare/3.0.0...3.1.0 [3.0.0]: https://github.com/pylast/pylast/compare/2.4.0...3.0.0 [2.4.0]: https://github.com/pylast/pylast/compare/2.3.0...2.4.0 [#265]: https://github.com/pylast/pylast/issues/265 [#273]: https://github.com/pylast/pylast/issues/273 [#282]: https://github.com/pylast/pylast/pull/282 [#290]: https://github.com/pylast/pylast/pull/290 [#297]: https://github.com/pylast/pylast/issues/297 [#298]: https://github.com/pylast/pylast/issues/298 [#301]: https://github.com/pylast/pylast/issues/301 [#305]: https://github.com/pylast/pylast/issues/305 [#307]: https://github.com/pylast/pylast/issues/307 [#310]: https://github.com/pylast/pylast/issues/310 [#311]: https://github.com/pylast/pylast/issues/311 [#312]: https://github.com/pylast/pylast/issues/312 [#316]: https://github.com/pylast/pylast/issues/316 [#346]: https://github.com/pylast/pylast/issues/346 [#347]: https://github.com/pylast/pylast/issues/347 [#348]: https://github.com/pylast/pylast/issues/348