1- import pydantic
21import pins
32import warnings
43import json
54
65from .vetiver_model import VetiverModel
7- from .meta import vetiver_meta
6+ from .meta import _model_meta
87from .write_fastapi import _choose_version
98
10- def vetiver_pin_write (board , model : VetiverModel , versioned : bool = True ):
9+
10+ def vetiver_pin_write (board , model : VetiverModel , versioned : bool = True ):
1111 """
1212 Pin a trained VetiverModel along with other model metadata.
13-
13+
1414 Parameters
1515 ----------
1616 board:
@@ -21,16 +21,18 @@ def vetiver_pin_write(board, model: VetiverModel, versioned: bool=True):
2121 Whether or not the pin should be versioned
2222 """
2323 if not board .allow_pickle_read :
24- raise NotImplementedError # must be pickle-able
24+ raise NotImplementedError # must be pickle-able
2525
2626 board .pin_write (
2727 model .model ,
28- name = model .model_name ,
29- type = "joblib" ,
30- description = model .description ,
31- metadata = {"required_pkgs" : model .metadata .get ("required_pkgs" ),
32- "ptype" : None if model .ptype == None else model .ptype ().json ()},
33- versioned = versioned
28+ name = model .model_name ,
29+ type = "joblib" ,
30+ description = model .description ,
31+ metadata = {
32+ "required_pkgs" : model .metadata .get ("required_pkgs" ),
33+ "ptype" : None if model .ptype == None else model .ptype ().json (),
34+ },
35+ versioned = versioned ,
3436 )
3537
3638 # to do: Model card
@@ -46,15 +48,15 @@ def vetiver_pin_write(board, model: VetiverModel, versioned: bool=True):
4648def vetiver_pin_read (board , name : str , version : str = None ) -> VetiverModel :
4749 """
4850 Read pin and populate VetiverModel
49-
51+
5052 Parameters
5153 ----------
5254 board:
5355 A pin board, created by `pins.board_folder()` or another `board_` function.
5456 name: string
5557 Pin name
5658 version: str
57- Retrieve a specific version of a pin.
59+ Retrieve a specific version of a pin.
5860
5961 Returns
6062 --------
@@ -63,23 +65,22 @@ def vetiver_pin_read(board, name: str, version: str = None) -> VetiverModel:
6365 Notes
6466 -----
6567 If reading a board from RSConnect, the `board` argument must be in "username/modelname" format.
66-
68+
6769 """
68- version = version if version is not None else _choose_version (board .pin_versions (name ))
69-
70- model = board .pin_read (name , version )
71- meta = board .pin_meta (name )
72-
73- v = VetiverModel (model = model ,
74- model_name = name ,
75- description = meta .description ,
76- metadata = vetiver_meta (user = meta .user ,
77- version = version ,
78- url = meta .user .get ("url" ), # None all the time, besides Connect
79- required_pkgs = meta .user .get ("required_pkgs" )
80- ),
81- ptype_data = json .loads (meta .user .get ("ptype" )) if meta .user .get ("ptype" ) else None ,
82- versioned = True
83- )
84-
70+
71+ warnings .warn (
72+ "vetiver_pin_read will be removed in v1.0.0. Use classmethod VetiverModel.from_pin() instead" ,
73+ DeprecationWarning ,
74+ )
75+
76+ version = (
77+ version if version is not None else _choose_version (board .pin_versions (name ))
78+ )
79+
80+ v = VetiverModel .from_pin (
81+ board = board ,
82+ name = name ,
83+ version = version
84+ )
85+
8586 return v
0 commit comments