Size: a a a

2019 August 15

VM

Vadim Misbakh-Soloviov in pro.python
Иван Кривошеев
А ты как-нибудь настраивал sentry?
Ну, так, слегка. В основном - добавил только секретный ключ (потому что по предыдущему опыту помню, что если его предварительно полностью сконфигурировать в конфиге, то его начнёт плющить при завершении установки)
источник

VM

Vadim Misbakh-Soloviov in pro.python
кстати, я, кажется, уже нашёл причину
источник

ИК

Иван Кривошеев in pro.python
Vadim Misbakh-Soloviov
Здравствуйте, товарищи!
Помогите разобраться в ситуации, пожалуйста (заранее уточняю, что я не питонодевелопер, и вообще не девелопер, а админ, а питон знаю постольку-постольку на уровне "print()").

Я пытаюсь заставить sentry работать, а она сопротивляется, ругаясь вот так вот когда я вызываю в конфиге самопальную, описанную в его начале функцию (чтобы читать докеросекреты). (Сазу скажу, что директива, которую этот код проверяет, определена, но его это почему-то не волнует)

"отладка принтами" (точнее, выбросом эксепшна) показала, что ругань происходит когда я в своей фунцкии вызываю with open() ... (выбрасывание экшепшна до вызова - срабатывает, а после - приводит к описанной выше ругани).

Я предположил что девелоперы Sentry зачем-то переопределили функцию open(). Чтобы от этого избавиться я задумал импортнуть open из builtin'ов под другим именем и использовать его.
Проверив свою идею в третьем питоне и получив успешный результат я обрадовался. Однако вскоре обнаружил, что во втором питоне (на котором до сих пор работает Sentry) такой фокус не работает (там нет модуля builtins 😢).

Подскажите, пожалуйста, как можно поступить в этой ситуации?

Или, может быть, есть какой-то иной способ прочитать файл?
Ошибка говорит о настройки кеша для sentry. Вы ее не настроили.
источник

ИК

Иван Кривошеев in pro.python
Vadim Misbakh-Soloviov
Ну, так, слегка. В основном - добавил только секретный ключ (потому что по предыдущему опыту помню, что если его предварительно полностью сконфигурировать в конфиге, то его начнёт плющить при завершении установки)
О чем она честно сообщает и говорит, настрой меня, пожалуйста, а то я работать не могу...
источник

VM

Vadim Misbakh-Soloviov in pro.python
они переопределили не open(), а отлов исключений. И падало оно когда open( пытался открыть файл с серкретом, которого нету)
источник

ИК

Иван Кривошеев in pro.python
Vadim Misbakh-Soloviov
они переопределили не open(), а отлов исключений. И падало оно когда open( пытался открыть файл с серкретом, которого нету)
Эммм, ну если вы то прислали, то судя по ошибки, он ничего не открывает
источник

VM

Vadim Misbakh-Soloviov in pro.python
Иван Кривошеев
О чем она честно сообщает и говорит, настрой меня, пожалуйста, а то я работать не могу...
оно говорит "ты должен определить директиву X", при том, что директива X определена (я и в yaml-фале тоже пробовал, да)
источник

ИК

Иван Кривошеев in pro.python
Vadim Misbakh-Soloviov
оно говорит "ты должен определить директиву X", при том, что директива X определена (я и в yaml-фале тоже пробовал, да)
Эмм, вообщем помощь нужна или завелось?
источник

VM

Vadim Misbakh-Soloviov in pro.python
Иван Кривошеев
Эммм, ну если вы то прислали, то судя по ошибки, он ничего не открывает
то, что я показал - это тот код внутри Sentry, который триггерится. Я не мог понять почему он триггерится. Но, судя по тому, что после переписывания функции на более качественный отлов несуществования файла оно перестало - я заключил что они переопределяли отлов ошибки, но что-то шло не так...
источник

VM

Vadim Misbakh-Soloviov in pro.python
Иван Кривошеев
Эмм, вообщем помощь нужна или завелось?
вроде, завелось, но я пока ещё не убрал свой искуственный raise :)
источник

ИК

Иван Кривошеев in pro.python
Vadim Misbakh-Soloviov
то, что я показал - это тот код внутри Sentry, который триггерится. Я не мог понять почему он триггерится. Но, судя по тому, что после переписывания функции на более качественный отлов несуществования файла оно перестало - я заключил что они переопределяли отлов ошибки, но что-то шло не так...
Вообщем я почти уверен, что что-то не то вы делаете))
источник

А.

Айто ... in pro.python
Создайте класс ContactList, который должен наследоваться от

встроенного класса list. В нем должен быть реализован метод

search_by_name, который должен принимать имя, и возвращать список

всех совпадений. Замените all_contacts = [ ] на all_contacts =

ContactList(). Создайте несколько контактов, используйте метод

search_by_name.
источник

А.

Айто ... in pro.python
кто может помочь?
источник

ИК

Иван Кривошеев in pro.python
Айто ...
кто может помочь?
А в чем вопрос?
источник

СВ

Сергей Вахреев in pro.python
Айто ...
кто может помочь?
class ContactList(list):
   def init(self): self.search_by_name = lambda name: list(filter(lambda x: x == name, self))
источник

А.

Айто ... in pro.python
Спасибо
источник

А.

Айто ... in pro.python
Не работает
источник

СВ

Сергей Вахреев in pro.python
Айто ...
Не работает
кажется, что тут нечему не работать)
источник
2019 August 16

AB

Andrey Baksalyar in pro.python
Айто ...
Не работает
Вродь работает, проверяй:

class ContactList(list): 
   def search_by_name(self, name: str) -> list:
       return [x for x in self if name in x]
источник

AB

Andrey Baksalyar in pro.python
В варианте Сергея нужен __init__, а не init, телеграм съел подчеркивания
источник