Size: a a a

2020 October 31

ED

Eugene Denisov in PiterPy Meetup
Боброний
А что mypy говорит?
MyPy ожидаемо это проглатывает. Но вот в связи с аргументом @rktavi этот вопрос и возник.
источник

DB

Dima Boger in PiterPy Meetup
Stan
Кажется, что логичнее Union просто ради декларации намерений
+
источник

E

Eugene in PiterPy Meetup
Eugene Denisov
MyPy ожидаемо это проглатывает. Но вот в связи с аргументом @rktavi этот вопрос и возник.
Вспомнил про эту заметку :)
https://habr.com/ru/post/451252/
источник

ED

Eugene Denisov in PiterPy Meetup
Я например попросил мэйнтейнера добавить тэг, когда такое было.
Надеюсь, если ревью/мёрж будет завтра, мне сегодняшие PRы засчитают.
Кстати, нашёл сравнительно честный способ набирать PRы. Авторы зачастую забрасывают PR на полпути. Можно находить такие и доделывать. Благо, даже при git rebase авторство коммитов сохраняется, не приходится чужой труд присваивать.
источник

ED

Eugene Denisov in PiterPy Meetup
Можно PEP написать для реализации в python4.0.
источник

E

Eugene in PiterPy Meetup
Eugene Denisov
Можно PEP написать для реализации в python4.0.
Ну, это будет изменение, ломающее обратную совместимость. Боюсь, что не рискнут после шишок с 2to3.
источник

E

Eugene in PiterPy Meetup
Где-то читал, что они не хотят повторения истории с тройкой
источник

ED

Eugene Denisov in PiterPy Meetup
Рискнут. Бамп мажорной версии для того и нужен, чтобы совместимость ломать. Не то чтобы её не ломали в минорных, но всё же.
источник

ED

Eugene Denisov in PiterPy Meetup
И будет у нас в дополнение к библиотеке six ещё и twelve, а для извращенцев eight.
источник

MK

Maxim Koltsov in PiterPy Meetup
и twenty-four
источник

ED

Eugene Denisov in PiterPy Meetup
Eugene
Где-то читал, что они не хотят повторения истории с тройкой
Завезли же новый парсер. Да и костыль в виде __future__ вроде прижился. Должно мягче пройти.
источник

SS

Sergey Sokolov in PiterPy Meetup
Eugene
Где-то читал, что они не хотят повторения истории с тройкой
+, помню прям утверждение откуда-то, что в четверке совместимость не будут ломать
источник

ED

Eugene Denisov in PiterPy Meetup
источник
2020 November 01

p

pragus in PiterPy Meetup
А вот pycharm умеет рефакторить в том числе тайпинг?
источник

Б

Боброний in PiterPy Meetup
Что-то я потерялся. Вот этот код каким-то чудом производит на свет FileNotFoundError (файл есть, путь абсолютный, если попытаться открыть через open, то же самое:

output_path = OUTPUT_DIR / output_filename
if not output_path.exists():
   output_path.write_text(actual_out)
   raise RuntimeError(f'wrote actual output to {output_path} since file did not exist')
expected_out = output_path.read_text()


Выхлоп:

self = PosixPath('/Users/arseny.boikov/dev/py/pydantic/tests/mypy/output/plugin-fail.txt')
name = '/Users/arseny.boikov/dev/py/pydantic/tests/mypy/output/plugin-fail.txt'
flags = 16778753, mode = 438

   def _opener(self, name, flags, mode=0o666):
       # A stub for the opener argument to built-in open()
>       return self._accessor.open(self, flags, mode)
E       FileNotFoundError: [Errno 2] No such file or directory: '/Users/arseny.boikov/dev/py/pydantic/tests/mypy/output/plugin-fail.txt'

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/pathlib.py:1071: FileNotFoundError
источник

ED

Eugene Denisov in PiterPy Meetup
Боброний
Что-то я потерялся. Вот этот код каким-то чудом производит на свет FileNotFoundError (файл есть, путь абсолютный, если попытаться открыть через open, то же самое:

output_path = OUTPUT_DIR / output_filename
if not output_path.exists():
   output_path.write_text(actual_out)
   raise RuntimeError(f'wrote actual output to {output_path} since file did not exist')
expected_out = output_path.read_text()


Выхлоп:

self = PosixPath('/Users/arseny.boikov/dev/py/pydantic/tests/mypy/output/plugin-fail.txt')
name = '/Users/arseny.boikov/dev/py/pydantic/tests/mypy/output/plugin-fail.txt'
flags = 16778753, mode = 438

   def _opener(self, name, flags, mode=0o666):
       # A stub for the opener argument to built-in open()
>       return self._accessor.open(self, flags, mode)
E       FileNotFoundError: [Errno 2] No such file or directory: '/Users/arseny.boikov/dev/py/pydantic/tests/mypy/output/plugin-fail.txt'

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/pathlib.py:1071: FileNotFoundError
Я бы начал тыкаться в него через os и os.path. Через них же подёргал бы директорию. Возможно, нет прав на директорию на запись, а может нет самой директории.
источник

Б

Боброний in PiterPy Meetup
Eugene Denisov
Я бы начал тыкаться в него через os и os.path. Через них же подёргал бы директорию. Возможно, нет прав на директорию на запись, а может нет самой директории.
Работает если указать relative path
источник

p

pragus in PiterPy Meetup
Боброний
Работает если указать relative path
А если сконвертировать в абсолютный через abspath?
источник

p

pragus in PiterPy Meetup
У тебя скорее всего путь до файла неправильный
источник

Б

Боброний in PiterPy Meetup
pragus
А если сконвертировать в абсолютный через abspath?
В общем, да, так и сделал. Пути были разные и отличались на одну букву (очепятка)

Оставшиеся вопросы:
- почему не стригерилось вот это условие if not output_path.exists()

- почему плагин для подсветки директорий и файлов в терминале выделял этот путь в трейсбеке как валидный и по нему можно было перейти 🤔

Последний скорее риторический
источник