Ipython: Pathlib, Pathlib partout.

Créé le 28 août 2020  ·  22Commentaires  ·  Source: ipython/ipython

Il existe de nombreux endroits où nous pourrions utiliser Pathlib.

Recherchez tous les endroits qui utilisent with open(...) et demandez-vous:

  • L'argument est-il une chaîne?
  • serait-il sensé d'en faire un Path() ,
  • jusqu'où en amont dans le code puis-je en faire un chemin.

N'essayez pas de mordre plus que vous ne pouvez mâcher (ou plus que ce que je peux examiner), essayez de réparer un endroit à la fois.

Hacktoberfest good first issue help wanted

Commentaire le plus utile

Salut à tous, j'essaie de revoir tous les PR, il y en a beaucoup qui abordent ces problèmes, faites attention que certains d'entre vous envoient des changements pour lesquels il y a déjà d'autres PR ouverts.

Tous les 22 commentaires

Bonjour @Carreau , si personne ne travaille sur /core/page.py pour utiliser Pathlib, puis-je participer à cette partie?

Bonjour @Carreau , si personne ne travaille sur /core/page.py pour utiliser Pathlib, puis-je participer à cette partie?

Bien sûr, s'il vous plaît. Merci.

Salut, je voudrais travailler sur core / interactiveshell.py et y ajouter plus d'utilisation de Pathlib.
Puis-je aider avec ça?

Hey @Carreau, puis-je prendre en charge testing / iptestcontroller.py et core / magics / execution.py?

Pourrait également être utile: https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

Il existe de nombreux endroits autres que with open() qui pourraient utiliser le traitement pathlib:

-    conda_history = os.path.join(sys.prefix, 'conda-meta', 'history')
-    return os.path.exists(conda_history)
+    return Path(sys.prefix, 'conda-meta', 'history').exists()

C'est un bon point.

Le sam.10 octobre 2020 à 20:33 Blazej Michalik [email protected]
a écrit:

Pourrait également être utile:
https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

Il existe de nombreux endroits autres que open () qui pourraient utiliser pathlib
traitement:

  • conda_history = os.path.join (sys.prefix, 'conda-meta', 'history') - retourne os.path.exists (conda_history) + return Path (sys.prefix, 'conda-meta', 'history') .existe ()

-
Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/ipython/ipython/issues/12515#issuecomment-706630653 ,
ou se désinscrire
https://github.com/notifications/unsubscribe-auth/ADMY5F73MJDQ6CL32KEUZS3SKD4LXANCNFSM4QNPWX2Q
.

Pourrait également être utile: https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

Il existe de nombreux endroits autres que with open() qui pourraient utiliser le traitement pathlib:

Bien que ... certains d'entre eux puissent être moins triviaux et plus sujets aux erreurs, surtout lorsqu'ils sont interprétés comme du texte. Par exemple, lors du retour d'un objet PosixPath code est interrompu dans la portée ci-dessus car il est en cours de ' '.join() avec d'autres arguments du shell.

Il reste encore des endroits pour résoudre ce problème? On dirait que beaucoup de gens y travaillent.
edit: trouvé, tant pis

Il reste encore des endroits pour résoudre ce problème? On dirait que beaucoup de gens y travaillent.

Je vérifie lentement les PR et les fusionne, je ne sais pas s'il reste d'autres endroits.

Il y a d'autres choses que vous pouvez essayer; recherchez tous les emplacements qui utilisent cast_unicode / cast_bytes, et voyez s'ils sont amovibles. Beaucoup d'entre eux sont dus à l'ancienne compatibilité Python 2.

par exemple il y a

def find_file(obj) -> str:
  ...
    fname = None
    try:
        fname = inspect.getabsfile(obj)
    except TypeError:
        # For an instance, the file that matters is where its class was
        # declared.
        if hasattr(obj, '__class__'):
            try:
                fname = inspect.getabsfile(obj.__class__)
            except TypeError:
                # Can happen for builtins
                pass
    except:
        pass
    return cast_unicode(fname)

Si vous pouvez prouver que inspect.getabsfil renvoie toujours str et non octets, alors cast_unicode n'est pas nécessaire. C'est un peu plus de travail, mais cela nettoierait un peu la base de code.

J'ai recherché les fonctions dans tout le projet et j'en ai trouvé beaucoup. Dois-je envisager de les remplacer tous par des alternatives Pathlib ou quels fichiers devrais-je envisager de ne pas remplacer les fonctions dans?

Désolé si je n'ai pas pu vous faire comprendre ce que je veux dire.

Je travaille sur paths.py et j'ai trouvé la ligne suivante dans plusieurs fonctions:

assert isinstance(ipdir, str)

L'une de ces assertions donne un message disant "all path manipulation should be str(unicode), but are not." .

Dois-je supprimer ces lignes pour que le passage à pathlib puisse fonctionner?

Je travaille sur paths.py et j'ai trouvé la ligne suivante dans plusieurs fonctions:

assert isinstance(ipdir, str)

L'une de ces assertions donne un message disant "all path manipulation should be str(unicode), but are not." .

Dois-je supprimer ces lignes pour que le passage à pathlib puisse fonctionner?

Oui, certains endroits ne fonctionnent pas à cause de cela.

Salut à tous, j'essaie de revoir tous les PR, il y en a beaucoup qui abordent ces problèmes, faites attention que certains d'entre vous envoient des changements pour lesquels il y a déjà d'autres PR ouverts.

Pourquoi est-ce fermé maintenant?

@meeseeksdev ouvert

Awww, désolé ashwinvis vous ne semblez pas être autorisé à le faire, veuillez demander à un responsable du dépôt.

Je suis nouveau dans la contribution open source et je serais ravi de travailler sur ce problème. Une fois mes modifications terminées, quel serait le moyen le plus simple de tester le code avant de créer un PR?

Je suis nouveau dans la contribution open source et je serais ravi de travailler sur ce problème. Une fois mes modifications terminées, quel serait le moyen le plus simple de tester le code avant de créer un PR?

Bonjour @squarebat
Vous devriez faire ceci:

  • Installez les dépendances de test en exécutant cette commande à la racine du dépôt:
$ pip3 install -e .[test]
  • Puis exécutez les tests avec
$ iptest

Je veux travailler sur le fichier test_run.py . Cependant, j'ai du mal à résoudre certaines erreurs dans ce fichier. Les deux principales erreurs sont

  • undefined variable get_ipython (Celui-ci est résolu en ajoutant une importation mais cela semble faux)

  • undefined variable _ip : Dans certaines fonctions, _ip est initialisé comme _ip = get_ipython() ce qui le définit, mais dans d'autres fonctions, il n'est pas initialisé, ce qui provoque une erreur.

J'ai configuré mon environnement en utilisant pip install .
Je voulais juste savoir si j'avais fait une erreur lors de la configuration de l'environnement, ou s'il y avait un bogue dans le fichier test_run.py .

J'ai configuré mon environnement en utilisant pip install

Vous devez utiliser pip install -e .[test]

Le -e signifie que vous l'installez en mode modifiable.

salut! C'est la première fois que je contribue à un projet open source, j'aimerais travailler sur cette question.
puis-je être affecté?

Cette page vous a été utile?
0 / 5 - 0 notes