-------------------
**Improvements**
- Added `Session.version_info()` to check which version of Viya the session is connected to.
- Updated the `properties=` parameter of `model_repository.create_model()` to accept a dictionary containing
custom property names and values, and to correctly indicate their type (numeric, string, date, datetime) when
passing the values to Viya.
- Added `services.saslogon` for creating and removing OAuth clients.
- Added `pzmm.JSONFiles.create_requirements_json()` to create the requirements.json file for model deployment
to containers based on the user's model assets and Python environment.
**Changes**
- Deprecated `core.platform_version()` in favor of `Session.version_info()`.
- A `RuntimeError` is now raised if an obsolete service is called on a Viya 4 session (sentiment_analysis,
text_categorization, and text_parsing)
- Replaced the JSON cassettes used for testing with compressed binary cassettes to save space.
- Updated the testing framework to allow regression testing of multiple Viya versions.
- Refactored the authentication functionality in `Session` to be more clear and less error prone. Relevant
functions were also made private to reduce clutter in the class's public interface.
- Began refactor for `sasctl.pzmm` to adhere to PEP8 guidelines and have better code coverage.
**Bugfixes**
- Fixed an issue with `register_model()` that caused invalid SAS score code to be generated when registering an
ASTORE model in Viya 3.5.
- Fixed a bug where calling a "get_item()" function and passing `None` would throw an error on most services instead
of returning `None`.
- Fixed a bug that caused the authentication flow to be interrupted if Kerberos was missing.