Skip to content

Commit f53a30b

Browse files
committed
adding dict to ptype
1 parent 37dff15 commit f53a30b

22 files changed

Lines changed: 337 additions & 122 deletions

examples/coffeeratings.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,8 @@
3939

4040
# write Dockerfile
4141
vetiver.vetiver_write_docker(path=path, host="0.0.0.0", port="80")
42+
43+
## to run Dockerfile, in CLI
44+
# cd ./coffeeratings
45+
# docker build -t myimage .
46+
# docker run -d --name mycontainer -p 80:80 myimage

examples/coffeeratings/Dockerfile

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
# #
1+
# # Generated by the vetiver package; edit with care
2+
#
23
FROM python:3.8
34

4-
# #
5+
#
56
WORKDIR /code
67

7-
# #
8+
#
89
COPY vetiver_requirements.txt /code/requirements.txt
910

10-
# #
11+
#
1112
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
1213

13-
# #
14+
# edited to copy all information into Dockerfile
1415
COPY . /code/app
1516

16-
# #
17+
#
1718
CMD ["uvicorn", "app.app:api", "--host", "0.0.0.0", "--port", "80"]
18-

examples/coffeeratings/app.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import vetiver
22
import pins
33

4-
5-
b = pins.board_folder('./examples/coffeeratings/')
6-
v = vetiver.vetiver_pin_read(b, 'v', version = '20220414T132046Z-c5e63')
4+
# edited to reflect Docker container path, and allow_pickle_read=True
5+
b = pins.board_folder('/code/app', allow_pickle_read=True)
6+
v = vetiver.vetiver_pin_read(b, 'v', version = '20220415T174503Z-06d9b')
77

88
vetiver_api = vetiver.VetiverAPI(v)
9-
app = vetiver_api.app
9+
api = vetiver_api.app

examples/coffeeratings/v/20220414T132046Z-c5e63/data.txt

Lines changed: 0 additions & 14 deletions
This file was deleted.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
api_version: 1
2+
created: 20220415T174503Z
3+
description: Scikit-learn model of type <class 'sklearn.linear_model._base.LinearRegression'>
4+
file: v.joblib
5+
file_size: 1035
6+
pin_hash: 06d9b5c677c7dcd0
7+
title: 'v: a pinned LinearRegression object'
8+
type: joblib
9+
user:
10+
ptype: '{"aroma": 7.5, "flavor": 7.67, "sweetness": 10.0, "acidity": 7.67, "body":
11+
7.58, "uniformity": 10.0, "balance": 7.42}'
12+
required_pkgs:
13+
- vetiver
14+
- scikit-learn
15+
save_ptype: true

examples/coffeeratings/v/20220414T132046Z-c5e63/v.joblib renamed to examples/coffeeratings/v/20220415T174503Z-06d9b/v.joblib

1.01 KB
Binary file not shown.

examples/coffeeratings/vetiver_requirements.txt

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# This file is autogenerated by pip-compile with python 3.8
33
# To update, run:
44
#
5-
# pip-compile --output-file=./examples/coffeeratings/vetiver_requirements.txt /var/folders/5w/dhznpltj14n3nxr4fybjj8_w0000gn/T/tmpkg4uih6q.in
5+
# pip-compile --output-file=./examples/coffeeratings/vetiver_requirements.txt /var/folders/5w/dhznpltj14n3nxr4fybjj8_w0000gn/T/tmpwe9ooski.in
66
#
77
anyio==3.5.0
88
# via starlette
@@ -15,9 +15,7 @@ charset-normalizer==2.0.12
1515
click==8.1.2
1616
# via uvicorn
1717
fastapi==0.75.1
18-
# via
19-
# -r /var/folders/5w/dhznpltj14n3nxr4fybjj8_w0000gn/T/tmpkg4uih6q.in
20-
# vetiver
18+
# via vetiver
2119
h11==0.13.0
2220
# via uvicorn
2321
idna==3.3
@@ -37,9 +35,7 @@ numpy==1.22.3
3735
# scipy
3836
# vetiver
3937
pandas==1.4.2
40-
# via
41-
# pins
42-
# vetiver
38+
# via vetiver
4339
pydantic==1.9.0
4440
# via
4541
# fastapi
@@ -48,15 +44,11 @@ python-dateutil==2.8.2
4844
# via pandas
4945
pytz==2022.1
5046
# via pandas
51-
pyyaml==6.0
52-
# via pins
5347
requests==2.27.1
54-
# via
55-
# pins
56-
# vetiver
48+
# via vetiver
5749
scikit-learn==1.0.2
5850
# via
59-
# -r /var/folders/5w/dhznpltj14n3nxr4fybjj8_w0000gn/T/tmpkg4uih6q.in
51+
# -r /var/folders/5w/dhznpltj14n3nxr4fybjj8_w0000gn/T/tmpwe9ooski.in
6052
# vetiver
6153
scipy==1.8.0
6254
# via scikit-learn
@@ -78,5 +70,6 @@ urllib3==1.26.9
7870
# via requests
7971
uvicorn==0.17.6
8072
# via vetiver
81-
git+https://github.com/isabelizimm/vetiver-python@write-docker-file
82-
git+https://github.com/machow/pins-python
73+
74+
# manually edited to reflect appropriate versions of packages currently being developed
75+
git+https://github.com/isabelizimm/vetiver-python.git@37dff15a63238b1e6c44788af70473f19c29d83e

vetiver/attach_pkgs.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
1-
import numpy as np
21
import tempfile
32
import os
43
from vetiver import VetiverModel
54

65
def load_pkgs(model: VetiverModel = None, packages: list = None, path=""):
7-
"""_summary_
6+
"""Load packages necessary for predictions
87
98
Args
109
----
11-
model (VetiverModel, optional):
12-
VetiverModel to extract packages from. Defaults to None.
13-
packages (list, optional):
14-
List of extra packages to include. Defaults to None.
15-
path (str, optional):
16-
Where to save output file. Defaults to ".".
10+
model: VetiverModel
11+
VetiverModel to extract packages from
12+
packages: list
13+
List of extra packages to include
14+
path: str
15+
Where to save output file
1716
"""
1817

19-
required_pkgs = ["fastapi", "vetiver", "pins"]
18+
required_pkgs = ["vetiver"]
2019
if packages:
2120
required_pkgs = list(set(required_pkgs + packages))
2221
if model.metadata.get("required_pkgs"):

vetiver/handlers/_interface.py

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,6 @@
22
from torch import nn
33
import sklearn
44

5-
class NoAvailableHandlerError(Exception):
6-
"""
7-
Throw an error if we don't find a method
8-
available to create a handler for `model`
9-
"""
10-
11-
def __init__(
12-
self,
13-
message="Unsupported model type. Supported models are: sklearn, torch.",
14-
):
15-
self.message = message
16-
super().__init__(self.message)
17-
185
def create_translator(model, ptype_data, save_ptype):
196
"""check for model type to handle prediction
207
@@ -36,4 +23,4 @@ def create_translator(model, ptype_data, save_ptype):
3623
return sklearn_vt.SKLearnHandler(model, ptype_data, save_ptype)
3724

3825
else:
39-
NoAvailableHandlerError
26+
raise NotImplementedError

vetiver/meta.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,18 @@
1-
def vetiver_meta(user:list = None, version = None,
2-
url = None, required_pkgs = None):
1+
def vetiver_meta(user: dict = None, version: str = None,
2+
url: str = None, required_pkgs: list = None):
3+
"""Populate relevant metadata for VetiverModel
34
5+
Args
6+
----
7+
user: dict
8+
Extra user-defined information
9+
version: str
10+
Model version, generally populated from pins
11+
url: str
12+
Discoverable URL for API
13+
required_pkgs: list
14+
Packages necessary to make predictions
15+
"""
416
meta = {
517
'user': user,
618
'version': version,

0 commit comments

Comments
 (0)