
Artem
22.01.2016
10:39:58

Aliaksiej
22.01.2016
10:40:11

Artem
22.01.2016
10:41:34
conda create -n py35 python=3.5
activate py35
deactivate

Aliaksiej
22.01.2016
10:42:38
типа pip + venv + pyenv?

Google

Artem
22.01.2016
10:42:42
да

Aliaksiej
22.01.2016
10:43:43
я так понимаю лучше миниконда?
ибо хз каких он там либ натянуть хочет

Artem
22.01.2016
10:44:12
да, полная анаконда очень много весит, там все научные пакеты в комплетке
еще через нее по аналогии с pip можно ставить те же научные пакеты, не ставя в систему десятки зависимостей (conda install scipy, например)

Henaro
22.01.2016
10:49:43
а чем она удобней?

Artem
22.01.2016
10:52:16

Aliaksiej
22.01.2016
10:58:55
какой-то он там стремный. Скопилирован по другому
(mytestprj){13:58}~/miniconda3/envs ➭ python
Python 3.5.1 !!!---»»>|Continuum Analytics, Inc.|«<-----!!!! (default, Dec 7 2015, 11:16:01)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.

Henaro
22.01.2016
11:08:49
кстати, а если я сделал 2 виртуальных окружения, в каждом из них (по очереди) создал маленькую аппликуху. Оно обе сразу будут работать?

Viktor
22.01.2016
11:16:46

Aliaksiej
22.01.2016
11:21:47

Google

Viktor
22.01.2016
11:22:08

terry
22.01.2016
11:23:24
я хз, там за 4 года вроде почти 5 к видео

Viktor
22.01.2016
11:23:41
Стоит ли делать докстринги для методов, которые есть в ботапи, а не придуманы мною?

Henaro
22.01.2016
11:25:33
нет, разве что для себя комментарии оставь )

Viktor
22.01.2016
11:26:09
Только для собственных?

terry
22.01.2016
11:26:24

Pavel
22.01.2016
11:27:10

Viktor
22.01.2016
11:27:18
то есть есть API.sendMessage()
А есть API.genMarkup()
Для второго естественно нужно. А для 1? Копипастить с официального апи?
http://www.youtube.com/watch?v=o4PFDKIc2fs
тьфу
не то
https://www.youtube.com/watch?v=CDeG4S-mJts
вот
Так норм?
Господи, как зашакалило
from enum import Enum
class enum_test(object):
def func(self, data, file_type=self.file_type.preload):
""" Different part """
if file_type == self.file_type.preload:
print("preload")
elif file_type == self.file_type.new
print("new")
else
print("url")
""" Same part for any file_type: """
pass
class file_type(Enum):
preload = 1
new = 2
url = 3
и тогда для вызова надо `enum_test_obj.

Google

Kolyann
22.01.2016
13:09:10

Pavel
22.01.2016
13:13:59

Aliaksiej
22.01.2016
13:16:15

Viktor
22.01.2016
13:34:35
и тогда для вызова надо eto.func(data, file_type=eto.file_type.new)
Это нормально выглядит? Или лучше по-другому?
Пожалуй я вынесу Enum из класса

Pavel
22.01.2016
13:54:25
кто умеет в logging?
Хочу TimedRotatingFileHandler, которые сегодняшние логи пишет в файл с датой в имени.
По дефолту он пишет сегодня в foo.log, а в полночь переименовывает в foo.log.2016-01-22. Я хочу и сегодняшнее видеть в файле foo.2016-01-22.log.
Много кида писать не хочу, однако.

Kolyann
22.01.2016
13:56:28
https://docs.python.org/3/library/logging.handlers.html#timedrotatingfilehandler
там в конструкторе файлнейм
эт не оно?

Pavel
22.01.2016
13:56:52
Да, я понимаю, что это удобно, когда свежие логи в одном и том же файле лежат, но мне их глазами смотреть надо, а не тулзами обрабатывать.

Pavel
22.01.2016
13:57:52

Viktor
22.01.2016
14:08:44
Может при создании писать сразу file-date.log, а в полночь переименовывать?

Ilya
22.01.2016
14:10:33
писать и логротейт :)

Viktor
22.01.2016
14:11:03

Pavel
22.01.2016
14:11:53
писать и логротейт :)
Блин, логи такая инфраструктурная фигня, что тратить на них ваше внимание и моё время - грех.

Google

Viktor
22.01.2016
14:13:02
А как в полночь меняешь?

Pavel
22.01.2016
14:31:19

Viktor
22.01.2016
14:31:31
код плз

Pavel
22.01.2016
14:32:00
Код чего?

Viktor
22.01.2016
14:33:16
логгинга
Или это по-дефолту?
Какие настройки ставишь

Admin
ERROR: S client not available

Pavel
22.01.2016
14:34:47
Три хандлера - exception smtp

Viktor
22.01.2016
14:34:56
код плз

Sergey
22.01.2016
14:35:16
код плз
Ты логгировать че то собрался?

Viktor
22.01.2016
14:35:16
то есть просто импортировал, и начал вызывать?

Pavel
22.01.2016
14:37:36
Нет там кода. Три конструктора по умолчанию. И вызов logging.info()
Доберусьт до дома покажу эти пять строк.

Sergey
22.01.2016
14:39:17
Пишу:)
У меня большинтво скриптов консольные.
При инициализации беру метку времени в формате ddmmyyyy_hhmmss.log и в этот лог пишем все что происходило в сессии.
Новый запуск - новый файл.

Pavel
22.01.2016
14:42:02
Руками всё это?

Google

Sergey
22.01.2016
14:42:27
Не понял

Viktor
22.01.2016
14:43:10

Pavel
22.01.2016
14:43:14
Пишешь в файл рукамт или через модуль логгинг


Sergey
22.01.2016
14:43:20
через logging
# -*- coding: utf-8 -*-
"""
logger
~~~~~~
This module provides an interface for logging operations
"""
import logging
from datetime import datetime
import os
ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
LOG_DIR = ROOT_DIR + '/log'
if not os.path.exists(LOG_DIR):
os.mkdir(LOG_DIR)
class Logger:
def __init__(self):
now = datetime.now()
name = datetime.strftime(now, '%Y%m%d_%H%M%S')
self.config = {}
self.config['name'] = name
self.config['file_format'] = '%(asctime)s [%(levelname)s] %(message)s'
self.config['console_format'] = '[%(levelname)s] %(message)s'
log = logging.getLogger(name)
log.setLevel(logging.INFO)
# File log
fh = logging.FileHandler(LOG_DIR + '/%s.log' % name)
fh.setLevel(logging.INFO)
fh.setFormatter(logging.Formatter(self.config['file_format']))
# Console log
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(logging.Formatter(self.config['console_format']))
log.addHandler(fh)
log.addHandler(ch)
self.log = log
def get(self):
return self.log
вот как то так


Pavel
22.01.2016
14:44:45
Я там писал выше. Твой подход хорош для коротких скрипто, которые работают меньше суток
А я хочу логи за сегодня видеть в сегодняшнем файле, а не когда там демон поднялся пять лёт назад.

Sergey
22.01.2016
14:47:46
Прям с маху и не приходит в голову как это реализовать.

Pavel
22.01.2016
14:48:55
Переписать часть timexrotatedfilehandler или как там его.
Но это черезчур. Я лучше смирюсь с именами файлов.

Viktor
22.01.2016
14:55:26
не *nix - way
Для enum лучше if foo == enum_t.apple или if foo is enum_t.apple?

Pavel
22.01.2016
14:56:55
не *nix - way
А к меня глаза нормального цвета, чтобы тратить жизнь на формат имени файла логов. ?

Sergey
22.01.2016
14:57:06
Не True

Viktor
22.01.2016
14:57:38
Ребят, а как сделать проверку что передан именно list of list of str?
или не стоит?

Nikita
22.01.2016
15:00:46
traforet