diff --git a/auto_doc.py b/auto_doc.py
index bc524f91e..91d3f358d 100644
--- a/auto_doc.py
+++ b/auto_doc.py
@@ -19,6 +19,14 @@
import keras_autodoc
+JSON_METHODS = [
+ "extract_fields_from_json",
+ "from_json",
+ "from_response_json",
+ "json",
+ "update_from_response_json",
+]
+
PAGES = {
"api/login.md": {
"login": ["hopsworks.login"],
@@ -520,6 +528,158 @@
"api/similarity_function_type_api.md": {
"similarity_function_type": ["hsfs.embedding.SimilarityFunctionType"],
},
+ # Model registry
+ "connection_api.md": {
+ "connection": ["hsml.connection.Connection"],
+ "connection_properties": keras_autodoc.get_properties(
+ "hsml.connection.Connection", exclude=["trust_store_path"]
+ ),
+ "connection_methods": keras_autodoc.get_methods("hsml.connection.Connection"),
+ },
+ "model-registry/model_registry_api.md": {
+ "mr_get": ["hsml.connection.Connection.get_model_registry"],
+ "mr_modules": keras_autodoc.get_properties(
+ "hsml.model_registry.ModelRegistry",
+ exclude=[
+ "project_id",
+ "project_name",
+ "model_registry_id",
+ "shared_registry_project_name",
+ ],
+ ),
+ "mr_properties": keras_autodoc.get_properties(
+ "hsml.model_registry.ModelRegistry",
+ exclude=[
+ "python",
+ "sklearn",
+ "tensorflow",
+ "torch",
+ ],
+ ),
+ "mr_methods": keras_autodoc.get_methods(
+ "hsml.model_registry.ModelRegistry", exclude=["from_response_json"]
+ ),
+ },
+ "model-registry/model_api.md": {
+ "ml_create_tf": ["hsml.model_registry.ModelRegistry.tensorflow.create_model"],
+ "ml_create_th": ["hsml.model_registry.ModelRegistry.torch.create_model"],
+ "ml_create_sl": ["hsml.model_registry.ModelRegistry.sklearn.create_model"],
+ "ml_create_py": ["hsml.model_registry.ModelRegistry.python.create_model"],
+ "ml_get": ["hsml.model_registry.ModelRegistry.get_model"],
+ "ml_properties": keras_autodoc.get_properties("hsml.model.Model"),
+ "ml_methods": keras_autodoc.get_methods(
+ "hsml.model.Model",
+ exclude=[
+ "from_response_json",
+ "json",
+ "to_dict",
+ "update_from_response_json",
+ ],
+ ),
+ },
+ "model-registry/model_schema.md": {},
+ "model-registry/model_schema_api.md": {
+ "schema": ["hsml.schema.Schema"],
+ "schema_dict": ["hsml.schema.Schema.to_dict"],
+ "model_schema": ["hsml.model_schema.ModelSchema"],
+ "model_schema_dict": ["hsml.model_schema.ModelSchema.to_dict"],
+ },
+ "model-registry/links.md": {
+ "links_properties": keras_autodoc.get_properties(
+ "hsml.core.explicit_provenance.Links"
+ ),
+ "artifact_properties": keras_autodoc.get_properties(
+ "hsml.core.explicit_provenance.Artifact"
+ ),
+ },
+ # Model Serving
+ "model-serving/model_serving_api.md": {
+ "ms_get": ["hsml.connection.Connection.get_model_serving"],
+ "ms_properties": keras_autodoc.get_properties(
+ "hsml.model_serving.ModelServing"
+ ),
+ "ms_methods": keras_autodoc.get_methods(
+ "hsml.model_serving.ModelServing", exclude=["from_response_json"]
+ ),
+ },
+ "model-serving/deployment_api.md": {
+ "ms_get_model_serving": ["hsml.connection.Connection.get_model_serving"],
+ "ms_get_deployments": [
+ "hsml.model_serving.ModelServing.get_deployment",
+ "hsml.model_serving.ModelServing.get_deployment_by_id",
+ "hsml.model_serving.ModelServing.get_deployments",
+ ],
+ "ms_create_deployment": ["hsml.model_serving.ModelServing.create_deployment"],
+ "m_deploy": ["hsml.model.Model.deploy"],
+ "p_deploy": ["hsml.predictor.Predictor.deploy"],
+ "dep_properties": keras_autodoc.get_properties("hsml.deployment.Deployment"),
+ "dep_methods": keras_autodoc.get_methods(
+ "hsml.deployment.Deployment", exclude=JSON_METHODS + ["from_predictor"]
+ ),
+ },
+ "model-serving/predictor_api.md": {
+ "ms_get_model_serving": ["hsml.connection.Connection.get_model_serving"],
+ "ms_create_predictor": ["hsml.model_serving.ModelServing.create_predictor"],
+ "pred_properties": keras_autodoc.get_properties("hsml.predictor.Predictor"),
+ "pred_methods": keras_autodoc.get_methods(
+ "hsml.predictor.Predictor",
+ exclude=JSON_METHODS + ["for_model"],
+ ),
+ },
+ "model-serving/transformer_api.md": {
+ "ms_get_model_serving": ["hsml.connection.Connection.get_model_serving"],
+ "ms_create_transformer": ["hsml.model_serving.ModelServing.create_transformer"],
+ "trans_properties": keras_autodoc.get_properties(
+ "hsml.transformer.Transformer"
+ ),
+ "trans_methods": keras_autodoc.get_methods(
+ "hsml.transformer.Transformer", exclude=JSON_METHODS
+ ),
+ },
+ "model-serving/inference_logger_api.md": {
+ "il": ["hsml.inference_logger.InferenceLogger"],
+ "il_properties": keras_autodoc.get_properties(
+ "hsml.inference_logger.InferenceLogger"
+ ),
+ "il_methods": keras_autodoc.get_methods(
+ "hsml.inference_logger.InferenceLogger", exclude=JSON_METHODS
+ ),
+ },
+ "model-serving/inference_batcher_api.md": {
+ "ib": ["hsml.inference_batcher.InferenceBatcher"],
+ "ib_properties": keras_autodoc.get_properties(
+ "hsml.inference_batcher.InferenceBatcher"
+ ),
+ "ib_methods": keras_autodoc.get_methods(
+ "hsml.inference_batcher.InferenceBatcher", exclude=JSON_METHODS
+ ),
+ },
+ "model-serving/resources_api.md": {
+ "res": ["hsml.resources.Resources"],
+ "res_properties": keras_autodoc.get_properties("hsml.resources.Resources"),
+ "res_methods": keras_autodoc.get_methods(
+ "hsml.resources.Resources", exclude=JSON_METHODS
+ ),
+ },
+ "model-serving/predictor_state_api.md": {
+ "ps_get": ["hsml.deployment.Deployment.get_state"],
+ "ps_properties": keras_autodoc.get_properties(
+ "hsml.predictor_state.PredictorState"
+ ),
+ "ps_methods": keras_autodoc.get_methods(
+ "hsml.predictor_state.PredictorState", exclude=JSON_METHODS
+ ),
+ },
+ "model-serving/predictor_state_condition_api.md": {
+ "psc_get": ["hsml.predictor_state.PredictorState.condition"],
+ "psc_properties": keras_autodoc.get_properties(
+ "hsml.predictor_state_condition.PredictorStateCondition"
+ ),
+ "psc_methods": keras_autodoc.get_methods(
+ "hsml.predictor_state_condition.PredictorStateCondition",
+ exclude=JSON_METHODS,
+ ),
+ },
}
hw_dir = pathlib.Path(__file__).resolve().parents[0]
diff --git a/hsml/docs/templates/connection_api.md b/docs/templates/connection_api.md
similarity index 100%
rename from hsml/docs/templates/connection_api.md
rename to docs/templates/connection_api.md
diff --git a/hsml/docs/templates/model-registry/links.md b/docs/templates/model-registry/links.md
similarity index 100%
rename from hsml/docs/templates/model-registry/links.md
rename to docs/templates/model-registry/links.md
diff --git a/hsml/docs/templates/model-registry/model_api.md b/docs/templates/model-registry/model_api.md
similarity index 100%
rename from hsml/docs/templates/model-registry/model_api.md
rename to docs/templates/model-registry/model_api.md
diff --git a/hsml/docs/templates/model-registry/model_registry_api.md b/docs/templates/model-registry/model_registry_api.md
similarity index 100%
rename from hsml/docs/templates/model-registry/model_registry_api.md
rename to docs/templates/model-registry/model_registry_api.md
diff --git a/hsml/docs/templates/model-registry/model_schema_api.md b/docs/templates/model-registry/model_schema_api.md
similarity index 100%
rename from hsml/docs/templates/model-registry/model_schema_api.md
rename to docs/templates/model-registry/model_schema_api.md
diff --git a/hsml/docs/templates/model-serving/deployment_api.md b/docs/templates/model-serving/deployment_api.md
similarity index 100%
rename from hsml/docs/templates/model-serving/deployment_api.md
rename to docs/templates/model-serving/deployment_api.md
diff --git a/hsml/docs/templates/model-serving/inference_batcher_api.md b/docs/templates/model-serving/inference_batcher_api.md
similarity index 100%
rename from hsml/docs/templates/model-serving/inference_batcher_api.md
rename to docs/templates/model-serving/inference_batcher_api.md
diff --git a/hsml/docs/templates/model-serving/inference_logger_api.md b/docs/templates/model-serving/inference_logger_api.md
similarity index 100%
rename from hsml/docs/templates/model-serving/inference_logger_api.md
rename to docs/templates/model-serving/inference_logger_api.md
diff --git a/hsml/docs/templates/model-serving/model_serving_api.md b/docs/templates/model-serving/model_serving_api.md
similarity index 100%
rename from hsml/docs/templates/model-serving/model_serving_api.md
rename to docs/templates/model-serving/model_serving_api.md
diff --git a/hsml/docs/templates/model-serving/predictor_api.md b/docs/templates/model-serving/predictor_api.md
similarity index 100%
rename from hsml/docs/templates/model-serving/predictor_api.md
rename to docs/templates/model-serving/predictor_api.md
diff --git a/hsml/docs/templates/model-serving/predictor_state_api.md b/docs/templates/model-serving/predictor_state_api.md
similarity index 100%
rename from hsml/docs/templates/model-serving/predictor_state_api.md
rename to docs/templates/model-serving/predictor_state_api.md
diff --git a/hsml/docs/templates/model-serving/predictor_state_condition_api.md b/docs/templates/model-serving/predictor_state_condition_api.md
similarity index 100%
rename from hsml/docs/templates/model-serving/predictor_state_condition_api.md
rename to docs/templates/model-serving/predictor_state_condition_api.md
diff --git a/hsml/docs/templates/model-serving/resources_api.md b/docs/templates/model-serving/resources_api.md
similarity index 100%
rename from hsml/docs/templates/model-serving/resources_api.md
rename to docs/templates/model-serving/resources_api.md
diff --git a/hsml/docs/templates/model-serving/transformer_api.md b/docs/templates/model-serving/transformer_api.md
similarity index 100%
rename from hsml/docs/templates/model-serving/transformer_api.md
rename to docs/templates/model-serving/transformer_api.md
diff --git a/hsml/auto_doc.py b/hsml/auto_doc.py
deleted file mode 100644
index 4c7ae26ee..000000000
--- a/hsml/auto_doc.py
+++ /dev/null
@@ -1,210 +0,0 @@
-#
-# Copyright 2021 Logical Clocks AB
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-import pathlib
-import shutil
-import os
-import keras_autodoc
-
-JSON_METHODS = [
- "extract_fields_from_json",
- "from_json",
- "from_response_json",
- "json",
- "update_from_response_json",
-]
-
-PAGES = {
- # Model registry
- "connection_api.md": {
- "connection": ["hsml.connection.Connection"],
- "connection_properties": keras_autodoc.get_properties(
- "hsml.connection.Connection", exclude=["trust_store_path"]
- ),
- "connection_methods": keras_autodoc.get_methods("hsml.connection.Connection"),
- },
- "model-registry/model_registry_api.md": {
- "mr_get": ["hsml.connection.Connection.get_model_registry"],
- "mr_modules": keras_autodoc.get_properties(
- "hsml.model_registry.ModelRegistry",
- exclude=[
- "project_id",
- "project_name",
- "model_registry_id",
- "shared_registry_project_name",
- ],
- ),
- "mr_properties": keras_autodoc.get_properties(
- "hsml.model_registry.ModelRegistry",
- exclude=[
- "python",
- "sklearn",
- "tensorflow",
- "torch",
- ],
- ),
- "mr_methods": keras_autodoc.get_methods(
- "hsml.model_registry.ModelRegistry", exclude=["from_response_json"]
- ),
- },
- "model-registry/model_api.md": {
- "ml_create_tf": ["hsml.model_registry.ModelRegistry.tensorflow.create_model"],
- "ml_create_th": ["hsml.model_registry.ModelRegistry.torch.create_model"],
- "ml_create_sl": ["hsml.model_registry.ModelRegistry.sklearn.create_model"],
- "ml_create_py": ["hsml.model_registry.ModelRegistry.python.create_model"],
- "ml_get": ["hsml.model_registry.ModelRegistry.get_model"],
- "ml_properties": keras_autodoc.get_properties("hsml.model.Model"),
- "ml_methods": keras_autodoc.get_methods(
- "hsml.model.Model",
- exclude=[
- "from_response_json",
- "json",
- "to_dict",
- "update_from_response_json",
- ],
- ),
- },
- "model-registry/model_schema.md": {},
- "model-registry/model_schema_api.md": {
- "schema": ["hsml.schema.Schema"],
- "schema_dict": ["hsml.schema.Schema.to_dict"],
- "model_schema": ["hsml.model_schema.ModelSchema"],
- "model_schema_dict": ["hsml.model_schema.ModelSchema.to_dict"],
- },
- "model-registry/links.md": {
- "links_properties": keras_autodoc.get_properties(
- "hsml.core.explicit_provenance.Links"
- ),
- "artifact_properties": keras_autodoc.get_properties(
- "hsml.core.explicit_provenance.Artifact"
- ),
- },
- # Model Serving
- "model-serving/model_serving_api.md": {
- "ms_get": ["hsml.connection.Connection.get_model_serving"],
- "ms_properties": keras_autodoc.get_properties(
- "hsml.model_serving.ModelServing"
- ),
- "ms_methods": keras_autodoc.get_methods(
- "hsml.model_serving.ModelServing", exclude=["from_response_json"]
- ),
- },
- "model-serving/deployment_api.md": {
- "ms_get_model_serving": ["hsml.connection.Connection.get_model_serving"],
- "ms_get_deployments": [
- "hsml.model_serving.ModelServing.get_deployment",
- "hsml.model_serving.ModelServing.get_deployment_by_id",
- "hsml.model_serving.ModelServing.get_deployments",
- ],
- "ms_create_deployment": ["hsml.model_serving.ModelServing.create_deployment"],
- "m_deploy": ["hsml.model.Model.deploy"],
- "p_deploy": ["hsml.predictor.Predictor.deploy"],
- "dep_properties": keras_autodoc.get_properties("hsml.deployment.Deployment"),
- "dep_methods": keras_autodoc.get_methods(
- "hsml.deployment.Deployment", exclude=JSON_METHODS + ["from_predictor"]
- ),
- },
- "model-serving/predictor_api.md": {
- "ms_get_model_serving": ["hsml.connection.Connection.get_model_serving"],
- "ms_create_predictor": ["hsml.model_serving.ModelServing.create_predictor"],
- "pred_properties": keras_autodoc.get_properties("hsml.predictor.Predictor"),
- "pred_methods": keras_autodoc.get_methods(
- "hsml.predictor.Predictor",
- exclude=JSON_METHODS + ["for_model"],
- ),
- },
- "model-serving/transformer_api.md": {
- "ms_get_model_serving": ["hsml.connection.Connection.get_model_serving"],
- "ms_create_transformer": ["hsml.model_serving.ModelServing.create_transformer"],
- "trans_properties": keras_autodoc.get_properties(
- "hsml.transformer.Transformer"
- ),
- "trans_methods": keras_autodoc.get_methods(
- "hsml.transformer.Transformer", exclude=JSON_METHODS
- ),
- },
- "model-serving/inference_logger_api.md": {
- "il": ["hsml.inference_logger.InferenceLogger"],
- "il_properties": keras_autodoc.get_properties(
- "hsml.inference_logger.InferenceLogger"
- ),
- "il_methods": keras_autodoc.get_methods(
- "hsml.inference_logger.InferenceLogger", exclude=JSON_METHODS
- ),
- },
- "model-serving/inference_batcher_api.md": {
- "ib": ["hsml.inference_batcher.InferenceBatcher"],
- "ib_properties": keras_autodoc.get_properties(
- "hsml.inference_batcher.InferenceBatcher"
- ),
- "ib_methods": keras_autodoc.get_methods(
- "hsml.inference_batcher.InferenceBatcher", exclude=JSON_METHODS
- ),
- },
- "model-serving/resources_api.md": {
- "res": ["hsml.resources.Resources"],
- "res_properties": keras_autodoc.get_properties("hsml.resources.Resources"),
- "res_methods": keras_autodoc.get_methods(
- "hsml.resources.Resources", exclude=JSON_METHODS
- ),
- },
- "model-serving/predictor_state_api.md": {
- "ps_get": ["hsml.deployment.Deployment.get_state"],
- "ps_properties": keras_autodoc.get_properties(
- "hsml.predictor_state.PredictorState"
- ),
- "ps_methods": keras_autodoc.get_methods(
- "hsml.predictor_state.PredictorState", exclude=JSON_METHODS
- ),
- },
- "model-serving/predictor_state_condition_api.md": {
- "psc_get": ["hsml.predictor_state.PredictorState.condition"],
- "psc_properties": keras_autodoc.get_properties(
- "hsml.predictor_state_condition.PredictorStateCondition"
- ),
- "psc_methods": keras_autodoc.get_methods(
- "hsml.predictor_state_condition.PredictorStateCondition",
- exclude=JSON_METHODS,
- ),
- },
-}
-
-hsml_dir = pathlib.Path(__file__).resolve().parents[0]
-if "GITHUB_SHA" in os.environ:
- commit_sha = os.environ["GITHUB_SHA"]
- project_url = f"https://github.com/logicalclocks/machine-learning-api/tree/{commit_sha}/python"
-else:
- branch_name = os.environ.get("GITHUB_BASE_REF", "master")
- project_url = f"https://github.com/logicalclocks/machine-learning-api/blob/{branch_name}/python"
-
-
-def generate(dest_dir):
- doc_generator = keras_autodoc.DocumentationGenerator(
- PAGES,
- project_url=project_url,
- template_dir="./docs/templates",
- titles_size="###",
- extra_aliases={},
- max_signature_line_length=100,
- )
- shutil.copyfile(hsml_dir / "CONTRIBUTING.md", dest_dir / "CONTRIBUTING.md")
- shutil.copyfile(hsml_dir / "README.md", dest_dir / "index.md")
-
- doc_generator.generate(dest_dir / "generated")
-
-
-if __name__ == "__main__":
- generate(hsml_dir / "docs")
diff --git a/hsml/docs/CONTRIBUTING.md b/hsml/docs/CONTRIBUTING.md
deleted file mode 100644
index b287467c6..000000000
--- a/hsml/docs/CONTRIBUTING.md
+++ /dev/null
@@ -1,215 +0,0 @@
-## Python development setup
----
-
-- Fork and clone the repository
-
-- Create a new Python environment with your favourite environment manager, e.g. virtualenv or conda
-
-- Install repository in editable mode with development dependencies:
-
- ```bash
- cd python
- pip install -e ".[dev]"
- ```
-
-- Install [pre-commit](https://pre-commit.com/) and then activate its hooks. pre-commit is a framework for managing and maintaining multi-language pre-commit hooks. The Model Registry uses pre-commit to ensure code-style and code formatting through [ruff](https://docs.astral.sh/ruff/). Run the following commands from the `python` directory:
-
- ```bash
- cd python
- pip install --user pre-commit
- pre-commit install
- ```
-
- Afterwards, pre-commit will run whenever you commit.
-
-- To run formatting and code-style separately, you can configure your IDE, such as VSCode, to use [ruff](https://docs.astral.sh/ruff/tutorial/#getting-started):
-
- ```bash
- cd python
- ruff check --fix
- ruff format
- ```
-
-### Python documentation
-
-We follow a few best practices for writing the Python documentation:
-
-1. Use the google docstring style:
-
- ```python
- """[One Line Summary]
-
- [Extended Summary]
-
- [!!! example
- import xyz
- ]
-
- # Arguments
- arg1: Type[, optional]. Description[, defaults to `default`]
- arg2: Type[, optional]. Description[, defaults to `default`]
-
- # Returns
- Type. Description.
-
- # Raises
- Exception. Description.
- """
- ```
-
- If Python 3 type annotations are used, they are inserted automatically.
-
-
-2. Model registry entity engine methods (e.g. ModelEngine etc.) only require a single line docstring.
-3. REST Api implementations (e.g. ModelApi etc.) should be fully documented with docstrings without defaults.
-4. Public Api such as metadata objects should be fully documented with defaults.
-
-#### Setup and Build Documentation
-
-We use `mkdocs` together with `mike` ([for versioning](https://github.com/jimporter/mike/)) to build the documentation and a plugin called `keras-autodoc` to auto generate Python API documentation from docstrings.
-
-**Background about `mike`:**
- `mike` builds the documentation and commits it as a new directory to the gh-pages branch. Each directory corresponds to one version of the documentation. Additionally, `mike` maintains a json in the root of gh-pages with the mappings of versions/aliases for each of the directories available. With aliases you can define extra names like `dev` or `latest`, to indicate stable and unstable releases.
-
-1. Currently we are using our own version of `keras-autodoc`
-
- ```bash
- pip install git+https://github.com/logicalclocks/keras-autodoc
- ```
-
-2. Install HSML with `docs` extras:
-
- ```bash
- pip install -e .[dev,docs]
- ```
-
-3. To build the docs, first run the auto doc script:
-
- ```bash
- cd ..
- python auto_doc.py
- ```
-
-##### Option 1: Build only current version of docs
-
-4. Either build the docs, or serve them dynamically:
-
- Note: Links and pictures might not resolve properly later on when checking with this build.
- The reason for that is that the docs are deployed with versioning on docs.hopsworks.ai and
- therefore another level is added to all paths, e.g. `docs.hopsworks.ai/[version-or-alias]`.
- Using relative links should not be affected by this, however, building the docs with version
- (Option 2) is recommended.
-
- ```bash
- mkdocs build
- # or
- mkdocs serve
- ```
-
-##### Option 2 (Preferred): Build multi-version doc with `mike`
-
-###### Versioning on docs.hopsworks.ai
-
-On docs.hopsworks.ai we implement the following versioning scheme:
-
-- current master branches (e.g. of hsml corresponding to master of Hopsworks): rendered as current Hopsworks snapshot version, e.g. **2.2.0-SNAPSHOT [dev]**, where `dev` is an alias to indicate that this is an unstable version.
-- the latest release: rendered with full current version, e.g. **2.1.5 [latest]** with `latest` alias to indicate that this is the latest stable release.
-- previous stable releases: rendered without alias, e.g. **2.1.4**.
-
-###### Build Instructions
-
-4. For this you can either checkout and make a local copy of the `upstream/gh-pages` branch, where
-`mike` maintains the current state of docs.hopsworks.ai, or just build documentation for the branch you are updating:
-
- Building *one* branch:
-
- Checkout your dev branch with modified docs:
- ```bash
- git checkout [dev-branch]
- ```
-
- Generate API docs if necessary:
- ```bash
- python auto_doc.py
- ```
-
- Build docs with a version and alias
- ```bash
- mike deploy [version] [alias] --update-alias
-
- # for example, if you are updating documentation to be merged to master,
- # which will become the new SNAPSHOT version:
- mike deploy 2.2.0-SNAPSHOT dev --update-alias
-
- # if you are updating docs of the latest stable release branch
- mike deploy [version] latest --update-alias
-
- # if you are updating docs of a previous stable release branch
- mike deploy [version]
- ```
-
- If no gh-pages branch existed in your local repository, this will have created it.
-
- **Important**: If no previous docs were built, you will have to choose a version as default to be loaded as index, as follows
-
- ```bash
- mike set-default [version-or-alias]
- ```
-
- You can now checkout the gh-pages branch and serve:
- ```bash
- git checkout gh-pages
- mike serve
- ```
-
- You can also list all available versions/aliases:
- ```bash
- mike list
- ```
-
- Delete and reset your local gh-pages branch:
- ```bash
- mike delete --all
-
- # or delete single version
- mike delete [version-or-alias]
- ```
-
-#### Adding new API documentation
-
-To add new documentation for APIs, you need to add information about the method/class to document to the `auto_doc.py` script:
-
-```python
-PAGES = {
- "connection.md": [
- "hsml.connection.Connection.connection",
- "hsml.connection.Connection.setup_databricks",
- ]
- "new_template.md": [
- "module",
- "xyz.asd"
- ]
-}
-```
-
-Now you can add a template markdown file to the `docs/templates` directory with the name you specified in the auto-doc script. The `new_template.md` file should contain a tag to identify the place at which the API documentation should be inserted:
-
-```
-## The XYZ package
-
-{{module}}
-
-Some extra content here.
-
-!!! example
- ```python
- import xyz
- ```
-
-{{xyz.asd}}
-```
-
-Finally, run the `auto_doc.py` script, as decribed above, to update the documentation.
-
-For information about Markdown syntax and possible Admonitions/Highlighting etc. see
-the [Material for Mkdocs themes reference documentation](https://squidfunk.github.io/mkdocs-material/reference/abbreviations/).
diff --git a/hsml/docs/assets/images/favicon.ico b/hsml/docs/assets/images/favicon.ico
deleted file mode 100644
index ab7573067..000000000
Binary files a/hsml/docs/assets/images/favicon.ico and /dev/null differ
diff --git a/hsml/docs/assets/images/hops-logo.png b/hsml/docs/assets/images/hops-logo.png
deleted file mode 100644
index d3625ae07..000000000
Binary files a/hsml/docs/assets/images/hops-logo.png and /dev/null differ
diff --git a/hsml/docs/css/custom.css b/hsml/docs/css/custom.css
deleted file mode 100644
index 5ba3208e1..000000000
--- a/hsml/docs/css/custom.css
+++ /dev/null
@@ -1,115 +0,0 @@
-[data-md-color-scheme="hopsworks"] {
- --md-primary-fg-color: #1EB382;
- --md-secondary-fg-color: #188a64;
- --md-tertiary-fg-color: #0d493550;
- --md-quaternary-fg-color: #fdfdfd;
- --border-radius-variable: 5px;
-}
-
-.md-footer__inner:not([hidden]) {
- display: none
-}
-
-/* Lex did stuff here */
-.svg_topnav{
- width: 12px;
- filter: invert(100);
-}
-.svg_topnav:hover{
- width: 12px;
- filter: invert(10);
-}
-
-.md-header[data-md-state=shadow] {
- box-shadow: 0 0 0 0;
-}
-
-.md-tabs__item {
- min-width: 2.25rem;
-}
-
-.md-tabs__item:hover {
- background-color: var(--md-tertiary-fg-color);
- transition: background-color 450ms;
-
-}
-
-/*
-.md-sidebar__scrollwrap{
- background-color: var(--md-quaternary-fg-color);
- padding: 15px 5px 5px 5px;
- border-radius: var(--border-radius-variable);
-}
-*/
-.md-nav__link:focus{
-}
-
-.image_logo_02{
- width:450px;
-}
-
-/* End of Lex did stuff here */
-
-.md-header__button.md-logo {
- margin: .1rem;
- padding: .1rem;
-}
-
-.md-header__button.md-logo img, .md-header__button.md-logo svg {
- display: block;
- width: 1.8rem;
- height: 1.8rem;
- fill: currentColor;
-}
-
-.md-tabs {
- width: 100%;
- overflow: auto;
- color: var(--md-primary-bg-color);
- background-color: var(--md-secondary-fg-color);
- transition: background-color 250ms;
-}
-
-
-.wrapper {
- display: grid;
- grid-template-columns: repeat(4, 1fr);
- gap: 10px;
- grid-auto-rows: minmax(100px, auto);
-}
-
-.wrapper * {
- border: 2px solid green;
- text-align: center;
- padding: 70px 0;
-}
-
-.one {
- grid-column: 1 / 2;
- grid-row: 1;
-}
-.two {
- grid-column: 2 / 3;
- grid-row: 1;
-}
-.three {
- grid-column: 3 / 4;
- grid-row: 1;
-}
-.four {
- grid-column: 4 / 5;
- grid-row: 1;
-}
-.five {
- grid-column: 1 / 3;
- grid-row: 2;
-}
-.six {
- grid-column: 3 / 5;
- grid-row: 2;
-}
-
-/* Jupyter Stuff */
-.jupyter-wrapper .jp-CodeCell .jp-Cell-inputWrapper .jp-InputPrompt {
- display: none !important;
-}
diff --git a/hsml/docs/css/dropdown.css b/hsml/docs/css/dropdown.css
deleted file mode 100644
index 886858909..000000000
--- a/hsml/docs/css/dropdown.css
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Style The Dropdown Button */
-.dropbtn {
- color: white;
- border: none;
- cursor: pointer;
-}
-
-.md-tabs__list {
- contain: inherit;
-}
-.md-tabs {
- overflow: inherit;
-}
-.md-header {
- z-index: 1000 !important;
-}
-
-/* The container
- needed to position the dropdown content */
-.dropdown {
- position: absolute;
- display: inline-block;
-}
-
-/* Dropdown Content (Hidden by Default) */
-.dropdown-content {
- display:none;
- font-size: 13px;
- position: absolute;
- background-color: #f9f9f9;
- min-width: 160px;
- box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
- z-index: 1000;
- border-radius: 2px;
- left:-15px;
-}
-
-/* Links inside the dropdown */
-.dropdown-content a {
- color: black;
- padding: 12px 16px;
- text-decoration: none;
- display: block;
-}
-
-/* Change color of dropdown links on hover */
-.dropdown-content a:hover {background-color: #f1f1f1}
-
-/* Show the dropdown menu on hover */
-.dropdown:hover .dropdown-content {
- display: block;
-}
-
-/* Change the background color of the dropdown button when the dropdown content is shown */
-.dropdown:hover .dropbtn {
-}
diff --git a/hsml/docs/css/marctech.css b/hsml/docs/css/marctech.css
deleted file mode 100644
index 8bb58c97b..000000000
--- a/hsml/docs/css/marctech.css
+++ /dev/null
@@ -1,1047 +0,0 @@
-:root {
- --md-primary-fg-color: #1EB382;
- --md-secondary-fg-color: #188a64;
- --md-tertiary-fg-color: #0d493550;
- --md-quaternary-fg-color: #fdfdfd;
- --md-fiftuary-fg-color: #2471cf;
- --border-radius-variable: 5px;
- --border-width:1px;
- }
-
- .marctech_main a{
- color: var(--md-fiftuary-fg-color);
- border-bottom: 1px dotted var(--md-fiftuary-fg-color) !important;
- text-decoration: dotted !important;}
-
- .marctech_main a:hover{
- border-bottom: 1px dotted var(--md-primary-fg-color)!important;
- }
-
- .marctech_main a:visited{
- color: var(--md-tertiary-fg-color);
- border-bottom: 1px dotted var(--md-tertiary-fg-color) !important;
-
- }
-
- .w-layout-grid {
- display: -ms-grid;
- display: grid;
- grid-auto-columns: 1fr;
- -ms-grid-columns: 1fr 1fr;
- grid-template-columns: 1fr 1fr;
- -ms-grid-rows: auto auto;
- grid-template-rows: auto auto;
- grid-row-gap: 16px;
- grid-column-gap: 16px;
- }
-
- .image_logo{
- width: 69%;
- background-color: white;
- z-index: 50;
- padding: 0px 15px 0px 15px;
- margin-bottom: 10px;
- }
-
- .layer_02{
- pointer-events: none;
- }
-
- .round-frame{
- pointer-events: initial;
- }
-
- .marctech_main {
- margin-top:-20px;
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -webkit-flex-direction: column;
- -ms-flex-direction: column;
- flex-direction: column;
- -webkit-box-align: center;
- -webkit-align-items: center;
- -ms-flex-align: center;
- align-items: center;
- margin-bottom: 55px;
- }
-
- .collumns {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- height: 100%;
- -webkit-box-align: stretch;
- -webkit-align-items: stretch;
- -ms-flex-align: stretch;
- align-items: stretch;
- }
-
- .col_heading {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-align: center;
- -webkit-align-items: center;
- -ms-flex-align: center;
- align-items: center;
- }
-
- .enterprisefs {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -webkit-flex-direction: column;
- -ms-flex-direction: column;
- flex-direction: column;
- -webkit-box-align: center;
- -webkit-align-items: center;
- -ms-flex-align: center;
- align-items: center;
- }
-
- .enterprise_ai {
- -webkit-align-self: center;
- -ms-flex-item-align: center;
- -ms-grid-row-align: center;
- align-self: center;
- -webkit-box-flex: 1;
- -webkit-flex: 1;
- -ms-flex: 1;
- flex: 1;
- }
-
- .side-content {
- z-index: 0;
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- width: 240px;
- height: 100%;
- margin-top: 10px;
- margin-bottom: 10px;
- padding: 20px 10px;
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -webkit-flex-direction: column;
- -ms-flex-direction: column;
- flex-direction: column;
- -webkit-box-pack: center;
- -webkit-justify-content: center;
- -ms-flex-pack: center;
- justify-content: center;
- -webkit-box-align: center;
- -webkit-align-items: center;
- -ms-flex-align: center;
- align-items: center;
- -webkit-align-content: flex-start;
- -ms-flex-line-pack: start;
- align-content: flex-start;
- border-style: solid;
- border-width: var(--border-width);
- border-color: #585858;
- border-radius: 10px;
- background-color:var(--md-quaternary-fg-color);
- }
- .body {
- padding: 40px;
- font-family: Roboto, sans-serif;
- }
-
- .green {
- color: #1eb182;
- font-size: 1.2vw;
- }
-
- .rec_frame {
- position: relative;
- z-index: 1;
- display: inline-block;
- min-width: 150px;
- margin-top: 10px;
- margin-right: 10px;
- margin-left: 10px;
- padding: 10px 10px;
- border-style: solid;
- border-width: var(--border-width);
- border-color: #585858;
- border-radius: 10px;
- background-color: #fff;
- box-shadow: 4px 4px 0 0 rgba(88, 88, 88, 0.16);
- -webkit-transition: box-shadow 200ms ease, border-color 200ms ease;
- transition: box-shadow 200ms ease, border-color 200ms ease;
- color: #585858;
- text-align: center;
- cursor: pointer;
- }
-
- .rec_frame:hover {
- border-color: #c2c2c2;
- box-shadow: none;
- }
-
- .name_item {
- font-size: 0.7rem;
- line-height: 120%;
- font-weight: 700;
- }
-
- .name_item.db {
- position: relative;
- z-index: 3;
- text-align: left;
- }
-
- .name_item.small {
- font-size: 0.6rem;
- font-weight: 500;
- }
-
- .name_item.ingrey {
- padding-bottom: 20px;
- }
-
- .db_frame-mid {
- position: relative;
- z-index: 1;
- margin-top: -8px;
- padding: 5px 2px;
- border-style: solid;
- border-width: var(--border-width);
- border-color: #585858;
- border-radius: 0px 0% 50% 50%;
- background-color: #fff;
- color: #585858;
- text-align: center;
- }
-
- .db_frame-top {
- position: relative;
- z-index: 2;
- padding: 5px 2px;
- border-style: solid;
- border-width: var(--border-width);
- border-color: #585858;
- border-radius: 50%;
- background-color: #fff;
- color: #585858;
- text-align: center;
- }
-
- .icondb {
- position: relative;
- width: 25px;
- min-width: 25px;
- margin-right: 10px;
- }
-
- .db_frame {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- width: 150px;
- height: 55px;
- padding: 20px 10px;
- -webkit-box-align: center;
- -webkit-align-items: center;
- -ms-flex-align: center;
- align-items: center;
- border-style: solid;
- border-width: var(--border-width);
- border-color: #585858;
- border-radius: 10px;
- background-color: #fff;
- box-shadow: 4px 4px 0 0 rgba(88, 88, 88, 0.16);
- -webkit-transition: box-shadow 200ms ease, border-color 200ms ease;
- transition: box-shadow 200ms ease, border-color 200ms ease;
- color: #585858;
- text-align: center;
- cursor: pointer;
- }
-
- .db_frame:hover {
- border-color: #c2c2c2;
- box-shadow: none;
- }
-
- .grid {
- -ms-grid-rows: auto auto auto;
- grid-template-rows: auto auto auto;
- }
-
- .arrowdown {
- position: relative;
- z-index: 0;
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- margin-top: -10px;
- -webkit-box-pack: center;
- -webkit-justify-content: center;
- -ms-flex-pack: center;
- justify-content: center;
- }
-
- .heading_MT {
- margin-top: 0px !important;
- margin-bottom: 0px !important;
- font-size: 1.3rem !important;
- white-space: nowrap !important;
- }
-
- .head_col {
- padding-left: 10px;
- }
-
- .MT_heading3 {
- margin-top: 0px !important ;
- font-size: 0.8rem !important;
- }
-
- .MT_heading3.green {
- color: #1eb182 !important;
- }
-
- .column_sides {
- position: relative;
- z-index: 2;
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -webkit-flex-direction: column;
- -ms-flex-direction: column;
- flex-direction: column;
- -webkit-box-pack: justify;
- -webkit-justify-content: space-between;
- -ms-flex-pack: justify;
- justify-content: space-between;
- -webkit-box-align: center;
- -webkit-align-items: center;
- -ms-flex-align: center;
- align-items: center;
- }
-
- .hopsicon {
- width: 45px;
- height: 45px;
- }
-
- .column_center {
- z-index: 10;
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -webkit-flex-direction: column;
- -ms-flex-direction: column;
- flex-direction: column;
- -webkit-box-pack: center;
- -webkit-justify-content: center;
- -ms-flex-pack: center;
- justify-content: center;
- -webkit-box-align: center;
- -webkit-align-items: center;
- -ms-flex-align: center;
- align-items: center;
- }
-
- .center-content {
- z-index: -50;
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- width: 750px;
- height: 670px;
- margin-top: 10px;
- margin-bottom: 10px;
- padding: 20px 10px;
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -webkit-flex-direction: column;
- -ms-flex-direction: column;
- flex-direction: column;
- -webkit-box-pack: center;
- -webkit-justify-content: center;
- -ms-flex-pack: center;
- justify-content: center;
- -webkit-box-align: center;
- -webkit-align-items: center;
- -ms-flex-align: center;
- align-items: center;
- -webkit-align-content: center;
- -ms-flex-line-pack: center;
- align-content: center;
- border-radius: 10px;
- background-color: transparent;
- }
-
- .image {
- width: 260px;
- }
-
- .layer_01 {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -webkit-flex-direction: column;
- -ms-flex-direction: column;
- flex-direction: column;
- -webkit-box-pack: center;
- -webkit-justify-content: center;
- -ms-flex-pack: center;
- justify-content: center;
- -webkit-box-align: stretch;
- -webkit-align-items: stretch;
- -ms-flex-align: stretch;
- align-items: stretch;
- }
-
- .name_center {
- font-size: 1rem;
- font-weight: 700;
- }
-
- .rec_frame_main {
- position: relative;
- z-index: 1;
- margin-top: 10px;
- margin-right: 10px;
- margin-left: 10px;
- padding: 5px 10px;
- border-style: solid;
- border-width: var(--border-width);
- border-color: #1eb182;
- border-radius: 10px;
- background-color: #e6fdf6;
- box-shadow: 4px 4px 0 0 #dcf7ee;
- -webkit-transition: box-shadow 200ms ease, border-color 200ms ease;
- transition: box-shadow 200ms ease, border-color 200ms ease;
- color: #1eb182;
- text-align: center;
- cursor: pointer;
- }
-
- .rec_frame_main:hover {
- border-color: #9fecd4;
- box-shadow: none;
- }
-
- .rec_frame_main.no_content {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- height: 100%;
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -webkit-flex-direction: column;
- -ms-flex-direction: column;
- flex-direction: column;
- -webkit-box-pack: center;
- -webkit-justify-content: center;
- -ms-flex-pack: center;
- justify-content: center;
- -webkit-box-align: center;
- -webkit-align-items: center;
- -ms-flex-align: center;
- align-items: center;
- box-shadow: 4px 4px 0 0 #dcf7ee;
- }
-
- .rec_frame_main.no_content:hover {
- border-color: #1eb182;
- box-shadow: 4px 4px 0 0 rgba(88, 88, 88, 0.16);
- }
-
- .name_item_02 {
- font-size: 0.85rem;
- font-weight: 700;
- }
-
- .grid-infra {
- padding-top: 20px;
- -ms-grid-columns: 1fr 1fr 1fr 1fr;
- grid-template-columns: 1fr 1fr 1fr 1fr;
- -ms-grid-rows: auto;
- grid-template-rows: auto;
- }
-
- .rec_frame_main-white {
- position: relative;
- z-index: 1;
- display: inline-block;
- width: 100%;
- margin-top: 10px;
- margin-bottom: 10px;
- padding: 5px 10px;
- border-style: solid;
- border-width: var(--border-width);
- border-color: #1eb182;
- border-radius: 10px;
- background-color: #fff;
- box-shadow: 4px 4px 0 0 rgba(88, 88, 88, 0.16);
- -webkit-transition: box-shadow 200ms ease, border-color 200ms ease;
- transition: box-shadow 200ms ease, border-color 200ms ease;
- color: #1eb182;
- text-align: center;
- cursor: pointer;
- }
-
- .rec_frame_main-white:hover {
- border-color: #c2c2c2;
- box-shadow: none;
- }
-
- .rec_frame_main-white.dotted {
- border-style: dotted;
- }
-
- .column {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -webkit-flex-direction: column;
- -ms-flex-direction: column;
- flex-direction: column;
- -webkit-box-pack: justify;
- -webkit-justify-content: space-between;
- -ms-flex-pack: justify;
- justify-content: space-between;
- -webkit-box-align: stretch;
- -webkit-align-items: stretch;
- -ms-flex-align: stretch;
- align-items: stretch;
- }
-
- .columns_center {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-orient: horizontal;
- -webkit-box-direction: normal;
- -webkit-flex-direction: row;
- -ms-flex-direction: row;
- flex-direction: row;
- -webkit-box-pack: justify;
- -webkit-justify-content: space-between;
- -ms-flex-pack: justify;
- justify-content: space-between;
- }
-
- .non-bold {
- font-weight: 400;
- }
-
- .logo-holder {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-pack: center;
- -webkit-justify-content: center;
- -ms-flex-pack: center;
- justify-content: center;
- }
-
- .infra {
- text-align: center;
- position: relative;
- z-index: 30;
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- padding: 10px;
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -webkit-flex-direction: column;
- -ms-flex-direction: column;
- flex-direction: column;
- -webkit-box-align: center;
- -webkit-align-items: center;
- -ms-flex-align: center;
- align-items: center;
- border: 1px dashed #000;
- border-radius: 6px;
- background-color: #fff;
- cursor: pointer;
- }
-
- .infra:hover {
- border-style: solid;
- border-color: #585858;
- }
-
- .text_and_icon {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-pack: center;
- -webkit-justify-content: center;
- -ms-flex-pack: center;
- justify-content: center;
- -webkit-box-align: center;
- -webkit-align-items: center;
- -ms-flex-align: center;
- align-items: center;
- }
-
- .svg_icon {
- width: 33px;
- margin-right: 10px;
- margin-left: 10px;
- }
-
- .layer_02 {
- position: absolute;
- z-index: 10;
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- width: 96%;
- height: 90%;
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -webkit-flex-direction: column;
- -ms-flex-direction: column;
- flex-direction: column;
- -webkit-box-pack: center;
- -webkit-justify-content: center;
- -ms-flex-pack: center;
- justify-content: center;
- -webkit-box-align: stretch;
- -webkit-align-items: stretch;
- -ms-flex-align: stretch;
- align-items: stretch;
- border-style: solid;
- border-width: calc (var(--border-width)*2);
- border-color: #bbbbbb50 ;
- border-radius: 100%;
- background-color: transparent;
- }
-
- .round-frame {
- position: absolute;
- left: 0%;
- top: auto;
- right: auto;
- bottom: 0%;
- z-index: 10;
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- width: 120px;
- height: 120px;
- margin: 10px;
- padding: 20px;
- -webkit-box-pack: center;
- -webkit-justify-content: center;
- -ms-flex-pack: center;
- justify-content: center;
- -webkit-box-align: center;
- -webkit-align-items: center;
- -ms-flex-align: center;
- align-items: center;
- border-style: solid;
- border-width: var(--border-width);
- border-color: #585858;
- border-radius: 100%;
- background-color: #fff;
- outline-color: #fff;
- outline-offset: 0px;
- outline-style: solid;
- outline-width: 7px;
- -webkit-transition: box-shadow 200ms ease, border-color 200ms ease;
- transition: box-shadow 200ms ease, border-color 200ms ease;
- color: #585858;
- text-align: center;
- cursor: pointer;
- }
-
- .round-frame:hover {
- border-color: #c2c2c2;
- box-shadow: none;
- }
-
- .round-frame.top-left {
- left: 4%;
- top: 15%;
- right: auto;
- bottom: auto;
- }
-
- .round-frame.bottom-left {
- left: 4%;
- bottom: 15%;
- }
-
- .round-frame.top-right {
- left: auto;
- top: 15%;
- right: 4%;
- bottom: auto;
- }
-
- .round-frame.bottom-right {
- left: auto;
- top: auto;
- right: 4%;
- bottom: 15%;
- padding: 10px;
- }
-
- .side-holder {
- z-index: -1;
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- height: 630px;
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -webkit-flex-direction: column;
- -ms-flex-direction: column;
- flex-direction: column;
- -webkit-box-pack: center;
- -webkit-justify-content: center;
- -ms-flex-pack: center;
- justify-content: center;
- }
-
- .infra-icon {
- width: 25px;
- height: 25px;
- }
-
- .div-block {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- height: 100%;
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -webkit-flex-direction: column;
- -ms-flex-direction: column;
- flex-direction: column;
- -webkit-box-pack: justify;
- -webkit-justify-content: space-between;
- -ms-flex-pack: justify;
- justify-content: space-between;
- }
-
- #w-node-a2a9b648-f5dd-74e5-e1c2-f7aaf4fa1fcd-46672785 {
- -ms-grid-column: span 1;
- grid-column-start: span 1;
- -ms-grid-column-span: 1;
- grid-column-end: span 1;
- -ms-grid-row: span 1;
- grid-row-start: span 1;
- -ms-grid-row-span: 1;
- grid-row-end: span 1;
- }
-
- #w-node-_466aa2bf-88bf-5a65-eab4-fc1eb95e7384-46672785 {
- -ms-grid-column: span 1;
- grid-column-start: span 1;
- -ms-grid-column-span: 1;
- grid-column-end: span 1;
- -ms-grid-row: span 1;
- grid-row-start: span 1;
- -ms-grid-row-span: 1;
- grid-row-end: span 1;
- }
-
- #w-node-_87009ba3-d9a6-e0b7-4cce-581190a19cf3-46672785 {
- -ms-grid-column: span 1;
- grid-column-start: span 1;
- -ms-grid-column-span: 1;
- grid-column-end: span 1;
- -ms-grid-row: span 1;
- grid-row-start: span 1;
- -ms-grid-row-span: 1;
- grid-row-end: span 1;
- }
-
- #w-node-_4a479fbb-90c7-9f47-d439-20aa6a224339-46672785 {
- -ms-grid-column: span 1;
- grid-column-start: span 1;
- -ms-grid-column-span: 1;
- grid-column-end: span 1;
- -ms-grid-row: span 1;
- grid-row-start: span 1;
- -ms-grid-row-span: 1;
- grid-row-end: span 1;
- }
-
-
- /*
-
-
- inherited from the original template
-
- */
-
- .w-container .w-row {
- margin-left: -10px;
- margin-right: -10px;
- }
- .w-row:before,
- .w-row:after {
- content: " ";
- display: table;
- grid-column-start: 1;
- grid-row-start: 1;
- grid-column-end: 2;
- grid-row-end: 2;
- }
- .w-row:after {
- clear: both;
- }
- .w-row .w-row {
- margin-left: 0;
- margin-right: 0;
- }
- .w-col {
- position: relative;
- float: left;
- width: 100%;
- min-height: 1px;
- padding-left: 10px;
- padding-right: 10px;
- }
- .w-col .w-col {
- padding-left: 0;
- padding-right: 0;
- }
- .w-col-1 {
- width: 8.33333333%;
- }
- .w-col-2 {
- width: 16.66666667%;
- }
- .w-col-3 {
- width: 25%;
- }
- .w-col-4 {
- width: 33.33333333%;
- }
- .w-col-5 {
- width: 41.66666667%;
- }
- .w-col-6 {
- width: 50%;
- }
- .w-col-7 {
- width: 58.33333333%;
- }
- .w-col-8 {
- width: 66.66666667%;
- }
- .w-col-9 {
- width: 75%;
- }
- .w-col-10 {
- width: 83.33333333%;
- }
- .w-col-11 {
- width: 91.66666667%;
- }
- .w-col-12 {
- width: 100%;
- }
- .w-hidden-main {
- display: none !important;
- }
- @media screen and (max-width: 991px) {
- .w-container {
- max-width: 728px;
- }
- .w-hidden-main {
- display: inherit !important;
- }
- .w-hidden-medium {
- display: none !important;
- }
- .w-col-medium-1 {
- width: 8.33333333%;
- }
- .w-col-medium-2 {
- width: 16.66666667%;
- }
- .w-col-medium-3 {
- width: 25%;
- }
- .w-col-medium-4 {
- width: 33.33333333%;
- }
- .w-col-medium-5 {
- width: 41.66666667%;
- }
- .w-col-medium-6 {
- width: 50%;
- }
- .w-col-medium-7 {
- width: 58.33333333%;
- }
- .w-col-medium-8 {
- width: 66.66666667%;
- }
- .w-col-medium-9 {
- width: 75%;
- }
- .w-col-medium-10 {
- width: 83.33333333%;
- }
- .w-col-medium-11 {
- width: 91.66666667%;
- }
- .w-col-medium-12 {
- width: 100%;
- }
- .w-col-stack {
- width: 100%;
- left: auto;
- right: auto;
- }
- }
- @media screen and (max-width: 767px) {
- .w-hidden-main {
- display: inherit !important;
- }
- .w-hidden-medium {
- display: inherit !important;
- }
- .w-hidden-small {
- display: none !important;
- }
- .w-row,
- .w-container .w-row {
- margin-left: 0;
- margin-right: 0;
- }
- .w-col {
- width: 100%;
- left: auto;
- right: auto;
- }
- .w-col-small-1 {
- width: 8.33333333%;
- }
- .w-col-small-2 {
- width: 16.66666667%;
- }
- .w-col-small-3 {
- width: 25%;
- }
- .w-col-small-4 {
- width: 33.33333333%;
- }
- .w-col-small-5 {
- width: 41.66666667%;
- }
- .w-col-small-6 {
- width: 50%;
- }
- .w-col-small-7 {
- width: 58.33333333%;
- }
- .w-col-small-8 {
- width: 66.66666667%;
- }
- .w-col-small-9 {
- width: 75%;
- }
- .w-col-small-10 {
- width: 83.33333333%;
- }
- .w-col-small-11 {
- width: 91.66666667%;
- }
- .w-col-small-12 {
- width: 100%;
- }
- }
- @media screen and (max-width: 479px) {
- .w-container {
- max-width: none;
- }
- .w-hidden-main {
- display: inherit !important;
- }
- .w-hidden-medium {
- display: inherit !important;
- }
- .w-hidden-small {
- display: inherit !important;
- }
- .w-hidden-tiny {
- display: none !important;
- }
- .w-col {
- width: 100%;
- }
- .w-col-tiny-1 {
- width: 8.33333333%;
- }
- .w-col-tiny-2 {
- width: 16.66666667%;
- }
- .w-col-tiny-3 {
- width: 25%;
- }
- .w-col-tiny-4 {
- width: 33.33333333%;
- }
- .w-col-tiny-5 {
- width: 41.66666667%;
- }
- .w-col-tiny-6 {
- width: 50%;
- }
- .w-col-tiny-7 {
- width: 58.33333333%;
- }
- .w-col-tiny-8 {
- width: 66.66666667%;
- }
- .w-col-tiny-9 {
- width: 75%;
- }
- .w-col-tiny-10 {
- width: 83.33333333%;
- }
- .w-col-tiny-11 {
- width: 91.66666667%;
- }
- .w-col-tiny-12 {
- width: 100%;
- }
- }
diff --git a/hsml/docs/css/version-select.css b/hsml/docs/css/version-select.css
deleted file mode 100644
index 3b908ae84..000000000
--- a/hsml/docs/css/version-select.css
+++ /dev/null
@@ -1,36 +0,0 @@
-@media only screen and (max-width:76.1875em) {
-}
-
-#version-selector select.form-control {
- appearance: none;
- -webkit-appearance: none;
- -moz-appearance: none;
-
- background-color: #F5F5F5;
-
- background-position: center right;
- background-repeat: no-repeat;
- border: 0px;
- border-radius: 2px;
- /* box-shadow: 0px 1px 3px rgb(0 0 0 / 10%); */
- color: inherit;
- width: -webkit-fill-available;
- width: -moz-available;
- max-width: 200px;
- font-size: inherit;
- /* font-weight: 600; */
- margin: 10px;
- overflow: hidden;
- padding: 7px 10px;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-
-#version-selector::after {
- content: '⌄';
- font-family: inherit;
- font-size: 22px;
- margin: -35px;
- vertical-align: 7%;
- padding-bottom: 10px;
-}
diff --git a/hsml/docs/index.md b/hsml/docs/index.md
deleted file mode 100644
index ee835ddc7..000000000
--- a/hsml/docs/index.md
+++ /dev/null
@@ -1,141 +0,0 @@
-# Hopsworks Model Management
-
-
-
-
-
-
-
-
-
-
-
-
-HSML is the library to interact with the Hopsworks Model Registry and Model Serving. The library makes it easy to export, manage and deploy models.
-
-However, to connect from an external Python environment additional connection information, such as host and port, is required.
-
-## Getting Started On Hopsworks
-
-Get started easily by registering an account on [Hopsworks Serverless](https://app.hopsworks.ai/). Create your project and a [new Api key](https://docs.hopsworks.ai/latest/user_guides/projects/api_key/create_api_key/). In a new python environment with Python 3.8 or higher, install the [client library](https://docs.hopsworks.ai/latest/user_guides/client_installation/) using pip:
-
-```bash
-# Get all Hopsworks SDKs: Feature Store, Model Serving and Platform SDK
-pip install hopsworks
-# or just the Model Registry and Model Serving SDK
-pip install hsml
-```
-
-You can start a notebook and instantiate a connection and get the project feature store handler.
-
-```python
-import hopsworks
-
-project = hopsworks.login() # you will be prompted for your api key
-
-mr = project.get_model_registry()
-# or
-ms = project.get_model_serving()
-```
-
-or using `hsml` directly:
-
-```python
-import hsml
-
-connection = hsml.connection(
- host="c.app.hopsworks.ai", #
- project="your-project",
- api_key_value="your-api-key",
-)
-
-mr = connection.get_model_registry()
-# or
-ms = connection.get_model_serving()
-```
-
-Create a new model
-```python
-model = mr.tensorflow.create_model(name="mnist",
- version=1,
- metrics={"accuracy": 0.94},
- description="mnist model description")
-model.save("/tmp/model_directory") # or /tmp/model_file
-```
-
-Download a model
-```python
-model = mr.get_model("mnist", version=1)
-
-model_path = model.download()
-```
-
-Delete a model
-```python
-model.delete()
-```
-
-Get best performing model
-```python
-best_model = mr.get_best_model('mnist', 'accuracy', 'max')
-
-```
-
-Deploy a model
-```python
-deployment = model.deploy()
-```
-
-Start a deployment
-```python
-deployment.start()
-```
-
-Make predictions with a deployed model
-```python
-data = { "instances": [ model.input_example ] }
-
-predictions = deployment.predict(data)
-```
-
-# Tutorials
-
-You can find more examples on how to use the library in our [tutorials](https://github.com/logicalclocks/hopsworks-tutorials).
-
-## Documentation
-
-Documentation is available at [Hopsworks Model Management Documentation](https://docs.hopsworks.ai/).
-
-## Issues
-
-For general questions about the usage of Hopsworks Machine Learning please open a topic on [Hopsworks Community](https://community.hopsworks.ai/).
-Please report any issue using [Github issue tracking](https://github.com/logicalclocks/machine-learning-api/issues).
-
-
-## Contributing
-
-If you would like to contribute to this library, please see the [Contribution Guidelines](CONTRIBUTING.md).
diff --git a/hsml/docs/js/dropdown.js b/hsml/docs/js/dropdown.js
deleted file mode 100644
index b897ba36a..000000000
--- a/hsml/docs/js/dropdown.js
+++ /dev/null
@@ -1,2 +0,0 @@
-document.getElementsByClassName("md-tabs__link")[7].style.display = "none";
-document.getElementsByClassName("md-tabs__link")[9].style.display = "none";
\ No newline at end of file
diff --git a/hsml/docs/js/inject-api-links.js b/hsml/docs/js/inject-api-links.js
deleted file mode 100644
index 6c8a4a3b3..000000000
--- a/hsml/docs/js/inject-api-links.js
+++ /dev/null
@@ -1,31 +0,0 @@
-window.addEventListener("DOMContentLoaded", function () {
- var windowPathNameSplits = window.location.pathname.split("/");
- var majorVersionRegex = new RegExp("(\\d+[.]\\d+)")
- var latestRegex = new RegExp("latest");
- if (majorVersionRegex.test(windowPathNameSplits[1])) { // On landing page docs.hopsworks.api/3.0 - URL contains major version
- // Version API dropdown
- document.getElementById("hopsworks_api_link").href = "https://docs.hopsworks.ai/hopsworks-api/" + windowPathNameSplits[1] + "/generated/api/login/";
- document.getElementById("hsfs_api_link").href = "https://docs.hopsworks.ai/feature-store-api/" + windowPathNameSplits[1] + "/generated/api/connection_api/";
- document.getElementById("hsml_api_link").href = "https://docs.hopsworks.ai/machine-learning-api/" + windowPathNameSplits[1] + "/generated/connection_api/";
- } else { // on docs.hopsworks.api/feature-store-api/3.0 / docs.hopsworks.api/hopsworks-api/3.0 / docs.hopsworks.api/machine-learning-api/3.0
- if (latestRegex.test(windowPathNameSplits[2]) || latestRegex.test(windowPathNameSplits[1])) {
- var majorVersion = "latest";
- } else {
- var apiVersion = windowPathNameSplits[2];
- var majorVersion = apiVersion.match(majorVersionRegex)[0];
- }
- // Version main navigation
- document.getElementsByClassName("md-tabs__link")[0].href = "https://docs.hopsworks.ai/" + majorVersion;
- document.getElementsByClassName("md-tabs__link")[1].href = "https://colab.research.google.com/github/logicalclocks/hopsworks-tutorials/blob/master/quickstart.ipynb";
- document.getElementsByClassName("md-tabs__link")[2].href = "https://docs.hopsworks.ai/" + majorVersion + "/tutorials/";
- document.getElementsByClassName("md-tabs__link")[3].href = "https://docs.hopsworks.ai/" + majorVersion + "/concepts/hopsworks/";
- document.getElementsByClassName("md-tabs__link")[4].href = "https://docs.hopsworks.ai/" + majorVersion + "/user_guides/";
- document.getElementsByClassName("md-tabs__link")[5].href = "https://docs.hopsworks.ai/" + majorVersion + "/setup_installation/aws/getting_started/";
- document.getElementsByClassName("md-tabs__link")[6].href = "https://docs.hopsworks.ai/" + majorVersion + "/admin/";
- // Version API dropdown
- document.getElementById("hopsworks_api_link").href = "https://docs.hopsworks.ai/hopsworks-api/" + majorVersion + "/generated/api/login/";
- document.getElementById("hsfs_api_link").href = "https://docs.hopsworks.ai/feature-store-api/" + majorVersion + "/generated/api/connection_api/";
- document.getElementById("hsfs_javadoc_link").href = "https://docs.hopsworks.ai/feature-store-api/" + majorVersion + "/javadoc";
- document.getElementById("hsml_api_link").href = "https://docs.hopsworks.ai/machine-learning-api/" + majorVersion + "/generated/connection_api/";
- }
-});
diff --git a/hsml/docs/js/version-select.js b/hsml/docs/js/version-select.js
deleted file mode 100644
index 9c8331660..000000000
--- a/hsml/docs/js/version-select.js
+++ /dev/null
@@ -1,64 +0,0 @@
-window.addEventListener("DOMContentLoaded", function() {
- // This is a bit hacky. Figure out the base URL from a known CSS file the
- // template refers to...
- var ex = new RegExp("/?css/version-select.css$");
- var sheet = document.querySelector('link[href$="version-select.css"]');
-
- var ABS_BASE_URL = sheet.href.replace(ex, "");
- var CURRENT_VERSION = ABS_BASE_URL.split("/").pop();
-
- function makeSelect(options, selected) {
- var select = document.createElement("select");
- select.classList.add("form-control");
-
- options.forEach(function(i) {
- var option = new Option(i.text, i.value, undefined,
- i.value === selected);
- select.add(option);
- });
-
- return select;
- }
-
- var xhr = new XMLHttpRequest();
- xhr.open("GET", ABS_BASE_URL + "/../versions.json");
- xhr.onload = function() {
- var versions = JSON.parse(this.responseText);
-
- var realVersion = versions.find(function(i) {
- return i.version === CURRENT_VERSION ||
- i.aliases.includes(CURRENT_VERSION);
- }).version;
- var latestVersion = versions.find(function(i) {
- return i.aliases.includes("latest");
- }).version;
- let outdated_banner = document.querySelector('div[data-md-color-scheme="default"][data-md-component="outdated"]');
- if (realVersion !== latestVersion) {
- outdated_banner.removeAttribute("hidden");
- } else {
- outdated_banner.setAttribute("hidden", "");
- }
-
- var select = makeSelect(versions.map(function(i) {
- var allowedAliases = ["dev", "latest"]
- if (i.aliases.length > 0) {
- var aliasString = " [" + i.aliases.filter(function (str) { return allowedAliases.includes(str); }).join(", ") + "]";
- } else {
- var aliasString = "";
- }
- return {text: i.title + aliasString, value: i.version};
- }), realVersion);
- select.addEventListener("change", function(event) {
- window.location.href = ABS_BASE_URL + "/../" + this.value + "/generated/connection_api/";
- });
-
- var container = document.createElement("div");
- container.id = "version-selector";
- // container.className = "md-nav__item";
- container.appendChild(select);
-
- var sidebar = document.querySelector(".md-nav--primary > .md-nav__list");
- sidebar.parentNode.insertBefore(container, sidebar.nextSibling);
- };
- xhr.send();
-});
diff --git a/hsml/docs/overrides/main.html b/hsml/docs/overrides/main.html
deleted file mode 100644
index a1bc45bb5..000000000
--- a/hsml/docs/overrides/main.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{% extends "base.html" %}
-
-{% block outdated %}
-You're not viewing the latest version of the documentation.
-
- Click here to go to latest.
-
-{% endblock %}
\ No newline at end of file
diff --git a/hsml/mkdocs.yml b/hsml/mkdocs.yml
deleted file mode 100644
index f20a7b1c5..000000000
--- a/hsml/mkdocs.yml
+++ /dev/null
@@ -1,120 +0,0 @@
-site_name: "Hopsworks Documentation"
-site_description: "Official documentation for Hopsworks and its Feature Store - an open source data-intensive AI platform used for the development and operation of machine learning models at scale."
-site_author: "Logical Clocks"
-site_url: "https://docs.hopsworks.ai/machine-learning-api/latest"
-
-# Repository
-repo_name: logicalclocks/hopsworks
-repo_url: https://github.com/logicalclocks/hopsworks
-edit_uri: ""
-
-nav:
- - Home: https://docs.hopsworks.ai/
- - Getting Started ↗: https://docs.hopsworks.ai/
- - Tutorials: https://docs.hopsworks.ai/
- - Concepts: https://docs.hopsworks.ai/
- - Guides: https://docs.hopsworks.ai/
- - Setup and Installation: https://docs.hopsworks.ai/
- - Administration: https://docs.hopsworks.ai/
- - API
:
- - API Reference:
- - Connection: generated/connection_api.md
- - Model Registry:
- - Model Registry: generated/model-registry/model_registry_api.md
- - Model: generated/model-registry/model_api.md
- - Model Schema: generated/model-registry/model_schema_api.md
- - Model Serving:
- - Model Serving: generated/model-serving/model_serving_api.md
- - Deployment: generated/model-serving/deployment_api.md
- - Deployment state: generated/model-serving/predictor_state_api.md
- - Deployment state condition: generated/model-serving/predictor_state_condition_api.md
- - Predictor: generated/model-serving/predictor_api.md
- - Transformer: generated/model-serving/transformer_api.md
- - Inference Logger: generated/model-serving/inference_logger_api.md
- - Inference Batcher: generated/model-serving/inference_batcher_api.md
- - Resources: generated/model-serving/resources_api.md
- # Added to allow navigation using the side drawer
- - Hopsworks API: https://docs.hopsworks.ai/
- - Feature Store API: https://docs.hopsworks.ai/
- - Feature Store JavaDoc: https://docs.hopsworks.ai/
- - Contributing: CONTRIBUTING.md
- - Community ↗: https://community.hopsworks.ai/
-
-theme:
- name: material
- custom_dir: docs/overrides
- favicon: assets/images/favicon.ico
- logo: assets/images/hops-logo.png
- icon:
- repo: fontawesome/brands/github
- font:
- text: "Roboto"
- code: "IBM Plex Mono"
- palette:
- accent: teal
- scheme: hopsworks
- features:
- - navigation.tabs
- - navigation.tabs.sticky
- - navigation.expand
-
-
-extra:
- analytics:
- provider: google
- property: G-64FEEXPSDN
- generator: false
- version:
- - provider: mike
- - version: latest
- social:
- - icon: fontawesome/brands/twitter
- link: https://twitter.com/hopsworks
- - icon: fontawesome/brands/github
- link: https://github.com/logicalclocks/hopsworks
- - icon: fontawesome/brands/discourse
- link: https://community.hopsworks.ai/
- - icon: fontawesome/brands/linkedin
- link: https://www.linkedin.com/company/hopsworks/
-
-extra_css:
- - css/custom.css
- - css/version-select.css
- - css/dropdown.css
- - css/marctech.css
-
-extra_javascript:
- - js/version-select.js
- - js/inject-api-links.js
- - js/dropdown.js
-
-plugins:
- - search
- - minify:
- minify_html: true
- minify_css: true
- minify_js: true
- - mike:
- canonical_version: latest
-
-markdown_extensions:
- - admonition
- - codehilite
- - footnotes
- - pymdownx.tabbed:
- alternate_style: true
- - pymdownx.arithmatex
- - pymdownx.superfences
- - pymdownx.details
- - pymdownx.caret
- - pymdownx.mark
- - pymdownx.tilde
- - pymdownx.critic
- - attr_list
- - md_in_html
- - toc:
- permalink: "#"
- - pymdownx.tasklist:
- custom_checkbox: true
- - markdown_include.include:
- base_path: docs
diff --git a/hsml/requirements-docs.txt b/hsml/requirements-docs.txt
deleted file mode 100644
index d1499a262..000000000
--- a/hsml/requirements-docs.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-mkdocs==1.5.3
-mkdocs-material==9.5.17
-mike==2.0.0
-sphinx==7.2.6
-keras_autodoc @ git+https://git@github.com/logicalclocks/keras-autodoc
-markdown-include==0.8.1
-mkdocs-jupyter==0.24.3
-markdown==3.6
-pymdown-extensions==10.7.1
-mkdocs-macros-plugin==1.0.4
-mkdocs-minify-plugin>=0.2.0
diff --git a/mkdocs.yml b/mkdocs.yml
index 4b7642b85..f59e2e4bc 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -34,8 +34,7 @@ nav:
- KafkaSchema: generated/api/kafka_schema.md
- Secrets: generated/api/secrets.md
- OpenSearch: generated/api/opensearch.md
- - Feature Store API Reference:
- - Connection: generated/api/connection_api.md
+ - Connection (HSFS): generated/api/connection_api.md
- ExpectationSuite: generated/api/expectation_suite_api.md
- FeatureStore: generated/api/feature_store_api.md
- FeatureGroup: generated/api/feature_group_api.md
@@ -62,6 +61,21 @@ nav:
- EmbeddingIndex: generated/api/embedding_index_api.md
- EmbeddingFeature: generated/api/embedding_feature_api.md
- SimilarityFunctionType: generated/api/similarity_function_type_api.md
+ - Connection (HSML): generated/connection_api.md
+ - Model Registry:
+ - Model Registry: generated/model-registry/model_registry_api.md
+ - Model: generated/model-registry/model_api.md
+ - Model Schema: generated/model-registry/model_schema_api.md
+ - Model Serving:
+ - Model Serving: generated/model-serving/model_serving_api.md
+ - Deployment: generated/model-serving/deployment_api.md
+ - Deployment state: generated/model-serving/predictor_state_api.md
+ - Deployment state condition: generated/model-serving/predictor_state_condition_api.md
+ - Predictor: generated/model-serving/predictor_api.md
+ - Transformer: generated/model-serving/transformer_api.md
+ - Inference Logger: generated/model-serving/inference_logger_api.md
+ - Inference Batcher: generated/model-serving/inference_batcher_api.md
+ - Resources: generated/model-serving/resources_api.md
# Added to allow navigation using the side drawer
- Hopsworks API: https://docs.hopsworks.ai/hopsworks-api/latest/
- Feature Store JavaDoc: https://docs.hopsworks.ai/feature-store-javadoc/latest/