skops Changelog
v0.9
Add support for quantile-forest estimators. #384 by Reid Johnson.
Fix an issue with visualizing Skops files for scikit-learn tree estimators. #386 by Reid Johnson.
skops.hub_utils.get_model_output()
andskops.hub_utils.push()
are deprecated and will be removed in version 0.10. #396 by Adrin Jalali.
v0.8
Adds the abillity to set the
Section.folded
property when usingCard.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 AbatiFix a bug that prevented persisting
np.mean
when using numpy>=1.25.0. #373 by Adrin Jalali.
v0.7
Add ability to copy plots on
Card.save()
so that they can be referenced in the model card. #330 by Thomas Lazarus.compression and compresslevel from
ZipFile
are now exposed to the user viaio.dumps()
andio.dump()
. #345 by Adrin Jalali.Fix:
skops.io.visualize()
is now capable of showing bytes. #352 by Benjamin Bossan.All public
numpy
ufuncs (Universal Functions) and dtypes are trusted by default byio.load()
. #336 by Omar Arab Oghli.Sections in
skops.card.Card
can now be folded once added to the card. #341 by Thomas Lazarus.Model loading in
skops.card.Card
is now cached to avoid loading the model multiple times. #299 by Juan Camacho.
v0.6
Add tabular regression example. #254 by Thomas Lazarus.
All public
scipy.special
ufuncs (Universal Functions) are trusted by default byio.load()
. #295 by Omar Arab Oghli.Add a new function
skops.card.Card.add_metric_frame()
to help users add metrics to their model cards. #298 by Thomas LazarusAdd
Card.create_toc()
to create a table of contents for the model card in markdown format. #305 by Thomas Lazarus.Add example of using model card without the skops template. #291 by Benjamin Bossan.
Fix: skops persistence now also works with many functions from the
operator
module. #287 by Benjamin Bossan.add_*
methods onCard
now have default section names (butNone
is no longer valid) and no longer add descriptions by default. #321 by Benjamin Bossan.Add possibility to visualize a skops object and show untrusted types by using
skops.io.visualize()
. For colored output, install rich: pip install rich. #317 by Benjamin Bossan.Fix issue with persisting
numpy.random.Generator
using the skops format (the object could be loaded correctly but security could not be checked). #331 by Benjamin Bossan.
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 AhoSupport 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 theskops.card.parse_modelcard()
function. #257 by Benjamin Bossan.
v0.4
io.dump()
andio.load()
now work with file like objects, which means you can use them with thewith open(...) as f: dump(obj, f)
pattern, like you’d do withpickle
. #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. usecard.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 toskops.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, dropmodelcards
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 inskops.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 JalaliWhen 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 throughskops.hub_utils.init()
andskops.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 theREADME.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