skops Changelog

v0.13

  • Card now requires a new parameter, allow_pickle, to call get_model with models that are not .skops files. This change is to mitigate security risks associated with pickles. #485 by `Io_no`_.

v0.12

  • huggingface_hub dependency is now optional. #462 by Adrin Jalali.

  • Objects’ __reduce__ is used when the output of it is of the form (type, (constructor_args,) where type is the same as the type(obj). #467 by Adrin Jalali.

  • MethodNode and OperatorNode have a hardened audit now, removing certain security vulnerabilities. #482 by Adrin Jalali.

v0.11

v0.10

  • Removes Pythn 3.8 support and adds Python 3.12 Support #418 by Thomas Lazarus.

  • Removes a shortcut to add sklearn-intelex as a not dependency. #420 by :user:`Thomas Lazarus < lazarust > `.

  • trusted=True is now removed from skops.io.load and skops.io.loads. This is to further encourage users to inspect the input data before loading it. skops.io.get_untrusted_types() can be used to get the untrusted types present in the input. #422 by Adrin Jalali.

  • skops.io now supports numpy>=2. #429 by Adrin Jalali.

v0.9

v0.8

  • Adds the abillity to set the Section.folded property when using Card.add(). #361 by Thomas Lazarus.

  • Add the CLI command to update Skops files to the latest Skops persistence format. (cli._update.main()). #333 by Edoardo Abati

  • Fix a bug that prevented persisting np.mean when using numpy>=1.25.0. #373 by Adrin Jalali.

v0.7

v0.6

v0.5

  • Add CLI entrypoint support (cli.entrypoint.main_cli()) and a command line function to convert Pickle files to Skops files (cli._convert.main()). #249 by Erin Aho

  • Support more array-like data types for tabular data and list-like data types for text data. #179 by Francesco Cariaggi.

  • Add an option use_intelex to skops.hub_utils.init() which, when enabled, will result in the Hugging Face inference API running with Intel’s scikit-learn intelex library, which can accelerate inference times. #267 by Benjamin Bossan.

  • Model cards that have been written into a markdown file can now be parsed back into a skops.card.Card object and edited further by using the skops.card.parse_modelcard() function. #257 by Benjamin Bossan.

v0.4

  • io.dump() and io.load() now work with file like objects, which means you can use them with the with open(...) as f: dump(obj, f) pattern, like you’d do with pickle. #234 by Benjamin Bossan.

  • All scikit-learn estimators are trusted by default. #237 by Edoardo Abati.

  • Add model_format argument to skops.hub_utils.init() to be stored in config.json so that we know how to load a model from the repository. #242 by Merve Noyan.

  • Persistence now supports bytes and bytearrays, added tests to verify that LightGBM, XGBoost, and CatBoost work now. #244 by Benjamin Bossan.

  • card.Card now allows to add content to existing sections, using a / to separate the subsections. E.g. use card.add(**{"Existing section/New section": "content"}) to add “content” a new subsection called “New section” to an existing section called “Existing section”. #203 by Benjamin Bossan.

v0.3

  • Utility function to add arbitrary files to be uploaded to the hub by using hub_utils.add_files(). #123 by Benjamin Bossan.

  • Add private as an optional argument to skops.hub_utils.push() to optionally set the visibility status of a repo when pushing to the hub. #130 by Adrin Jalali.

  • First release of the skops secure persistence feature (#128) by Adrin Jalali and Benjamin Bossan. Visit Secure persistence with skops for more information. This feature is not production ready yet but we’re happy to receive feedback from users.

  • Fix a bug that resulted in markdown tables being rendered incorrectly if entries contained line breaks. #156 by Benjamin Bossan.

  • Raise an error instead of warning the user if a given model file is empty. #214 by Adrin Jalali.

  • Use huggingface_hub v0.10.1 for model cards, drop modelcards dependency. #162 by Benjamin Bossan.

  • Add source links to API documentation. #172 by Ayyuce Demirbas.

  • Add support to load model if given Path/str to model argument in skops.card . #205 by Prajjwal Mishra.

v0.2

  • Tables, e.g. cross-validation results, can now be added to model cards using the Card.add_table() method. #90 by Benjamin Bossan.

  • Add method Card.render() which returns the model card as a string. #94 by Benjamin Bossan.

  • Make skops.hub_utils.init() atomic. Now it doesn’t leave a trace on the filesystem if it fails for some reason. #60 by Adrin Jalali

  • When adding figures or tables, it’s now possible to set folded=True to render the content inside a details tag. #108 by Benjamin Bossan.

  • Add skops.hub_utils.get_model_output to get the model’s output using The Hugging Face Hub’s inference API, and return an array with the outputs. #105 by Adrin Jalali.

v0.1

This is the first release of the library. It include two main modules:

  • skops.hub_utils: tools to create a model repository to be stored on Hugging Face Hub, mainly through skops.hub_utils.init() and skops.hub_utils.push.

  • skops.card: tools to create a model card explaining what the model does and how it should be used. The model card can then be stored as the README.md file on the Hugging Face Hub, with pre-populated metadata to help Hub understand the model.

Contributors

Adrin Jalali, Merve Noyan, Benjamin Bossan, Ayyuce Demirbas, Prajjwal Mishra, Francesco Cariaggi, Erin Aho, Thomas Lazarus