diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index e30dc9b4..b80c036c 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -85,6 +85,7 @@ body: label: PyMilo version description: Which version of PyMilo are you using? options: + - PyMilo 1.4 - PyMilo 1.3 - PyMilo 1.2 - PyMilo 1.1 diff --git a/CHANGELOG.md b/CHANGELOG.md index 71d8b149..53132a1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,8 +5,57 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ## [Unreleased] +## [1.4] - 2025-11-30 ### Added +- `get_allowed_models` function in `PymiloClient` +- `get_allowance` function in `PymiloClient` +- `revoke_access` function in `PymiloClient` +- `grant_access` function in `PymiloClient` +- `get_ml_models` function in `PymiloClient` +- `deregister_ml_model` function in `PymiloClient` +- `register_ml_model` function in `PymiloClient` +- `deregister` function in `PymiloClient` +- `register` function in `PymiloClient` +- `REST_API_PREFIX ` function in `streaming.param.py` +- `register_client` function in `RESTClientCommunicator` +- `remove_client` function in `RESTClientCommunicator` +- `register_model` function in `RESTClientCommunicator` +- `remove_model` function in `RESTClientCommunicator` +- `get_ml_models` function in `RESTClientCommunicator` +- `grant_access` function in `RESTClientCommunicator` +- `revoke_access` function in `RESTClientCommunicator` +- `get_allowance` function in `RESTClientCommunicator` +- `get_allowed_models` function in `RESTClientCommunicator` +- `_validate_id` function in `PymiloServer` +- `init_client` function in `PymiloServer` +- `remove_client` function in `PymiloServer` +- `grant_access` function in `PymiloServer` +- `revoke_access` function in `PymiloServer` +- `get_allowed_models` function in `PymiloServer` +- `get_clients_allowance` function in `PymiloServer` +- `get_clients` function in `PymiloServer` +- `init_ml_model` function in `PymiloServer` +- `set_ml_model` function in `PymiloServer` +- `remove_ml_model` function in `PymiloServer` +- `get_ml_models` function in `PymiloServer` ### Changed +- `is_callable_attribute` function in `PymiloServer` +- `execute_model` function in `PymiloServer` +- `update_model` function in `PymiloServer` +- `export_model` function in `PymiloServer` +- `__getattr__` in `PymiloClient` +- `upload` function in `PymiloClient` +- `download` function in `PymiloClient` +- `encrypt_compress` function in `PymiloClient` +- `ClientCommunicator` interface +- `handle_message` function in `WebSocketServerCommunicator` +- `_handle_download` function in `WebSocketServerCommunicator` +- `setup_routes` function in `RESTServerCommunicator` +- `__init__` function in `RESTClientCommunicator` +- `download` function in `RESTClientCommunicator` +- `upload` function in `RESTClientCommunicator` +- `attribute_call` function in `RESTClientCommunicator` +- `attribute_type` function in `RESTClientCommunicator` - `README.md` updated - `__init__` function in `PyMiloServer` - Test system modified @@ -397,7 +446,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - `Export` class - `Import` class -[Unreleased]: https://github.com/openscilab/pymilo/compare/v1.3...dev +[Unreleased]: https://github.com/openscilab/pymilo/compare/v1.4...dev +[1.4]: https://github.com/openscilab/pymilo/compare/v1.3...v1.4 [1.3]: https://github.com/openscilab/pymilo/compare/v1.2...v1.3 [1.2]: https://github.com/openscilab/pymilo/compare/v1.1...v1.2 [1.1]: https://github.com/openscilab/pymilo/compare/v1.0...v1.1 diff --git a/README.md b/README.md index 6a1d90b6..869a3687 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ PyMilo is an open source Python package that provides a simple, efficient, and s ### PyPI - Check [Python Packaging User Guide](https://packaging.python.org/installing/) -- Run `pip install pymilo==1.3` +- Run `pip install pymilo==1.4` ### Source code -- Download [Version 1.3](https://github.com/openscilab/pymilo/archive/v1.3.zip) or [Latest Source](https://github.com/openscilab/pymilo/archive/dev.zip) +- Download [Version 1.4](https://github.com/openscilab/pymilo/archive/v1.4.zip) or [Latest Source](https://github.com/openscilab/pymilo/archive/dev.zip) - Run `pip install .` ### Conda @@ -200,6 +200,8 @@ You can easily serve your ML model from a remote server using `ML streaming` fea ⚠️ In order to use `ML streaming` feature, make sure you've installed the `streaming` mode of PyMilo +⚠️ The `ML streaming` feature is under construction and is not yet considered stable. + You can choose either `REST` or `WebSocket` as the communication medium protocol. #### Server diff --git a/SECURITY.md b/SECURITY.md index 48fb1b1e..b92056e5 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,8 +4,8 @@ | Version | Supported | | ------------- | ------------------ | -| 1.3 | :white_check_mark: | -| < 1.3 | :x: | +| 1.4 | :white_check_mark: | +| < 1.4 | :x: | ## Reporting a vulnerability diff --git a/otherfiles/meta.yaml b/otherfiles/meta.yaml index 65aef501..8398d723 100644 --- a/otherfiles/meta.yaml +++ b/otherfiles/meta.yaml @@ -1,5 +1,5 @@ {% set name = "pymilo" %} -{% set version = "1.3" %} +{% set version = "1.4" %} package: name: {{ name|lower }} diff --git a/otherfiles/version_check.py b/otherfiles/version_check.py index 90b831e8..b163fa0b 100644 --- a/otherfiles/version_check.py +++ b/otherfiles/version_check.py @@ -4,7 +4,7 @@ import sys import codecs Failed = 0 -PYMILO_VERSION = "1.3" +PYMILO_VERSION = "1.4" SETUP_ITEMS = [ diff --git a/pymilo/pymilo_param.py b/pymilo/pymilo_param.py index e0f9dd33..74b4c73c 100644 --- a/pymilo/pymilo_param.py +++ b/pymilo/pymilo_param.py @@ -86,7 +86,7 @@ OVERVIEW = """ PyMilo is an open source Python package that provides a simple, efficient, and safe way for users to export pre-trained machine learning models in a transparent way. """ -PYMILO_VERSION = "1.3" +PYMILO_VERSION = "1.4" NOT_SUPPORTED = "NOT_SUPPORTED" PYMILO_VERSION_DOES_NOT_EXIST = "Corrupted JSON file, `pymilo_version` doesn't exist in this file." UNEQUAL_PYMILO_VERSIONS = "warning: Installed PyMilo version differs from the PyMilo version used to create the JSON file." diff --git a/setup.py b/setup.py index 2122e336..5fc0b7ff 100644 --- a/setup.py +++ b/setup.py @@ -35,14 +35,14 @@ def read_description(): setup( name='pymilo', packages=find_packages(include=['pymilo*'], exclude=['tests*']), - version='1.3', + version='1.4', description='PyMilo: Python for ML I/O', long_description=read_description(), long_description_content_type='text/markdown', author='PyMilo Development Team', author_email='pymilo@openscilab.com', url='https://github.com/openscilab/pymilo', - download_url='https://github.com/openscilab/pymilo/tarball/v1.3', + download_url='https://github.com/openscilab/pymilo/tarball/v1.4', keywords="machine_learning ml ai mlops model export import", project_urls={ 'Source': 'https://github.com/openscilab/pymilo',