Ipython: Pathlib, Pathlib dimana-mana.

Dibuat pada 28 Agu 2020  ·  22Komentar  ·  Sumber: ipython/ipython

Ada banyak tempat di mana kita bisa memanfaatkan Pathlib.

Cari tempat mana pun yang menggunakan with open(...) dan tanyakan pada diri Anda:

  • apakah argumennya sebuah string?
  • apakah masuk akal untuk menjadikannya Path() ,
  • seberapa jauh kode tersebut dapat saya jadikan Path.

Jangan mencoba menggigit lebih dari yang bisa Anda kunyah (atau lebih dari yang bisa saya ulas), coba perbaiki 1 tempat pada satu waktu.

Hacktoberfest good first issue help wanted

Komentar yang paling membantu

Halo semuanya, saya mencoba untuk meninjau semua PR, ada banyak yang menangani masalah ini, hati-hati beberapa dari Anda mengirim perubahan yang sudah ada PR lain yang dibuka.

Semua 22 komentar

Hai @Carreau , jika tidak ada yang mengerjakan /core/page.py untuk menggunakan Pathlib, dapatkah saya mengambil bagian ini?

Hai @Carreau , jika tidak ada yang mengerjakan /core/page.py untuk menggunakan Pathlib, dapatkah saya mengambil bagian ini?

Tentu, tolong. Terima kasih.

Hai, Saya ingin bekerja di core / interactiveshell.py dan menambahkan lebih banyak penggunaan Pathlib di sana.
Bisa saya bantu?

Hai @Carreau, bisakah saya mengikuti testing / iptestcontroller.py dan core / magics / execution.py?

Mungkin juga berguna: https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

Ada banyak tempat selain with open() yang mungkin menggunakan pengobatan 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()

Itu poin yang bagus.

Pada hari Sabtu, 10 Okt, 2020 pukul 20:33 Blazej Michalik [email protected]
menulis:

Mungkin juga berguna:
https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

Ada banyak tempat selain open () yang mungkin menggunakan pathlib
pengobatan:

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

-
Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/ipython/ipython/issues/12515#issuecomment-706630653 ,
atau berhenti berlangganan
https://github.com/notifications/unsubscribe-auth/ADMY5F73MJDQ6CL32KEUZS3SKD4LXANCNFSM4QNPWX2Q
.

Mungkin juga berguna: https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

Ada banyak tempat selain with open() yang mungkin menggunakan pengobatan pathlib:

Meskipun ... beberapa di antaranya mungkin kurang sepele dan lebih rentan kesalahan, terutama saat ditafsirkan sebagai teks. Misalnya, ketika mengembalikan objek PosixPath memecah kode dalam lingkup di atas karena itu menjadi ' '.join() -ed dengan argumen shell lainnya.

Masih ada tempat tersisa untuk memperbaikinya? Sepertinya banyak orang sedang mengerjakannya.
edit: temukan beberapa, lupakan

Masih ada tempat tersisa untuk memperbaikinya? Sepertinya banyak orang sedang mengerjakannya.

Saya perlahan-lahan memeriksa PR dan menggabungkannya, saya tidak yakin apakah ada tempat lain yang tersisa.

Ada hal lain yang bisa Anda coba; temukan semua tempat yang menggunakan cast_unicode / cast_bytes, dan lihat apakah tempat tersebut dapat dilepas. Banyak di antaranya karena kompatibilitas Python 2 lama.

misalnya ada

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)

Jika Anda dapat membuktikan bahwa inspect.getabsfil selalu mengembalikan str dan bukan byte, maka cast_unicode tidak diperlukan. Ini sedikit lebih berhasil, tetapi itu akan membersihkan basis kode.

Saya mencari fungsi di seluruh proyek dan saya menemukan banyak dari mereka. Haruskah saya mempertimbangkan untuk mengganti semuanya dengan alternatif Pathlib atau file apa yang harus saya pertimbangkan untuk tidak mengganti fungsi?

Maaf jika saya tidak bisa membuat Anda mengerti apa yang ingin saya katakan.

Saya sedang mengerjakan paths.py dan saya menemukan baris berikut dalam beberapa fungsi:

assert isinstance(ipdir, str)

Salah satu pernyataan seperti itu memberikan pesan yang mengatakan "all path manipulation should be str(unicode), but are not." .

Haruskah saya menghapus baris seperti itu sehingga perpindahan ke pathlib dapat berfungsi?

Saya sedang mengerjakan paths.py dan saya menemukan baris berikut dalam beberapa fungsi:

assert isinstance(ipdir, str)

Salah satu pernyataan seperti itu memberikan pesan yang mengatakan "all path manipulation should be str(unicode), but are not." .

Haruskah saya menghapus baris seperti itu sehingga perpindahan ke pathlib dapat berfungsi?

Ya, beberapa tempat tidak berfungsi karena itu.

Halo semuanya, saya mencoba untuk meninjau semua PR, ada banyak yang menangani masalah ini, hati-hati beberapa dari Anda mengirim perubahan yang sudah ada PR lain yang dibuka.

Mengapa ini ditutup sekarang?

@meeseeksev terbuka

Awww, maaf ashwinvis Anda sepertinya tidak diizinkan melakukan itu, silakan tanyakan pada pengelola repositori.

Saya baru mengenal kontribusi open source dan ingin sekali menangani masalah ini. Setelah saya selesai dengan perubahan saya, apa cara termudah untuk menguji kode sebelum saya membuat PR?

Saya baru mengenal kontribusi open source dan ingin sekali menangani masalah ini. Setelah saya selesai dengan perubahan saya, apa cara termudah untuk menguji kode sebelum saya membuat PR?

Halo @darebat
Anda harus melakukan ini:

  • Instal dependensi pengujian ini dengan menjalankan perintah ini di root repo:
$ pip3 install -e .[test]
  • Kemudian jalankan pengujian dengan
$ iptest

Saya ingin mengerjakan file test_run.py . Namun, saya kesulitan mengatasi beberapa kesalahan dalam file itu. Dua kesalahan utama tersebut adalah

  • undefined variable get_ipython (Yang ini diselesaikan dengan menambahkan impor tetapi tampaknya salah)

  • undefined variable _ip : Dalam beberapa fungsi _ip diinisialisasi sebagai _ip = get_ipython() maka mendefinisikannya, tetapi dalam fungsi lain tidak diinisialisasi, sehingga menyebabkan kesalahan.

Saya telah menyiapkan lingkungan saya menggunakan pip install .
Saya hanya ingin tahu apakah saya membuat kesalahan saat menyiapkan lingkungan, atau apakah ada bug di file test_run.py .

Saya telah menyiapkan lingkungan saya menggunakan pip install

Anda harus menggunakan pip install -e .[test]

-e berarti Anda menginstalnya dalam mode yang dapat diedit.

Halo! Ini adalah pertama kalinya saya berkontribusi pada proyek open source, saya ingin menangani masalah ini.
bisakah saya ditugaskan?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat