posit-dev / posit-dev/rsconnect-python

deploy manifest errs when give a directory containing a manifest

Ouverte
#587 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Python
Étoiles
37
Forks
28
Merge moyen
1 j 3 h
PR mergées (30 j)
7

Description

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

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez dans rsconnect/main.py avec deploy_manifest(), puis suivez default_title_from_manifest() et read_manifest_file() dans rsconnect/bundle.py. Comparez la manière dont file et file_name sont utilisés après la validation du manifeste, et vérifiez que rsconnect deploy manifest model comme le chemin direct du manifeste s’exécutent jusqu’au bout sans l’erreur de répertoire.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
cli
Type d'issue
Bug
Difficulté
2/5
Temps estimé
1-3 heures
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
48/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.