Skip to content

vetiver.deploy_rsconnect fails on rsconnect-python < 1.12.1 #131

@SamEdwardes

Description

@SamEdwardes

TL/DR

I think that vetiver needs to pin a requirement of rsconnect-python >= 1.12.1.

Reprex rsconnect-python==1.7.1

requirements.txt

vetiver==0.1.8
rsconnect-python==1.7.1

train_and_deploy_model.py

import os

import pins
import vetiver

from vetiver.data import mtcars
from sklearn.linear_model import LinearRegression

# Fit a model ------------------------------------------------------------------

lm = LinearRegression().fit(mtcars, mtcars["mpg"])
model_name = "sam.edwardes/mtcars-linear-model"

v = vetiver.VetiverModel(
    lm,
    model_name=model_name,
    save_ptype=True,
    ptype_data=mtcars
)

# Pin model --------------------------------------------------------------------

board = pins.board_rsconnect(
    server_url=os.getenv("CONNECT_URL"),
    api_key=os.getenv("CONNECT_API_KEY"),
    allow_pickle_read=True
)

vetiver.vetiver_pin_write(board, v)

# Deploy model -----------------------------------------------------------------

vetiver.deploy_rsconnect(
    connect_server=os.getenv("CONNECT_URL"),
    board=board,
    pin_name=model_name
)

Execute the code:

python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip wheel setuptools
python -m pip install -r requirements.txt
python python train_and_deploy_model.py
Traceback (most recent call last):
  File "/usr/home/sam.edwardes/tmp/vetiver-reprex/train_model.py", line 33, in <module>
    vetiver.deploy_rsconnect(
  File "/usr/home/sam.edwardes/tmp/vetiver-reprex/.venv/lib/python3.10/site-packages/vetiver/rsconnect.py", line 101, in deploy_rsconnect
    deploy_python_fastapi(
TypeError: deploy_python_fastapi() got an unexpected keyword argument 'image'

Reprex rsconnect-python>=1.8.0 and rsconnect-python<=1.12.0

requirements.txt

I tested under the following scenarios, they all go the same error:

  • rsconnect-python==1.8.0
  • rsconnect-python==1.8.1
  • rsconnect-python==1.9.0
  • rsconnect-python==1.10.0
  • rsconnect-python==1.11.0
  • rsconnect-python==1.12.0
vetiver==0.1.8
rsconnect-python==XXX

train_and_deploy_model.py

import os

import pins
import vetiver

from vetiver.data import mtcars
from sklearn.linear_model import LinearRegression

# Fit a model ------------------------------------------------------------------

lm = LinearRegression().fit(mtcars, mtcars["mpg"])
model_name = "sam.edwardes/mtcars-linear-model"

v = vetiver.VetiverModel(
    lm,
    model_name=model_name,
    save_ptype=True,
    ptype_data=mtcars
)

# Pin model --------------------------------------------------------------------

board = pins.board_rsconnect(
    server_url=os.getenv("CONNECT_URL"),
    api_key=os.getenv("CONNECT_API_KEY"),
    allow_pickle_read=True
)

vetiver.vetiver_pin_write(board, v)

# Deploy model -----------------------------------------------------------------

vetiver.deploy_rsconnect(
    connect_server=os.getenv("CONNECT_URL"),
    board=board,
    pin_name=model_name
)

Execute the code:

python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip wheel setuptools
python -m pip install -r requirements.txt
python python train_and_deploy_model.py
Traceback (most recent call last):
  File "/usr/home/sam.edwardes/tmp/vetiver-reprex/train_model.py", line 33, in <module>
    vetiver.deploy_rsconnect(
  File "/usr/home/sam.edwardes/tmp/vetiver-reprex/.venv/lib/python3.10/site-packages/vetiver/rsconnect.py", line 101, in deploy_rsconnect
    deploy_python_fastapi(
  File "/usr/home/sam.edwardes/tmp/vetiver-reprex/.venv/lib/python3.10/site-packages/rsconnect/actions.py", line 811, in deploy_python_fastapi
    return _deploy_by_python_framework(
  File "/usr/home/sam.edwardes/tmp/vetiver-reprex/.venv/lib/python3.10/site-packages/rsconnect/actions.py", line 1058, in _deploy_by_python_framework
    ) = gatherer(connect_server, app_store, directory, entry_point, new, app_id, title)
  File "/usr/home/sam.edwardes/tmp/vetiver-reprex/.venv/lib/python3.10/site-packages/rsconnect/actions.py", line 1381, in gatherer
    return _gather_basic_deployment_info_for_framework(
  File "/usr/home/sam.edwardes/tmp/vetiver-reprex/.venv/lib/python3.10/site-packages/rsconnect/actions.py", line 1440, in _gather_basic_deployment_info_for_framework
    app_id, existing_app_mode = app_store.resolve(connect_server.url, app_id, app_mode)
AttributeError: 'NoneType' object has no attribute 'url'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions