Ipython: Pathlib, Pathlib везде.

Созданный на 28 авг. 2020  ·  22Комментарии  ·  Источник: ipython/ipython

Есть много мест, где мы могли бы использовать Pathlib.

Найдите места, где используется with open(...) и спросите себя:

  • аргумент - это строка?
  • Было бы разумно сделать это Path() ,
  • как далеко в коде я могу сделать его путем.

Не пытайтесь откусить больше, чем вы можете прожевать (или больше, чем я могу повторить), старайтесь исправить одно место за раз.

Hacktoberfest good first issue help wanted

Самый полезный комментарий

Привет всем, я пытаюсь просмотреть все PR, есть много решения этих проблем, будьте осторожны, некоторые из вас отправляют изменения, для которых уже открыты другие PR.

Все 22 Комментарий

Привет @Carreau , если никто не работает над /core/page.py для использования Pathlib, могу ли я принять это участие?

Привет @Carreau , если никто не работает над /core/page.py для использования Pathlib, могу ли я принять это участие?

Конечно, пожалуйста. Благодарю.

Привет, я хотел бы поработать над core / interactiveshell.py и добавить туда еще больше возможностей Pathlib.
Могу я помочь с этим?

Привет, @Carreau, могу я взять на себя тестирование / iptestcontroller.py и core / magics / execution.py?

Также может быть полезно: https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

Есть много других мест, кроме with open() , в которых может использоваться обработка 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()

Неплохо подмечено.

Сб, 10 октября 2020 г., в 20:33 Blazej Michalik [email protected]
написал:

Также может пригодиться:
https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

Есть много мест, кроме open (), которые могут использовать pathlib
лечение:

  • conda_history = os.path.join (sys.prefix, 'conda-meta', 'history') - вернуть os.path.exists (conda_history) + return Path (sys.prefix, 'conda-meta', 'history') .существуют()

-
Вы получили это, потому что оставили комментарий.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/ipython/ipython/issues/12515#issuecomment-706630653 ,
или отписаться
https://github.com/notifications/unsubscribe-auth/ADMY5F73MJDQ6CL32KEUZS3SKD4LXANCNFSM4QNPWX2Q
.

Также может быть полезно: https://docs.python.org/3/library/pathlib.html#correspondence -to-tools-in-the-os-module

Есть много других мест, кроме with open() , в которых может использоваться обработка pathlib:

Хотя ... некоторые из них могут быть менее тривиальными и более подверженными ошибкам, особенно когда они интерпретируются как текст. Например, при возврате объекта PosixPath прерывается код в указанной выше области, поскольку он обрабатывается ' '.join() с другими аргументами оболочки.

Есть еще места, где можно это исправить? Похоже, над этим работает много людей.
изменить: нашел, неважно

Есть еще места, где можно это исправить? Похоже, над этим работает много людей.

Я медленно проверяю PR и объединяю их, не уверен, остались ли еще места.

Есть и другие вещи, которые вы можете попробовать; найдите все места, где используется cast_unicode / cast_bytes, и посмотрите, можно ли их удалить. Многие из них связаны со старой совместимостью с Python 2.

например есть

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)

Если вы можете доказать, что inspect.getabsfil всегда возвращает str, а не байты, тогда cast_unicode не требуется. Это немного больше работы, но это немного очистит кодовую базу.

Я искал функции по всему проекту и нашел их много. Должен ли я рассмотреть вопрос о замене всех из них альтернативами Pathlib или в каких файлах мне следует подумать, не заменяя функции?

Извините, если я не смог заставить вас понять, что я хочу сказать.

Я работаю над paths.py и обнаружил следующую строку в нескольких функциях:

assert isinstance(ipdir, str)

Одно из таких утверждений дает сообщение "all path manipulation should be str(unicode), but are not." .

Должен ли я удалить такие строки, чтобы переход к pathlib работал?

Я работаю над paths.py и обнаружил следующую строку в нескольких функциях:

assert isinstance(ipdir, str)

Одно из таких утверждений дает сообщение "all path manipulation should be str(unicode), but are not." .

Должен ли я удалить такие строки, чтобы переход к pathlib работал?

Да, некоторые места не работают из-за этого.

Привет всем, я пытаюсь просмотреть все PR, есть много решения этих проблем, будьте осторожны, некоторые из вас отправляют изменения, для которых уже открыты другие PR.

Почему сейчас это закрыто?

@meeseeksdev открыть

Оууу, извини, Эшвинвис, похоже, тебе не разрешено это делать, спросите у сопровождающего репозитория.

Я новичок в вкладе с открытым исходным кодом и хотел бы поработать над этим вопросом. Каким будет самый простой способ протестировать код перед созданием PR после того, как я внесу свои изменения?

Я новичок в вкладе с открытым исходным кодом и хотел бы поработать над этим вопросом. Каким будет самый простой способ протестировать код перед созданием PR после того, как я внесу свои изменения?

Привет @squarebat
Вам следует сделать это:

  • Установите тестовые зависимости, запустив эту команду в корне репо:
$ pip3 install -e .[test]
  • Затем выполните тесты с
$ iptest

Я хочу работать над файлом test_run.py . Однако у меня возникают проблемы с исправлением некоторых ошибок в этом файле. Две основные ошибки:

  • undefined variable get_ipython (Эта проблема решается добавлением импорта, но это кажется неправильным)

  • undefined variable _ip : в некоторых функциях _ip инициализируется как _ip = get_ipython() следовательно, определяет его, но в других функциях он не инициализируется, что вызывает ошибку.

Я настроил свою среду, используя pip install .
Я просто хотел знать, сделал ли я ошибку при настройке среды или есть ошибка в файле test_run.py .

Я настроил свою среду, используя pip install

Вы должны использовать pip install -e .[test]

-e означает, что вы устанавливаете его в редактируемом режиме.

Здравствуйте! Я впервые участвую в проекте с открытым исходным кодом, я хотел бы поработать над этим вопросом.
могу ли я получить назначение?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги