openapi-python-client doesn't find autoflake even when on $PATH

Ouverte
#685 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
45/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
python
Domaine
cli, tooling

Piste de recherche

Commencez dans openapi_python_client/init.py vers la ligne 157 et reproduisez le rapport avec un environnement virtuel, autoflake sur PATH et le fichier openapi.yaml fourni. Suivez la manière dont la commande de génération invoque autoflake et vérifiez que la génération réussit lorsque l’exécutable est disponible sur PATH.

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

Description

🐞bug

Describe the bug
Even when autoflake is on the PATH, openapi-python-client seems to claim it isn't.

To Reproduce
Steps to reproduce the behavior:

⊙  python3.10 -m venv venv && venv/bin/python -m pip install --quiet openapi-python-client

⊙  ls venv/bin/
Activate.ps1  activate.csh   autoflake  blackd  isort                   openapi-python-client  pip3     pyflakes  python3
activate      activate.fish  black      httpx   isort-identify-imports  pip                    pip3.10  python    python3.10

⊙  PATH=venv/bin:$PATH

⊙  type -a openapi-python-client
openapi-python-client is venv/bin/openapi-python-client

⊙  type -a autoflake
autoflake is venv/bin/autoflake

⊙  autoflake --help
<help output>

⊙  openapi-python-client generate --path openapi.yaml
Generating foo-client
Error(s) encountered while generating, client was not created

autoflake failed

/bin/sh: autoflake: command not found



If you believe this was a mistake or this tool is missing a feature you need, please open an issue at https://github.com/openapi-generators/openapi-python-client/issues/new/choose

Expected behavior
autoflake is found

OpenAPI Spec File

openapi: 3.0.1
info:
  title: Foo
  description: bar`
  contact:
    email: foo@example.com
  version: 0.1.0
servers:
- url: example.com
tags:
- name: foo
  description: |
      bar
paths:
  "/baz":
    responses:
      get:
        tags:
        - foo
        summary: List foo
        operationId: listFoo
        parameters:
        responses:
          "200":
            description: Foo
            content:
              application/json:
                schema:
                  type: array
                  items:
                    type: number

Desktop (please complete the following information):

⊙  uname -a                                                                                                                                                                         julian@Airm
Darwin Airm.local 21.6.0 Darwin Kernel Version 21.6.0: Wed Aug 10 14:28:35 PDT 2022; root:xnu-8020.141.5~2/RELEASE_ARM64_T8101 arm64 arm Darwin

~/Desktop/test 
⊙  venv/bin/python --version                                                                                                                                                        julian@Airm
Python 3.10.7

~/Desktop/test 
⊙  venv/bin/openapi-python-client --version                                                                                                                                         julian@Airm
openapi-python-client version: 0.11.6

Additional context
I haven't investigated carefully yet, though I'm possibly happy to do so after getting my client working, but I suspect the issue is here:

https://github.com/openapi-generators/openapi-python-client/blob/9cea5af550a629415874fb4007e57774af9a5382/openapi_python_client/__init__.py#L157

where commands are executed in a subshell.

As I say I definitely don't fully understand the internals of the project, but generally I think using shell=True is worth trying to avoid as often as possible. I suspect here from what I see, someone can specify arbitrary commands to run post-generation and is doing so as a str in the config? If it's not appealing to change that instead to be a list (and then you don't need shell=True), you could also use shlex.split, which is equally a bit fiddly but would mean you don't spawn a subshell. Or alternatively you could assume the things are installed to the same Python interpreter as openapi-python-generator, and invoke python -m black or python -m autoflake by using sys.executable on the same Python openapi-python-generator is run with, without needing to search $PATH.

Langage dominant
Python
Étoiles
2k
Forks
293
Merge moyen
34 min
PR mergées (30 j)
1

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.

Autres issues de openapi-generators/openapi-python-client

Toutes les issues de openapi-generators/openapi-python-client

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

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