Size: a a a

2019 November 16

AG

Alexander Gorokhov in rannts
Stacy Fidelina
ребятки-котятки)
когда ставишь pip repository локальный-самопальный, то он хочет https, а когда его получает, недоволен сертификатами
убедительный ключик --trusted-host не действует
 pip install --extra-index-url  https://db.local/ foobar  --trusted-host db.local
https://packaging.python.org/guides/hosting-your-own-index/
А если через сквид попробовать? Доступ к пайпай вообще кешируется проксей?
источник

V

Vergil in rannts
Байт Словович
дурацкий пятнчичный вопрос..
Кто нибудь пользовался подставками под ноги сидя за столом?
Иногда очень хочется опору, но до стены не достаю. Плюс подогрев хочу добавить.
Есть желания сделать самому, но нужны лекала 😊
Я юзаю
источник

in

ildar nizamov in rannts
hoppy — репозиторий Дэвида Бизли с древними версиями питона, начиная с 0.9.1 (1991 год). По сути, это вторая выпушенная версия, и от первой она отличается только багфиксами. На википедии на странице History of Python можно примерно посмотреть, какие фичи когда появлялись. И ещё в официальном репозитории есть огромный файлик HISTORY.

В общем, я уствовил самый древний Python.

>>> dir(builtin)
['EOFError', 'KeyboardInterrupt', 'MemoryError', 'NameError', 'None', 'RuntimeError', 'SystemError', 'TypeError', 'abs', 'chr', 'dir', 'divmod', 'eval', 'exec', 'float', 'input', 'int', 'len', 'max', 'min', 'open', 'ord', 'range', 'raw_input', 'reload', 'type']

Обратите внимание на отсутствие функций str и list. Литералы есть, но приводить типы ещё нельзя, у меня получилось только float в int. Также ещё нет comprehensions, generators. А ещё filter, map, reduce, они в 1.0 появились благодаря одному лисперу. Зато уже в первой версии есть else для for и range (причём даже с поддержкой отрицательного шага).

А ещё не переживайте из-за отсутствия print в списке, он же ключевым словом просто был до 3.0.

Атрибутов у встроенных типов не было by design:

>>> ''.join([1,2,3])
Unhandled exception: type error: attribute-less object

Например, для строк был модуль в stdlib:

>>> import string
>>> string.lower('AAaA!')
'aaaa!'

Вообще, из знакомого там path (сейчас os.path), calendar, shutil, glob, dis. А ещё там отступы 8 пробелов))))

Ну ладно, а хотите знать, как к строке то приводить?

>>> a = 1       
>>> b = [2,3,4]
>>> `[a] + b`
'[1, 2, 3, 4]'

А я то всё гадал, почему бэктики не используются нигде. А ещё двойные кавычки не pythonic, вот так то:

>>> "1"
Parsing error: file <stdin>, line 1:
"1"
^
Unhandled exception: run-time error: syntax error

Исключения были строками:

>>> SystemError
'system error'

А помните пост про lambda calculus? Так вот, некоторые функции тоже были в stdlib, в модуле lambda:

def Never(f, x): return x
def Once(f, x): return f(x)
def Twice(f, x): return f(f(x))

def SUCCESSOR(Ntimes, (f, x)): return f(Ntimes(f, x))

А я всегда говорил, что двоеточия в питоне нужны, чтобы условия, функции и всё такое можно было в одну строчку писать, lambda выражения только в 1.0 появились.

ИЛИ НЕТ???

# P.S.: Here is a Lambda function in Python.
# It uses 'exec' and expects two strings to describe the arguments
# and the function expression.  Example:
#      lambda('x', 'x+1')
# defines the successor function.

def lambda(args, expr):
      if '\n' in args or '\n' in expr:
              raise RuntimeError, 'lambda: no cheating!'
      stmt = 'def func(' + args + '): return ' + expr + '\n'
      print 'lambda:', stmt,
      exec(stmt)
      return func

Пробуем:

>>> from lambda import lambda
>>> lambda('a', 'a+1')(4)
lambda: def func(a): return a+1
5

Ух, столько всего! Надо доклад делать, в общем.
источник

NK

Nick Kugaevsky in rannts
Модно стало в этом году в историю программирования.
То Фил Кулин про корни GoLang расскажет, то пайтон времён царя Гороха откопают.
источник

AG

Alexander Gorokhov in rannts
Про будущее нечего рассказать, рассказывают про прошлое...
источник

in

ildar nizamov in rannts
Будущее пугает.
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Stacy Fidelina
инсталляция без интернета
А просто из папки с яйцами-колёсами pip не умеет искать? Настроить через ENV вот этот трастед-хост?
источник

KK

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

KK

Kirill (Cykooz) Kuzminykh in rannts
Я не специалист - я билдаут юзаю, а не pip  с кучей враперов
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
И зачем https развернул локально, а не простой http?
источник

БС

Байт Словович in rannts
Подозреваю без https уже не работает.
источник

ЕЧ

Егор Чернышов in rannts
Kirill (Cykooz) Kuzminykh
И зачем https развернул локально, а не простой http?
развернулА 😉
источник

RB

Roman Bolkhovitin in rannts
Kirill (Cykooz) Kuzminykh
Я не специалист - я билдаут юзаю, а не pip  с кучей враперов
Билдаут юзать это ближе всего к знаменитым 12 факторам имхо, пока node_modules для питона не завезли, забыл как оно будет называться. Типа приложение должно приносить все зависимости с собой и не требовать дополнительных приседаний по их установке. Ну или в докер собирать питонячью приложеньку, тоже хорошо.

Еще слышал что люди просто vevn копируют, но этот я не оценил, кажется фигня какая-то.

А про билдаут вообще вот что интересно - я бы про него фиг узнал, если бы не этот чатик. В этом году смотрел несколько докладов про packaging в питонячке, с историей и всей фигней, про билдаут молчат как партизаны. В книжках он иногда упоминается вскользь, максимум пара абзацев. Это какой-то заговор или просто штука настолько олдскульная что про нее только олдфаги знают/помнят?
источник

RH

Roman Haritonov in rannts
Сижу вынужденно на билдауте. Никому бы не советовал:) Вот почему.
источник

RB

Roman Bolkhovitin in rannts
Ну вот мне нужно было приложение с зависимостями поставить на виртуалки без интернетов и докера. Билдаут яйцы собрал, sys.path пропатчил и все, бери и копируй (ну я утрирую, рпм там поставлялись в итоге). Как по мне, для такого кейса замечательно вообще.
источник

RH

Roman Haritonov in rannts
При его использовании все равно нужен virtualenv, так как есть конфликты с системным setuptools. Плюс он в себя не включает изоляцию и подхватывает системные пакеты.
Если используется докер, то с билдаутом есть проблемы сделать нормальное кэширование слоев в образе. Нельзя скажем, добавить одним слоем requirements.txt или pyproject.toml, а вторым процесс установки зависимостей. Это вроде обходится, но геморойно.
Для пакования итогового приложения в рпм и деб нет готовых инструментов (типа dh-virtualenv и т.п.), приходится велосипедить, хотя в итоге получается нормально, но хочется чтобы это был общеприменимый инструмент.
До определенного момента документация билдаута была в виде доктестов, читать ее было тяжело. Люди приходящие на проект зачастую испытывают с ним разные неожиданные проблемы, ридми разрасстается воркэраундами.
Интеграция с Пичарм еще не всегда работает как надо, про бинарные пакеты уже говорили, еще есть проблема с pytest.

На пет-проджектах пробую Poetry, все нравится.
источник

SA

Sergey Arkhipov in rannts
> При его использовании все равно нужен virtualenv, так как есть конфликты с системным setuptools. Плюс он в себя не включает изоляцию и подхватывает системные пакеты.

А меня тут долго убеждали, что этого уже нет 🤔
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Со второй версии билдаута он перестал стараться делать изоляцию.
Но есть расширение cykooz.buildout.venv, которое создаёт venv и переключает билдаут на него без доп. телодвижений.
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Ну и на самом деле эта изоляция редко нужна, т.к. пакеты которые ставит билдаут - они на первом месте в sys.path. Раньше были проблемы из-за того что системные менеджеры линуксов ставили питонячие пакеты не корректно, и они приобретали приоритет выше чем sys.path.
источник

AS

Artem Savinov in rannts
Kirill (Cykooz) Kuzminykh
Со второй версии билдаута он перестал стараться делать изоляцию.
Но есть расширение cykooz.buildout.venv, которое создаёт venv и переключает билдаут на него без доп. телодвижений.
а смысл от него? только чтобы не делать ручками venv и не запускать внутри buildout?
источник