posit-dev / posit-dev/rsconnect-python

deploy manifest errs when give a directory containing a manifest

Abierto
#587 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Python
Estrellas
37
Forks
28
Merge medio
1 d 3 h
PR fusionados (30 d)
7

Descripción

The help for deploy manifest reads:

Usage: rsconnect deploy manifest [OPTIONS] FILE

  Deploy content to Posit Connect, Posit Cloud, or shinyapps.io using an
  existing manifest.json file.  The specified file must either be named
  "manifest.json" or refer to a directory that contains a file named
  "manifest.json".

However, when providing a directory that contains a manifest.json, an error results.

Traceback (most recent call last):
  File "BASE_DIR/env/lib/python3.11/site-packages/rsconnect/main.py", line 108, in wrapper
    result = func(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^
  File "BASE_DIR/env/lib/python3.11/site-packages/click/decorators.py", line 33, in new_func
    return f(get_current_context(), *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "BASE_DIR/env/lib/python3.11/site-packages/rsconnect/main.py", line 1119, in deploy_manifest
    kwargs["title"] = title or default_title_from_manifest(file)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "BASE_DIR/env/lib/python3.11/site-packages/rsconnect/bundle.py", line 744, in default_title_from_manifest
    source_manifest, _ = read_manifest_file(file)
                         ^^^^^^^^^^^^^^^^^^^^^^^^
  File "BASE_DIR/env/lib/python3.11/site-packages/rsconnect/bundle.py", line 757, in read_manifest_file
    with open(manifest_path, "rb") as f:
         ^^^^^^^^^^^^^^^^^^^^^^^^^
IsADirectoryError: [Errno 21] Is a directory: 'model'
Internal error: [Errno 21] Is a directory: 'model'

Providing the path to the manifest.json works.

# error
rsconnect deploy manifest model
# no error
rsconnect deploy manifest model/manifest.json

Using rsconnect-python 1.23.0.

The manifest is correctly identified:

rsconnect.bundle.validate_manifest_file("model")
#> 'model/manifest.json'

However, in deploy_manifest(), we rewrite the incoming file to file_name but do not consistently use that variable.

https://github.com/rstudio/rsconnect-python/blob/74b7f6899206ff754e29ad282c3dc725ab4e186b/rsconnect/main.py#L1146-L1179

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza en rsconnect/main.py, en deploy_manifest(), y luego sigue default_title_from_manifest() y read_manifest_file() en rsconnect/bundle.py. Compara cómo se usan file y file_name después de la validación del manifiesto y verifica que tanto rsconnect deploy manifest model como la ruta directa del manifiesto se completen sin el error de directorio.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
cli
Tipo de issue
Error
Dificultad
2/5
Tiempo estimado
1-3 horas
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.