1+ import json
12import re
23import pytest
34from typing import Dict , Tuple , Type
@@ -30,11 +31,11 @@ class An_Class(Type_Safe):
3031 # assert An_Class(an_dict_tuple={'an-id': (Safe_Str__Id, Safe_Str__Id)}).json() == { 'an_dict_tuple': { 'an-id': ( Safe_Str__Id, Safe_Str__Id)}, # BUG
3132 # 'an_tuple' : []}
3233
33- assert An_Class (an_dict_tuple = {'an-id' : (str , int )}).json () == { 'an_dict_tuple' : {'an-id' : ( 'builtins.str' , 'builtins.int' ) }, # BUG , it should be ('builtins.str', 'builtins.int')
34+ assert An_Class (an_dict_tuple = {'an-id' : (str , int )}).json () == { 'an_dict_tuple' : {'an-id' : [ 'builtins.str' , 'builtins.int' ] }, # BUG , it should be ('builtins.str', 'builtins.int')
3435 'an_tuple' : [] }
3536
36- assert An_Class (an_dict_tuple = {'an-id' : (Safe_Str__Id , Safe_Str__Id )}).json () == { 'an_dict_tuple' : { 'an-id' : ( 'osbot_utils.type_safe.primitives.domains.identifiers.safe_str.Safe_Str__Id.Safe_Str__Id' ,
37- 'osbot_utils.type_safe.primitives.domains.identifiers.safe_str.Safe_Str__Id.Safe_Str__Id' ) }, # BUG
37+ assert An_Class (an_dict_tuple = {'an-id' : (Safe_Str__Id , Safe_Str__Id )}).json () == { 'an_dict_tuple' : { 'an-id' : [ 'osbot_utils.type_safe.primitives.domains.identifiers.safe_str.Safe_Str__Id.Safe_Str__Id' ,
38+ 'osbot_utils.type_safe.primitives.domains.identifiers.safe_str.Safe_Str__Id.Safe_Str__Id' ] }, # BUG
3839 'an_tuple' : []}
3940
4041 # assert An_Class(an_dict_tuple={'an_id': (Safe_Str__Id, Safe_Str__Id)}).obj() == __(an_tuple = [],
@@ -60,12 +61,25 @@ class An_Class(Type_Safe):
6061 assert An_Class .from_json (An_Class ( ).json ()).json () == {'an_dict_tuple' : {}, 'an_tuple' : []}
6162 assert An_Class .from_json (An_Class (an_tuple = (str , int ) ).json ()).json () == {'an_dict_tuple' : {}, 'an_tuple' : ['builtins.str' , 'builtins.int' ]}
6263
63- assert An_Class .from_json (An_Class (an_dict_tuple = {'an-id' : (str , int ) }).json ()).json () == { 'an_dict_tuple' : {'an-id' : ( 'builtins.str' , 'builtins.int' ) }, # BUG , it should be ( 'builtins.str', 'builtins.int')
64+ assert An_Class .from_json (An_Class (an_dict_tuple = {'an-id' : (str , int ) }).json ()).json () == { 'an_dict_tuple' : {'an-id' : [ 'builtins.str' , 'builtins.int' ] }, # FIXED: BUG , it should be [ 'builtins.str', 'builtins.int']
6465 'an_tuple' : [] }
6566 assert An_Class .from_json (An_Class (an_dict_tuple = {'an-id' : (Safe_Str__Id ,
66- Safe_Str__Id )}).json ()).json () == { 'an_dict_tuple' : { 'an-id' : ( 'osbot_utils.type_safe.primitives.domains.identifiers.safe_str.Safe_Str__Id.Safe_Str__Id' ,
67- 'osbot_utils.type_safe.primitives.domains.identifiers.safe_str.Safe_Str__Id.Safe_Str__Id' ) }, # BUG
67+ Safe_Str__Id )}).json ()).json () == { 'an_dict_tuple' : { 'an-id' : [ 'osbot_utils.type_safe.primitives.domains.identifiers.safe_str.Safe_Str__Id.Safe_Str__Id' ,
68+ 'osbot_utils.type_safe.primitives.domains.identifiers.safe_str.Safe_Str__Id.Safe_Str__Id' ] }, # FIXED: BUG
6869 'an_tuple' : []}
70+ an_class = An_Class (an_dict_tuple = {'an-id' : (Safe_Str__Id , Safe_Str__Id )},
71+ an_tuple = (str , str ))
72+ an_class_json = an_class .json ()
73+ assert an_class_json == {'an_dict_tuple' : {'an-id' : ['osbot_utils.type_safe.primitives.domains.identifiers.safe_str.Safe_Str__Id.Safe_Str__Id' ,
74+ 'osbot_utils.type_safe.primitives.domains.identifiers.safe_str.Safe_Str__Id.Safe_Str__Id' ]},
75+ 'an_tuple' : ['builtins.str' , 'builtins.str' ]}
76+ assert json .dumps (an_class_json ) == ('{"an_tuple": ["builtins.str", "builtins.str"], '
77+ '"an_dict_tuple": {"an-id": '
78+ '["osbot_utils.type_safe.primitives.domains.identifiers.safe_str.Safe_Str__Id.Safe_Str__Id", '
79+ '"osbot_utils.type_safe.primitives.domains.identifiers.safe_str.Safe_Str__Id.Safe_Str__Id"]}}' )
80+ assert An_Class .from_json (an_class_json ).json () == an_class_json
81+ assert json .loads (json .dumps (an_class_json )) == an_class_json
82+
6983
7084
7185 def test__regression__type_safe_tuple__bypasses_on_add_mul (self ):
0 commit comments