Как стать автором
Обновить

Комментарии 63

полная интеграция подразумевает отладку?
изменения хорошие, годный релиз
Отладка также поддерживается.
Пока что не вижу, чтобы он вышел. На сайте на данный момент доступна для скачивания только 2.0.2.
а ну это Preview версия, видимо она не окончательная ещё… хотя может я ошибаюсь
В теме так и написано «Вышел новый PyCharm 2.1 Early Access Preview»
что-то недоглядел… простите.
Эм, попытка номер 2:
use habracut, luke!
Буду ныть в каждом топике: JetBrains, сделайте IDE для Erlang'a, пожалуйста! :)
И хоть кто ни будь, сделайте для Go, хорошая штука подыхает :(
IDE не спасет go.
Нашёлся бы кто-нибудь, кто б объединил отличные языки D и Go и создал бы поистине великолепный GoD Language. ©
*Плакаю навзрыд* ;-(
интересно, а когда сделают красивые шрифты под гном( линукс )?
когда мы увидим на нем ценник
На ком? Я уже второй год плачу за PyCharm…
это проблема не линукса, а жабы, точнее свинга. я плакал ровно два дня. Первый — из-за шрифтов, второй — из-за осознания, что красиво это будет только под маком.

Потом я поставил sublime text, навесил на него плагины и вроде ничего так… Эстетика выиграла у функциональности.
У меня вполне красивые шрифты под mate (linux mint)
Скидку, скидку, скидку! ))
Мои открытые проекты к сожалению не очень подходят к их требованиям (
Уже год жду простейшей, но удобной _для меня_ фичи. ⌘+L — перейти на строку предлагает выбрать номер. Хочу, нет, ТРЕБУЮ, чтобы последний введенный номер строки ЗАПОМИНАЛСЯ. И уж совсем хорошо, чтобы в combobox была ИСТОРИЯ ранее введенных номеров строк. Это ведь сильно проще чем ненужная _мне_ фича с «Удаленными интерпретаторами». Аллоэ, на барже, запилите, ибо НАДО. Без этого мне просто жизнь не мила.

PS. PyCharm естественно честно купленный. Без скидок.

Пруф:
Верите, нет — за те семь, кажется, лет, что я занимаюсь разработкой IDEA и PyCharm, первый раз вижу такой реквест. Может, вам на самом деле закладки нужны, а не goto line? Navigate | Bookmarks
Нет. Именно простейший GoTo Line. Просто запомните последнее значение и при следующем GoTo Line его по умолчанию подставляйте. А если сделаете историю с combobox то будет вообще чудо. Сделаете — куплю дальше и продлю лицензию. Не сделаете, буду воровать, как все, или уйду на eclipse. Заранее спасибо
Может, вы всё-таки объясните, зачем это вам?
Привык. Не надо закладки (точнее надо, конечно, но память у ⌘+L ТОЖЕ надо). Просто сделайте. Уверен что это несложно. Не берите грех на душу, не толкайте на сомнительную стезю воровства.
Если вы считаете, что шантаж — это самый осмысленный способо добиться того, чтобы в каком-то продукте сделали какую-то фичу, то вы неправы.

Мы делаем изменения в интерфейсе, чтобы решить какую-то проблему. Если мы не понимаем, в чём проблема заключается, или если мы видим, что проблему решает другая имеющаяся фича, то никаких изменений мы делать не будем. У нас тысячи открытых реквестов в трекере, очень многие из них делаются несложно, и лучше мы сделаем что-нибудь, нужное понятно зачем.
ok. Простой но частовстречающийся usecase.
Вывалился в консоли Exception. Скопировал номер строки, перешел на него через GotoLine. Сделал небольшое изменение, прыгнул на другую функцию в этом файле. Хочу вернуться назад. Как делаю сейчас: Переключаюсь в консоль СНОВА копирую номер строки, вставляю его в GotoLine. Как хочу делать: ⌘+L[ENTER]. Закладки не совсем то. В закладках — у меня осмысленные точки. В которые можно возвращаться больше 2х раз.
Во-первых, вы можете вставлять имя файла вместе с номером строки в Goto File (например foo.html:32). Оно уже запоминает последнее значение.

Во-вторых, вы можете использовать Navigate | Back (Ctrl-Alt-Left), чтобы вернуться назад в то место, из которого вы прыгнули.
Я поддерживаю историю по GotoLine, я об этом тоже задумывался. Back помогает, но допрыгиваю я до нужного места за более чем два прыжка.
P.S думал я один такой =)
Всё равно не понимаю. Это же совершенно бессмысленные цифры, они протухнут сразу же, как только вы хоть что-нибудь поменяете в файле.
Дело в том, что модель использования IDE для «скриптовых» языков несколько отличается от, к примеру, традиционной Java разработки. Ну да. Номер строки может немного протухнуть, а может и нет. Нам просто нужен БЫСТРЫЙ кеш последнего GoToLine. Хватит выяснять зачем да почему. Потому, что это удобно. Just Do It.
Вообще-то моего непосредственного начальника зовут Сергей Дмитриев, а не Александр Литовченко.
Это вам так кажется. В обычной обстановке, вашего непосредственного начальника, конечно могут звать как угодно. Но здесь и сейчас, решается получит ли Сергей Дмитриев от Александра Литовченко очередные $50 (а на самом деле, возможно что гораздо больше и сейчас и в перспективе) для выплаты премии по итогами квартала Дмитрию Жемерову.

Дмитрий, решайтесь же. Сделайте маленький шаг навстречу кастомеру. К черту тысячи открытых реквестов в трекере. Сделайте память для GotoLine :)
Вы вот серьезно думаете, что пытаетесь шантажировать сотрудника JetBrains 50$?
Да, шантажирую. А что?
Я не поддерживаю выше написанный шантаж =) я вас люблю за ваши продукты, но у меня лично подобное желание возникает пару раз в день, сформулировать почему и зачем сложно, но при отладке и пробеганию по коллбекам это было бы полезно. Монжо сделать эту цифру в поле выделенной, тогда это не будет мешать тем кому это не нужно, а я нажму ввод и попаду куда мне необходимо, главное показывать цифру в зависимости от активного файла. Это такая мелочь, но мне было бы приятно.
тоже нахожу реквест ну очень странным
через полчаса этот номер уже же ни о чем не будет говорить
сам пользуюсь 50% foo.html:32 и 50% Ctrl-Alt-Left (ну в паре с ctrl_alt_backspace)
Странный да, но в жизни пригодился бы, я бы вообще его не упомянул бы, если бы его реализация не была такой просто и не кому не мешала бы, всё что необходимо сделать это показывать предыдущий номер + сделать его выделенным. Тем кому это не надо будет так же вводить номер словно там всё таже пустая строка, а я буду жать ввод и прыгну туда куда хотел.
Как С-o, C-i в vim — действительно удобно ;-)
Для Python/Django не встречал полезней IDE. Просто фантастика. Кто ещё сомневается очень советую. Единственное, на Win синхронизация (Deployment->Download from Server) оооочень медленная после sync в Debian. Может кто знает как победить?
IDE очень хорошая, но почему она заметно задумывается даже на топовых железках и разных платфомах? Пробовал загружать проект на 10-15к строк и даже при печати видно какие-то задержки, мне это совсем не нравится.
На какой платформе вы исспользуете? У меня на винде и в виртуалке VmWare Workstation c Ubuntu 11.10 летает, а вот на VirtualBox с тем же Ubuntu 11.10 тупняки, причём Eclipse тоже тормозит безбожно. Есть подозрение или проблема в VirtualBox или в OpenJDK, потому как на Workstation стоит Oracle JDK 1.7.03.
Windows/ OS X.
Маленькие проекты нормально работают, а вот более мение сереьзные заметно тормозят. Может это из-за тесной связи с интерпретатором или ещё с чем…
Отдельное спасибо за установку пакетов, теперь будет намного проще окружение разворачивать.
Дмитрий, раз уж вы тут порой отвечаете, может уделите секундучку: в какой ревизии планируется побороть маленький баг, который немного портит работу с большими фалами?
Стоит версия 2.0.2, косяк следующий: открываю проект, правлю файл *.py, запускаю Run, файл компилится тот что без изменений… Очень странное поведение. Поправил код, нажал Ctrl+S (Save all, как сохранить отдельный файл (не Save as...) я не нашел), опять аналогичный бред, компилится без изменений, при нажатии на ссылку на строку с ошибкой, открывается ЕЩЕ одно вкладка с таким же файлом, который правил, только без исправлений. Объясните пожалуйста где не прав.

p.s. В EAP тоже самое.
Да, еще кое-что забыл. Pycharm на все переменные аля wx.Size (100, 100), wx.ALL, wx.EXPAND из wx.Python ругается очень страшно.

А все классы:
class Test():
def __init__(self):
bla bla bla

Обзывает «старыми» и предлагает так:
class Test(object):
bla bla bla
А как именно ругается на wx.*?

Инспекция про classic style class по дефолту выключена, вы её сами себе включили.
Unexpected argument
У вас где-то в пути симлинк. Работу с симлинками мы сейчас переделаем, скорее всего, в финальном релизе 2.1 таких проблем больше не будет.
Щас запустил дома, проверил про компилирование — всё хорошо.

Щас загрузил доделываемый проект в PyCharm 2.0.2, отпостю все косяки и всю инспекицю, если интересует.
Возможно меня сейчас запинают, но хотелось бы Lifetime Updates и тогда покупателей будет больше. Лично я бы как студент купил студенческую лицензию, если бы не всего лишь годовая подписка на апдэйты.
А я бы хотел Community Edition, потому что использую Python редко, но после PyCharm и IDEA использовать что-либо другое не возможно!
Пока что мы не планируем такое делать. Просят такое редко, и я не думаю, что реально многие будут такой возможностью пользоваться (понятное дело, базовая цена в таком случае будет сильно выше, чем нынешняя).
ээм, а разве Community Edition не бесплатная должна быть? Endian Firewall Community Edition как пример.
Я отвечал на комментарий выше, а не про community edition.
Загрузил в PyCharm практически готовый проект. Провел полную инспекцию (за исключением «старых классов» и докстрингов). Вот итоги:
1.
try:
index = self.list.GetFirstSelected()
self.date = self.list.GetItemText(index)
except:
print 'error'

 Problem synopsis:           Too broad exception clause (at line 70)

2.
try:
result = avgall / allweight
except ZeroDivisionError, info:
print info
self.data.append(str(result)) # Вот здесь ругается.

Local variable 'result' might be referenced before assignment (at line 271)

3.
def get_cols(self, table):
try:
cursor = cx_Oracle.Cursor(self.connection)
sql = ("select t.COLUMN_ID, t.COLUMN_NAME from all_tab_columns t where t.TABLE_NAME=\'%s\' order by t.COLUMN_ID") % table
cursor.execute(sql)
cuu=cursor.fetchall()
cursor.close()
col_names = [i[1] for i in cuu]
except (NameError, cx_Oracle.DatabaseError), info:
error = ("Database Error: %s" % info)
wx.MessageBox(str(error))
return col_names # Здесь ругается


Problem synopsis:           Local variable 'col_names' might be referenced before assignment (at line 98)

4.

В проекте хитро организован wx.listctrl. И есть такой кусок кода:
self.columns = self.main.main_stat_columns
for col, text in enumerate(self.columns):
self.list.InsertColumn(col, text)
for item in rows:
info = '%s:(%s)' % (col, item)
data.append(info)


Переменная col нигде не объявляется и ниоткуда не берется, она берется сразу здесь.
Problem synopsis:           Local variable 'col' might be referenced before assignment (at line 26)

5.

def show_help(self, event):
frame = help_frame.help_frame()
frame.Show()


     Problem synopsis:           Unresolved attribute reference 'Show' for class 'help_frame' (at line 229)

6.

for x in val:
if x not in string.digits:
return False


     Problem synopsis:           Unresolved reference 'string' (at line 199)

7.

app = wx.PySimpleApp()
dlg = MyDialog()
dlg.ShowModal()
dlg.Destroy()
app.MainLoop()

Problem synopsis:           Unresolved attribute reference 'MainLoop' for class 'PySimpleApp' (at line 72)

8.

def OnExit( self, event ):
self.Destroy()


     Problem synopsis:           Parameter 'event' value is not used (at line 96)

def OnExit( self, event ):
self.Destroy()
event.Skip()


     Problem synopsis:           Unresolved reference 'event' (at line 98)

9.

wx.ALL # and etc. Все компоненты wxPython, за исключением wx.Frame and etc.

     Problem synopsis:           Unexpected argument (at line 27)

Соответственно я привел по одному примеру каждого варна, а таких около 500. А теперь представьте себе работу в редакторе который справа подсвечивает около 100 варнов только в одном модуле, т.е. работа становится не возможной.

Надеюсь помог развитию проекта :)
Первый пример — правильный, можете выключить inspection, если вам такая диагностика не нужна.
Второй — правильный, если вылетит exception, result будет не инициализирован.
Третий — то же самое.
Четвёртый — к сожалению, испортились инденты, но скорее всего, проблема в том, что col будет не инициализировано, если self.columns — пустой массив
5, 7, 9 — бага, неправильно построились skeletons для wx
6 — а у вас есть import string?
8 — как бы фича, у нас нету возможности понять, что метод OnExit — обработчик события и должен иметь фиксированную сигнатуру
везде согласен, кроме:
4. Пустой массив правильно отрабатывает.
6. А зачем? Работает без импорта. Почему выдает варн?
8. Таких «фич» набирается по 10 штук на форму, что делать-то?

Что делать-то? Хочется пользоваться Вашей программой, а не получается :(
поправка:
6. Да, импорт strings есть.
А можно как-либо настроить всплывающую подсказку, чтобы она срабатывала через delay time (около 0) после оставновки печати? А то надоедает нажимать ctrl+space.

Идеально было бы, если она показывается всегда после набора первого символа.
Если разработчики еще читают данный пост, то (если это вообще возможно) добавьте пожалуйста в списке установленных в виртуальное окружение модулей какую-нибудь пометочку, что такой-то модуль был установлен автоматически с таким-то (как зависимость). А то установил я себе скажем requests, а он за собой еще два модуля подтянул. Потом разбирайся какой нужен, а какой нет.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации