Skip to content

Commit

Permalink
#153 - Save point
Browse files Browse the repository at this point in the history
  • Loading branch information
antaenc committed Jan 23, 2025
1 parent f5503ae commit fd011af
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 11 deletions.
1 change: 0 additions & 1 deletion src/senzing/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
# -----------------------------------------------------------------------------

SZ_NO_FLAGS = 0
# TODO Where used and remove if adding to szengineflags?
SZ_WITHOUT_INFO = 0


Expand Down
31 changes: 21 additions & 10 deletions src/senzing/szengineflags.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,14 @@
class SzEngineFlags(IntFlag):
"""Engine Flags"""

# TODO Move to tool helpers for now and change tools and remove/comment examples
@classmethod
# TODO Check everywhere combine_flags is used
# TODO Update all doc strings
# TODO Instead of raising return -1 ?
# def combine_flags(cls: type[TSzEngineFlags], flags: Union[List[Self], List[str]]) -> TSzEngineFlags:
def combine_flags(cls: type[TSzEngineFlags], *flags: TSzEngineFlags) -> TSzEngineFlags:
# def combine_flags(cls: type[TSzEngineFlags], *flags: TSzEngineFlags) -> TSzEngineFlags:
def combine_flags(cls: type[TSzEngineFlags], flags: Union[List[TSzEngineFlags], List[str]]) -> TSzEngineFlags:
"""
The `combine_flags` method ORs together all flags in a list of strings.
Expand All @@ -73,7 +75,7 @@ def combine_flags(cls: type[TSzEngineFlags], *flags: TSzEngineFlags) -> TSzEngin
:linenos:
:language: json
"""
result = cls["SZ_WITHOUT_INFO"]
result = cls["__SZ_WITHOUT_INFO"]
print(f"\n{result = }", flush=True)
print(f"\n{type(result) = }", flush=True)
# TODO
Expand All @@ -87,7 +89,8 @@ def combine_flags(cls: type[TSzEngineFlags], *flags: TSzEngineFlags) -> TSzEngin
# if isinstance(flag, str):
# result = result | cls[flag.upper()]
# else:
result = result | flag
# result = result | flag
result = result | cls[flag.upper()] if isinstance(flag, str) else flag
except (AttributeError, KeyError) as err:
raise SzError(f"{err} is not a valid engine flag") from err
# TODO
Expand All @@ -110,18 +113,20 @@ def combine_flags(cls: type[TSzEngineFlags], *flags: TSzEngineFlags) -> TSzEngin
# return flag_int

@classmethod
def get_flags(cls):
def list_flags(cls):
# return {member.name: member & member == member for member in cls}
return {member.name: member.value for member in cls}
return {member.name: member.value for member in cls if not member.name.startswith("_")}

# TODO Reorder methods
# TODO Make this return a dict on integers or add an integers_to_flags that calls this one?
# TODO Test all flags return correct result
@classmethod
# def integer_to_flag(cls: type[TSzEngineFlags], integer: int) -> list[str, None]:
# TODO Change Dict Any
def get_flag_by_integer(cls: type[TSzEngineFlags], integer: int) -> Dict[str, Any]:
"""Converts an integer value to a list of corresponding IntFlag names."""

flag_dict: Dict[str, Any] = {"primary_engine_flag": "", "sub_engine_flags": []}
flag_dict: Dict[str, Any] = {"primary_engine_flag": "", "sub_engine_flags": {}}

candidate_flag = [m.name for m in cls if m & m.value == integer]
print(f"\n{candidate_flag = }", flush=True)
Expand All @@ -130,15 +135,21 @@ def get_flag_by_integer(cls: type[TSzEngineFlags], integer: int) -> Dict[str, An
primary_flag = candidate_flag[0]
flag_dict["primary_engine_flag"] = primary_flag

sub_flags: List[Union[None, str]] = []
# sub_flags: List[Union[None, str]] = []
# for member in cls:
# if member & integer:
# print(f"\n{integer = } - {member = }", flush=True)
# sub_flags.append(member.name)
# integer &= ~member
sub_flags: Dict[str, int] = {}
for member in cls:
if member & integer:
print(f"\n{integer = } - {member = }", flush=True)
sub_flags.append(member.name)
sub_flags[member.name] = member.value
integer &= ~member

if sub_flags:
flag_dict["sub_engine_flag"] = sub_flags
flag_dict["sub_engine_flags"] = sub_flags
print(f"\n{sub_flags = }", flush=True)

# if not flags:
Expand Down Expand Up @@ -230,7 +241,7 @@ def get_flag_by_integer(cls: type[TSzEngineFlags], integer: int) -> Dict[str, An

SZ_WITH_INFO = 1 << 62
# TODO
SZ_WITHOUT_INFO = 0
__SZ_WITHOUT_INFO = 0

# Flags for searching for entities.

Expand Down

0 comments on commit fd011af

Please sign in to comment.