# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [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.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
