Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions pyegeria/omvs/actor_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -906,7 +906,7 @@ def find_actor_profiles(
@dynamic_catch
async def _async_get_actor_profiles_by_name(
self,
name: str,
name: str | None = None,
metadata_element_type_name: str | None = "ActorProfile",
metadata_element_subtypes: list[str] | None = None,
include_only_relationships: list[str] | None = None,
Expand Down Expand Up @@ -976,7 +976,7 @@ async def _async_get_actor_profiles_by_name(

def get_actor_profiles_by_name(
self,
name: str,
name: str | None = None,
metadata_element_type_name: str | None = "ActorProfile",
metadata_element_subtypes: list[str] | None = None,
include_only_relationships: list[str] | None = None,
Expand Down Expand Up @@ -2467,7 +2467,7 @@ def find_actor_roles(
@dynamic_catch
async def _async_get_actor_roles_by_name(
self,
name: str,
name: str | None = None,
metadata_element_type_name: str | None = "ActorRole",
metadata_element_subtypes: list[str] | None = None,
include_only_relationships: list[str] | None = None,
Expand Down Expand Up @@ -2537,7 +2537,7 @@ async def _async_get_actor_roles_by_name(

def get_actor_roles_by_name(
self,
name: str,
name: str | None = None,
metadata_element_type_name: str | None = "ActorRole",
metadata_element_subtypes: list[str] | None = None,
include_only_relationships: list[str] | None = None,
Expand Down
8 changes: 4 additions & 4 deletions pyegeria/omvs/asset_maker.py
Original file line number Diff line number Diff line change
Expand Up @@ -559,7 +559,7 @@ def delete_asset(
@dynamic_catch
async def _async_get_assets_by_name(
self,
filter_string: str,
filter_string: str | None = None,
metadata_element_type_name: str | None = "Asset",
metadata_element_subtypes: list[str] | None = None,
include_only_classified_elements: list[str] | None = None,
Expand Down Expand Up @@ -654,7 +654,7 @@ async def _async_get_assets_by_name(
@dynamic_catch
def get_assets_by_name(
self,
filter_string: str,
filter_string: str | None = None,
metadata_element_type_name: str | None = "Asset",
metadata_element_subtypes: list[str] | None = None,
include_only_classified_elements: list[str] | None = None,
Expand Down Expand Up @@ -5920,7 +5920,7 @@ def find_software_capabilities(
@dynamic_catch
async def _async_get_software_capabilities_by_name(
self,
name: str,
name: str | None = None,
metadata_element_type_name: str | None = "SoftwareCapability",
graph_query_depth: int = 3,
start_from: int = 0,
Expand Down Expand Up @@ -5980,7 +5980,7 @@ async def _async_get_software_capabilities_by_name(
@dynamic_catch
def get_software_capabilities_by_name(
self,
name: str,
name: str | None = None,
metadata_element_type_name: str | None = "SoftwareCapability",
graph_query_depth: int = 3,
start_from: int = 0,
Expand Down
6 changes: 4 additions & 2 deletions pyegeria/omvs/automated_curation.py
Original file line number Diff line number Diff line change
Expand Up @@ -2897,15 +2897,17 @@ async def _async_get_engine_actions_by_name(
if name is None and "filter_string" in kwargs:
name = kwargs.pop("filter_string")

validate_name(name)
# A supplied body supersedes the name (as documented), so only require a name without one (ISSUE-135).
if body is None:
validate_name(name)

url = f"{self.ref_curation_command_base}/assets/by-name"

metadata_element_type = kwargs.pop("metadata_element_type", metadata_element_type_name)

params = {
'filter_string': name,
'metadata_element_type': metadata_element_type,
'metadata_element_type_name': metadata_element_type,
'metadata_element_subtypes': metadata_element_subtypes,
'include_only_relationships': include_only_relationships,
'skip_relationships': skip_relationships,
Expand Down
12 changes: 6 additions & 6 deletions pyegeria/omvs/connection_maker.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ def get_connection_by_guid(

async def _async_get_connections_by_name(
self,
name: str,
name: str | None = None,
metadata_element_subtypes: list[str] | None = None,
include_only_relationships: list[str] | None = None,
skip_relationships: list[str] | None = None,
Expand Down Expand Up @@ -157,7 +157,7 @@ async def _async_get_connections_by_name(

def get_connections_by_name(
self,
name: str,
name: str | None = None,
metadata_element_subtypes: list[str] | None = None,
include_only_relationships: list[str] | None = None,
skip_relationships: list[str] | None = None,
Expand Down Expand Up @@ -363,7 +363,7 @@ def get_connector_type_by_guid(

async def _async_get_connector_types_by_name(
self,
name: str,
name: str | None = None,
metadata_element_subtypes: list[str] | None = None,
include_only_relationships: list[str] | None = None,
skip_relationships: list[str] | None = None,
Expand Down Expand Up @@ -395,7 +395,7 @@ async def _async_get_connector_types_by_name(

def get_connector_types_by_name(
self,
name: str,
name: str | None = None,
metadata_element_subtypes: list[str] | None = None,
include_only_relationships: list[str] | None = None,
skip_relationships: list[str] | None = None,
Expand Down Expand Up @@ -664,7 +664,7 @@ def get_endpoint_by_guid(

async def _async_get_endpoints_by_name(
self,
name: str,
name: str | None = None,
metadata_element_subtypes: list[str] | None = None,
include_only_relationships: list[str] | None = None,
skip_relationships: list[str] | None = None,
Expand Down Expand Up @@ -696,7 +696,7 @@ async def _async_get_endpoints_by_name(

def get_endpoints_by_name(
self,
name: str,
name: str | None = None,
metadata_element_subtypes: list[str] | None = None,
include_only_relationships: list[str] | None = None,
skip_relationships: list[str] | None = None,
Expand Down
9 changes: 5 additions & 4 deletions pyegeria/omvs/data_designer.py
Original file line number Diff line number Diff line change
Expand Up @@ -2892,7 +2892,7 @@ def find_data_fields(self, search_string: str,
return response

@dynamic_catch
async def _async_get_data_fields_by_name(self, filter_string: str, classification_names: Optional[list[str]] = None,
async def _async_get_data_fields_by_name(self, filter_string: str | None = None, classification_names: Optional[list[str]] = None,
body: Optional[dict | FilterRequestBody] = None, start_from: int = 0,
page_size: int = 0,
graph_query_depth: int = 3, output_format: str = 'JSON',
Expand Down Expand Up @@ -2956,7 +2956,7 @@ async def _async_get_data_fields_by_name(self, filter_string: str, classificatio
return response

@dynamic_catch
def get_data_fields_by_name(self, filter_string: str, classification_names: Optional[list[str]] = None, body: dict = None,
def get_data_fields_by_name(self, filter_string: str | None = None, classification_names: Optional[list[str]] = None, body: dict = None,
start_from: int = 0,
page_size: int = max_paging_size, graph_query_depth: int = 3, output_format: str = 'JSON',
report_spec: str | dict = None, **kwargs) -> list | str:
Expand Down Expand Up @@ -3025,7 +3025,8 @@ def get_data_field_by_guid(self, guid: str, element_type: Optional[str] = None,
self._async_get_data_field_by_guid(guid, element_type, body, graph_query_depth, output_format, report_spec, **kwargs))

@dynamic_catch
async def _async_get_data_value_specifications_by_name(self, filter_string: str, classification_names: list[str],
async def _async_get_data_value_specifications_by_name(self, filter_string: str | None = None,
classification_names: Optional[list[str]] = None,
body: Optional[dict | FilterRequestBody] = None, start_from: int = 0,
page_size: int = 0,
graph_query_depth: int = 3, output_format: str = 'JSON',
Expand Down Expand Up @@ -3088,7 +3089,7 @@ async def _async_get_data_value_specifications_by_name(self, filter_string: str,
return response

@dynamic_catch
def get_data_value_specifications_by_name(self, filter_string: str, classification_names: Optional[list[str]] = None, body: dict = None,
def get_data_value_specifications_by_name(self, filter_string: str | None = None, classification_names: Optional[list[str]] = None, body: dict = None,
start_from: int = 0,
page_size: int = max_paging_size, graph_query_depth: int = 3, output_format: str = 'JSON',
report_spec: str | dict = None, **kwargs) -> list | str:
Expand Down
4 changes: 2 additions & 2 deletions pyegeria/omvs/data_discovery.py
Original file line number Diff line number Diff line change
Expand Up @@ -1722,12 +1722,12 @@ def delete_analysis_report(self, report_guid: str, body: Optional[dict | DeleteE
loop.run_until_complete(self._async_delete_analysis_report(report_guid, body))

@dynamic_catch
async def _async_get_analysis_reports_by_name(self, name: str, start_from: int = 0, page_size: int = 100, **kwargs) -> list | str:
async def _async_get_analysis_reports_by_name(self, name: str | None = None, start_from: int = 0, page_size: int = 100, **kwargs) -> list | str:
"""Get analysis reports by name. Async version."""
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/data-discovery/analysis-reports/by-name"
return await self._async_get_name_request(url, _type="AnalysisReport", _gen_output=self._generate_annotation_output, filter_string=name, start_from=start_from, page_size=page_size, **kwargs)

def get_analysis_reports_by_name(self, name: str, start_from: int = 0, page_size: int = 100, **kwargs) -> list | str:
def get_analysis_reports_by_name(self, name: str | None = None, start_from: int = 0, page_size: int = 100, **kwargs) -> list | str:
"""Get analysis reports by name."""
loop = asyncio.get_event_loop()
return loop.run_until_complete(self._async_get_analysis_reports_by_name(name, start_from, page_size, **kwargs))
Expand Down
4 changes: 2 additions & 2 deletions pyegeria/omvs/product_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -2070,7 +2070,7 @@ def generate_data_product(self, digital_product_guid: str) -> dict | str:
@dynamic_catch
async def _async_get_governance_action_processes_by_name(
self,
name: str,
name: str | None = None,
body: Optional[dict] = None,
start_from: int = 0,
page_size: int = 0,
Expand Down Expand Up @@ -2115,7 +2115,7 @@ async def _async_get_governance_action_processes_by_name(
@dynamic_catch
def get_governance_action_processes_by_name(
self,
name: str,
name: str | None = None,
body: Optional[dict] = None,
start_from: int = 0,
page_size: int = 0,
Expand Down
8 changes: 4 additions & 4 deletions pyegeria/omvs/schema_maker.py
Original file line number Diff line number Diff line change
Expand Up @@ -483,23 +483,23 @@ def create_schema_attribute_from_template(self, body: dict | TemplateRequestBody
return loop.run_until_complete(self._async_create_schema_attribute_from_template(body))

@dynamic_catch
async def _async_get_schema_types_by_name(self, name: str, start_from: int = 0, page_size: int = 100, **kwargs) -> list | str:
async def _async_get_schema_types_by_name(self, name: str | None = None, start_from: int = 0, page_size: int = 100, **kwargs) -> list | str:
"""Get schema types by name. Async version."""
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/schema-maker/schema-types/by-name"
return await self._async_get_name_request(url, _type="SchemaType", _gen_output=self._generate_schema_output, filter_string=name, start_from=start_from, page_size=page_size, **kwargs)

def get_schema_types_by_name(self, name: str, start_from: int = 0, page_size: int = 100, **kwargs) -> list | str:
def get_schema_types_by_name(self, name: str | None = None, start_from: int = 0, page_size: int = 100, **kwargs) -> list | str:
"""Get schema types by name."""
loop = asyncio.get_event_loop()
return loop.run_until_complete(self._async_get_schema_types_by_name(name, start_from, page_size, **kwargs))

@dynamic_catch
async def _async_get_schema_attributes_by_name(self, name: str, start_from: int = 0, page_size: int = 100, **kwargs) -> list | str:
async def _async_get_schema_attributes_by_name(self, name: str | None = None, start_from: int = 0, page_size: int = 100, **kwargs) -> list | str:
"""Get schema attributes by name. Async version."""
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/schema-maker/schema-attributes/by-name"
return await self._async_get_name_request(url, _type="SchemaAttribute", _gen_output=self._generate_schema_output, filter_string=name, start_from=start_from, page_size=page_size, **kwargs)

def get_schema_attributes_by_name(self, name: str, start_from: int = 0, page_size: int = 100, **kwargs) -> list | str:
def get_schema_attributes_by_name(self, name: str | None = None, start_from: int = 0, page_size: int = 100, **kwargs) -> list | str:
"""Get schema attributes by name."""
loop = asyncio.get_event_loop()
return loop.run_until_complete(self._async_get_schema_attributes_by_name(name, start_from, page_size, **kwargs))
Expand Down
55 changes: 39 additions & 16 deletions pyegeria/omvs/solution_architect.py
Original file line number Diff line number Diff line change
Expand Up @@ -2026,16 +2026,22 @@ async def _async_get_info_supply_chain_by_name(self, name: Optional[str] = None,
name = kwargs.pop("filter_string")

add_impl = str(add_implementation).lower()
possible_query_params = query_string(
[("addImplementation", add_impl), ("startFrom", start_from), ("pageSize", page_size)])
possible_query_params = query_string([("addImplementation", add_impl)])

if body is None:
body = {
'graphQueryDepth': graph_query_depth,
"filter": name,
}
else:
body["filter"] = name
# Copy, so the caller's dict is not changed, and keep the body's own filter on a body-only call
# (ISSUE-135).
body = dict(body)
if name is not None:
body["filter"] = name
# The server reads paging from the body only; it ignores startFrom/pageSize query parameters.
body.setdefault("startFrom", start_from)
body.setdefault("pageSize", page_size)

url = (f"{self.solution_architect_command_root}/information-supply-chains/by-name"
f"{possible_query_params}")
Expand Down Expand Up @@ -3472,7 +3478,14 @@ async def _async_get_solution_blueprints_by_name(self, name: Optional[str] = Non
"filter": name,
}
else:
body["filter"] = name
# Copy, so the caller's dict is not changed, and keep the body's own filter on a body-only call
# (ISSUE-135).
body = dict(body)
if name is not None:
body["filter"] = name
# The server reads paging from the body only; it ignores startFrom/pageSize query parameters.
body.setdefault("startFrom", start_from)
body.setdefault("pageSize", page_size)

url = f"{self.solution_architect_command_root}/solution-blueprints/by-name"

Expand Down Expand Up @@ -4925,18 +4938,23 @@ async def _async_get_solution_components_by_name(self, name: Optional[str] = Non
if name is None and "filter_string" in kwargs:
name = kwargs.pop("filter_string")

possible_query_params = query_string([("startFrom", start_from), ("pageSize", page_size)])

if body is None:
body = {
'graphQueryDepth': graph_query_depth,
"filter": name,
}
else:
body["filter"] = name

url = (f"{self.solution_architect_command_root}/solution-components/by-name"
f"{possible_query_params}")
# Copy, so the caller's dict is not changed, and keep the body's own filter on a body-only call
# (ISSUE-135).
body = dict(body)
if name is not None:
body["filter"] = name
# The server reads paging from the body only; it ignores startFrom/pageSize query parameters.
body.setdefault("startFrom", start_from)
body.setdefault("pageSize", page_size)

url = f"{self.solution_architect_command_root}/solution-components/by-name"
response: Response = await self._async_make_request("POST", url, body_slimmer(body), **kwargs)
element = response.json().get("elements", NO_ELEMENTS_FOUND)
if element == NO_ELEMENTS_FOUND:
Expand Down Expand Up @@ -6373,18 +6391,23 @@ async def _async_get_solution_roles_by_name(self, name: Optional[str] = None, bo
if name is None and "filter_string" in kwargs:
name = kwargs.pop("filter_string")

possible_query_params = query_string([("startFrom", start_from), ("pageSize", page_size)])

if body is None:
body = {
'graphQueryDepth': graph_query_depth,
"filter": name,
}
else:
body["filter"] = name

url = (f"{self.solution_architect_command_root}/solution-roles/by-name"
f"{possible_query_params}")
# Copy, so the caller's dict is not changed, and keep the body's own filter on a body-only call
# (ISSUE-135).
body = dict(body)
if name is not None:
body["filter"] = name
# The server reads paging from the body only; it ignores startFrom/pageSize query parameters.
body.setdefault("startFrom", start_from)
body.setdefault("pageSize", page_size)

url = f"{self.solution_architect_command_root}/solution-roles/by-name"
response: Response = await self._async_make_request("POST", url, body_slimmer(body), **kwargs)
element = response.json().get("elements", NO_ELEMENTS_FOUND)
if element == NO_ELEMENTS_FOUND:
Expand Down Expand Up @@ -6686,7 +6709,7 @@ def find_concept_model_elements(self, search_string: str = "*",
output_format, report_spec, **kwargs))

@dynamic_catch
async def _async_get_concept_model_elements_by_name(self, name: str,
async def _async_get_concept_model_elements_by_name(self, name: str | None = None,
body: Optional[dict | SearchStringRequestBody] = None,
start_from: int = 0, page_size: int = max_paging_size,
output_format: str = "JSON", report_spec: str | dict | None = None,
Expand All @@ -6699,7 +6722,7 @@ async def _async_get_concept_model_elements_by_name(self, name: str,
output_format=output_format, report_spec=report_spec, **kwargs)

@dynamic_catch
def get_concept_model_elements_by_name(self, name: str,
def get_concept_model_elements_by_name(self, name: str | None = None,
body: Optional[dict | SearchStringRequestBody] = None,
start_from: int = 0, page_size: int = max_paging_size,
output_format: str = "JSON", report_spec: str | dict | None = None,
Expand Down
Loading
Loading