diff --git a/doc/changelog.rst b/doc/changelog.rst index 4fbf1f7..1fefa2f 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -6,12 +6,14 @@ Development branch Description +- Bump version to 0.0.4, exclude streamlit version 1.31.X (SmartDashboard-PR50_) - Drop Python 3.8 support, add 3.11 support. (SmartDashboard-PR49_) - Add Database Telemetry page. (SmartDashboard-PR38_) - Add Github Actions workflow that checks if changelog is edited on pull requests into develop. (SmartDashboard-PR47_) - Add manifest file tracking. (SmartDashboard-PR46_) +.. _SmartDashboard-PR50: https://github.com/CrayLabs/SmartDashboard/pull/50 .. _SmartDashboard-PR49: https://github.com/CrayLabs/SmartDashboard/pull/49 .. _SmartDashboard-PR38: https://github.com/CrayLabs/SmartDashboard/pull/38 .. _SmartDashboard-PR47: https://github.com/CrayLabs/SmartDashboard/pull/47 diff --git a/doc/conf.py b/doc/conf.py index 997438b..6346452 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -22,7 +22,7 @@ author = 'Hewlett Packard Enterprise' # The full version, including alpha/beta/rc tags -version = "0.0.3" +version = "0.0.4" # The full version, including alpha/beta/rc tags release = version diff --git a/pyproject.toml b/pyproject.toml index 760f5b3..8201411 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ build-backend = "setuptools.build_meta" [project] name = "smartdashboard" -version = "0.0.3" +version = "0.0.4" requires-python = ">=3.9,<3.12" authors = [ {name = "CrayLabs: a Hewlett Packard Enterprise OSS Organization", email = "craylabs@hpe.com"}, @@ -53,7 +53,7 @@ dependencies = [ "altair>=5.2.0", "pandas>=2.0.0", "pydantic>=2.5.2", - "streamlit>=1.28.0, <1.31.0", + "streamlit>=1.28.0, !=1.31.0, !=1.31.1", "watchdog>=3.0.0", ] diff --git a/smartdashboard/utils/ManifestReader.py b/smartdashboard/utils/ManifestReader.py index cffe07c..2236b01 100644 --- a/smartdashboard/utils/ManifestReader.py +++ b/smartdashboard/utils/ManifestReader.py @@ -102,9 +102,9 @@ def __init__(self, file_path: pathlib.Path) -> None: "Version data is malformed.", file=str(self._file_path), exception=key ) from key - if version not in ("0.0.2", "0.0.3"): + if version not in ("0.0.2", "0.0.3", "0.0.4"): version_exception = Exception( - "SmartDashboard version 0.0.3 is unable to parse manifest " + "SmartDashboard version 0.0.4 is unable to parse manifest " f"file at version {version}." ) raise VersionIncompatibilityError( diff --git a/tests/test_ManifestReader/test_manifestfilereader_create_filereader.py b/tests/test_ManifestReader/test_manifestfilereader_create_filereader.py index 9e7a848..ccd07bb 100644 --- a/tests/test_ManifestReader/test_manifestfilereader_create_filereader.py +++ b/tests/test_ManifestReader/test_manifestfilereader_create_filereader.py @@ -40,6 +40,10 @@ "tests/utils/manifest_files/0.0.2_manifest.json", ManifestFileReader, ), + pytest.param( + "tests/utils/manifest_files/0.0.3_manifest.json", + ManifestFileReader, + ), pytest.param( "tests/utils/manifest_files/no_apps_manifest.json", ManifestFileReader, diff --git a/tests/test_ManifestReader/test_manifestfilereader_get_manifest.py b/tests/test_ManifestReader/test_manifestfilereader_get_manifest.py index 25a221c..f14a8b9 100644 --- a/tests/test_ManifestReader/test_manifestfilereader_get_manifest.py +++ b/tests/test_ManifestReader/test_manifestfilereader_get_manifest.py @@ -69,6 +69,14 @@ 3, Manifest, ), + pytest.param( + "tests/utils/manifest_files/0.0.3_manifest.json", + 1, + 2, + 1, + 1, + Manifest, + ), ], ) def test_get_manifest( diff --git a/tests/utils/manifest_files/0.0.3_manifest.json b/tests/utils/manifest_files/0.0.3_manifest.json new file mode 100644 index 0000000..a98bbb3 --- /dev/null +++ b/tests/utils/manifest_files/0.0.3_manifest.json @@ -0,0 +1,329 @@ +{ + "schema info": { + "schema_name": "entity manifest", + "version": "0.0.3" + }, + "experiment": { + "name": "my-experiment", + "path": "experiment/path", + "launcher": "local", + "out_file": "tests/utils/log_files/model_0.out", + "err_file": "tests/utils/log_files/model_0.err" + }, + "runs": [ + { + "run_id": "1", + "model": [ + { + "name": "app1", + "path": "app/1/path", + "exe_args": [ + "string" + ], + "batch_settings": { + "batch_cmd": "command", + "batch_args": { + "arg1": "string1", + "arg2": null + } + }, + "run_settings": { + "exe": "echo", + "run_command": "srun", + "run_args": { + "arg1": "string1", + "arg2": null + } + }, + "params": { + "param": "param value" + }, + "files": { + "Symlink": [ + "file1", + "file2" + ], + "Configure": [ + "file3" + ], + "Copy": [ + "file4", + "file5" + ] + }, + "colocated_db": { + "settings": { + "protocol": "TCP/IP", + "port": 1111, + "interface": "lo", + "db_cpus": 1, + "limit_app_cpus": "True", + "debug": "False" + }, + "scripts": [ + { + "script1": { + "backend": "script1_torch", + "device": "script1_cpu" + } + }, + { + "script2": { + "backend": "script2_torch", + "device": "script2_gpu" + } + } + ], + "models": [ + { + "model1": { + "backend": "model1_tf", + "device": "model1_cpu" + } + }, + { + "model2": { + "backend": "model2_tf", + "device": "model2_cpu" + } + } + ] + }, + "telemetry_metadata": { + "status_dir": "tests/utils/status_files/model_0", + "job_id": "111", + "step_id": "111" + }, + "out_file": "tests/utils/log_files/model_0.out", + "err_file": "tests/utils/log_files/model_0.err" + }, + { + "name": "app2", + "path": "app/2/path", + "exe_args": [ + "string1", + "string2", + "string3" + ], + "batch_settings": { + "batch_cmd": "command", + "batch_args": { + "arg1": "string1", + "arg2": null + } + }, + "run_settings": { + "exe": "echo", + "run_command": "srun", + "run_args": { + "arg1": "string1", + "arg2": null + } + }, + "params": { + "string": [ + "Any" + ] + }, + "files": { + "Symlink": [ + "file1", + "file2" + ], + "Configure": [ + "file3" + ], + "Copy": [ + "file4", + "file5" + ] + }, + "colocated_db": { + "settings": { + "protocol": "TCP/IP", + "port": 1111, + "interface": "lo", + "db_cpus": 1, + "limit_app_cpus": "True", + "debug": "False" + }, + "scripts": [ + { + "script1": { + "backend": "script1_torch", + "device": "script1_cpu" + } + }, + { + "script2": { + "backend": "script2_torch", + "device": "script2_gpu" + } + } + ], + "models": [ + { + "model1": { + "backend": "model1_tf", + "device": "model1_cpu" + } + }, + { + "model2": { + "backend": "model2_tf", + "device": "model2_cpu" + } + } + ] + }, + "telemetry_metadata": { + "status_dir": "tests/utils/status_files/model_1", + "job_id": "111", + "step_id": "111" + }, + "out_file": "tests/utils/log_files/model_1.out", + "err_file": "tests/utils/log_files/model_1.err" + } + ], + "orchestrator": [ + { + "name": "orchestrator_1", + "type": "redis", + "interface": [ + "lo", + "lo2" + ], + "shards": [ + { + "name": "shard 1", + "hostname": "shard1_host", + "port": "11111", + "out_file": "tests/utils/log_files/model_1.out", + "err_file": "tests/utils/log_files/model_1.err", + "conf_file": "/path/to/conf_file", + "telemetry_metadata": { + "status_dir": "tests/utils/status_files/model_3", + "job_id": "111", + "step_id": "111" + } + + }, + { + "name": "shard 2", + "hostname": "shard2_host", + "port": "11111", + "out_file": "tests/utils/log_files/model_0.out", + "err_file": "tests/utils/log_files/model_0.err", + "conf_file": "/path/to/conf_file", + "telemetry_metadata": { + "status_dir": "tests/utils/status_files/model_1", + "job_id": "111", + "step_id": "111" + } + } + ] + } + ], + "ensemble": [ + { + "name": "ensemble_1", + "perm_strat": "string0", + "batch_settings": { + "string": "Any0" + }, + "params": { + "string": [ + "Any1", + "Any3" + ] + }, + "models": [ + { + "name": "ensemble_1_member_1", + "path": "string", + "exe_args": [ + "string" + ], + "batch_settings": { + "batch_cmd": "command", + "batch_args": { + "arg1": "string1", + "arg2": null + } + }, + "run_settings": { + "exe": "echo", + "run_command": "srun", + "run_args": { + "arg1": "string1", + "arg2": null + } + }, + "params": { + "string": "Any" + }, + "files": { + "Symlink": [ + "file1", + "file2" + ], + "Configure": [ + "file3" + ], + "Copy": [ + "file4", + "file5" + ] + }, + "colocated_db": { + "settings": { + "protocol": "TCP/IP", + "port": 1111, + "interface": "lo", + "db_cpus": 1, + "limit_app_cpus": "True", + "debug": "False" + }, + "scripts": [ + { + "script1": { + "backend": "script1_torch", + "device": "script1_cpu" + } + }, + { + "script2": { + "backend": "script2_torch", + "device": "script2_gpu" + } + } + ], + "models": [ + { + "model1": { + "backend": "model1_tf", + "device": "model1_cpu" + } + }, + { + "model2": { + "backend": "model2_tf", + "device": "model2_cpu" + } + } + ] + }, + "telemetry_metadata": { + "status_dir": "tests/utils/status_files/model_0", + "job_id": "111", + "step_id": "111" + }, + "out_file": "tests/utils/log_files/model_0.out", + "err_file": "tests/utils/log_files/model_0.err" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/utils/manifest_files/JSONDecodererror.json b/tests/utils/manifest_files/JSONDecodererror.json index 8b1af9e..515a936 100644 --- a/tests/utils/manifest_files/JSONDecodererror.json +++ b/tests/utils/manifest_files/JSONDecodererror.json @@ -1,7 +1,7 @@ "schema info" : { "schema_name" : "entity manifest", - "version" : "0.0.3" + "version" : "0.0.4" }, "experiment" : {}, "runs": [] diff --git a/tests/utils/manifest_files/exp_telem_disabled_manifest.json b/tests/utils/manifest_files/exp_telem_disabled_manifest.json index 1b2d096..2fe6c9b 100644 --- a/tests/utils/manifest_files/exp_telem_disabled_manifest.json +++ b/tests/utils/manifest_files/exp_telem_disabled_manifest.json @@ -1,7 +1,7 @@ { "schema info": { "schema_name": "entity manifest", - "version": "0.0.3" + "version": "0.0.4" }, "experiment": { "name": "my-experiment", diff --git a/tests/utils/manifest_files/fauxexp/.smartsim/telemetry/manifest.json b/tests/utils/manifest_files/fauxexp/.smartsim/telemetry/manifest.json index 73c8c1c..648797c 100644 --- a/tests/utils/manifest_files/fauxexp/.smartsim/telemetry/manifest.json +++ b/tests/utils/manifest_files/fauxexp/.smartsim/telemetry/manifest.json @@ -1,7 +1,7 @@ { "schema info": { "schema_name": "entity manifest", - "version": "0.0.3" + "version": "0.0.4" }, "experiment": { "name": "my-experiment", diff --git a/tests/utils/manifest_files/malformed_apps.json b/tests/utils/manifest_files/malformed_apps.json index 5bfe460..3275719 100644 --- a/tests/utils/manifest_files/malformed_apps.json +++ b/tests/utils/manifest_files/malformed_apps.json @@ -1,7 +1,7 @@ { "schema info": { "schema_name": "entity manifest", - "version": "0.0.3" + "version": "0.0.4" }, "experiment": { "name": "my-experiment", diff --git a/tests/utils/manifest_files/malformed_ensembles.json b/tests/utils/manifest_files/malformed_ensembles.json index c8054ea..526807e 100644 --- a/tests/utils/manifest_files/malformed_ensembles.json +++ b/tests/utils/manifest_files/malformed_ensembles.json @@ -1,7 +1,7 @@ { "schema info": { "schema_name": "entity manifest", - "version": "0.0.3" + "version": "0.0.4" }, "experiment": { "name": "my-experiment", diff --git a/tests/utils/manifest_files/malformed_orcs.json b/tests/utils/manifest_files/malformed_orcs.json index 0cc955a..0e7d05b 100644 --- a/tests/utils/manifest_files/malformed_orcs.json +++ b/tests/utils/manifest_files/malformed_orcs.json @@ -1,7 +1,7 @@ { "schema info": { "schema_name": "entity manifest", - "version": "0.0.3" + "version": "0.0.4" }, "experiment": { "name": "my-experiment", diff --git a/tests/utils/manifest_files/manifesttest.json b/tests/utils/manifest_files/manifesttest.json index 73c8c1c..648797c 100644 --- a/tests/utils/manifest_files/manifesttest.json +++ b/tests/utils/manifest_files/manifesttest.json @@ -1,7 +1,7 @@ { "schema info": { "schema_name": "entity manifest", - "version": "0.0.3" + "version": "0.0.4" }, "experiment": { "name": "my-experiment", diff --git a/tests/utils/manifest_files/no_apps_manifest.json b/tests/utils/manifest_files/no_apps_manifest.json index d54fd7c..0ce897c 100644 --- a/tests/utils/manifest_files/no_apps_manifest.json +++ b/tests/utils/manifest_files/no_apps_manifest.json @@ -1,7 +1,7 @@ { "schema info": { "schema_name": "entity manifest", - "version": "0.0.3" + "version": "0.0.4" }, "experiment": { "name": "my-experiment", diff --git a/tests/utils/manifest_files/no_ensembles_manifest.json b/tests/utils/manifest_files/no_ensembles_manifest.json index 5caaead..175cf4e 100644 --- a/tests/utils/manifest_files/no_ensembles_manifest.json +++ b/tests/utils/manifest_files/no_ensembles_manifest.json @@ -1,7 +1,7 @@ { "schema info": { "schema_name": "entity manifest", - "version": "0.0.3" + "version": "0.0.4" }, "experiment": { "name": "my-experiment", diff --git a/tests/utils/manifest_files/no_experiment_manifest.json b/tests/utils/manifest_files/no_experiment_manifest.json index 062a9f1..f83e058 100644 --- a/tests/utils/manifest_files/no_experiment_manifest.json +++ b/tests/utils/manifest_files/no_experiment_manifest.json @@ -1,7 +1,7 @@ { "schema info" : { "schema_name" : "entity manifest", - "version" : "0.0.3" + "version" : "0.0.4" }, "experiment" : {}, "runs": [] diff --git a/tests/utils/manifest_files/no_orchestrator_manifest.json b/tests/utils/manifest_files/no_orchestrator_manifest.json index 9b08488..c2816ab 100644 --- a/tests/utils/manifest_files/no_orchestrator_manifest.json +++ b/tests/utils/manifest_files/no_orchestrator_manifest.json @@ -1,7 +1,7 @@ { "schema info": { "schema_name": "entity manifest", - "version": "0.0.3" + "version": "0.0.4" }, "experiment": { "name": "my-experiment", diff --git a/tests/utils/manifest_files/no_running.json b/tests/utils/manifest_files/no_running.json index 2145151..ed61bf9 100644 --- a/tests/utils/manifest_files/no_running.json +++ b/tests/utils/manifest_files/no_running.json @@ -1,7 +1,7 @@ { "schema info": { "schema_name": "entity manifest", - "version": "0.0.3" + "version": "0.0.4" }, "experiment": { "name": "my-experiment",