Size: a a a

2021 May 17

A🌚

Al 🌚l in rannts
источник

KK

Kirill (Cykooz) Kuzm... in rannts
У tmpfs есть некоторый минус - для него надо указывать размер при запуске контейнера. И если во время тестов размер базы превысит tmpfs, то тесты будут ломаться.
источник

A🌚

Al 🌚l in rannts
Если тесты будут ломаться - можно сводить их в ресторан и подарить красивые цветы
источник

A🌚

Al 🌚l in rannts
источник
2021 May 18

D

Denis in rannts
Всем привет, вдруг кому интересно, тут трансляции
Standoff https://standoff365.com/cyber-range/
Открытие PHDays: https://standoff365.com/phdays10/
источник
2021 May 19

БС

Байт Словович... in rannts
Хочу странного, может кто знает..

есть несколько "одинаковых" директорий, которые генерит внешняя тулза.
В каждой директории есть питоновский пакет с кучей модулей. Получается что то подобное:
l1
  client
    rest.,py
    ...
l2
  client
    rest.py
    ...
l3
 client
     rest.py
     ...


В самих модулях используется абсолютные импорты, то бишь:  import client или from client import xxx

Мне сначала надо было использовать при запуске моего скрипта ровно один клиент, поэтому я тупо добавлял в sys.path путь до нужной папки и потом делал import client и  у меня всё работало
А теперь мне надо несколько `client`ов импортить в один запуск скрипта.. И хз как это сделать.

Я пытался делать импорт клиента через importlib и потом его удаление, это даже сначала работало. А потом оказалось что эти `client`ы используют другие модули с тем же именем, но с разной реализацией.
То есть типа такого
   from client import rest

и вот этот rest в разных client разный. Когда удаляю client, client.rest не удаляется и когда начинаю использовать другой client, то получаются страшные эксепшены. Можно конечно попытаться удалять client.rest и другие подобные модули, но это прям как то совсем не комильфо..

Можно эту проблему без хаков решить? Namespacы или еще что нибудь подобное?
Создать пакет на верхнем уровне аля l1.client не получается ибо в самом client используется импорт client.xxx и этот модуль уже не виден
источник

SB

Sergey Belash in rannts
А как-то по разному из называть в зависимости от логики нельзя или я не понял вопроса..?
источник

SB

Sergey Belash in rannts
from l1.client.rest import Client as ClientL1
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Регекспы, ast и ещё какие-то слова, что бы пробежаться по исходнику и поменять все импорты, что бы в них вместо client было client_<N>
источник

БС

Байт Словович... in rannts
в моих импортах можно.. Но внутри этих клиентов идёт импорт import client.rest
источник

БС

Байт Словович... in rannts
ну что то не хочется этого.. но как вариант..
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Если код автогенереный, то он будет почти всегда одинаковый и можно вполне справится банальными реплейсами в рамках первого киллобайта текста из файла, и местами можно регеспы заюзать
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Можно ещё заменить реплейсами абсолютные импорты, на относительные и запихнуть каждого клиента в отдельный пакет с уникальным именем. Но тут будет наверное сложнее - придётся отслеживать глубину вложенности текущего файла, в котором делаешь замены.
источник

БС

Байт Словович... in rannts
я про это третий день думаю.. но почему то, очень не хочется так делать. я даже сам себе не могу объяснить почему меня этот вариант не устраивает.. Но я даже уже начинал писать код в эту сторону
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Абсолютные импорты без страшных хаков поверх системы импорта питона, скорее всего не получится обойти.
источник

БС

Байт Словович... in rannts
жаль, я надеялся что я чего то не знаю про импорты..
источник

RB

Roman Bolkhovitin in rannts
перейти на 2.7
фьють ха
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Не поможет если там, например внутри client.rest.module, будет импорт вида from client import rest (в общем импорт корня пакета из далёких глубин).
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Можно ещё попробовать замонкипатчить генератор этого кода, что бы можно было менять имя корневого пакета
источник

БС

Байт Словович... in rannts
менять шаблоны автогенератора, это планируется, но очень не скоро. Не хочется пока в эту тему окунаться. Сейчас бы mvp сделать.. такой вот хуяк хуяк продакшен
источник