Ipython: Pathlib, Pathlib überall.

Erstellt am 28. Aug. 2020  ·  22Kommentare  ·  Quelle: ipython/ipython

Es gibt viele Orte, an denen wir Pathlib gebrauchen könnten.

Suchen Sie nach Orten, an denen with open(...) und fragen Sie sich:

  • Ist das Argument eine Zeichenfolge?
  • Wäre es sinnvoll, daraus ein Path() machen?
  • Wie weit stromaufwärts im Code kann ich daraus einen Pfad machen?

Versuchen Sie nicht, mehr zu beißen, als Sie kauen können (oder mehr, als ich überprüfen kann), sondern versuchen Sie, jeweils 1 Stelle zu reparieren.

Hacktoberfest good first issue help wanted

Hilfreichster Kommentar

Hallo allerseits, ich versuche, alle PRs zu überprüfen. Es gibt viele, die dieses Problem angehen. Seien Sie vorsichtig, einige von Ihnen senden Änderungen, für die bereits andere PRs geöffnet sind.

Alle 22 Kommentare

Hallo @Carreau , wenn niemand an /core/page.py für die Verwendung von Pathlib arbeitet, kann ich diesen Teil übernehmen?

Hallo @Carreau , wenn niemand an /core/page.py für die Verwendung von Pathlib arbeitet, kann ich diesen Teil übernehmen?

Klar bitte. Vielen Dank.

Hallo, ich möchte an core / interaktiveshell.py arbeiten und dort mehr Verwendung von Pathlib hinzufügen.
Kann ich dabei helfen?

Hey @Carreau, kann ich / iptestcontroller.py und core / magics / execute.py testen?

Könnte auch von Nutzen sein: https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

Es gibt viele andere Orte als with open() , an denen möglicherweise eine Pathlib-Behandlung angewendet wird:

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

Das ist ein guter Punkt.

Am Samstag, den 10. Oktober 2020 um 20:33 Uhr Blazej Michalik [email protected]
schrieb:

Könnte auch von Nutzen sein:
https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

Es gibt viele andere Orte als mit open (), die pathlib verwenden könnten
Behandlung:

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

- -
Sie erhalten dies, weil Sie kommentiert haben.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/ipython/ipython/issues/12515#issuecomment-706630653 ,
oder abbestellen
https://github.com/notifications/unsubscribe-auth/ADMY5F73MJDQ6CL32KEUZS3SKD4LXANCNFSM4QNPWX2Q
.

Könnte auch von Nutzen sein: https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

Es gibt viele andere Orte als with open() , an denen möglicherweise eine Pathlib-Behandlung angewendet wird:

Obwohl ... einige von ihnen möglicherweise weniger trivial und fehleranfälliger sind, insbesondere wenn sie als Text interpretiert werden. Wenn Sie beispielsweise ein PosixPath -Objekt zurückgeben, wird der Code im obigen Bereich unterbrochen, da er mit anderen Shell-Argumenten ' '.join() -ed ist.

Gibt es noch Plätze, um das zu beheben? Es sieht so aus, als würden viele Leute daran arbeiten.
bearbeiten: einige gefunden, egal

Gibt es noch Plätze, um das zu beheben? Es sieht so aus, als würden viele Leute daran arbeiten.

Ich überprüfe langsam die PRs und füge sie zusammen. Ich bin mir nicht sicher, ob noch andere Plätze frei sind.

Es gibt andere Dinge, die Sie versuchen können; Suchen Sie alle Orte, die cast_unicode / cast_bytes verwenden, und prüfen Sie, ob sie entfernbar sind. Viele davon sind auf die alte Python 2-Kompatibilität zurückzuführen.

zum Beispiel gibt es

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)

Wenn Sie beweisen können, dass inspect.getabsfil immer str und keine Bytes zurückgibt, ist cast_unicode erforderlich. Es ist ein bisschen mehr Arbeit, aber das würde die Codebasis bereinigen.

Ich habe im gesamten Projekt nach den Funktionen gesucht und viele davon gefunden. Sollte ich in Betracht ziehen, alle durch Pathlib-Alternativen zu ersetzen, oder welche Dateien sollte ich in Betracht ziehen, die Funktionen in nicht zu ersetzen?

Tut mir leid, wenn ich dich nicht verstehen lassen konnte, was ich sagen möchte.

Ich arbeite an paths.py und habe die folgende Zeile in mehreren Funktionen gefunden:

assert isinstance(ipdir, str)

Eine dieser Behauptungen gibt eine Nachricht mit der Aufschrift "all path manipulation should be str(unicode), but are not." .

Sollte ich solche Zeilen löschen, damit die Umstellung auf pathlib funktioniert?

Ich arbeite an paths.py und habe die folgende Zeile in mehreren Funktionen gefunden:

assert isinstance(ipdir, str)

Eine dieser Behauptungen gibt eine Nachricht mit der Aufschrift "all path manipulation should be str(unicode), but are not." .

Sollte ich solche Zeilen löschen, damit die Umstellung auf pathlib funktioniert?

Ja, einige Orte funktionieren deswegen nicht.

Hallo allerseits, ich versuche, alle PRs zu überprüfen. Es gibt viele, die dieses Problem angehen. Seien Sie vorsichtig, einige von Ihnen senden Änderungen, für die bereits andere PRs geöffnet sind.

Warum ist das jetzt geschlossen?

@meeseeksdev offen

Awww, sorry ashwinvis, das scheint dir nicht erlaubt zu sein, bitte frag einen Repository-Betreuer.

Ich bin neu im Open Source-Beitrag und würde gerne an diesem Thema arbeiten. Was ist der einfachste Weg, um den Code zu testen, bevor ich eine PR erstelle, nachdem ich mit meinen Änderungen fertig bin?

Ich bin neu im Open Source-Beitrag und würde gerne an diesem Thema arbeiten. Was ist der einfachste Weg, um den Code zu testen, bevor ich eine PR erstelle, nachdem ich mit meinen Änderungen fertig bin?

Hallo @squarebat
Du solltest das tun:

  • Installieren Sie die Testabhängigkeiten, indem Sie diesen Befehl im Stammverzeichnis des Repos ausführen:
$ pip3 install -e .[test]
  • Führen Sie dann die Tests mit aus
$ iptest

Ich möchte an der Datei test_run.py . Ich habe jedoch Probleme, einige Fehler in dieser Datei zu beheben. Die beiden Hauptfehler sind

  • undefined variable get_ipython (Dieser wird durch Hinzufügen eines Imports behoben, aber das scheint falsch zu sein.)

  • undefined variable _ip : In einigen Funktionen wird _ip als _ip = get_ipython() initialisiert, wodurch es definiert wird. In anderen Funktionen wird es jedoch nicht initialisiert, was zu Fehlern führt.

Ich habe meine Umgebung mit pip install .
Ich wollte nur wissen, ob ich beim Einrichten der Umgebung einen Fehler gemacht habe oder ob die Datei test_run.py einen Fehler enthält.

Ich habe meine Umgebung mit pip install

Sie müssen pip install -e .[test]

Das -e bedeutet, dass Sie es im bearbeitbaren Modus installieren.

Hallo! Dies ist mein erster Beitrag zu einem Open Source-Projekt. Ich möchte an diesem Thema arbeiten.
kann ich zugewiesen werden?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen