* Use generator for string join
* Group media type edit mixins
* Add UserRatingMixin
* Add LibrarySection methods to multi-edit items
* Remove deprecated banners
* Factor out resource lock/unlock mixins
* Update `fetchItems` to accept list of rating keys
* Add repr and helper methods to Common object
* Update tests
* Update Collection.edit() method
* Add new EditFieldMixin and subclasses
* Add EditFieldMixin to Plex objects
* Update PlexPartialObject.edit() doc string
* Cast Track parentIndex to int
* Add base _searchTypes property
* Add kwargs to editField
* Editing album title also requires the artist ratingKey
* Add tests for editing fields
* Deprecate Collection.edit()
* Make editing fields chainable
* Add chaining example to doc string
* Add batch editing mode
* Add test for batchEdits
* Clean up mixins imports
* Reorder mixins
* Fix tests for batch edit
* Add private _edit method
* Add fields attribute to playlists
* Add lock and unlock methods to art, banner, and poster mixins
* Add tests for locking and unlocking art and posters
* lets begin
* skip plexpass tests if there is not plexpass on account
* test new myplex attrubutes
* bootstrap: proper photos organisation
* fix rest of photos tests
* fix myplex new attributes test
* fix music bootstrap by setting agent to lastfm
* fix sync tests
* increase bootstrap timeout
* remove timeout from .travis.yml
* do not create playlist-style photoalbums in plex-bootstraptest.py
* allow negative filtering in LibrarySection.search()
* fix sync tests once again
* use sendCrashReports in test_settings
* fix test_settings
* fix test_video
* do not accept eula in bootstrap
* fix PlexServer.isLatest()
* add test against old version of PlexServer
* fix MyPlexAccount.OutOut
* add flag for one-time testing in Travis
* fix test_library onDeck tests
* fix more tests
* use tqdm in plex-bootstraptest for media scanning progress
* create sections one-by-one
* update docs on AlertListener for timeline entries
* fix plex-bootstraptest for server version 1.3.2
* display skip/xpass/xfail reasons
* fix tests on 1.3
* wait for music to be fully processed in plex-bootstraptest
* fix misplaced TEST_ACCOUNT_ONCE
* fix test_myplex_users, not sure if in proper-way
* add pytest-rerunfailures; mark test_myplex_optout as flaky
* fix comment
* Revert "add pytest-rerunfailures; mark test_myplex_optout as flaky"
This reverts commit 580e4c95a7.
* restart plex container on failure
* add conftest.wait_until() and used where some retries are required
* add more wait_until() usage in test_sync
* fix managed user search
* fix updating managed users in myplex
* allow to add new servers to existent users
* add new server to a shared user while bootstrapping
* add some docs on testing process
* perform few attemps when unable to get the claim token
* unlock websocket-client in requirements_dev
* fix docblock in tools/plex-teardowntest
* do not hardcode mediapart size in test_video
* remove cache:pip from travis
* Revert "unlock websocket-client in requirements_dev"
This reverts commit 0d536bd06d.
* remove debug from server.py
* improve webhook tests
* fix type() check to isinstance()
* remove excessive `else` branch due to Hellowlol advice
* add `unknown` as allowed `myPlexMappingState` in test_server