Improvements
- Added a new example notebook for git integration
- Added a model migration tool for migrating Python models from Viya 3.5 to Viya 4
- Improved handling of CAS authentication with tokens
Bugfixes
- Fixed git integration failure caused by detached head
- Fixed minor bugs in score code generation feature
- Fixed 500 error when importing models to Viya 4 with prewritten score code
- Fixed incorrect handling of optional packages in pzmm
Bugfixes
- Removed linux breaking import from new git integration feature
- Various minor bug fixes in the git integration feature
Improvements
- Added Git integration for better tracking of model history and versioning.
- Added MLFlow integration for simple models, allowing users to import simple MLFlow models, such as sci-kit learn, to SAS Model Manager
Bugfixes
- Fixed an issue where
folders.create_folder()
would attempt to use root folder as parent if desired parent folder wasn't found. Now correctly handles parent folders and raises an error if folder not found.
Bugfixes
- Fix an issue where
pzmm.ZipModel.zipFiles()
threw an error on Python 3.6.1 and earlier.
Bugfixes
- Fixed an issue with
register_model()
where random forest, gradient boosting, and SVM regression models with nominal inputs where incorrectly treated as classification models.
Improvements
model_repository.add_model_content()
will now overwrite existing files instead of failing.
Bugfixes
PagedList.__repr__()
no longer appears to be an empty list.
Improvements
Session
now supports authorization using OAuth2 tokens. Use thetoken=
parameter in the constructor when an existing access token token is known. Alternatively, omitting theusername=
andpassword=
parameters will now prompt the user for an auth code.
Changes
current_session
now stores & returns the most recently created session, not the first created session. This was done to alleviate quirks where an old, expired session is implicitly used instead of a newly-created session.- Removed deprecated
raw=
parameter fromsasctl.core.request()
. - Dropped support for Python 2.
Bugfixes
- Fixed an issue that caused score code generation by
pzmm
module to fail with Viya 3.5.
Bugfixes
- SSL warnings no longer repeatedly raised when
verify_ssl=False
butCAS_CLIENT_SSL_CA_LIST
is specified. model_repository.delete_model_contents()
no longer fails when only one file is found.
Improvements
- All
delete_*()
service methods returnNone
instead of empty string. - All
get_*()
service methods issue a warning if multiple items are found when retrieving by name.
Bugfixes
- Fixed an import issue that could cause an error while using the
pzmm
submodule.
Improvements
PagedList
handles situations where the server over-estimates the number of items available for paging.- The version of SAS Viya on the server can now be determined using
sasctl.platform_version()
.
Bugfixes
- Reworked the
model_repository.get_repository()
to prevent HTTP 403 errors that could occur with some Viya environments.
Bugfixes*
- Fixed an issue with JSON parsing that caused the
publish_model
task to fail with Viya 4.0.
Improvements
- Added the
as_swat
method to theSession
object, allowing connection to CAS through SWAT without an additional authentication step.
Changes
- Integrated PZMM into
Session
calls and removed redundant function calls in PZMM. - ROC and Lift statistic JSON files created by PZMM are now generated through CAS actionset calls.
- Updated the PZMM example notebook,
FleetMaintenance.ipynb
, to include integration of PZMM with sasctl functions.
Bugfixes
- Reworked the
model_repository.get_repository()
to prevent HTTP 403 errors that could occur with some Viya environments.
Bugfixes
- Added PZMM fitstat JSON file to manifest.
Improvements
- PZMM module moved from a stand-alone repository to a sasctl submodule.
- Introduced deprecation warnings for Python 2 users.
Bugfixes
- Fixed PyMAS utilities to correctly work functions not bound to pickled objects.
- Model target variables should no longer appear as an input variable when registering ASTORE models.
Improvements
- Registered Python models will now include both
predict
andpredict_proba
methods. - Added a new Relationships service for managing links between objects.
- Added a new Reports service for retrieving SAS Visual Analytics reports.
- Added a new Report_Images service for rendering content from reports.
- Additional metadata fields are set when registering an ASTORE model.
- Collections of items should now return an instance of
PagedList
for lazy loading of results. - Module steps can now be called using
module.step(df)
wheredf
is the row of a DataFrame or Numpy array. register_model
sets additional project properties when registering an ASTORE model.
Changes
- Replaced the
raw
parameter of therequest
methods with aformat
parameter, allowing more control over the returned value. - The
get_file_content
method of the Files service now returns the actual content instead of the file metadata. - JSON output when using
sasctl
from the command line is now formatted correctly.
Bugfixes
model_publish.delete_destination
now works correctly.
Bugfixes
- Fixed an issue where the
REQUESTS_CA_BUNDLE
environment variable was taking precedence over theverify_ssl
parameter.
Changes
- Saving of package information can now be disabled using the
record_packages
parameter ofregister_model
.
Bugfixes
- Added support for uint data types to the
register_model
task. - Fixed an issue where long package names caused
register_model
to fail. Session
creation now works with older versions of urllib3.
Bugfixes
- Match performance definitions based on project instead of model.
Bugfixes
- Model versioning now works correctly for Python models
- Fixed an issue where
None
values in Python caused issues with MAS models.
Bugfixes
- Fixed project properties when registering a model from ASTORE.
- Fixed model metadata when registering a datastep model.
Bugfixes
- Fixed an issue where string inputs to Python models were incorrectly handled by DS2.
Changes
PyMAS.score_code
now supports adest='Python'
option to retrieve the generated Python wrapper code.register_model
task includes apython_wrapper.py
file when registering a Python model.- Improved error message when user lacks required permissions to register a model.
Bugfixes
- Fixed an issue with CAS/EP score code that caused problems with model performance metrics.
Improvements
- Added
update_performance
task for easily uploading performance information for a model. - New (experimental) pyml2sas sub-package provides utilities for generating SAS code from Python gradient boosting models.
- New (experimental) methods for managing workflows added to
model_management
service.
Changes
register_model
task automatically captures installed Python packages.- All
list_xxx
methods return all matching items unless alimit
parameter is specified. - Improved API documentation.
- Updated
full_lifecycle
example with performance monitoring.
Changes
- Registering an ASTORE model now creates an empty ASTORE file in Model Manager to be consistent with Model Studio behavior.
Bugfixes
microanalytic_score.define_steps
now works with steps having no input parameters.- Fixed an issue where score code generated from an ASTORE model lacked output variables.
Bugfixes
model_repository.get_model_contents
no longer raises an HTTP 406 error.
Changes
put
request will take anitem
parameter that's used to automatically populate headers for updates.
Bugfixes
- Convert NaN values to null (None) when calling
microanalytic_score.execute_module_step
.
Bugfixes
register_model
task should now correctly identify columns when registering a Sci-kit pipeline.
Improvements
- Added the ability for
register_model
to correctly handle CAS tables containing data step score code.
Improvements
- Added
create_model_version
andlist_model_versions
tomodel_repository
- Added an explicit
ValueError
when attempting to register an ASTORE that can't be downloaded. - Added
start
andlimit
pagination parameters to all defaultlist_*
service methods. - Added
create_destination
,create_cas_destination
andcreate_mas_destination
methods formodel_publish
service.
Changes
Session.add_stderr_logger
default logging level changed toDEBUG
.
Bugfixes
- Fixed an issue where
model_repository
did not find models, projects, or repositories by name once pagination limits were reached.
Bugfixes
- The
register_model
task now generates dmcas_epscorecode.sas files for ASTORE models.
Bugfixes
- Fixed problem causing
register_model
task to include output variables in the input variables list.
Improvements
- CAS model table automatically reloaded on
publish_model
task.
Bugfixes
- Fixed DS2 score code for CAS that was generated when registering a Python model.
PyMAS.score_code(dest='ESP')
corrected todest='EP'
- Fixed an issue where long user-defined properties prevented model registration.
Bugfixes
- Fixed an issue where usernames were not parsed correctly from .authinfo files, resulting in failed logins.
Improvements
- Added
update_module
anddelete_module
methods to MAS service.
Changed
- Added
replace
parameter tosasctl.tasks.publish_model
Session
hostname's can now be specified in HTTP format: 'http://example.com'.
Bugfixes
- Renamed
microanalytic_store
service tomicroanalytic_score
Changed
- Exceptions moved from
sasctl.core
tosasctl.exceptions
SWATCASActionError
raised if ASTORE cannot be saved during model registration.- Improved handling of MAS calls made via
define_steps()
Changed
- services are now classes instead of modules.
Imports of services in the format
import sasctl.services.model_management as mm
must be changed tofrom sasctl.services import model_management as mm
. host
anduser
parameters ofSession
renamed tohostname
andusername
to align with SWAT.- Only
InsecureRequestWarning
is suppred instead of allHTTPWarning
Improvements
- Added
copy_analytic_store
method tomodel_repository
service AuthenticationError
returned instead ofHTTPError
if session authentication fails.
Improvements
- public_model task also defines methods mapped to MAS module steps when publishing to MAS.
- SSL verification can be disable with
SSLREQCERT
environment variable. - CAs to use for validating SSL certificates can also be specified through the
SSLCALISTLOC
environment variable. - Added
execute_performance_task
Changes
- Updated method signature for
create_performance_definition
in Model Manager.
Bugfixes
- register_model task no longer adds
rc
andmsg
variables from MAS to the project variables.
Initial public release.