diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c7610f..a6d0f37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning]. ## [Unreleased] +## [0.0.26] - 2025-07-11 + +### Changed in 0.0.26 + +- Rename some methods changed in the Python SDK + ## [0.0.25] - 2025-06-21 ### Removed in 0.0.25 diff --git a/development-requirements.txt b/development-requirements.txt index daae8ce..4cc9568 100644 --- a/development-requirements.txt +++ b/development-requirements.txt @@ -17,7 +17,7 @@ sphinx-jinja2-compat==0.3.0 sphinx-prompt==1.9.0 sphinxext-remoteliteralinclude==0.6.0 sphinx-rtd-theme==3.0.2 -sphinx-tabs==3.4.7 +sphinx-tabs==3.4.5 sphinx-toolbox==4.0.0 sphinx==8.2.3 sphinxcontrib-applehelp==2.0.0 diff --git a/requirements.txt b/requirements.txt index 388b06a..ae0fcb5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ -senzing==0.2.16 -senzing-core==0.3.16 +senzing==0.2.17 +senzing-core==0.3.17 diff --git a/setup.cfg b/setup.cfg index b55ad69..60f5919 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = python-tools -version = 0.0.25 +version = 0.0.26 author = senzing author_email = support@senzing.com description = Python Tools @@ -21,8 +21,8 @@ package_dir = packages = find: python_requires = >=3.9 install_requires = - senzing >= 0.2.16 - senzing-core >= 0.3.15 + senzing >= 0.2.17 + senzing-core >= 0.3.17 [options.packages.find] where = src diff --git a/sz_tools/sz_command b/sz_tools/sz_command index c2f1b02..ae3a98f 100755 --- a/sz_tools/sz_command +++ b/sz_tools/sz_command @@ -376,10 +376,10 @@ class SzCmdShell(cmd.Cmd): # szdiagnostic parsers - check_datastore_performance_parser = self.subparsers.add_parser( - "check_datastore_performance", usage=argparse.SUPPRESS + check_repository_performance_parser = self.subparsers.add_parser( + "check_repository_performance", usage=argparse.SUPPRESS ) - check_datastore_performance_parser.add_argument("seconds_to_run", default=3, nargs="?", type=int) + check_repository_performance_parser.add_argument("seconds_to_run", default=3, nargs="?", type=int) get_feature_parser = self.subparsers.add_parser("get_feature", usage=argparse.SUPPRESS) get_feature_parser.add_argument("featureID", type=int) @@ -495,6 +495,10 @@ class SzCmdShell(cmd.Cmd): get_record_parser.add_argument("record_id") get_record_parser.add_argument("-f", "--flags", nargs="+", required=False) + get_record_preview_parser = self.subparsers.add_parser("get_record_preview", usage=argparse.SUPPRESS) + get_record_preview_parser.add_argument("record_definition") + get_record_preview_parser.add_argument("-f", "--flags", nargs="+", required=False) + get_virtual_entity_by_record_id_parser = self.subparsers.add_parser( "get_virtual_entity_by_record_id", usage=argparse.SUPPRESS ) @@ -505,10 +509,6 @@ class SzCmdShell(cmd.Cmd): how_entity_by_entity_id_parser.add_argument("entity_id", type=int) how_entity_by_entity_id_parser.add_argument("-f", "--flags", nargs="+", required=False) - preprocess_record_parser = self.subparsers.add_parser("preprocess_record", usage=argparse.SUPPRESS) - preprocess_record_parser.add_argument("record_definition") - preprocess_record_parser.add_argument("-f", "--flags", nargs="+", required=False) - process_redo_record_parser = self.subparsers.add_parser("process_redo_record", usage=argparse.SUPPRESS) process_redo_record_parser.add_argument("redo_record") process_redo_record_parser.add_argument("-f", "--flags", nargs="+", required=False) @@ -923,29 +923,29 @@ class SzCmdShell(cmd.Cmd): # ----------------------------------------------------------------------------- @do_methods_decorator - def do_check_datastore_performance(self, **kwargs: Any) -> None: + def do_check_repository_performance(self, **kwargs: Any) -> None: """ - Run a performance check on the database + Run a performance check on the repository Syntax: - check_datastore_performance [seconds_to_run] - check_datastore_performance + check_repository_performance [seconds_to_run] + check_repository_performance Arguments: seconds_to_run = Time in seconds to run the check, default is 3""" - response = self.sz_diagnostic.check_datastore_performance(kwargs["parsed_args"].seconds_to_run) + response = self.sz_diagnostic.check_repository_performance(kwargs["parsed_args"].seconds_to_run) self.last_response = self.output_response(response) @do_methods_decorator - def do_get_datastore_info(self) -> None: + def do_get_repository_info(self) -> None: """ - Get data store information + Get repository information Syntax: - get_datastore_info""" + get_repository_info""" - response = self.sz_diagnostic.get_datastore_info() + response = self.sz_diagnostic.get_repository_info() self.last_response = self.output_response(response) @do_methods_decorator @@ -1137,7 +1137,7 @@ class SzCmdShell(cmd.Cmd): rec_cnt += 1 if rec_cnt % 1000 == 0: print(f"Exported {rec_cnt} records...", flush=True) - self.sz_engine.close_export(export_handle) + self.sz_engine.close_export_report(export_handle) except (SzError, IOError) as err: print_error(err) else: @@ -1187,7 +1187,7 @@ class SzCmdShell(cmd.Cmd): rec_cnt += 1 if rec_cnt % 1000 == 0: print(f"Exported {rec_cnt} records...", flush=True) - self.sz_engine.close_export(export_handle) + self.sz_engine.close_export_report(export_handle) except (SzError, IOError) as err: print_error(err) else: @@ -1501,6 +1501,27 @@ class SzCmdShell(cmd.Cmd): response = get_record(kwargs["flags"]) if "flags" in kwargs else get_record() self.last_response = self.output_response(response) + @do_methods_decorator + def do_get_record_preview(self, **kwargs: Any) -> None: + """ + Describe the features resulting from the hypothetical load of a record + + Syntax: + get_record_preview record_definition [-f flag ...] + + Examples: + get_record_preview '{"NAME_FULL":"Robert Smith", "DATE_OF_BIRTH":"7/4/1976", "PHONE_NUMBER":"787-767-2088"}' + + Arguments: + record_definition = Senzing mapped JSON representation of a record + flag = Optional space separated list of engine flag(s) to determine output (don't specify for defaults) + """ + + preview_record = functools.partial(self.sz_engine.get_record_preview, kwargs["parsed_args"].record_definition) + + response = preview_record(kwargs["flags"]) if "flags" in kwargs else preview_record() + self.last_response = self.output_response(response) + @do_methods_decorator def do_get_redo_record(self) -> None: """ @@ -1614,30 +1635,6 @@ class SzCmdShell(cmd.Cmd): response = process_redo(kwargs["flags"]) if "flags" in kwargs else process_redo() self.last_response = self.output_response(response) - @do_methods_decorator - def do_preprocess_record(self, **kwargs: Any) -> None: - """ - Pre-process a record - - Syntax: - preprocess_record record_definition [-f flag ...] - - Examples: - preprocess_record '{"NAME_FULL":"Robert Smith", "DATE_OF_BIRTH":"7/4/1976", "PHONE_NUMBER":"787-767-2088"}' - - Arguments: - record_definition = Senzing mapped JSON representation of a record - flag = Optional space separated list of engine flag(s) to determine output (don't specify for defaults) - """ - - preprocess_record = functools.partial( - self.sz_engine.preprocess_record, - kwargs["parsed_args"].record_definition, - ) - - response = preprocess_record(kwargs["flags"]) if "flags" in kwargs else preprocess_record() - self.last_response = self.output_response(response) - @do_methods_decorator def do_reevaluate_entity(self, **kwargs: Any) -> None: """ @@ -2238,7 +2235,7 @@ class SzCmdShell(cmd.Cmd): return self.flags_completes(text, line) + kwargs["cmd_settings"] @cmd_settings_decorator - def complete_check_datastore_performance( + def complete_check_repository_performance( self, text: str, line: str, begidx: int, endidx: int, **kwargs ) -> List[str]: return kwargs["cmd_settings"] @@ -2300,7 +2297,7 @@ class SzCmdShell(cmd.Cmd): return kwargs["cmd_settings"] @cmd_settings_decorator - def complete_get_datastore_info(self, text: str, line: str, begidx: int, endidx: int, **kwargs) -> List[str]: + def complete_get_repository_info(self, text: str, line: str, begidx: int, endidx: int, **kwargs) -> List[str]: return kwargs["cmd_settings"] @cmd_settings_decorator @@ -2342,7 +2339,7 @@ class SzCmdShell(cmd.Cmd): return self.flags_completes(text, line) + kwargs["cmd_settings"] @cmd_settings_decorator - def complete_preprocess_record(self, text: str, line: str, begidx: int, endidx: int, **kwargs) -> List[str]: + def complete_get_record_preview(self, text: str, line: str, begidx: int, endidx: int, **kwargs) -> List[str]: return self.flags_completes(text, line) + kwargs["cmd_settings"] @cmd_settings_decorator diff --git a/sz_tools/sz_file_loader b/sz_tools/sz_file_loader index 7ec699d..89cb028 100755 --- a/sz_tools/sz_file_loader +++ b/sz_tools/sz_file_loader @@ -606,7 +606,7 @@ def startup_info( ver_info = _json_loads(product.get_version()) config_list = _json_loads(configmgr.get_config_registry()) active_cfg_id = engine.get_active_config_id() - ds_info = _json_loads(diag.get_datastore_info()) + ds_info = _json_loads(diag.get_repository_info()) except SzError as err: raise err @@ -657,11 +657,11 @@ def startup_info( db_tune_article = "https://senzing.zendesk.com/hc/en-us/articles/360016288254-Tuning-Your-Database" logger.info("") - logger.info("Datastore Performance") + logger.info("Repository Performance") logger.info("---------------------") logger.info("") - ds_perf = _json_loads(diag.check_datastore_performance(3)) + ds_perf = _json_loads(diag.check_repository_performance(3)) num_recs_inserted = ds_perf.get("numRecordsInserted", None) if num_recs_inserted: insert_time = ds_perf["insertTime"] @@ -671,11 +671,11 @@ def startup_info( logger.info("Average per insert: %s ms", f"{time_per_insert:.3f}") logger.info("") else: - logger.error("Datastore performance test failed!") + logger.error("Repository performance test failed!") if time_per_insert > max_time_per_insert: logger.warning( - "Datastore performance of %s ms per insert is slower than the recommended minimum of %s ms per insert", + "Repository performance of %s ms per insert is slower than the recommended minimum of %s ms per insert", f"{time_per_insert:.1f}", f"{max_time_per_insert:.1f}", )