Собрали в одном месте самые важные ссылки
читайте нас в Telegram
Утилита позволяющая измерить процент покрытия тестами. Скачать можно по ссылке: https://pypi.python.org/pypi/coverage/
(21.12.2015 - 27.12.2015)
В преддверии открытия python.ru появилось сообщество в Slack, где любой русскоговорящий python-разработчик может пообщаться в тематической обстановке
22-го декабря на площадке ФРИИ City Hall состоится 31-й Новогодний MoscowPython-митап. На встрече будет объявлено о некоторых «сюрпризах», которые мы готовим в следующем году, ну и конечно, как обычно мы услышим интересные и полезные доклады, включая доклад одного из евангелистов сообщества. Подробнее
Этот пост дает теоретико-игровое объяснение традиции дарить подарки на Новый Год
Автор статьи приводит 5 модулей для Python, которые наиболее сильно понравились в 2015году
Когда я полтора года назад, будучи студентом 4 курса телекоммуникаций, пришел работать в компанию на должность сисадмина, я понял что работы у меня будет очень много, а учить всего нового придется еще больше. Учебу я отодвинул на второй план, а потом и вовсе стал появляться на парах раз в месяц, потому как работы было много, и она была уж точно интереснее того, чему пытались учить в универе.
Компания занималась продажами, и естественно здесь оказалось много таких человечков, которых зовут менеджерами по продажам, и им нужно было очень много звонить!
Что случится, если запустить этот код?
import os import socket import threading def lookup(): socket.getaddrinfo('python.org', 80) t = threading.Thread(target=lookup) t.start() if os.fork(): # Parent waits for child. os.wait() else: # Child hangs here. socket.getaddrinfo('mongodb.org', 80)
В этом докладе мы рассмотрим: зачем выбирать Gurobi, почему выбрали Python в качестве языка программирования, зачем выбирать Anaconda в качестве аналитической платформы, как Gurobi и Python может быть использован вместе, чтобы построить модели и приложения.
Python обладает широкими динамическими возможностями. Строгая динамическая неявная типизация позволяет не указывать типы, но при этом не бояться что в коде просуммируем строку и число. Однако за динамичность приходиться платить - памятью и скоростью.
Но что если хочется максимально уменьшить размер объектов (а в python все объекты) и при этом не потерять в функциональности? Для примера возьмем плоскость. На плоскости, пускай, надо разместить миллион точек (что не так много). При этом надо иметь возможность красить точку в разные цвета, расстояния подсчитывать и прочие действия.
Количество кода - это некоторый критерий для ПО. Практика показывает, что чем больше кода - тем сложнее поддерживать и развивать продукт. А если в этом коде много copy-past'ы, то совсем плохо.
Для выявления повторяющихся кусков кода существуют различные инструменты. Один из них CloneDigger. Это старая разработка (еще в 2008 году автор выступал на EuroPython), однако, работает хорошо и на данный момент.
Python прикладывает множество усилий чтобы скрыть все различия операционных систем. Если смотреть на файлы, а точнее на пути файлов, то легко можно заметить различия между Linux и Windows:
C:\Program Files (x86)
/home/user/documents
Коротко: all и any - встроенные методы, которые позволяют проверять все элементов списка на выполнение условия.
При валидации данных часто возникает задача проверить структуру на корректность. Например, пускай есть список словарей:
При парсинге возникают совсем странные ошибки - одна из них - не валидный HTML. Т.е. с ошибками. Верстальщик забыл закрыть таблицу или body. Еще бывает что вставляют HTML из Word, а там тааккккооооой код.
Чтобы очистить HTML от мусора можно применять инструмент Tidy.
Продолжаем предлагать различные задачи для практики. Кто заинтересуется решением этих задач, просим помогать друг-другу. Но при этом в течении недели не кидать ссылок на полностью готовое решение. А также, чтобы читать код было удобно - публикуйте его на https://gist.github.com/ или какой-то подобный сервис.
Описание задачи:
Опыт показывает, что каждый проект обладает своими зависимостями (библиотеками), а если и одинаковыми, то версии не совпадают. Чтобы упростить запуск и настройку проекта разработчики пишутINSTALL.md, README.md, make-файлы и что более важно - requirements.txt.
Файл requirements.txt - это правило хорошего тона для Python проектов. Файл содержит список необходимых библиотек для запуска с указанием версий:
В репозитории вы найдете теорию для обучения модели на играх. Есть даже готовый рабочий код.
Модуль представляет собой своего-рода ORM для построения структуры данных. После создания модели появляется возможность всячески сериализовать данные
from datetime import date
from marshmallow import Schema, fields, pprint
class ArtistSchema(Schema):
name = fields.Str()
class AlbumSchema(Schema):
title = fields.Str()
release_date = fields.Date()
artist = fields.Nested(ArtistSchema)
bowie = dict(name='David Bowie')
album = dict(artist=bowie, title='Hunky Dory', release_date=date(1971, 12, 17))
schema = AlbumSchema()
result = schema.dump(album)
pprint(result.data, indent=2)
# { 'artist': {'name': 'David Bowie'},
# 'release_date': '1971-12-17',
# 'title': 'Hunky Dory'}
Модуль позволяет подключиться к процессу (по его номеру) и мониторить выходные данные
>>> from schema import Schema, And, Use, Optional
>>> schema = Schema([{'name': And(str, len),
... 'age': And(Use(int), lambda n: 18 <= n <= 99),
... Optional('sex'): And(str, Use(str.lower),
... lambda s: s in ('male', 'female'))}])
>>> data = [{'name': 'Sue', 'age': '28', 'sex': 'FEMALE'},
... {'name': 'Sam', 'age': '42'},
... {'name': 'Sacha', 'age': '20', 'sex': 'Male'}]
>>> validated = schema.validate(data)
>>> assert validated == [{'name': 'Sue', 'age': 28, 'sex': 'female'},
... {'name': 'Sam', 'age': 42},
... {'name': 'Sacha', 'age' : 20, 'sex': 'male'}]
Утилита позволяет в автоматическом режиме проверять коммиты с помощью lint
from pyautocad import Autocad, APoint acad = Autocad() acad.prompt("Hello, Autocad from Python\n") print acad.doc.Name p1 = APoint(0, 0) p2 = APoint(50, 25) for i in range(5): text = acad.model.AddText('Hi %s!' % i, p1, 2.5) acad.model.AddLine(p1, p2) acad.model.AddCircle(p1, 10) p1.y += 10 dp = APoint(10, 0) for text in acad.iter_objects('Text'): print('text: %s at: %s' % (text.TextString, text.InsertionPoint)) text.InsertionPoint = APoint(text.InsertionPoint) + dp for obj in acad.iter_objects(['Circle', 'Line']): print(obj.ObjectName)
Сборник видео для различных языков (в том числе и Python).
Бот может самостоятельно отслеживать твитты с определенным хэштегом и читать их.
from mrfh import MultiprocessRotatingFileHandler logger = logging.getLogger('my_logger') handler = MultiprocessRotatingFileHandler('my_log.log', maxBytes=2000, backupCount=10) logger.addHandler(handler) logger.debug('Some debug message!')
Модуль добавляет возможность организовать pipe's в коде. При этом они будут выглядеть как обычные функции.
Модуль реализован с помощью multiprocessing
Инструмент позволяет сериализовать встроенные типы данных, списки, словари, массивы, функции, классы, модули, встроенные методы и многое другое.
(Список правда большой)
Интерфейс для вызова C-кода. Изменения описаны по ссылке https://allmychanges.com/p/python/cffi/#1.4.2. Скачать можно по ссылке: http://pypi.python.org/pypi/cffi/
Простая библиотека для создания HTTP запросов. Изменения описаны по ссылке https://allmychanges.com/p/python/requests/#2.9.1. Скачать можно по ссылке: http://pypi.python.org/pypi/requests/
Best Shift-Left Testing Tools to Improve Your QA
htmy: Async, Pure-Python Rendering Engine
statsmodels: Statistical Modeling and Econometrics in Python
markitdown: Convert Files and Office Documents to Markdown
Talk Python to Me: #490: Django Ninja
SVG-виджеты для tcl/tk. Финальный аккорд. Часть IV
Implementing Approximate Nearest Neighbor Search with KD-Trees
Пишем свой PyTorch на NumPy. Часть 1
Царство грибов. Симуляция мицелия на p5py. Битвы гифов. Часть первая
django-liveconfigs - управление настройками в django
Мэтчинг персонажей. Level Hard
Стратификация: как не облажаться с A/B тестами