11import sklearn
2+ import sys
23
34import vetiver as vt
45from vetiver .meta import VetiverMeta
@@ -113,6 +114,7 @@ def test_vetiver_model_use_ptype():
113114 version = None ,
114115 url = None ,
115116 required_pkgs = ["scikit-learn" ],
117+ python_version = tuple (sys .version_info ),
116118 )
117119
118120
@@ -137,5 +139,41 @@ def test_vetiver_model_from_pin():
137139 assert v2 .metadata .user == {"test" : 123 }
138140 assert v2 .metadata .version is not None
139141 assert v2 .metadata .required_pkgs == ["scikit-learn" ]
142+ assert v2 .metadata .python_version == tuple (sys .version_info )
143+
144+ board .pin_delete ("model" )
145+
146+
147+ def test_vetiver_model_from_pin_user_metadata ():
148+ """
149+ Test if standard keys as part of :dataclass:`VetiverMeta` are picked
150+ """
151+ custom_meta = {
152+ "test" : 123 ,
153+ "required_pkgs" : ["foo" , "bar" ],
154+ "python_version" : [3 , 10 , 6 , "final" , 0 ],
155+ }
156+ loaded_pkgs = custom_meta ["required_pkgs" ] + ["scikit-learn" ]
157+
158+ v = vt .VetiverModel (
159+ model = model ,
160+ prototype_data = X_df ,
161+ model_name = "model" ,
162+ versioned = None ,
163+ description = None ,
164+ metadata = custom_meta ,
165+ )
166+
167+ board = pins .board_temp (allow_pickle_read = True )
168+ vt .vetiver_pin_write (board = board , model = v )
169+ v2 = vt .VetiverModel .from_pin (board , "model" )
170+
171+ assert isinstance (v2 , vt .VetiverModel )
172+ assert isinstance (v2 .model , sklearn .base .BaseEstimator )
173+ assert isinstance (v2 .prototype .construct (), pydantic .BaseModel )
174+ assert v2 .metadata .user == custom_meta
175+ assert v2 .metadata .version is not None
176+ assert v2 .metadata .required_pkgs == loaded_pkgs
177+ assert v2 .metadata .python_version == tuple (custom_meta ["python_version" ])
140178
141179 board .pin_delete ("model" )
0 commit comments