The fabled 1.0 release. No this isn't close to the final version of the library, I'm saving 2.0 for having all the endpoints exposed that I'm planning on exposing (8). Instead this is more to signify that the library's API should be mostly stable and I wanted the chance to make some breaking changes early on if I could. So here goes
Features
* The docs are now tracked in the repo instead of using the GitHub wiki. This provides the ease of setup from not having to use some external site while allowing docs to be pinned to each version. If you want to read more about it you can check here (23)
* Documentation was added for the `utils` functions
* CI is now more extensive with unit testing run on all 3 major platforms (Windows, Mac, Linux). this has already helped to catch a platform-related bug before they made it into a release (4d7f1f5ac69b85e7f781115f44e76d6d1fb26083)
* On top of that more extensive tests are now run to catch bugs that popped up during the release
* Common classes are now exposed from the base module `from subwinder import AuthSubwinder, Subwinder, Media`
* Media had its default construct switched to what was `.from_file(...)`, with the old constructor now residing as `.from_parts(...)`
* Downloaded subtitles are now saved atomically thanks to `atomicwrites` to prevent weird partially saved subtitles behavior
Bugfixes
* `name_format` from `Authsubwinder`'s `.download_subtitles(...)` should now accept more formats as valid
* `ProtocolError`s raised by opensubtitles API should be caught and handled now. It's hard to test with how sporadic the behavior is though
Breaking Changes
* Both the `subwinder.media.Subtitles` class and corresponding `subwinder.hashers.md5_hash` function were removed since they are considered dead code till uploading subtitles has been worked on
* `Media`s constructor was changed to match the behavior of the old `.from_file(...)` classmethod and the old constructor was added as the `.from_parts(...)` classmethod
* The whole library always uses `pathlib.Path`s for any file paths or names. Externally everything can take a `str` or `Path` path, but it will always be stored and exposed as a `Path` now instead of a `str`
* Lots of internal restructuring
* Modules that were already private, but denoted wrong are now correctly private (`_constants`, `_ranking`, `_request`)
* Everything from the `base` and `auth` modules got moved into `core`
* `SearchResult` got moved into `info` since it better matches those classes
* `special_hash` was moved into `utils`
Future Work
So most of the current groundwork has been laid out for CI, so some more work to finish that up will be done. Past that it's just improving documentation, getting some users to try out the library, and implementing the rest of the desired endpoints.