From a2223af314de725300977d62bb11fae000c3abad Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 11 Dec 2025 11:27:07 +0000 Subject: [PATCH 1/3] Initial plan From f19fb5068e37133606af9567443d882a08b194aa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 11 Dec 2025 11:36:12 +0000 Subject: [PATCH 2/3] Add suppressed_screens support to SdkConfig Co-authored-by: mehmet-yoti <111424390+mehmet-yoti@users.noreply.github.com> --- .../doc_scan/session/create/sdk_config.py | 29 ++++++++++++++ .../session/create/test_sdk_config.py | 40 +++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/yoti_python_sdk/doc_scan/session/create/sdk_config.py b/yoti_python_sdk/doc_scan/session/create/sdk_config.py index 37cde6b5..e3370114 100644 --- a/yoti_python_sdk/doc_scan/session/create/sdk_config.py +++ b/yoti_python_sdk/doc_scan/session/create/sdk_config.py @@ -23,6 +23,7 @@ def __init__( error_url, allow_handoff=None, privacy_policy_url=None, + suppressed_screens=None, ): """ :param allowed_capture_methods: the allowed capture methods @@ -45,6 +46,8 @@ def __init__( :type privacy_policy_url: str :param allow_handoff: boolean flag for allow_handoff :type allow_handoff: bool + :param suppressed_screens: list of screen identifiers to suppress in the flow + :type suppressed_screens: list[str] or None """ self.__allowed_capture_methods = allowed_capture_methods self.__primary_colour = primary_colour @@ -56,6 +59,7 @@ def __init__( self.__error_url = error_url self.__privacy_policy_url = privacy_policy_url self.__allow_handoff = allow_handoff + self.__suppressed_screens = suppressed_screens @property def allowed_capture_methods(self): @@ -148,6 +152,16 @@ def allow_handoff(self): """ return self.__allow_handoff + @property + def suppressed_screens(self): + """ + List of screen identifiers to suppress in the flow. + + :return: the suppressed screens + :rtype: list[str] or None + """ + return self.__suppressed_screens + def to_json(self): return remove_null_values( { @@ -161,6 +175,7 @@ def to_json(self): "error_url": self.error_url, "privacy_policy_url": self.privacy_policy_url, "allow_handoff": self.allow_handoff, + "suppressed_screens": self.suppressed_screens, } ) @@ -181,6 +196,7 @@ def __init__(self): self.__error_url = None self.__privacy_policy_url = None self.__allow_handoff = None + self.__suppressed_screens = None def with_allowed_capture_methods(self, allowed_capture_methods): """ @@ -320,6 +336,18 @@ def with_allow_handoff(self, flag): self.__allow_handoff = flag return self + def with_suppressed_screens(self, suppressed_screens): + """ + Sets the list of screen identifiers to suppress in the flow + + :param suppressed_screens: list of screen identifiers + :type suppressed_screens: list[str] + :return: the builder + :rtype: SdkConfigBuilder + """ + self.__suppressed_screens = suppressed_screens + return self + def build(self): return SdkConfig( self.__allowed_capture_methods, @@ -332,4 +360,5 @@ def build(self): self.__error_url, self.__allow_handoff, self.__privacy_policy_url, + self.__suppressed_screens, ) diff --git a/yoti_python_sdk/tests/doc_scan/session/create/test_sdk_config.py b/yoti_python_sdk/tests/doc_scan/session/create/test_sdk_config.py index d621a441..838e59f3 100644 --- a/yoti_python_sdk/tests/doc_scan/session/create/test_sdk_config.py +++ b/yoti_python_sdk/tests/doc_scan/session/create/test_sdk_config.py @@ -16,6 +16,7 @@ class SdkConfigTest(unittest.TestCase): SOME_ERROR_URL = "https://mysite.com/yoti/error" SOME_PRIVACY_POLICY_URL = "https://mysite.com/privacy" SOME_ALLOW_HANDOFF = True + SOME_SUPPRESSED_SCREENS = ["screen1", "screen2", "screen3"] def test_should_build_correctly(self): result = ( @@ -78,6 +79,45 @@ def test_should_serialize_to_json_without_error(self): s = json.dumps(result, cls=YotiEncoder) assert s is not None and s != "" + def test_should_build_with_suppressed_screens(self): + result = ( + SdkConfigBuilder() + .with_allows_camera() + .with_suppressed_screens(self.SOME_SUPPRESSED_SCREENS) + .build() + ) + + assert isinstance(result, SdkConfig) + assert result.suppressed_screens == self.SOME_SUPPRESSED_SCREENS + assert len(result.suppressed_screens) == 3 + + def test_not_passing_suppressed_screens(self): + result = SdkConfigBuilder().with_allows_camera().build() + + assert result.suppressed_screens is None + + def test_passing_empty_suppressed_screens_list(self): + result = SdkConfigBuilder().with_suppressed_screens([]).build() + + assert result.suppressed_screens == [] + + def test_should_serialize_to_json_with_suppressed_screens(self): + result = ( + SdkConfigBuilder() + .with_allows_camera_and_upload() + .with_primary_colour(self.SOME_PRIMARY_COLOUR) + .with_suppressed_screens(self.SOME_SUPPRESSED_SCREENS) + .build() + ) + + s = json.dumps(result, cls=YotiEncoder) + assert s is not None and s != "" + + # Verify suppressed_screens is in the JSON + parsed = json.loads(s) + assert "suppressed_screens" in parsed + assert parsed["suppressed_screens"] == self.SOME_SUPPRESSED_SCREENS + if __name__ == "__main__": unittest.main() From 931f64957d7a34aeca5fe9a126bf9f8351a93981 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 11 Dec 2025 11:39:47 +0000 Subject: [PATCH 3/3] Fix code style: remove trailing whitespace Co-authored-by: mehmet-yoti <111424390+mehmet-yoti@users.noreply.github.com> --- .../tests/doc_scan/session/create/test_sdk_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yoti_python_sdk/tests/doc_scan/session/create/test_sdk_config.py b/yoti_python_sdk/tests/doc_scan/session/create/test_sdk_config.py index 838e59f3..14ba952e 100644 --- a/yoti_python_sdk/tests/doc_scan/session/create/test_sdk_config.py +++ b/yoti_python_sdk/tests/doc_scan/session/create/test_sdk_config.py @@ -112,7 +112,7 @@ def test_should_serialize_to_json_with_suppressed_screens(self): s = json.dumps(result, cls=YotiEncoder) assert s is not None and s != "" - + # Verify suppressed_screens is in the JSON parsed = json.loads(s) assert "suppressed_screens" in parsed