@spbpython

Страница 206 из 785
Zart
21.11.2016
16:26:28
между 72/79/80 тоже холиворы были

Vitali K.
21.11.2016
16:26:49
pylint --generate-rcfile | grep max-line-length No config file found, using default configuration max-line-length=100

Sergey
21.11.2016
16:32:25
между 72/79/80 тоже холиворы были
на коменты pep8 как раз 72 символа отводит

Zart
21.11.2016
16:33:45
79 - это для тех, у кого проблемы с soft margins в терминале... а я думаю что это как оспа, которую устранили еще в том тыщелетии

Google
Serge
21.11.2016
16:35:19
на коменты pep8 как раз 72 символа отводит
это потому что отступ;), чтобы справа тоже был и потому что это кодестайл restructured

Roman
21.11.2016
16:39:49
Слушайте, а есть что-то типа namedtuple, но для dict?

Zart
21.11.2016
16:40:47
Слушайте, а есть что-то типа namedtuple, но для dict?
я рецепт этой хуйни на ирц раздаю годами, в 4 строчки

Roman
21.11.2016
16:42:04
Aleksander
21.11.2016
16:42:15
так, а в pylintrc плагины же через запятую указываются ?

что-то не нахожу примера где больше одного в этом поле))

Zart
21.11.2016
16:44:45
>>> class adict(dict): ... __getattr__ = dict.__getitem__ ... __setattr__ = dict.__setitem__ ... __delattr__ = dict.__delitem__ ... >>> adict(a=1, b=2, c='c') {'a': 1, 'c': 'c', 'b': 2} >>> d = adict(a=1, b=2, c='c') >>> d.a, d.b, d.c (1, 2, 'c')

Serge
21.11.2016
16:46:19
Zart
21.11.2016
16:46:55
я вон привел же пример дикта, с доступом по аттрибуту, а не индексу

Serge
21.11.2016
16:46:57
это не то ли https://attrs.readthedocs.io/en/stable/

подозреваю, что написанное тобой, @pragus и сам бы осилил

Zart
21.11.2016
16:48:02
это не то ли https://attrs.readthedocs.io/en/stable/
выглядит как очередной пример моделей орм

Google
Zart
21.11.2016
16:48:27
за что люди обожают такую декларативщину я хз

Serge
21.11.2016
16:48:28
выглядит как очередной пример моделей орм
не, оно не такое, оно типа легкое как раз, и без вот этого вот всего метафигни

Zart
21.11.2016
16:48:56
классдекораторы у нас же только в тройке? или в 2.7 их бакпортили?

Serge
21.11.2016
16:48:57
https://glyph.twistedmatrix.com/2016/08/attrs.html

Zart
21.11.2016
16:49:26
глиф крутой, но в ряде случаев он неправ

что такое 2.7? ;)
хипстер детектед

Serge
21.11.2016
16:50:31
https://attrs.readthedocs.io/en/stable/why.html

это вот ровно namedtuple для диктов:)

$ python2 Python 2.7.12 (default, Sep 29 2016, 13:30:34) [GCC 6.2.1 20160916 (Red Hat 6.2.1-2)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> def foo(bar): ... return bar ... >>> @foo ... class A(object): ... pass ...

Zart
21.11.2016
16:52:46
https://www.python.org/dev/peps/pep-3129/ значит завозили в 3.0 и 2.6

я просто помню что когда-то их еще не было, но людям хотелось 8)

там собсно всё изменение вроде к исправлению грамматики свелось

Eugene
21.11.2016
16:57:16
>>> class adict(dict): ... __getattr__ = dict.__getitem__ ... __setattr__ = dict.__setitem__ ... __delattr__ = dict.__delitem__ ... >>> adict(a=1, b=2, c='c') {'a': 1, 'c': 'c', 'b': 2} >>> d = adict(a=1, b=2, c='c') >>> d.a, d.b, d.c (1, 2, 'c')
А как быть если ключи не являются строками? Предвижу ответ: не использовать такое вот. Но всё же.

Zart
21.11.2016
16:57:34
тогда getattr?

Eugene
21.11.2016
16:58:43
а было бы клёво a.1 = 10

Zart
21.11.2016
16:58:52
а, гетаттр таки форсит тип

Serge
21.11.2016
16:59:53
>>> class adict(dict): ... __getattr__ = dict.__getitem__ ... __setattr__ = dict.__setitem__ ... __delattr__ = dict.__delitem__ ... >>> adict(a=1, b=2, c='c') {'a': 1, 'c': 'c', 'b': 2} >>> d = adict(a=1, b=2, c='c') >>> d.a, d.b, d.c (1, 2, 'c')
проблема этого кода в том, что он непрозрачен немного. например, ключ 'setdefault' убьет одноименный метод дикта. если от такого класса наследоваться, то все новые методы будут запрещать соответствующие ключи

Zart
21.11.2016
17:00:03
а было бы клёво a.1 = 10
>>> 0.0.real 0.0 >>> 0.real File "<stdin>", line 1 0.real ^ SyntaxError: invalid syntax >>> (0).real 0

Google
Serge
21.11.2016
17:00:09
а было бы клёво a.1 = 10
это по грамматике не сработает

Eugene
21.11.2016
17:00:23
Да это то понятно, то не сработает

Zart
21.11.2016
17:01:01
поэтому в питоне деление на дикт/лист довольно однозначное и по типу и синтаксису

Serge
21.11.2016
17:01:39
Zart
21.11.2016
17:03:11
угу. хотя нюансы сишной реализации порой вылазят

Roman
21.11.2016
17:05:24
Слушайте, а вызов сишного кода отпускает gil?

Zart
21.11.2016
17:05:52
если там указано отпустить, то да

https://docs.python.org/3/c-api/init.html#thread-state-and-the-global-interpreter-lock см. пример с Py_BEGIN_ALLOW_THREADS макросом

Eugene
21.11.2016
17:10:05
Слушайте, а вызов сишного кода отпускает gil?
Только если явно сказать об этом. Это делается, например в numpy. Мы в своих обёртках тоже так делаем. Но важно не обращаться ни к каким питонячим структурам и функциям с отпущенным GIL, иначе всё упадёт

Zart
21.11.2016
17:11:17
nogil в ситоне афаир

Tatiana
22.11.2016
10:25:02
не сочтите за флуд )

Serge
22.11.2016
10:54:21
опечатка. насовместимость

вторая писав

Vitali K.
22.11.2016
10:55:30
Наверное пыхер рисовал

Serge
22.11.2016
10:55:41
ну короче, я бы пошарил, но с опечатками не буду:)

@zartsoft сглазил. у меня в проекте появился файл constraints.in :)

Vitali K.
22.11.2016
10:58:28
Serge
22.11.2016
10:58:39
сам

потому что вот https://aws.amazon.com/ec2/faqs/#longer-ids

Google
Serge
22.11.2016
11:00:15
пора бы переехать на новые айдишники

Vitali K.
22.11.2016
11:00:37
а я забыл что это constraints.in

что-то не гуглится

Serge
22.11.2016
11:01:50
pip install --help

Vitali K.
22.11.2016
11:02:05
“Constraints files are requirements files that only control which version of a requirement is installed, not whether it is installed or not” “There is one key difference: Including a package in a constraints file does not trigger installation of the package. ”

вот это видимо

Serge
22.11.2016
11:09:22
ну да

Vitali K.
22.11.2016
11:11:34
Правильно ли я понимаю что зависимости пэкэджей указанных в requirements.txt будут ограничены сonstraints файлом?

Serge
22.11.2016
11:12:07
версии, а не зависимости

Admin
ERROR: S client not available

Vitali K.
22.11.2016
11:12:27
версии зависимостей ага

а не. я запутался

requirements.txt pkg=2.0 constraints.txt pkg=1.0 поставится 1.0?

Сорян что напрягаю) Сам наверн потом прочитаю) ахаха

Serge
22.11.2016
11:15:20
не знаю, скорее всего будет конфликт

как с двумя -r

Zart
22.11.2016
11:15:27
инвалид синтакс будет скорее всего

это вам не билдаут

Serge
22.11.2016
11:15:42
можно же два -r написать, если версии конфликтуют, оно упадет. причем по моему сейчас оно падает даже если просто один и тот же пакет в двух -r упомянут

Google
Zart
22.11.2016
11:18:01
с чего это?

Serge
22.11.2016
11:18:05
ну и я делаю вот так: $ pip install --upgrade -r requirements.in -c constraints.in $ pip freeze -r requirements.in > requirements.txt а на целевых системах уже pip install --upgrade -r requirements.txt

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

Serge
22.11.2016
11:20:14
а зачем вот это делать?
потому что в .in написано или без версии или с границами а в .txt нагенерено один раз для релиза с == и в этом релизе других версий ни в докере, ни на тестах, ни на стейджинге уже не будет, даже если выйдут новые версии, которые удовлетворяют условиям в .in

И — идемпотентность

Zart
22.11.2016
11:20:46
м...

я слегка о другом

Serge
22.11.2016
11:21:50
ну и вот у меня вот так в итоге $ cat requirements.in ansible==2.1.3.0 awscli boto $ cat constraints.in awscli>=1.10.2 boto3>=1.2.1 botocore>=1.3.24 boto>=2.42.0

Zart
22.11.2016
11:21:53
у тебя джангокод + вот эти вот файлики сетап.пи есть?

Serge
22.11.2016
11:22:22
а в .txt куча всего что установлено по зависимостям с жестко закрепленными версиями

у тебя джангокод + вот эти вот файлики сетап.пи есть?
setup.py нет. они не нужны в реальной жизни, если у тебя нет своей pypi репы

Zart
22.11.2016
11:23:12
откуда такое заблуждение?

Serge
22.11.2016
11:23:22
и "джангокод" код у меня в одном из 12 процессов только:)

Zart
22.11.2016
11:24:23
что-то у меня нет желания вникать в чужой деплой

Serge
22.11.2016
11:24:37
откуда такое заблуждение?
ну потому что смысла в них нет;) есть код, копируешь, ставишь к нему зависимости, оно работает. разницы с setup.py никакой, только питонщину разводить в нем, вместо декларативного requirements.txt

Zart
22.11.2016
11:25:06
я идею с .in понял, чтобы разнести общие и зафризенные

Serge
22.11.2016
11:25:15
и еще вот этот вечный трах со статикой в пакете

setup.py не нужен, пока ты не распространяешь код через pypi, даже внутренний

Serge
22.11.2016
11:26:24
ну так копипасти джангу из тарболла. нахуй нужен пип вообще
ну... в пределе, если взять docker так и происходит же

Zart
22.11.2016
11:26:33
чтобы ставить из пакетов чтолибо никакого pypi не нужно о.О

Страница 206 из 785