Announcing the PyCharm 4.5 RC2

Having announced the PyCharm 4.5 Release Candidate build two days ago, today we’ve published the PyCharm 4.5 RC2 build 141.1116, which is already available for download and evaluation from the EAP page.

The full list of fixes and improvements for this build can be found in the release notes.

Download PyСharm 4.5 RC2 build 141.1116 for your platform from the project EAP page and please report any bugs and feature request to our Issue Tracker. It also will be available shortly as a patch update from within the IDE (from previous EAP builds only) for those who selected the EAP or Beta Releases channels in the update settings.

Stay tuned for a PyCharm 4.5 release announcement, follow us on twitter, and develop with pleasure!

-PyCharm Team

Posted in Early Access Preview | 1 Comment

Announcing the PyCharm 4.5 Release Candidate

We are now approaching the final steps towards the PyCharm 4.5 release which by all means is going to be a milestone for our Python and Web development IDE. So today we’re happy to announce the availability of the PyCharm 4.5 Release Candidate.

Please take it for a spin and give us your feedback. The PyCharm 4.5 RC build 141.1075 is available for download from the Early Access Preview page.

PyCharm 4 Release Candidate includes mostly a consolidation of bug fixes as compared to previous EAP builds. For the detailed list of notable changes and improvements in this build, please check the Release Notes.

Nevertheless, a few new features are introduced in the PyCharm 4.5 RC. First, a couple of new refactorings appeared. With “Convert to Python Package” and “Convert to Python Module” new refactorings you can easily convert a python module to a package and vice versa:

refactoring

Second, the Python Profile Integration which was introduced in the previous EAP build now works with remote interpreters the same way it does with the local ones. You can easily collect profiler statistics and browse through it with the graph representation:

profileremote

And last but not least, in the project structure you can now mark a directory as Resource Root for static content such as CSS or JavaScript files, making Django templates, for example, understand the file paths as they should:

In case you missed what’s new in upcoming PyCharm 4.5 – please read the blog posts covering new features in the first, second, and third EAP builds.

You can download the build or upgrade from within the IDE (from previous PyCharm 4.5 EAP builds only) without a full re-installation using the patch-based upgrade. Just make sure you’ve selected the EAP or Beta Releases channel in the update settings.

We hope that there will be no major bugs, however, should you encounter any problems, please report them to YouTrack – we’ll still have a bit of time to fix stuff before the final release.

Stay tuned for a PyCharm 4.5 release announcement, follow us on twitter, and develop with pleasure!

-PyCharm team

Posted in Early Access Preview | 4 Comments

PyCharm 4.5 EAP build 141.988: Introducing Python Profiler

Today we’re glad to let you know that the third PyCharm 4.5 EAP build 141.988 is ready for your evaluation. Please download it from our EAP page.

Just as always, this EAP build can be used for 30 days after its release date and it doesn’t require any license.

Comparing to the previous EAP builds, this one mostly includes a consolidation of fixes for various bugs and problems, and improvements for recently added features. Among them are various IPython Notebook integration fixes and fixes for the python formatter. For the detailed list of notable changes and improvements, please check the Release Notes.

The most notable brand-new feature in this build is the Python Profiler Integration which is available right away from the toolbar or Run | Profile…:

profiler

This special profiler configuration starts your application with your current run/debug configuration and attaches the python profiler to it. If you have a yappi profiler installed on your interpreter, it starts with it by default, otherwise it uses the standard cProfile profiler as shown on the screenshot above.
By clicking the Capture Snapshot icon on the profiler console you can get the detailed statistics on functions within your code and view the call graph as well as navigate to the function definition:

profiler2profiler3

Another notable new feature in this build is “Step into my code” which is available from the debugger:

stepinto

This feature helps you avoid stepping through library sources and lets you stay focused on your own code.

Please take PyCharm 4.5 EAP build 141.988 for a spin! We hope that there will be no major issues, however, should you encounter any problems, please report them to our public tracker.

You can download the build or use the patch-based upgrade to upgrade from within the IDE (from previous PyCharm 4.5 EAP builds only) without a full re-installation. Just make sure you’ve selected the EAP channel in update settings.

Stay tuned for PyCharm 4.5 release announcements, follow us on twitter, and develop with pleasure!

-PyCharm team

Posted in Early Access Preview | 16 Comments

Announcing the PyCharm 4.5 EAP build 141.832

Having announced the first Early Access Preview build of PyCharm 4.5 a couple of weeks ago, today we’re eager to let you know that the second PyCharm 4.5 EAP build 141.832 is ready for your evaluation. Please download it for your platform from our EAP page.

Just as always, this EAP build can be used for 30 days starting from its release date and it does not require any license.

This build introduces the brand-new and significantly reworked manage.py tool for Django projects with a new user interface, autocompletion for manage.py tasks and their arguments:

managepy1

The manage.py console preserves the command history so you can easily fetch previous commands just by hitting up/down arrows. Quick documentation for manage.py commands is also supported. Put a caret to any command and hit Ctrl+Q for the quick reference or external documentation:

managepy2

The IPython Notebook integration has been significantly improved with the new IPython Notebook console and numerous bug fixes:

ipythonnotebook

The other notable improvements in this EAP build are:

  • a fix for matplotlib interactive mode in the debug console
  • a number of fixes for a Python formatter
  • general fixes for the editor and code insight
  • a fix for preventing of indexing .tox folder

That’s not all as this build has many other improvements and bug fixes – for example, improved Django 1.8 code insight and Behave’s default parse mode for step parameters. So we urge you to check the fixed issues and compare this build to the previous one!

Please give PyCharm 4.5 EAP a try before its official release and please report any bugs and feature request to our issue tracker.

Develop with Pleasure!
-PyCharm team

Posted in Early Access Preview | 5 Comments

Meet the winners of the Best Interactive Programming Course Contest

A couple of months ago the Best Interactive Programming Course Contest organized by JetBrains came to a close. The courses that were produced as part of this contest will surely help thousands of students around the world learn Python using our free, modern and professional tool — PyCharm Educational Edition.

pycharm_contest_banner

Dmitry Filippov seized the opportunity and interviewed the contest winners: John Zurawski, the author of “Logging in Python” (1st place) and Lisa Chung, who contributed “Introduction to Classic Ciphers” (2nd place). Read on to learn more about them, their experience participating in the contest, their interactive courses and PyCharm Educational Edition.

— Hi John and Lisa, could you tell us a bit about yourself and your day jobs?
John: I am a professional software developer using Python. I also volunteer as a co-organizer of the DFW Pythoneers, a Python user group for the Dallas/Fort-Worth metroplex.
Lisa: I’m a software developer for The Motley Fool (Washington, DC). At the moment, my team’s building a tool for managing APIs.

— What was your motivation for creating a course for the contest?
John: I know a lot of people new to programming in general are coming to Python because it’s easy to learn and has a rich ecosystem of open source libraries. In many cases these developers are more focused on solving their problems, so are not always familiar with the techniques professional software developers use to debug their programs. I felt it was important to show them better solutions exist and take almost no additional effort.
Lisa: I’m interested in coaching others to become coders. Many are capable of coding, but getting started is the hard part. Tools like PyCharm Educational Edition can be a big help for those newcomers.

helloworld

— Tell us about the courses you’ve created. What are they all about and how will they help students learn something new?
John: I created a course about the Python logging module. I am passionate about logging, because it has helped me solve many complex problems over the years. I felt if I could introduce this topic to people new to programming as an important debugging tool. I thought the interactive approach offered by PyCharm Educational, would allow them to see the benefits of using the logging module very quickly, and hopefully see the value in investing the time to learn more.

logginginpythonoverview
Lisa: “Introduction to Classic Ciphers” is a very brief overview of the null, Caesar, and Atbash ciphers. These are three of the more accessible classical ciphers. What makes it a python course is that we work on python implementations of the encipher and decipher algorithms of each cipher. The course also forces you to read chunks of code written by someone else (me). I think it’s important to practice reading and debugging code written by others. For me, it’s a good measure of how well I understand a programming language.

classic_cyphers

— In your opinion, how well does an interactive approach to learning work when combined with professional tools like PyCharm?
John: I feel the benefit of a professional tool like PyCharm is the effort to get started is very low compared to alternatives. Having everything in one cross-platform solution eliminates a lot of frustration with getting the environment set up and working, for both educators and students.
Lisa: I’m a fan, especially when it’s paired with a professional tool such as PyCharm, which I myself use. Coders of all levels can use PyCharm to write their code; newcomers and professionals both benefit from this. For newcomers, it certainly removes one hurdle of transitioning into a professional coder. Professional coders benefit because the tool is less likely to grow bloated.

cyphers_exmpl1

— How much time did you spend creating your amazing courses?
John: I spent about one entire weekend and several evenings working on the course. The first 80% came fairly easily, but the last 20% was a bit of a struggle to get done in time for the contest deadline. The contest organizers gave plenty of time, but unfortunately I didn’t get started until closer to the deadline.
Lisa: PyCharm Educational Edition is very straightforward. I watched the tutorial video and brainstormed for a few days. With respect to writing the course, I spent one day. Had I budgeted more time, I could see myself spending more days to flesh out and refine the course.

— What was your experience like creating a course with PyCharm Educational Edition?
John: I learned a lot by writing the course. There are some features in the standard library module I had no idea existed. Going through the effort to explain the course material in simple terms caused me to strengthen my own knowledge in this area.
Lisa: I had fun! Until PyCharm Educational Edition, I had never considered creating an educational course. You and your team have done a great job with the framework; for course creators like me, there is very little overhead beyond writing up the content. I appreciate the course structure, in that you have to think in terms of Lessons, each Lesson with a set of Tasks, with each Task having an html page and a python exercise. The enforced structure really helps course creators like me (no training in teaching or curriculum development) stay focused.

creation

— Would you recommend PyCharm Educational Edition to other educators?
John: I would actually recommend PyCharm Educational Edition to anyone who is interested in Python. I would recommend picking a subject area they have an interest in and attempt to create a course using PyCharm Educational Edition. It’s something that can help other users in the Python community, but will also provide an opportunity to master the subject area for their own benefit. I believe there is truth in the quote: “To teach is to learn twice.” I recommend planning out your complete course before you attempt to author your course inside PyCharm Educational edition. This will help you identify introductory topics you missed and ensure the course flows well between tasks.
Lisa: Yes, especially if you wish to develop your own courses.

— What was the most challenging part of creating your course?
John: I found it challenging to come up with fun tasks. I was not very happy with some of my examples and feel there is room for making them more interesting. I feel making interesting and fun tasks is an important part of keeping people engaged with a course.

funtask

—Do you feel anything is missing in PyCharm Educational Edition?
John: Although the emphasis is on interactive programming tasks, I would like to see the ability to organize a course into description-only tasks and quizzes. Description-only tasks would have allowed me to break up some of the longer explanatory tasks into smaller and easier to digest pieces. Quizzes would have helped reinforce key subject areas without having to implement repetitive looking tasks. I feel the courses would be easier for self-study by students with these features.
Lisa: I’m curious whether an online forum for each course would benefit participants. This could be a place for users to ask for additional support (“could you explain Task x in more detail?”) and for the course creator to collect input on how to refine the course.

— Is there anything else you would like to add?
John: I would like to thank JetBrains for being active in supporting the Python community. Not only by offering the free PyCharm Educational and Community editions, but with their support of Python events and user groups.

— Thanks for the interview, John and Lisa!

You can download PyCharm Educational Edition here and make use of the winning courses contributed by John and Lisa. To check them out, go to File / New Project / Educational and click the refresh button.

Develop and learn with pleasure!
-PyCharm team

Posted in Conferences & Events, Contest | 4 Comments

PyCon 2015: How It All Happened

PyCon2015-logo-lockupCircleWhat a whirlwind the past couple weeks have been! We just got back from Montreal, Canada, which hosted PyCon 2015. The conference was awesome and the people just amazing! Let me tell you all about our experience (and announce the winners of our license raffle!).

 

Five of us from the PyCharm team attended this conference:

imgo

From left to right: Anna Morozova, Dmitry Trofimov, Ekaterina Tuzova, Andrey Vlasovskikh, Dmitry Filippov

Lots of things kept us busy during the conference days.

First, we attended the Python Language Summit where the latest trends of the Python language were discussed, such as the development of the new PEP 484 for type hinting. As you may already know, at PyCharm we’re constantly improving our static code analysis to provide you with better autocompletion, navigation, code inspections, refactorings and so forth. We have our own way to infer types and the annotations format to help us better understand your code. At the summit, we shared the challenges we’ve come across with static analysis, as well as some of our ideas for improving Python to be more friendly to static analysis tools like PyCharm. For a long while we at PyCharm had been actively working on co-creation of the new PEP 484, so it was great to talk face-to-face with core Python developers like Guido van Rossum, Jukka Lehtosalo, and Łukasz Langa. We took a pulse of the current developments and discussed further arrangements. At the end of the conference, Guido did a closing keynote about type hints and the future plans of the community. So, many exciting things to look forward to in this area!

Python Education Summit was another fantastic event. We learned a lot about how Python is being used to teach programming to kids, novice programmers and those for whom Python is a second language. Our lightning talk covering the brand-new PyCharm Educational Edition was received very well by the community. It helped us understand where we’re all heading and what the current needs are in this domain. We’re proud that PyCharm Educational Edition is evolving in the right direction. Talking to teachers and developers who are passionate about nurturing novice developers, we agreed to collaborate on getting Python-rich curriculums adopted in some local US schools, which is one of the major problems in the community right now.

The main PyCon 2015 conference was just awesome. We felt privileged to be a part of the community that is setting a standard every day in the world of Python programming. We had a booth in the expo hall, participated in development sprints and talked to hundreds of people, answering questions about our company, products, PyCharm itself and collecting valuable feedback:

booth_col

Having kicked off PyCharm 4.5 EAP prior to the conference, we were able to show off some new stuff we’d worked on lately.

It was also a great chance to meet a lot of our happy users and friends as well as new people passionate about Python and new technologies. To all the conference attendees, we say “Thank you!”. We hope you enjoyed it as much as we did!

booth3.jpg

We also held a PyCharm license raffle at the conference, with some cool swag up for grabs. Today we’re glad to give you the randomly chosen winners:

  • Natasha Scott
  • Steven D Gonzales
  • Thomas Kluyver
  • Jason Oliver
  • Luke Petschauer
  • Jeremy Ehrhardt
  • John Hagen

Congratulations! Your license notifications will be mailed out to you in the coming days.

If you didn’t win, you’ll still get a 15% discount for a new PyCharm personal license (if you ticked that option in the raffle application). We will get in touch with you soon with more information on how to redeem your personal discount.

With any problems, concerns or questions, ping us in comments below.

Develop with pleasure!
-PyCharm team

Posted in Conferences & Events | Leave a comment

Announcing The PyCharm 4.5 EAP Opening

Today is an exciting day for JetBrains PyCharm team! And for two reasons…

First of all, PyCon 2015 in Montréal has just started! We are looking forward to this great event and will be at JetBrains booth in Expo hall, listening to all the feedback and answering all the questions that you have!

The second, but not less exciting, is that the first PyCharm 4.5 public preview build 141.583 is finally available for download! Head on over to the download section of the PyCharm Early Access Preview (EAP) page where you can get it for your platform right now.

Note: The PyCharm 4.5 EAP build is not in the final product release stage and might contain some bugs, so it’s supposed to be installed along with your current PyCharm installation for evaluation and checking out new features. No patch update for this EAP build will be available from within the IDE.

The PyCharm 4.5 preview build introduces a lot of new features, bug fixes and improvements, including a number of recently added PyCharm’s unique features as well as some features and improvements from the Web and IntelliJ platform sides.

The most notable PyCharm’s unique features in this preview build are:

  • The matplotlib interactive mode is now supported in both PyCharm’s and the debugger’s consoles.
  • The debugger is improved with the new “Ignore library files” option.
  • Inline debugger for Python: it shows variable values right in the editor, next to their usages.
  • Navigation from debugger’s variables view to code where an object or its type are defined.
  • Initial support for Python 3.5 with support of PEP 465: a dedicated infix operator for matrix multiplication. We’ll continue implementing support for Python 3.5 with next EAP builds as soon as PEP 484: Type Hints and PEP 448: Additional unpacking generalizations are finalized.
  • Various code insight improvements: structural types inferring based on the usage of attributes and nominal types inferring from structural types, better Numpy-specific coding assistance.
  • Multiple per-project Vagrant configurations are now supported.
  • The new “Bulk move” refactoring dialog: helps you perform a move refactoring on a group of code snippets with all dependencies resolved.
  • The new Scratch Files feature: temporary virtual files which support running and debugging.

As usual, PyCharm 4.5 will have all features of the recently released WebStorm 10 (read more about it in the WebStorm blog). Here is just a short summary of what’s new available in the PyCharm 4.5 preview build 141.583 from the Web side:

  • Improved JavaScript support: completely reworked support for JavaScript and enhancements in ECMAScript 6 support.
  • TypeScript 1.4 support and built-in compiler: Instantly provides a compiled JavaScript file and highlights any compilation errors in the editor.
  • Application dependency diagrams: this new feature in spy-js allows you to visualize and explore your app structure based on the runtime data.
  • spy-js support for source maps: enjoy spy-js features for any language compiled to JavaScript.
  • V8 profiling for Node.js apps: capture and analyze V8 CPU profiles and heap snapshots to eliminate performance bottlenecks and fight memory issues.
  • Improved Grunt integration.
  • Project-wide Dart code analysis.

Some of the Webstorm features are not bundled with PyCharm by default but available for installation from JetBrains plugin repository.

Apart from additional features and improvements from the Web side, PyCharm 4.5 gets improvements from the recently released IntelliJ IDEA 14.1. The most noteworthy changes are:

  • Distraction-free mode (a view with no toolbars, no tool windows, no editor tabs – just code on your screen. To switch to this mode, click View | Enter Distraction Free Mode)
  • HiDPI support for Windows or Linux.
  • Git and Mercurial log viewers have been improved.
  • Database tools offer multiple consoles per data source, now with a schema switcher, local history, and easier access.
  • The HTML editor has been extended with a cool new option for simultaneously editing both opening and closing HTML tags.

Download PyCharm 4.5 preview build 141.583 for your platform right from the project EAP page and please report any bugs and feature request to our Issue Tracker.

The PyCharm 4.5 preview build is available in two editions – free/open source PyCharm Community Edition and full-fledged PyCharm Professional Edition. While both of them are available for download and use at no charge, PyCharm Professional Edition has a 30-day evaluation period, which means PyCharm 4.5 Professional Edition EAP build 141.583 comes with a 30-day time-limited license as well.

Note: Remember to install .zip & .tar.gz versions into a completely empty folder. Do not just unpack over previous version!

Develop with pleasure!
-JetBrains PyCharm Team

Posted in Early Access Preview | 22 Comments

Announcing the PyCharm 4.0.6 release update

Today we’re glad to announce the immediate availability of the PyCharm 4.0.6 bug-fix update.

It’s already available for download from our website. It also will be available soon as a patch update from within the IDE (from PyCharm 4.x only).

As a recap, the most notable fixes in PyCharm 4.0.6 are: a fix for the Django ORM inspection problem, a fix for the ManyToManyField resolve bug, a fix for an incremental search bug, a fix for HTML indentation broken when using Jinja tags, a fix for the “Nothing to show” bug in Structure View for Jinja2 HTML files, and fixes for a couple of platform bugs.

For further details on the bug fixes and changes, please consult the Release Notes.

As usual, please report any problem you found in the issue tracker.

If you would like to discuss your experiences with PyCharm, we look forward to your feedback on our public PyCharm forum and twitter.

Develop with Pleasure!
-PyCharm team

Posted in Release Announcements | 1 Comment

PyCharm 4.0.6 RC is available

Today we’ve published the PyCharm 4.0.6 RC bug-fix update.

This build has a few fixes that can be found in the release notes: a fix for the Django ORM inspection problem, a fix for the ManyToManyField resolve bug, a fix for an incremental search bug, a fix for HTML indentation broken when using Jinja tags, a fix for the “Nothing to show” bug in Structure View for Jinja2 HTML files, and fixes for a couple of platform bugs.

Download PyСharm 4.0.6 RC for your platform from the project EAP page and please report any bugs and feature request to our Issue Tracker. It also will be available shortly as a patch update from within the IDE. Make sure you’ve selected the Beta Releases channel in update settings.

Develop with Pleasure!
-PyCharm team

Posted in Early Access Preview | 11 Comments

Feature Spotlight: Python remote development with PyCharm

Happy Friday everyone,

In today’s blog post I’m going to cover some basic principles and features in PyCharm that make Python remote development easy as pie. To demonstrate them I’ll use a very simple flask web application from the official flask github repository. Enjoy the read!

Note: Remote development functionality is only available in PyCharm Professional Edition. For more details please see the editions comparison page

First I clone the official flask repository from https://github.com/mitsuhiko/flask. Then from the PyCharm’s Welcome screen I open the blueprintexample directory, which stores the source of the super simple flask application I’m going to use for the demo:

flask1

PyCharm opens the directory and creates a project based on it:

flask2

Now I’m going to set up the remote machine to start with the remote development. I use Vagrant which PyCharm offers great support for. In one of my previous blog posts I already covered Vagrant integration, so here are just the straight steps to provision and run a VM. I go to Tools | Vagrant | Init in Project Root and select the Ubuntu 14.04 image which was previously imported from the collection of vagrant boxes. This creates the Vagrantfile in the project root. Now, I’m going to edit this file to configure a private network and make my VM visible from my host machine:

flask3

Next, I run the VM with Tools | Vagrant | Up and PyCharm shows me that the VM is up and running:

flask4

We can open a local terminal inside PyCharm to test the VM:

flask5

Alright, the VM responses to ping. Now, I want to run my web application on the VM, so I need to copy my project sources to the remote host. This is easily done with the Deployment tool inside PyCharm.
I go to Tools | Deployment | Configuration and specify the connection details for my VM:

flask6

On the Mappings tab in the same window I specify the path mapping rule:

flask7

In my case I want my current local project directory blueprintexampe to be mapped to remote /home/vagrant/blueprintremote.
Now I can right-click my project in the project view and select Upload to:

flask9

And this will upload my project to the specified directory on the remote machine:

flask10

One of the handiest features is that you can set up automatic upload to the remote machine by simply clicking Tools | Deployment | Automatic Upload:

flask11

From this point on, all changes made locally will be uploaded to the remote machine automatically, so you don’t need to worry about having fresh sources on the remote host. Cool, isn’t it?

So now, I’m going to modify one of the files in my project, so the flask application will be visible remotely (adding host=’0.0.0.0’ as a parameter to the app.run() ), and PyCharm automatically uploads the changes to the remote machine:

flask12

Next, I specify the python interpreter to be used for my project. I go to File | Settings (Preferences for Mac OS) | Project | Project Interpreter. By default, PyCharm sets the local Python interpreter as a project interpreter, so I’ll change it to the remote one:

flask13

As I’ve already created a deployment configuration, PyCharm offers to export Python interpreter settings from the existing deployment configuration:

flask14

But I can also specify the remote interpreter manually, using SSH credentials or a Vagrant configuration. Here I’ll do it manually:

flask15

After I specify the new remote python interpreter, PyCharm starts indexing and finds that the flask package is not installed on the project interpreter:

flask16

I can fix this easily with Alt + Enter on the unresolved reference error highlighted with red:

flask17

Alright. Now everything is ok, so we can finally specify Run/Debug configuration and launch our application. Let’s go to Run | Edit Configurations and add a new Python run/debug configuration:

flask18

In the Run/Debug configuration dialog, I specify the name for my new configuration and the script to be executed on the remote host. PyCharm sets the project interpreter (remote in this case) by default for this new run configuration, and finally I need to specify path mappings for this particular run configuration:

flask19

It seems we’re all set. I click the Run button:

flask20

PyCharm shows that the application is up and running on port 5000 on the VM.
I open the browser to check that the application is really working:

flask21

From this point on, we can work with this project like with a normal local project. PyCharm takes care of uploading any changes to the remote machine and keeps the VM up and running.

With the same Run/Debug configuration, we can do a simple remote debug session putting a few breakpoints right in the editor:

flask22

Click the debug button or go to Run | Debug:

flask23

That’s it! Hopefully you’ll appreciate this remote development functionality in PyCharm that makes Python remote development a breeze.

If you’re still craving for more details on PyCharm remote development capabilities, as well as other remote development features, please see the online help.

Talk to you next week,
Dmitry

Posted in Cool Feature | 25 Comments