@mva

Тег python в блоге mva

mva
sh-4.4$  diff -NaurBwdp d.py /usr/local/bin/deaggregate
sh-4.4$    python /usr/local/bin/deaggregate 1.1.1.176 1.1.1.191
Traceback (most recent call last):
  File "/usr/local/bin/deaggregate", line 8, in <module>
    from ipcalc import IP, Network
ImportError: No module named 'ipcalc'
sh-4.4$    python d.py 1.1.1.176 1.1.1.191
1.1.1.176/28
#mdyqm
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva

А как бы мне в питоне setattr'ом загнать переменную в глобал скоуп?

#mdggs 19
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva

nikita_tsukanov: тут вообще у нас перец один работал
nikita_tsukanov: на питоне писал
nikita_tsukanov: заставили его писать тесты к коду
nikita_tsukanov: он месяц посидел
nikita_tsukanov: сказал "зачем писать тесты, людям нужно верить"
nikita_tsukanov: и уволился

#ojqri 3
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva


Ну, что-т, я даже не знаю...
Во-первых, схуя ли он решил меня схайрить питоноёбом, если у меня там нет питонокода?
Во-вторых, релокейт в краснодар — это, конечно, пушка.
В-третьих, сука, ну видно же что фулл-стек, хули ты пишешь питон?
// а в-четвёртых - всё равно не хочу идти питоноёбом, потому что работа должна быть любимой.

#ozigp 2
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva

#okqdh 3
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva

Чят, подскажи, как быть?
Есть некая поделка, которая претендует быть crontab.

Вкратце — создаёт tmpfile, если в кронтабе пусто то пишет туда некий "базовый" текст.

Далее, этот tmpfile скарпливается редактору.

Далее, после выхода из редактора делается tmp.file.seek(0) (чтобы перемотать курсор в начало).
Вот только проблема в том, что при вызове tmp.file.read() отдаётся старый контент файла (т.е., судя по всему, читается копия tmpfile'а из памяти, а то, что записал редактор - игнорируется).

Я бы очень хотел починить этот момент, но не могу понять как пнуть tmpfile чтобы оно перечитало контент файла...
Есть идеи?

#okylw 27
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva

Довольно забавно, что иногда переписывать код с Python на Lua настолько легко, что это сводится лишь к минимальной синтаксической замене некоторых выражений, с которой можно справиться регэкспами.

#ojsdd 12
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva

И всё-таки питон3 писали мудаки:

TypeError: ord() expected string of length 1, but int found

Ок, string так string. добавляем аргументу str — ord(str(arg)). И что же? А вот что:

TypeError: 'str' does not support the buffer interface
#ozqrj 14
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva

Товарищи питоноёбы!
А как определить тип (желательно без перехватов ошибок конвертации) аргумента, передаваемого через sys.argv?
// проверять на [a-z] как-то тоже костыль...

#okxhi 25
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva

Забавный момент с этим вашим питоном:
Вот LuaJIT уделывает PUC-Rio Lua практически во всех тестах (ну, спорным моментом могут быть разве что моментально выполняющиеся однострочники, ибо JIT'у нужно время чтобы раскочегариться).
А вот у Python'а — pypy/pypy3 просасывает у CPython{,3} в куче тестов, касающихся числодробления и т.п.

#owftd
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva

in short: You can't call python module from lua.
This can not be true. Python has a C API and so does Lua. It must be possible to call Python from Lua somehow.

lavrov.ogg

#oozixu 18
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva

Запомните, дети: Никогда, НИКОГДА (!!!!) не пишите пакетные менеджеры на python!

#oowxll 30
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva

00:24:51 +mst │ we've had lots of people join #perl and #python trying to pick one to learn
00:24:58 +mst │ #perl says: "learn both, they're both powerful"
00:25:09 +mst │ #python says: "OMG you're considering learning PERL you STUPID STUPID CHILD"

#oowtdx 1
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva

Кстати, а в этом вашем питоне (не PyPy) делается предварительная оптимизация при выполнении, или тупо построчно?
Вот, например, есть у меня "if a|2**(с)>b:" внутри цикла, который может повторяться кучу раз (а может и нет). "c" при этом во всём скрипте может иметь только одно значение за один запуск скрипта из двух возможных (32 или 128). Он будет
вычислять 2^(c) каждый раз (и посему лучше бы вынести это во внешнюю переменную), или сообразит, что это константа?

#ipthe 9
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva

Эт, TWT, там в твоём портированном с перла коде какая-то фигня нашлась :) Оно не конвертирует два соседних адреса как два по /32 (или /128 в случае IPv6), а выводит только первый.
На самом деле, есть ещё и второй баг, что он не может вычислить /0 подсеть и валится с negative shift count, но его я вылечил немного изменив операнды. А вот этот вылечить не могу.

#iptsd 4
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva

Товарищи питоноёбы! А есть ли какие-нибудь аналоги pycurl, которые были бы совместимы с PyPy?

#ipopg 17
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva

Но как?

(v) sh-4.3$  pip install 'git+https://github.com/msva/lxml.git@cffi#egg=lxml'
Collecting lxml from git+https://github.com/msva/lxml.git@cffi#egg=lxml
  Cloning https://github.com/msva/lxml.git (to cffi) to /tmp/pip-build-kE5gfd/lxml
    Complete output from command python setup.py egg_info:
    src/lxml-cffi/includes/__pycache__/_cffi__gcc927446x8b960560.c: В функции «_cffi_check_struct__xmlOutputBuffer»:
    src/lxml-cffi/includes/__pycache__/_cffi__gcc927446x8b960560.c:11367:24: предупреждение: несовместимый тип указателя в инициализации [-Wincompatible-pointer-types]
       { xmlBuffer * *tmp = &p->buffer; (void)tmp; }
                            ^
    src/lxml-cffi/includes/__pycache__/_cffi__gcc927446x8b960560.c:11368:24: предупреждение: несовместимый тип указателя в инициализации [-Wincompatible-pointer-types]
       { xmlBuffer * *tmp = &p->conv; (void)tmp; }
                            ^
    Building lxml version 3.4.0.
    Building without Cython.
    Using build configuration of libxslt 1.1.28
    Building against libxml2/libxslt in the following directory: /usr/lib64
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-kE5gfd/lxml/setup.py", line 232, in <module>
        **setup_extra_options()
      File "/tmp/pip-build-kE5gfd/lxml/setup.py", line 145, in setup_extra_options
        STATIC_CFLAGS, STATIC_BINARIES)
      File "setupinfo.py", line 167, in ext_modules
        import lxml.etree
      File "src/lxml/../lxml-cffi/etree.py", line 8, in <module>
        from .apihelpers import _assertValidNode, _assertValidDoc
      File "src/lxml/../lxml-cffi/apihelpers.py", line 3, in <module>
        from .includes.etree_defs import _isString, _getNs, _isElement
      File "src/lxml/../lxml-cffi/includes/__init__.py", line 53, in <module>
        library_dirs=['/usr/lib/x86_64-linux-gnu'])
      File "/usr/lib64/pypy/lib_pypy/cffi/api.py", line 421, in verify
        lib = self.verifier.load_library()
      File "/usr/lib64/pypy/lib_pypy/cffi/verifier.py", line 111, in load_library
        return self._load_library()
      File "/usr/lib64/pypy/lib_pypy/cffi/verifier.py", line 222, in _load_library
        return self._vengine.load_library()
      File "/usr/lib64/pypy/lib_pypy/cffi/vengine_gen.py", line 66, in load_library
        module = backend.load_library(filename, flags)
    OSError: Cannot load library /tmp/pip-build-kE5gfd/lxml/src/lxml-cffi/includes/__pycache__/_cffi__gcc927446x8b960560.pypy-26.so: /tmp/pip-build-kE5gfd/lxml/src/lxml-cffi/includes/__pycache__/_cffi__gcc927446x8b960560.pypy-26.so: failed to map segment from shared object

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-kE5gfd/lxml


(v) sh-4.3$  pip install --no-clean -e 'git+https://github.com/msva/lxml.git@cffi#egg=lxml'
Obtaining lxml from git+https://github.com/msva/lxml.git@cffi#egg=lxml
  Updating ./venv/src/lxml clone (to cffi)
Installing collected packages: lxml
  Running setup.py develop for lxml
Successfully installed lxml
#iacik 1
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva

А можно как-нибудь начитерить в setup.py, чтобы при билде/инсталле перед, собственно, процессом, он вызывал одну внешнюю команду? :)

#iactj 1
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva

а как pip'у в virtualenv'е сказать чтобы при сборке пакета не создавал каждый раз билддиректории с рандомными кусками в имени, а юзал либо какую-нибудь одну, либо заданную мной, либо просто продолжал сфейлившуюся сборку там, где она сфейлилась

#iotem 9
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
mva

Патчу pypy3, чтобы собирался с ncurses6, потому что иначе выкидывает какую-то дичь.
// подсмотрел у арчешкольников направление обезьянопатчинга седом и сделал нормальный фикс питонофайла, с поддержкой кросскомпиляции. А рач как обычно.

#iggbh 1
Вы можете выбрать до 10 файлов общим размером не более 10 МБ.

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.