All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
1.6 - 2026-04-03
_check_response_errorfunction inWebSocketClientCommunicatorregister_clientfunction inWebSocketClientCommunicatorremove_clientfunction inWebSocketClientCommunicatorregister_modelfunction inWebSocketClientCommunicatorremove_modelfunction inWebSocketClientCommunicatorget_ml_modelsfunction inWebSocketClientCommunicatorgrant_accessfunction inWebSocketClientCommunicatorrevoke_accessfunction inWebSocketClientCommunicatorget_allowancefunction inWebSocketClientCommunicatorget_allowed_modelsfunction inWebSocketClientCommunicator_action_handlersregistry inWebSocketServerCommunicator_handle_register_clientfunction inWebSocketServerCommunicator_handle_remove_clientfunction inWebSocketServerCommunicator_handle_register_modelfunction inWebSocketServerCommunicator_handle_remove_modelfunction inWebSocketServerCommunicator_handle_get_ml_modelsfunction inWebSocketServerCommunicator_handle_grant_accessfunction inWebSocketServerCommunicator_handle_revoke_accessfunction inWebSocketServerCommunicator_handle_get_allowancefunction inWebSocketServerCommunicator_handle_get_allowed_modelsfunction inWebSocketServerCommunicatorscenario4access control test for streaming--portargument in test server runnerclosefunction inWebSocketClientCommunicatorclosefunction inPymiloClient- Context manager support (
__enter__/__exit__) inPymiloClient
- Test system modified
_ArrayFunctionDispatcherimport inFunctionTransporterto use new numpy APIdatetime.utcnow()todatetime.now(timezone.utc)inPymiloExceptionget_allowanceendpoint inRESTServerCommunicatorto handle empty allowancessend_messagefunction inWebSocketClientCommunicatordownloadfunction inWebSocketClientCommunicatoruploadfunction inWebSocketClientCommunicatorattribute_callfunction inWebSocketClientCommunicatorattribute_typefunction inWebSocketClientCommunicator__init__function inWebSocketServerCommunicatorhandle_messagefunction inWebSocketServerCommunicator_handle_downloadfunction inWebSocketServerCommunicator_handle_uploadfunction inWebSocketServerCommunicator_handle_attribute_callfunction inWebSocketServerCommunicator_handle_attribute_typefunction inWebSocketServerCommunicatorparsefunction inWebSocketServerCommunicator- WebSocket streaming tests enabled
1.5 - 2026-01-26
_is_remainder_cols_listfunction in GeneralDataStructureTransporterComposeTransporterTransporter- Composite params initialized in
pymilo_param.py get_transporterinchains/util.pydeserialize_possible_ml_modelinchains/util.pyserialize_possible_ml_modelinchains/util.pyTransformedTargetRegressormodelColumnTransformermodel- Composite models test runner
- Composite models chain
- JOSS paper
serializefunction in FunctionTransporterserialize_splinefunction in PreprocessingTransporterdeserialize_splinefunction in PreprocessingTransporter- Ensemble models test runner
get_deserialized_listfunction in GeneralDataStructureTransporterdeserializefunction in GeneralDataStructureTransporterserializefunction in GeneralDataStructureTransporterget_deserialized_dictfunction in GeneralDataStructureTransporterserialize_dictfunction in GeneralDataStructureTransporterserialize_tuplefunction in GeneralDataStructureTransporter- Test system modified
README.mdupdated
get_transporterinensemble_chain.pydeserialize_possible_ml_modelinensemble_chain.pyserialize_possible_ml_modelinensemble_chain.py
1.4 - 2025-12-01
get_allowed_modelsfunction inPymiloClientget_allowancefunction inPymiloClientrevoke_accessfunction inPymiloClientgrant_accessfunction inPymiloClientget_ml_modelsfunction inPymiloClientderegister_ml_modelfunction inPymiloClientregister_ml_modelfunction inPymiloClientderegisterfunction inPymiloClientregisterfunction inPymiloClientREST_API_PREFIXfunction instreaming.param.pyregister_clientfunction inRESTClientCommunicatorremove_clientfunction inRESTClientCommunicatorregister_modelfunction inRESTClientCommunicatorremove_modelfunction inRESTClientCommunicatorget_ml_modelsfunction inRESTClientCommunicatorgrant_accessfunction inRESTClientCommunicatorrevoke_accessfunction inRESTClientCommunicatorget_allowancefunction inRESTClientCommunicatorget_allowed_modelsfunction inRESTClientCommunicator_validate_idfunction inPymiloServerinit_clientfunction inPymiloServerremove_clientfunction inPymiloServergrant_accessfunction inPymiloServerrevoke_accessfunction inPymiloServerget_allowed_modelsfunction inPymiloServerget_clients_allowancefunction inPymiloServerget_clientsfunction inPymiloServerinit_ml_modelfunction inPymiloServerset_ml_modelfunction inPymiloServerremove_ml_modelfunction inPymiloServerget_ml_modelsfunction inPymiloServer
is_callable_attributefunction inPymiloServerexecute_modelfunction inPymiloServerupdate_modelfunction inPymiloServerexport_modelfunction inPymiloServer__getattr__inPymiloClientuploadfunction inPymiloClientdownloadfunction inPymiloClientencrypt_compressfunction inPymiloClientClientCommunicatorinterfacehandle_messagefunction inWebSocketServerCommunicator_handle_downloadfunction inWebSocketServerCommunicatorsetup_routesfunction inRESTServerCommunicator__init__function inRESTClientCommunicatordownloadfunction inRESTClientCommunicatoruploadfunction inRESTClientCommunicatorattribute_callfunction inRESTClientCommunicatorattribute_typefunction inRESTClientCommunicatorREADME.mdupdated__init__function inPyMiloServer- Test system modified
Python 3.14added totest.yml
- Python 3.6 support
1.3 - 2025-02-26
TfidfVectorizerfeature extractorTfidfTransformerfeature extractorHashingVectorizerfeature extractorCountVectorizerfeature extractorPatchExtractorfeature extractorDictVectorizerfeature extractorFeatureHasherfeature extractorFeatureExtractorTransporterTransporterFeatureExtractionsupport added to Ensemble chain- FeatureExtraction params initialized in
pymilo_param.py - Feature Extraction models test runner
- Zenodo badge to
README.md
get_deserialized_listinGeneralDataStructureTransporterget_deserialized_dictinGeneralDataStructureTransporterserializeinGeneralDataStructureTransporterserialize_tupleinGeneralDataStructureTransporterAttributeCallPayloadinstreaming.communicator.pyget_deserialized_regular_primary_typesinGeneralDataStructureTransporter- Test system modified
1.2 - 2025-01-22
generate_dockerfiletestcasesgenerate_dockerfilefunction instreaming.util.pycitesection inREADME.mdCLIhandlerprint_supported_ml_modelsfunction inpymilo_func.pypymilo_helpfunction inpymilo_func.pySKLEARN_SUPPORTED_CATEGORIESinpymilo_param.pyOVERVIEWinpymilo_param.pyget_sklearn_classinutils.util.py
ML Streamingtestcases modified to use PyMilo CLIto_pymilo_issuefunction inPymiloExceptionvalid_url_valid_filetestcase added intest_exceptions.pyvalid_url_valid_filefunction inimport_exceptions.pyStandardPayloadinRESTServerCommunicator- testcase for LogisticRegressionCV, LogisticRegression
README.mdupdatedAUTHORS.mdupdated
1.1 - 2024-11-25
is_socket_closedfunction instreaming.communicator.pyvalidate_http_urlfunction instreaming.util.pyvalidate_websocket_urlfunction instreaming.util.pyML StreamingWebSocket testcasesCommunicationProtocolEnum instreaming.communicator.pyWebSocketClientCommunicatorclass instreaming.communicator.pyWebSocketServerCommunicatorclass instreaming.communicator.py- batch operation testcases
batch_exportfunction inpymilo/pymilo_obj.pybatch_importfunction inpymilo/pymilo_obj.pyCCAmodelPLSCanonicalmodelPLSRegressionmodel- Cross decomposition models test runner
- Cross decomposition chain
- PyMilo exception types added in
pymilo/exceptions/__init__.py - PyMilo exception types added in
pymilo/__init__.py
coreandstreamingtests divided intest.ymlcommunication_protocolparameter added toPyMiloClientclasscommunication_protocolparameter added toPyMiloServerclassML Streamingtestcases updated to support protocol selectionREADME.mdupdated- Tests config modified
- Cross decomposition params initialized in
pymilo_param - Cross decomposition support added to
pymilo_func.py SUPPORTED_MODELS.mdupdatedREADME.mdupdated- GitHub actions are limited to the
devandmainbranches Python 3.13added totest.yml
1.0 - 2024-09-16
- Compression method test in
ML StreamingRESTful testcases CLIhandler intests/test_ml_streaming/run_server.pyCompressionEnum instreaming.compressor.pyGZIPCompressorclass instreaming.compressor.pyZLIBCompressorclass instreaming.compressor.pyLZMACompressorclass instreaming.compressor.pyBZ2Compressorclass instreaming.compressor.pyencrypt_compressfunction inPymiloClientparsefunction inRESTServerCommunicatoris_callable_attributefunction inPymiloServerstreaming.param.pyattribute_typefunction inRESTServerCommunicatorAttributeTypePayloadclass inRESTServerCommunicatorattribute_typefunction inRESTClientCommunicatorModeEnum inPymiloClient- Import from url testcases
download_modelfunction inutils.util.pyPymiloServerclass instreaming.pymilo_server.pyPymiloClientclass inPymiloClientCommunicatorinterface instreaming.interfaces.pyRESTClientCommunicatorclass instreaming.communicator.pyRESTServerCommunicatorclass instreaming.communicator.pyCompressorinterface instreaming.interfaces.pyDummyCompressorclass instreaming.compressor.pyEncryptorinterface instreaming.interfaces.pyDummyEncryptorclass instreaming.encryptor.pyML StreamingRESTful testcasesstreaming-requirements.txt
README.mdupdatedML StreamingRESTful testcasesattribute_callfunction inRESTServerCommunicatorAttributeCallPayloadclass inRESTServerCommunicator- upload function in
RESTClientCommunicator - download function in
RESTClientCommunicator __init__function inRESTClientCommunicatorattribute_callsfunction inRESTClientCommunicatorrequestsadded torequirements.txtuvicorn,fastapi,requestsandpydanticadded todev-requirements.txtML StreamingRESTful testcases__init__function inPymiloServer__getattr__function inPymiloClient__init__function inPymiloClienttoggle_modefunction inPymiloClientuploadfunction inPymiloClientdownloadfunction inPymiloClient__init__function inPymiloServerserialize_cfnodefunction intransporters.cfnode_transporter.py__init__function inImportclassserializefunction intransporters.tree_transporter.pydeserializefunction intransporters.tree_transporter.pyserializefunction intransporters.sgdoptimizer_transporter.pydeserializefunction intransporters.sgdoptimizer_transporter.pyserializefunction intransporters.randomstate_transporter.pydeserializefunction intransporters.randomstate_transporter.pyserializefunction intransporters.bunch_transporter.pydeserializefunction intransporters.bunch_transporter.pyserializefunction intransporters.adamoptimizer_transporter.pydeserializefunction intransporters.adamoptimizer_transporter.pyserialize_linear_modelfunction inchains.linear_model_chain.pyserialize_ensemblefunction inchains.ensemble_chain.pyserializefunction inGeneralDataStructureTransporterTransporter refactoredget_deserialized_listfunction inGeneralDataStructureTransporterTransporter refactoredExportclass call by reference bug fixed
0.9 - 2024-07-01
- Anaconda workflow
prefix_listfunction inutils.util.pyKBinsDiscretizerpreprocessing modelPowerTransformerpreprocessing modelSplineTransformerpreprocessing modelTargetEncoderpreprocessing modelQuantileTransformerpreprocessing modelRobustScalerpreprocessing modelPolynomialFeaturespreprocessing modelOrdinalEncoderpreprocessing modelNormalizerpreprocessing modelMaxAbsScalerpreprocessing modelMultiLabelBinarizerpreprocessing modelKernelCentererpreprocessing modelFunctionTransformerpreprocessing modelBinarizerpreprocessing model- Preprocessing models test runner
Commandenum class intransporter.pySerializationErrorTypesenum class inserialize_exception.pyDeserializationErrorTypesenum class indeserialize_exception.pymeta.yamlmodifiedNaNtype inpymilo_paramNaNtype transportation inGeneralDataStructureTransporterTransporterBSplineTransportation inPreprocessingTransporterTransporter- one layer deeper transportation in
PreprocessingTransporterTransporter - dictating outer ndarray dtype in
GeneralDataStructureTransporterTransporter - preprocessing params fulfilled in
pymilo_param SUPPORTED_MODELS.mdupdatedREADME.mdupdatedserialize_possible_ml_modelin the Ensemble chain
0.8 - 2024-05-06
StandardScalerTransformer inpymilo_param.pyPreprocessingTransporterTransporter- ndarray shape config in
GeneralDataStructureTransporter util.pyin chainsBinMapperTransporterTransporterBunchTransporterTransporterGeneratorTransporterTransporterTreePredictorTransporterTransporterAdaboostClassifiermodelAdaboostRegressormodelBaggingClassifiermodelBaggingRegressormodelExtraTreesClassifiermodelExtraTreesRegressormodelGradientBoosterClassifiermodelGradientBoosterRegressormodelHistGradientBoosterClassifiermodelHistGradientBoosterRegressormodelRandomForestClassifiermodelRandomForestRegressormodelIsolationForestmodelRandomTreesEmbeddingmodelStackingClassifiermodelStackingRegressormodelVotingClassifiermodelVotingRegressormodelPipelinemodel- Ensemble models test runner
- Ensemble chain
SECURITY.md
Pipelinetest updatedLabelBinarizer,LabelEncoderandOneHotEncodergot embedded inPreprocessingTransporter- Preprocessing support added to Ensemble chain
- Preprocessing params initialized in
pymilo_param util.pyin utils updatedtest_pymilo.pyupdatedpymilo_func.pyupdatedlinear_model_chain.pyupdatedneural_network_chain.pyupdateddecision_tree_chain.pyupdatedclustering_chain.pyupdatednaive_bayes_chain.pyupdatedneighbours_chain.pyupdatedsvm_chain.pyupdatedGeneralDataStructureTransporter updatedLossFunctionTransporter updatedAbstractTransporterupdated- Tests config modified
- Unequal sklearn version error added in
pymilo_param.py - Ensemble params initialized in
pymilo_param - Ensemble support added to
pymilo_func.py SUPPORTED_MODELS.mdupdatedREADME.mdupdated
0.7 - 2024-04-03
pymilo_nearest_neighbor_testfunction added totest_pymilo.pyNeighborsTreeTransporterTransporterLocalOutlierFactormodelRadiusNeighborsClassifiermodelRadiusNeighborsRegressormodelNearestCentroidmodelNearestNeighborsmodelKNeighborsClassifiermodelKNeighborsRegressormodel- Neighbors models test runner
- Neighbors chain
- Tests config modified
- Neighbors params initialized in
pymilo_param - Neighbors support added to
pymilo_func.py SUPPORTED_MODELS.mdupdatedREADME.mdupdated
0.6 - 2024-03-27
deserialize_primitive_typefunction inGeneralDataStructureTransporteris_deserialized_ndarrayfunction inGeneralDataStructureTransporterdeep_deserialize_ndarrayfunction inGeneralDataStructureTransporterdeep_serialize_ndarrayfunction inGeneralDataStructureTransporterSVRmodelSVCmodelOne Class SVMmodelNuSVRmodelNuSVCmodelLinear SVRmodelLinear SVCmodel- SVM models test runner
- SVM chain
pymilo_param.pyupdatedpymilo_obj.pyupdated to use predefined stringsTreeTransporterupdatedget_homogeneous_typefunction inutil.pyupdatedGeneralDataStructureTransporterupdated to use deep ndarray serializer & deserializercheck_str_in_iterableupdatedLabel BinarizerTransporter updatedFunctionTransporter updatedCFNodeTransporter updatedBisecting TreeTransporter updated- Tests config modified
- SVM params initialized in
pymilo_param - SVM support added to
pymilo_func.py SUPPORTED_MODELS.mdupdatedREADME.mdupdated
0.5 - 2024-01-31
resetfunction in theTransportinterfaceresetfunction implementation inAbstractTransporterGaussian Naive Bayesdeclared asGaussianNBmodelMultinomial Naive Bayesmodel declared asMultinomialNBmodelComplement Naive Bayesmodel declared asComplementNBmodelBernoulli Naive Bayesmodel declared asBernoulliNBmodelCategorical Naive Bayesmodel declared asCategoricalNBmodel- Naive Bayes models test runner
- Naive Bayes chain
Transportfunction ofAbstractTransporterupdated- fix the order of
CFNodefields serialization inCFNodeTransporter GeneralDataStructureTransportersupport list of ndarray with different shapes- Tests config modified
- Naive Bayes params initialized in
pymilo_param - Naive Bayes support added to
pymilo_func.py SUPPORTED_MODELS.mdupdatedREADME.mdupdated
0.4 - 2024-01-22
has_named_parametermethod inutil.pyCFSubclusterTransporter(insideCFNodeTransporter)CFNodeTransporterBirchmodelSpectralBiclusteringmodelSpectralCoclusteringmodelMiniBatchKMeansmodelfeature_request.ymltemplateconfig.ymlfor issue templateBayesianGaussianMixturemodelserialize_tuplemethod inGeneralDataStructureTransporterimport_functionmethod inutil.pyFunctionTransporterFeatureAgglomerationmodelHDBSCANmodelGaussianMixturemodelOPTICSmodelDBSCANmodelAgglomerativeClusteringmodelSpectralClusteringmodelMeanShiftmodelAffinityPropagationmodelKmeansmodel- Clustering models test runner
- Clustering chain
LossFunctionTransporterenhanced to handle scikit 1.4.0_loss_function_field- Codacy Static Code Analyzer's suggestions applied
- Spectral Clustering test folder refactored
- Bug report template modified
GeneralDataStructureTransporterupdated- Tests config modified
- Clustering data set preparation added to
data_exporter.py - Clustering params initialized in
pymilo_param - Clustering support added to
pymilo_func.py Python 3.12added totest.ymldev-requirements.txtupdated- Code quality badges added to
README.md SUPPORTED_MODELS.mdupdatedREADME.mdupdated
0.3 - 2023-09-27
- scikit-learn decision tree models
ExtraTreeClassifiermodelExtraTreeRegressormodelDecisionTreeClassifiermodelDecisionTreeRegressormodelTreeTransporter- Decision Tree chain
- Tests config modified
- DecisionTree params initialized in
pymilo_param - Decision Tree support added to
pymilo_func.py
0.2 - 2023-08-02
- scikit-learn neural network models
MLP RegressormodelMLP ClassifiermodelBernoulliRBNmodelSGDOptimizertransporterRandomState(MT19937)transporterAdamoptimizertransporter- Neural Network chain
- Neural Network exceptions
ndarray_to_listmethod inGeneralDataStructureTransporterlist_to_ndarraymethod inGeneralDataStructureTransporterneural_network_chain.pychain
GeneralDataStructureTransporter updatedLabelBinerizerTransporter updatedlinear modelchain updated- GeneralDataStructure transporter enhanced
- LabelBinerizer transporter updated
- transporters' chain router added to
pymilo func - NeuralNetwork params initialized in
pymilo_param pymilo_testupdated to support multiple modelslinear_model_chainrefactored
0.1 - 2023-06-29
- scikit-learn linear models support
ExportclassImportclass