@python_beginnersЭта группа больше не существует

Страница 323 из 1885
Zart
18.08.2016
13:35:05
ему там скорее опа выдадут...

Cykooz
18.08.2016
13:41:58
Если что, то я запилил в джанге поддержку вот такой херни внутри urls .py: def urlpatterns(): return [ url(...), url(...), ] Т.е. теперь можно перед запуском любого теста сбросить кеш всех url-роутов, и джанга пройдясь по urls.py выполнит функцию urlpatterns() заново. Таким образом я могу в тестах динамически включать-выключать разные роуты, которые управляются настройками.

Sergey
18.08.2016
13:43:59
зачем их динамически включать в тестах?

Andrey
18.08.2016
13:44:10
Кстати, люди. Как тестировать то, что работает с сетью?

Google
Cykooz
18.08.2016
13:45:39
@fix_ut У меня есть в приложении типа плагинов, которые включаются/выключатся настройками. И некоторые из них выключены по умолчанию. А в тестах мне надо их как то тестировать. В обычной ситуации это попа-боль, т.к. джанга один раз пройдясь по urls.py больше не имеет возможности хоть как то изменить список роутов (т.к. по сути они хранятся в глобальной переменной)

Zart
18.08.2016
13:46:01
почему?

Viktor
18.08.2016
13:46:23
А с каких пор global эквивалентно const?

Я конечно не знаю что у вас там в этой джанге

но звучит тупо

Zart
18.08.2016
13:47:16
у джанги в начале реквеста идёт резолюшен - и урлконф можно отдавать динамически на лету а вот то, что отдаваться должно имя ЁБАНОГО МОДУЛЯ - авторам апи осиновый кол в анус

Cykooz
18.08.2016
13:47:45
Ну потому что если ты один раз выполнил при импорте что то такое urlpatters = [...] if settings.MY_PLUGIN: urlpatterns += [...] То уже ничего не сможешь в тестах изменить внутри urlpatters.

Pavel
18.08.2016
13:49:16
ROOT_URLCONF¶ Default: Not defined A string representing the full Python import path to your root URLconf. For example: "mydjangoapps.urls". Can be overridden on a per-request basis by setting the attribute urlconf on the incoming HttpRequest object. See How Django processes a request for details.

Cykooz
18.08.2016
13:49:22
И вот я точно не хочу в каждом тесте разбираться какой такой urlconf мне надо динамически отдавать. Я просто хочу поменять настройку settings.MY_PLUGIN где то в setUp() и что бы всё заработало

Zart
18.08.2016
13:50:20
ну так и в зависимости от списка плагинов и генерить урлконф

но апи дебилен по самые гланды

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

Google
Cykooz
18.08.2016
13:52:54
ну так и в зависимости от списка плагинов и генерить урлконф
Генерить? Я не такой ушибленый ? У меня в проекте 20+ приложений и с десяток плагинов ещё. Я уколебусь что то там генерить на каждый случай. И потом ещё контролировать, что бы то что я сгенерил совпадало с тем что у меня в urls.py (т.е. после любого изменения в urls.py плагина, мне надо в тестах поправить что то).

В джанге ещё используется кеширование этих роутов внутри threadlocal переменной

Вот так сбрасываются эти кеши get_resolver.cache_clear() get_ns_resolver.cache_clear()

Pavel
18.08.2016
13:54:28
В джанге ещё используется кеширование этих роутов внутри threadlocal переменной
а мне вот дока говорит, что роуты на каждый реквест пересобираются с нуля. Я сильно не рыл этот момент, но ужели пиздят?

Zart
18.08.2016
13:55:01
матчинг идёт тупым перебором регэкспов в урлконфе 8\

Pavel
18.08.2016
13:55:09
а мне вот дока говорит, что роуты на каждый реквест пересобираются с нуля. Я сильно не рыл этот момент, но ужели пиздят?
то есть, не пересобирается, а ищет переменную, которую можно сгенерировать каждый раз по-новой.

Cykooz
18.08.2016
13:55:47
а мне вот дока говорит, что роуты на каждый реквест пересобираются с нуля. Я сильно не рыл этот момент, но ужели пиздят?
На каждый реквест он вызывает get_resolver, а его рузльтат кешируется декоратором lru_cache. Но это только полдела, самая гадость, что urlpatters это глобальня переменная вычисляемая один раз при первом импорте

Zart
18.08.2016
13:56:00
да

но они предоставляют возможность выбора импорта на каждом реквесте

Pavel
18.08.2016
13:56:20
How Django processes a request¶ ... Django loads that Python module and looks for the variable urlpatterns. This should be a Python list of django.conf.urls.url() instances.

Zart
18.08.2016
13:56:21
это чтобы можно было роутить к приложениям

джанго слишком рьяно любит глобальные переменные

и это полный пиздец

Cykooz
18.08.2016
13:57:14
Вот я и сделал, что теперь urlpatterns может быть функцией, а не списком

Zart
18.08.2016
13:57:19
но нубам этого не объяснишь 8(

самодостаточный жангоапп: def demosite_django(global_conf={}, **settings): import types try: from django.core.wsgi import get_wsgi_application as WSGIHandler except ImportError: # pragma: no cover from django.core.handlers.wsgi import WSGIHandler # required settings settings.setdefault('SECRET_KEY', 'secret') settings.setdefault('ALLOWED_HOSTS', ['*']) # set DEBUG for debug mode if 'debug' in settings: settings['DEBUG'] = asbool(settings.pop('debug')) # hack to provide django with dedicated module for settings and urlconf name = os.environ['DJANGO_SETTINGS_MODULE'] = str('__settings_' + __name__) mod = sys.modules[name] = types.ModuleType(name) vars(mod).update(settings) mod.__file__ = __file__ # django somehow depends on this mod.ROOT_URLCONF = name mod.urlpatterns = [] mod.handler404 = 'django.http.HttpResponseNotFound' # disable templates app = WSGIHandler() return app

Cykooz
18.08.2016
14:04:09
Но теперь у меня вторая попа боль появилась. Велика была когда то моя радость, что в джангу наконец что добавили возможность сконфигурировать приложение перед тем как джанга начнёт обрабатывать запросы, т.е. можно было запилить вот такой классик class UsersConfig(AppConfig): name = 'project.users' def ready(self): from . import handlers # registrate signals handlers from .tasks import remove_user # registrate celery tasks # some other actions Но как оказалось - эта самая ready() вызывается в тестах тоже только один раз (наверное при первой инициализации приложения). Подозреваю что где то в джанге есть очередной threadlocal кеш приложений, который надо зачистить, что бы можно было заставить джангу вызывать этот ready() в начале каждого теста.

Zart
18.08.2016
14:06:51
скучаешь по @subscribe(IApplicationCreated), да?

Cykooz
18.08.2016
14:08:22
Ага, как раз и хотел в этом ready() регистрировать разнные утилитки в реестре компонентов ?

А то сейчас приходится в стиле джанго делать глобальную переменную с инстанцем утилитки, которая инициализируется при импорте

Google
53r63rn4r
18.08.2016
15:14:14
/stat

Combot
18.08.2016
15:14:15
combot.org/chat/-1001051329193

Zart
18.08.2016
17:22:44
гм, на степике типичная олимпиадная задачка на спираль, оказывается

Johnnie
18.08.2016
17:23:32
какая?

Zart
18.08.2016
17:24:05
по числу N вывести матрицу NxN заполненную по спирали от 1 до N*N

Johnnie
18.08.2016
17:24:41
а, дык была же уже тут)

Zart
18.08.2016
17:26:02
я сделал while и 4 цикла внутри

нахера рекурсия?

Andrey
18.08.2016
17:27:24
нахера рекурсия?
Логичнее смотрится по-моему. Делаешь n/2 витков. Эти витки одинаковы. Вот и рекурсия. Можно, конечно, циклом, но лень думать как его сделать.

Zart
18.08.2016
17:27:45
я мыслил в рамочках

начинаем с 0,0 и идём по диагонали - 1,1, потом 2, 2 и т.д. с этой стартовой точки рисуем циклами рамки NxN, а потом режем N на два

Denis
18.08.2016
18:03:57
Кто сможет сделать спираль через генераторы?

Zart
18.08.2016
18:04:43
я заюзал из итертулсов

Lyubov
18.08.2016
19:04:42
Всем привет! Меня зовут Люба, я работаю в редакции #tceh. Пишу сейчас материал для тех, кто только собирается стать кодером. Про негласные правила внутри сообществ программистов: как не делать то, что всех раздражает, но о чём нигде не написано. И какие трудности возникают на первых этапах при вступлении в сообщество. Можете подкинуть идей, пожалуйста? В чат или в личку. Заранее спасибо)

Alexander
18.08.2016
19:06:06
откуда те, кто собирается стать кодером, должны знать негласные правила внутри сообществ программистов и что всех раздражает?

Zart
18.08.2016
19:06:23
*достал попкорн*

⬗VLAD⌶K⬖
18.08.2016
19:06:56
вероятно раздражают те вопросы на которые может ответить гугл

Google
Zart
18.08.2016
19:07:25
раздражают вопросы ради вопросов "а можно спросить?"

Zart
18.08.2016
19:08:00
осталось выяснить кому же адресован вопрос - новичкам или не очень 8)))

⬗VLAD⌶K⬖
18.08.2016
19:08:57
скорее всего мне подобным=)

[Anonymous]
18.08.2016
19:09:30
вероятно раздражают те вопросы на которые может ответить гугл
Именно это и раздражает в вас, потому что большое количество инфы устарело уже. Просто хочется в таком момент подарить мозги таким людям

такой*

Gra4
18.08.2016
19:10:20
Сейчас мы узнаем, как не злить Зарта. А-то он уже сбегал в Руд)

Admin
ERROR: S client not available

Zart
18.08.2016
19:10:57
да вы тут молчите второй день

Lyubov
18.08.2016
19:11:01
откуда те, кто собирается стать кодером, должны знать негласные правила внутри сообществ программистов и что всех раздражает?
раз люди оказались в этом чатике, думаю, у них уже есть такой опыт) а материал для тех, кто еще не познал дзен пайтона

Lyubov
18.08.2016
19:12:19
вероятно раздражают те вопросы на которые может ответить гугл
а можно прям конкретные диалоги, пожалуйста? даже можно не настоящие, но приближенные к реальности)

dmks
18.08.2016
19:12:57
Именно это и раздражает в вас, потому что большое количество инфы устарело уже. Просто хочется в таком момент подарить мозги таким людям
кгхм,а можно пример вопроса по тематике этого чата ответ на который найти в гугле тяжелее чем спросить тут?

именно из-за устаревания информации

Zart
18.08.2016
19:13:37
and now from the top. one, two...

⬗VLAD⌶K⬖
18.08.2016
19:14:27
это слишком вводящие в тему кодерства вопросы, скорее всего их не поймут далекие от программирования люди

Lyubov
18.08.2016
19:15:42
это слишком вводящие в тему кодерства вопросы, скорее всего их не поймут далекие от программирования люди
ничего страшного, у меня есть переводчик с языка кодера на человеческий

tosh
18.08.2016
19:15:48
Смешно, что если разобраться, то сложно придумать негласные правила

Google
tosh
18.08.2016
19:15:57
Есть раздражающие моменты, но у каждого они свои

Pavel
18.08.2016
19:16:00
ПОдскажите, какую книгу прочитать про питон?

Zart
18.08.2016
19:16:23
бляяя

Pavel
18.08.2016
19:16:26
ПОдскажите, какую книгу прочитать про питон?
это был пример вопроса, от которого начинают ныть зубы.

tosh
18.08.2016
19:16:30
На самом деле тут палка о двух концах

Lyubov
18.08.2016
19:16:37
Zart
18.08.2016
19:16:41
паша угодил точно в мозоль

[Anonymous]
18.08.2016
19:16:48
Ну, ладно, если тебя такие вопросы интересуют)

tosh
18.08.2016
19:17:22
Если чувак не спросит, то потом придет и станет рассказывать ахинею и аргументировать ее тем что "а в гугле/стековерфлоу так писали и им норм"

⬗VLAD⌶K⬖
18.08.2016
19:17:28
не изучив базовый синтаксис языка ( модификаторы вывода) человек возопил о помощи, человек отказался читать вводную к задаче

Lyubov
18.08.2016
19:18:09
а где искать актуальную инфу по теме, чтобы не задавать бородатых вопросов?

tosh
18.08.2016
19:18:11
Бесят студенты, которые неизвестно зачем пошли учиться и просят решить задачку под предлогом ачотевпадлуштоль

[Anonymous]
18.08.2016
19:18:39
Зачем, блин, чат этот? Вам не лень было делать его, называть его "че то о питоне и уже"?

Zart
18.08.2016
19:18:42
http://www.catb.org/esr/faqs/smart-questions.html бессмертное

dmks
18.08.2016
19:19:08
Бесят студенты, которые неизвестно зачем пошли учиться и просят решить задачку под предлогом ачотевпадлуштоль
и бесят недофрилансеры которые непонтяно зачем взялись за работу которую не могут выполнить

tosh
18.08.2016
19:19:16
Да, они оттуда же

Но вот про читать

Gra4
18.08.2016
19:19:39
Вопросы 'для телепатов' или 'а как ...' тоже раздражают, наверное

Страница 323 из 1885

Эта группа больше не существует Эта группа больше не существует