PyCharm 2017.3 EAP 6: Improved interpreter selection interface

The latest and greatest early access program (EAP) version of PyCharm is now available from our website:

Get PyCharm 2017.3 EAP 6

Improved Python interpreter selection interface

In the previous PyCharm 2017.3 EAP 5 build we introduced a new UI for configuring project interpreters in your existing projects. To recap:

  • The project interpreter dropdown in Settings | Project | Project interpreter now has only the virtualenvs you have specifically configured for that particular project, and virtualenvs that you’ve specifically configured to be shared between projects: venvselector
  • Under the gear icon you will find ‘Add Local’ and ‘Add Remote’. Local interpreters are those that run directly on your operating system; remote interpreters include Docker and Vagrant in addition to any remote computers you connect to through SSH:localremote
  • A new “Add local interpreter” dialog makes it much easier to configure a new virtualenv or conda environment and make it available for other projects:newdialog

This build has a new UI for configuring project interpreters during the project creation.
Go to File | New project…:newproject

In the New Project dialog you will get a similar experience to the one described above for the existing project interpreter selection. Here, if you’d like to reuse an existing virtualenv or system interpreter, you can select it under ‘Existing interpreter’. And if you create a new virtualenv and would like to reuse it in other projects in the future, you can check the ‘Make available to all projects’ option and it will appear in the dropdown on the project interpreter page in all of your other projects.

Install PyCharm with snap packages

Starting from this EAP build, we are offering an alternative installation method using snap packages for Ubuntu users. Snaps are quick to install, safe to run, easy to manage and they are updated automatically in the background every day, so you always have the newest builds as soon as they’re out. If you are running Ubuntu 16.04 LTS or later, snap is already preinstalled, so you can begin using snaps from the command line right away.

Installing PyCharm Professional or Community Edition 2017.3 EAP is now as easy as this simple command (please make sure you use just one option from square brackets):

$sudo snap install [pycharm-professional | pycharm-community] --classic --edge

This command will install PyCharm Professional or Community from the “Edge” channel where we store EAP builds. Please note, the snap installation method is experimental, and currently, we officially distribute only PyCharm 2017.3 EAP in the Edge channel.

Depending on which snap you’ve installed, you can run your new PyCharm 2017.3 EAP with:

$[pycharm-professional | pycharm-community]

You can now use other snap commands for managing your snaps. The most frequently used commands are:

  • snap list – to list all the installed snaps,
  • snap refresh –edge – to manually update a snap from the edge channel
  • sudo snap remove – to remove a snap from your system
  • sudo snap revert – To revert a snap to the previously installed version should there be anything wrong with the current version

Snap supports auto updates from the stable channel only. Since we distribute 2017.3 EAP builds in the edge channel, to update to the next EAP build, you’ll need to manually invoke:

$snap refresh [pycharm-professional | pycharm-community]--classic --edge

Read more about how snaps work and let us know about your experience with using snap for installing and updating PyCharm 2017.3 EAP so we can consider whether snaps might be something we can utilize for our official stable releases. You can give us your feedback on Twitter or in the comments to this blog post.

Other improvements in this build:

  • Foreign Data Wrappers support for Postgres (PyCharm Pro only)
  • New folder-based grouping for data sources (PyCharm Pro only)
  • Completion for environment variables in the REST client (PyCharm Pro only)
  • Improved JavaScript support (PyCharm Pro only)
  • Various fixes for the Python debugger, console and Python code insight
  • And more, have a look at the release notes for details

If these features sound interesting to you, try them yourself:

Get PyCharm 2017.3 EAP 6

As a reminder, PyCharm EAP versions:

  • Are free, including PyCharm Professional Edition EAP
  • Will work for 30 days from being built, you’ll need to then update when the build expires

If you run into any issues with this version, or any other version of PyCharm, please let us know on our YouTrack. If you have any suggestions or remarks, you can reach us on Twitter, or by commenting on the blog.

Posted in Cool Feature, Early Access Preview | Tagged | 5 Comments

Interview: Quazi Naiful on Python web frameworks and GraphQL

Web development has long been a key part of Python’s appeal. In modern web apps, rich frontends work with Python backends over REST. But even that’s getting re-examined, with recent interest in GraphQL as a query language for web data.

Want an introduction to what GraphQL means for Python? We’re fortunate to have Quazi Nafiul as the presenter for the “GraphQL in the Python World” October 31st webinar on October 31st. Quazi is known in PyCharm as the author of Mastering PyCharm, is a long-time Python web developer, and currently a software engineer at Suitsupply.


To set the scene for the webinar, we asked Quazi to join us for a quick interview.

Thanks for joining us on the webinar. Let’s jump right into GraphQL. What is one killer feature about it that you really like?

Declarative data fetching. This feature allows you to get exactly what you ask for and makes versioning much easier since one simply adds more functionality through extending a GraphQL model (very similar to a resource).

Give us a little background on yourself, your Python origin story and what you’re doing now.

My university was predominantly C++ and Java, and those languages although powerful, never felt fast to develop with for me. So, I was trying to look for something different and stumbled onto MITx’s Introduction to Computer Science, which taught the course in Python. I’ve been using Python ever since. After the MITx course, I started hanging out on StackOverflow, and realized how little I knew. I tried to expand my understanding by answering questions on the site.

In the meantime, I started doing consultancy work for companies in NY and London. I also was a developer evangelist for a short time. I wrote plenty of bad code back then. I also started writing a book on PyCharm around this period. Once the book was complete and published, and I got bored with remote work, I started applying to companies around the world and eventually ended up in Amsterdam as a software developer.

Similar question: what did you start with for Python web frameworks, what have you used, and what’s your preference now?

I started with Django, quickly moved to Flask and now I use both Django and Flask in my day job. I remember at the time Django had the most comprehensive beginner documentation you could find. I didn’t understand a lot of it when I was first starting out, so every part of the tutorial would send me down a rabbit hole. Eventually, I was able to understand how HTTP as a protocol works. Funnily enough, I thought that one always interacts with a database with an ORM, and as a result, my understanding of SQL was a little hampered in the beginning, but I eventually managed to fix that.

Just to close out on Python web frameworks, what do you think is “next big thing”?

I honestly don’t know. Python web frameworks market shares seem to be in a kind of equilibrium at the moment. Flask serves you well if you need to build something small to medium-sized, but indeed you can build huge applications with it. Django is amazing if you just want to get up and running with a CRUD application that sits on top of a regular RDBMS. I think Django will continue to have a strong presence with the resurgence of SQL and SQL databases. Pyramid is great if you need something super flexible, and you can hack to its very core, but it does not have ecosystems as strong as Flask or Django.

Back to GraphQL. What kinds of things will you be showing, and what should people expect to learn in the webinar?

My aims are twofold. The first thing is to introduce GraphQL, and really just show people how powerful it is, and how its features can bring tangible benefits to your team and allow your businesses to move forward. The second part of that is to show that you can use all the power that GraphQL brings along with the frameworks and libraries that you’re already used to, like Flask, Django, and SQLAlchemy.

Do you plan to have any working code in advance that people can review?

Yes, absolutely. I want people to be able to follow what I’m doing, and also take that code, and work on their own implementations and ideas. I’m going to be building a generic application, but I’ll do my best to showcase the most important features, so that they can take that code and start playing around on their own.

Does GraphQL mean throwing out your current database?

Nope. You don’t even have to throw out your current ORM (in most cases). If you’re using Django or SQLAlchemy, then you can just re-use your existing models! Although, it does not have the best support for Mongo or other NoSQL databases, and so you might need to build integrations with those databases.

Every “next big thing” has some rough edges. What are tricky parts for GraphQL in Python?

I would say having a standardized form of authentication. GraphQL implements a level-based authentication system (or rather you can implement it). I would say that a lot of different services that are used to HTTP REST, might not really like this, since clients don’t exist for all languages. One example would be Salesforce APEX and .NET.

Posted in Interview, Uncategorized, Webinar | Leave a comment

PyCharm 2017.3 EAP 5

The latest and greatest early access program (EAP) version of PyCharm is now available from our website:

Get PyCharm 2017.3 EAP 5

New Interface for Interpreter Selection

In recent times, PyCharm has added more and more advanced ways of configuring your project interpreter. In addition to your regular system Python and virtualenvs based on it, we now also support Conda environments, interpreters on remote machines through SSH, within Docker containers, and in Vagrant boxes. This list is likely to grow in the future as the Python community adapts new ways to isolate dependencies.

The interface that we’ve used to configure these interpreters has slowly been adapting to accommodate new ways of configuring an interpreter. The time has come to overhaul it, both to make it more intuitive to use now, and to be ready for future expansion.

No More Long List

In the project interpreter settings, there is a dropdown, which contains all the virtualenvs you’ve ever used in PyCharm. If you have many projects which all have their own virtualenv, this becomes a very long list. Yet, for the project you’re working on most of them are irrelevant.

This changes in PyCharm 2017.3, the project interpreter dropdown will only have the virtualenvs you have specifically configured for that project, and virtualenvs that you’ve specifically configured to be shared between projects.

Interpreter List

Creating New Virtualenvs Made Easy

If you want to configure a new interpreter for your project, use the gear icon, and choose either ‘Add Local’ or ‘Add Remote’. Local interpreters are those that run directly on your operating system, remote interpreters include Docker and Vagrant in addition to remote computers you connect to through SSH.

Add Local

Let’s have a look at the new Add Local dialog:

Add Local Dialog

This makes it very easy to configure a new virtualenv. If you’d like to reuse an existing virtualenv, you can choose it under ‘Existing virtualenv’. And if you’d like to reuse that virtualenv for further projects in the future, you can check ‘Make available to all projects’ and it will appear in the dropdown on the project interpreter page for all projects.

As we know the decision where to place virtualenvs is a choice that users like to make for themselves, we’ll remember where you placed the virtualenv the previous time. Whether that’s inside your project, or in a separate directory.

For users of virtualenvwrapper and similar tools, we’ve added some intelligence to the existing virtualenv section, and if we find a virtualenv that looks like it belongs to this project (if the name matches, either fully or partially), we’ll preselect it. That means that after setting up your project with mkvirtualenv, after opening PyCharm you’ll be prompted to configure an interpreter, and you’ll most likely only have to click ‘OK’ to confirm.

Also New in this Version

Syntax Highlighting for Function Calls

An oft-requested small improvement to our syntax highlighting: you can now customize the color of function calls in your code. By default, they’re set to black, but you can change them in the settings: Editor | Color Scheme | Python.

Function Call Highlighting

SSH Config File Support

If you’re using a bastion host (also referred to as a jump host), you’ll be very happy to know that PyCharm 2017.3 supports SSH config files. Even on Windows. Just write an OpenSSH style config file in ~/.ssh/config or /etc/ssh/ssh_config and choose “OpenSSH Authentication”. 

Further Improvements

  • Fast autocompletion from the command history in the Python console. For example, to import something you’ve imported recently, just type im and then use the up and down arrow keys to find the import.
  • Asynchronous evaluation of variables in the debugger, if you have large objects in your code, you will now be able to see the simple values while the large objects are still loading. Very useful if you have large DataFrames. 
  • Are you using Django together with a JavaScript framework that also uses curly braces in HTML files? You can now disable Django template autocompletion for these files, and get the proper support for the JS framework instead. To do this, right-click the folder that contains the HTML files and click Mark Directory as | Resource Files.
  • We’ve added support for Twisted Trial unit tests
  • And more, have a look at the release notes for details

If these features sound interesting to you, try them yourself:

Get PyCharm 2017.3 EAP 5

As a reminder, PyCharm EAP versions:

  • Are free, including PyCharm Professional Edition EAP
  • Will work for 30 days from being built, you’ll need to update when the build expires

If you run into any issues with this version, or another version of PyCharm, please let us know on our YouTrack. If you have other suggestions or remarks, you can reach us on Twitter, or by commenting on the blog.

Posted in Early Access Preview | Tagged | 6 Comments

Webinar: “GraphQL in the Python World”

GraphQL is a new way of communicating with your data sources. It might replace RESTful APIs because it provides a better framework for dealing with your data. This webinar is about what GraphQL is and what problems it actually solves in comparison to RESTful APIs. Then, if you like it, how you can get started using the Python graphene library, and how to use it with different ORMs like Django and SQLAlchemy as well as Python web frameworks like Flask and Pyramid.

  • Tuesday, October 31
  • 17:00 European Time, 11AM Eastern Standard Time
  • Register here


This webinar will provide both a theoretical perspective as well as hands-on demos to showcase what GraphQL is, what it is capable of, and how it can benefit in your own jobs and side projects.

Technical Requirements

  • Understanding of Web Development
  • Understanding of RESTful Web Services
  • Experience with at least one Python web framework like Flask, Django or Pyramid

Speaking to you

Quazi Nafiul is a software engineer at Suitsupply. He has been building REST APIs for over five years professionally. He has used pretty much every major web framework in the Python ecosystem. He’s given talks at multiple PyCons including APAC and Germany. He is currently working on evangelizing GraphQL to those who have used REST and are looking for better alternatives.

Quazi is also the author of Mastering PyCharm.

Posted in Webinar | Leave a comment

Interview: A leading Django development consultancy gains speed and efficiency with PyCharm


Imagine working for a development consultancy: dozens of different projects, constant communication with customers, each of which has their own preferences on technology stacks, coding standards, and unique sets of requirements – not to mention expectations on project performance, robustness, and completion schedules. Keeping a balance between maintaining the existing code base and promoting best development practices can be daunting, but that’s what the people at Caktus Group have mastered through the years.

We spoke to two professional Python developers with diverse backgrounds and experiences to learn what Django development looks like in a modern Django development company. We wanted to know how they switch between different projects, and how they quickly get a grasp on current technologies. Please meet Charlotte and Dan from Caktus Group, a leading Django development consultancy building custom web and SMS apps!

– Hi, Dan and Charlotte! Could you tell us a little bit about yourself and how you got into Django development?

Charlotte_crop_smCharlotte: I started programming in high school and although I decided to study genetics in college, but I kept programming as a hobby over the years, through all of life’s twists and turns. I’ve always had a passion for coding and just recently began programming professionally.


dan-poirier_crop_smDan: I graduated as a Master of Computer Science from UNC Chapel Hill and have been a professional developer for about 25 years. I’ve been a committer on the Apache HTTP Server project since 2009. During the last 6 years, I’ve been working with Python doing Django backend work. Prior to that, most of my work was in C or Java. I used Emacs when developing C, and sometimes Eclipse for Java development.

– What size is your team at Caktus?

Charlotte: Caktus is just over 30 people in total, with most employees (including the company founders) being developers. The current trend is that there are more and more companies and startups preferring Python with Django to other web development technologies. The community around Django continues to grow, and so do we!

– What are the most prominent projects under your belt?

Dan: Actually we’ve participated in many different projects. We developed the world’s first SMS voter registration system for Libya, which enabled 1.5 million registrations. Another huge project was a digital archiving system for the world’s largest on-demand video provider, which uploads 6.5 terabytes of data daily. We were also honored to build the award-winning PyCon websites in 2014 and 2015. Other interesting projects we completed can be found on our website.

– What is the current project you’re working on?

Charlotte: Currently we’re building a multi-tenant forum for an entertainment (games) company, integrating APIs into complex conferencing technology for a major membership association, and providing team augmentation for a large energy supplier, as well as a few other apps and responsive website projects for clients in travel, e-commerce, and higher education.

– What technologies do you use for your Python development?

Dan, Charlotte: We’re primarily a Django shop, so we rely heavily on Django itself. We also use Postgres almost exclusively for our databases.

Our customers have various needs and wants, so depending on a particular project, we use different stacks of technologies. The tools worth mentioning, which we use quite often, are: Redis, RabbitMQ, ElasticSearch, Memcached, Gunicorn, Nginx, and UWSGI. There are many other technologies in use. We often deploy to Amazon Web Services to take advantage of load balancing, autoscaling, managed services, etc.

Our deployment tools vary. We’ve used Salt Stack, Ansible, Elastic Beanstalk, Dokku, Heroku, and some home-grown solutions too.

– What do you think are the main challenges that you have to deal with while working at a development consultancy?

Charlotte: Because our projects are contract-based, we often have stack requirements which come from a client, either because they have a preference or because we are modifying code which already exists on a particular set of technologies. Switching between different requirements is challenging, but this gives us exposure to a lot of different ways of doing things.

Dan: In my previous job, I often worked on the same product for years. Here, we start multiple new projects every year (and finish others, of course), which means both learning a new code base or starting from scratch again, and learning a new client’s priorities and requirements. It’s challenging, but I love it because it keeps things fresh.

Another difference is that we are in constant communication with clients during each project. But it’s not enough to just schedule time to talk. Every client is different, so we have to learn each client’s preferred communication style, and then use that to both learn their expectations and communicate ours. This can be challenging sometimes, but it also enables us to deliver the best apps possible to our clients.

Finally, after completing new feature work, we often provide support for the web app we’ve built. So, in addition to having several projects we’re actively working on, we have even more that we need to be ready to fix if any problems come up. This is all part of what we provide as a full-service agency, however.

– What’s is so special about Python and Django? Why are they the language and framework of your choice?

Dan: Python’s focus is on readability, it lends itself to straightforward development, and its popularity ensures we’ll continue to have access to a large pool of skilled staff as we look toward future growth. When I first tried Django several years ago, I was immediately impressed with how quickly I could start creating useful applications. Django was built to be fast, scalable, and secure. Those are the factors which are integral to how we develop at Caktus.

Charlotte: Python has a lot of included and third-party libraries, and it’s structured in such a way as to encourage breadth of development. There are many tools available, and it’s not hard to build custom tools for it as needed. Django itself has batteries included and a wealth of reusable apps as well. Being a robust and stable framework, Django strives to solve common problems in web development in the best way possible. Last but not least, Django has fantastic documentation.

You can read more about why we use Python and Django in a blog post published by our CEO, Tobias McNulty. In this blog post, he shares his vision on Django advantages and why companies and startups should start using Django, as well as his perspective on the future of the framework.

– Which Python versions are in use for your projects?

Charlotte: All new projects are written in Python 3, and we advocate strongly for older projects to be moved away from Python 2 as soon as possible. Python 2 will stop being supported in 2020, at which point it will be susceptible to the gradual discovery of security flaws that happens to all products; they will no longer be fixed and therefore will remain as vulnerabilities in any code written in Python 2.

Python 3 is not so different from Python 2 and isn’t particularly difficult to migrate over. There are numerous resources out there to assist with the transition, as well as libraries like six, which allow running Python 2 and Python 3 code side-by-side so that the transition doesn’t have to happen all at once. Most clients that I’ve spoken to about migrating think that it is important and want to do it. I think that as we get closer to 2020, we’ll see a bit more urgency about transitioning.

– You both use PyCharm as a primary IDE for Python and Django development. Can you recall how you first learned about PyCharm?

Dan: It’s been a long time, now. It’s hard to recall how I first came across PyCharm. Back in 2011 I was using Eclipse for my Java development, then I switched over to Python and Django. Back then, I visited the DjangoCon conference, where I received a free trial license for PyCharm. I started using it and haven’t really looked at Eclipse since. It’s been my default Python IDE for about 6 years now.

Charlotte: I first learned about PyCharm from someone at a local Python user group. I started using it when I started building Django projects, because it made it much easier to keep track of the interactions between models and views and so on. I’ve since gotten to the point where it’s my go-to editor for anything Python because of its power and flexibility.

– How did you choose PyCharm from other alternatives? How did the initial adoption go in your team?

Dan: I don’t recall it being too hard for me to switch. I had been using PyDev and Eclipse, and the significantly improved performance with PyCharm was a real incentive to switching. There were some things that took me awhile to get used to, for example not being in control of when/which individual files are saved, but overall I was more productive fairly quickly.

Charlotte: I was already a PyCharm user before I joined Caktus, so to me PyCharm was an obvious choice when I started developing professionally. When I joined Caktus Group, I just informed the sysadmin that I would be using it, and requested a professional license. I had no trouble getting that.

When I first picked up PyCharm, I needed, at a minimum, an editor which would keep up with multiple files and help track imports and calls across those files, and I decided to try PyCharm because it had such vocal support from people I knew. I had used Notepad++ before, which handled some of the things I needed, but I had gotten a new computer and decided to try out PyCharm first. I never looked back.

– What PyCharm features do you and other people on your team use often?

Dan: The features I use frequently and enjoy the most are: Go To Declaration, Code completion and automatically adding imports (Optimize Imports), Find in Path, code formatting with auto-indenting, and refactorings. Those are probably the most common things I use in PyCharm. I also appreciate the real-time syntax and style checking, not just in Python but also in HTML and JavaScript. I still use the command line for running tests, debugging, and version control; I’m used to it and haven’t spent much time trying to figure out how to do those things in PyCharm. (Except that I always switch to PyCharm when I need to resolve merge or rebase conflicts.)

Charlotte: Autocompletion is certainly my number 1 most-used feature, to such an extent that, when I’ve forgotten to add a parameter to a function or initialize a variable, I often first notice because it’s not available to autocomplete. The ability to jump to a declaration saves me enormous amounts of time. When working with long files, I very much appreciate the ability to collapse everything in a file with one key command, and then expand out only the parts I need. I appreciate the way Python handles refactoring, for instance when I’m partway through coding something and realize I’m using a variable differently from how I’d planned to when I first named it.

– What important advantages does PyCharm offer you vs. using text editors, if any?

Dan: Pretty much all the features that are based on understanding the whole project’s codebase – code completion, navigation, search, refactorings, etc.

Charlotte: The main advantage over a text editor is the degree to which PyCharm is able to understand the totality of my codebase, and highlight possible issues or autocomplete likely targets on the basis of that. Other than that, at Caktus Group we do follow PEP8 as a team, and this is made easier by PyCharm’s hinting. I rarely miss a PEP8 violation, since PyCharm will highlight them as I go.

– Do you think PyCharm increases your productivity overall?

Dan: I can’t imagine developing in Python without PyCharm or something like it, and I haven’t felt any need to look for anything else.

Charlotte: PyCharm does wonders for my productivity. There have been instances where I was pair programming with someone who doesn’t use it, and I got frustrated trying to do something manually, so I ended up pulling their branch to my own computer so I could use PyCharm’s tools to help diagnose the issue.

Thank you for the interview, Charlotte and Dan!

If you want to learn more about Dan’s experience using PyCharm, read his complete PyCharm review on the Caktus blog.

For updates, follow Caktus, Charlotte and Dan on Twitter.

About Caktus Group


Caktus is a leading web development firm in the US, building custom web and mobile tools with Django for businesses and social good since 2007. Major projects include the development of Libya’s SMS voter registration system, the first of its kind in the world, and supporting education reform with the University of Chicago’s CCSR survey. Past and current clients include the University of North Carolina, UNICEF, the Specialty Food Association, Mozilla, iN DEMAND, and Discovery Communications.

Since their own success relies on the success of many various open source projects, Caktus Group developers contribute to open source development. Check out their GitHub to learn more about what they’re working on.

Posted in Interview | Leave a comment

PyCharm 2017.3 EAP 4 Out now

The latest and greatest early access program (EAP) version of PyCharm is now available from our website:

Get PyCharm 2017.3 EAP 4

New in this version

Faster setup for SSH interpreters [Pro only]

If you’ve ever configured an SSH interpreter in PyCharm before, you know it takes a while for PyCharm to synchronize its helpers to the remote machine. Furthermore, as PyCharm needs to download libraries from the remote machine altogether you’d be waiting a while until you could start working. We’ve made serious performance improvements in this release, see this video for an impression:

Watch video on Vimeo.

Further Improvements

  • When running a test from the context menu, it will now use the test runner you’ve configured for your project
  • For TypeScript: extract interface, and more refactorings and quick fixes [Pro only]
  • If you work with PostgreSQL date/time columns with timezone, you’ll be happy to learn that we’ve improved the handling of showing timezones. If you set the timezone for your session with SET TIMEZONE='europe/berlin'; this will now work correctly. [Pro only]
  • And more, have a look at the release notes for details

If these features sound interesting to you, try them yourself:

Get PyCharm 2017.3 EAP 4

As a reminder, PyCharm EAP versions:

  • Are free, including PyCharm Professional Edition EAP
  • Will work for 30 days after being built, you’ll need to update when the build expires

If you run into any issues with this version, or another version of PyCharm, please let us know on our YouTrack. If you have other suggestions or remarks, you can reach us on Twitter, or by commenting on the blog.

Posted in Early Access Preview | Tagged | 5 Comments

Webinar Recording: Visual Testing with Kenneth Love

Last week we had a wonderful webinar on visual testing with Kenneth Love, Python teacher and speaker extraordinaire. The recording is now available:

During the webinar, Kenneth covered quite a bit of material:

  • Start with a game in a Python package
  • Use PyCharm to generate the first test
  • Different ways to run and see tests
  • Switch to pytest, then fixtures, then
  • A TDD-style view, code side-by-side with test, and autorun turned on
  • Using the visual debugger during visual testing
  • Also using visual test coverage

This webinar lasted a little over an hour with probably the record number of questions. If we didn’t get to yours, or if you watch the recording and have a question, file a comment on the YouTube page, on this blog post, or reach us on Twitter. You can also nudge Kenneth on Twitter as well.

Note: My (Paul) audio was too loud, spoke too close to mic. Lesson learned for next time.

<em>-PyCharm Team</em>
The Drive to Develop

Posted in Video, Webinar | 1 Comment

PyCharm 2017.3 EAP 3 Out now!

The latest and greatest early access program (EAP) version of PyCharm is now available from our website:

Get PyCharm 2017.3 EAP 3

New in this version

__all__ warnings

Although Python doesn’t have support for private members, there are a couple of ways to indicate to developers that something shouldn’t be used. In addition to prefixing a method with an underscore, you can also explicitly specify public members with __all__. PyCharm can now warn you if you inadvertently use a member that’s excluded. Just be sure to enable the “Access to a protected member of a class or module” inspection in Settings | Editor | Inspections.

__all__ warning

Improved Completion for JOIN statements

Before, we would suggest the table names, now we’ll complete the entire JOIN statement. When you have your foreign keys properly set up, that is:

Improved completion for JOIN statements

Scripts for create-react-app

When creating a new react app, you can pass a scripts option to the utility to add support for additional features to your new application. This is now supported in PyCharm:

Specify Scripts Version for Create-React-App

Further Improvements

  • We fixed an issue where sometimes we couldn’t find the step definition from a Lettuce .feature file
  • When adding a __all__ to your modules and packages, you’ll now have completion for applicable items
  • Improved CSS editing support
  • The PIVOT keyword for Oracle, and the GROUP BY ROLLUP and GROUP BY CUBE constructs for MS SQL Server are now supported
  • And more, have a look at the release notes for details

If these features sound interesting to you, try them yourself:

Get PyCharm 2017.3 EAP 3

As a reminder, PyCharm EAP versions:

  • Are free, including PyCharm Professional Edition EAP
  • Will work for 30 days from being built, you’ll need to update when the build expires

If you run into any issues with this version, or another version of PyCharm, please let us know on our YouTrack. If you have other suggestions or remarks, you can reach us on Twitter, or by commenting on the blog.

Posted in Early Access Preview | Tagged | Leave a comment

Interview: Kenneth Love on testing, Python, and organizing

Python is one of the easiest languages to learn, but that doesn’t mean all the programming concepts become easy. One that’s hard: testing.

Kenneth Love, well-known speaker, organizer, and teacher in Python, has years of experience bringing complicated subjects within reach. He’ll be our guest for a webinar on Visual Testing With PyCharm. He’ll introduce testing concepts and show how PyCharm makes it easier by putting a visual face on testing.

We interviewed Kenneth to help set the scene for the webinar.

It’s a pleasure having you with us for a webinar. My son and I spent summer vacation going through your Python Basics course twice and it was a big help. Do you get that a lot?

Yeah, I’ve had quite a few people thank me for making that course, and others that I’ve made, over the years. It seems to be a course that has really caught people that weren’t able to get going at Python through other means.

Give us a little background on yourself, your Python origin story and what you’re doing now.

I’ve been using Python for 8-10 years now. I picked it up, almost on a whim, after a friend and I both kind of soured on Ruby. I made the mistake of learning Django before I really learned Python. Eventually, though, I figured out that I should know how more than just an ORM and HTTP works and learned the core parts of the language. I’ve been a full-time Python developer or teacher for the past six or seven years.

I just recently changed jobs and left teaching to go back into the world of development. Things are changing all the time and I felt like I needed to get back to development for awhile.

Is testing hard to teach?

I think it’s a tricky area to teach. People are used to writing and running code. But writing code that runs your code and looks at what happens? It’s just a bit too meta for a lot of beginners. It’s also the case that a lot of beginners write code that’s hard to test, through no fault of their own (they’re beginners! I know I wrote messy code when I was first starting) so that can really increase the complexity of learning to test.

Do you have special tricks that seem to work on conceptually hard topics? Debugging, testing, things like that.

Like with most topics, you have to strip away the magic and the special words. We often have a problem in tech of gatekeeping with jargon. We use words that have very specific meanings, like say “fixtures”, and we expect everyone to just know them. When someone is new to testing, the term “fixtures” might not have any meaning at all, or mean something completely unrelated. If you can define these terms for them, make them familiar and comfortable, then they can get onto the business of learning this new technique a lot faster.

You’re also well-known for organizing. Can you give us your origin story on how you got involved?

I honestly just kind of stumbled into it! My friend Lacey Williams Henschel wanted to do a Django Girls workshop here in Portland. The company I worked for had a great space for it, so I volunteered it. She wanted a co-organizer so I volunteered for that, too. We had a great event and went on to do two more of them after that.

I got into organizing DjangoCon US by being a pain in the butt. I was a pretty big critic of the previous incarnation of DjangoCon US, before it became community-ran. So when the community took it over, I kinda got tapped to help out (no one forced me, of course, but I felt like I had to step up). Since then I’ve been involved in the program selection for the past two years and did a lot of speaker encouragement and talk rating before that.

Django Girls is such a wonderful story. Mind giving us some background and status on that?

Honestly, I’m not heavily involved with Django Girls any longer. Lacey and I organized the three events and then we both mostly bowed out. It’s definitely an amazing organization and I’m completely astounded by the numbers they recently posted. I would love to see more DG-like organizations pop up for other languages and frameworks.

Let’s close out with kind of an open-ended question. What’s something you think you’ll study a lot more in the next year?

I’m really interested in this recent upswing of languages that are focused more on speed and safety. I’d really like to spend some time digging into the Rust programming language. Due to work, I’ll likely be learning more about React and Go as well.

Posted in Interview | Leave a comment

PyCharm Edu: Tips & Tricks for Most Efficient Learning, Part II

September feels just right to start learning, or continue with even more effort and joy. And today feels just right for the next post in our series covering learning methods and tips & tricks designed to help you to learn more effectively and make you more excited about learning Python with PyCharm Edu!

Last time we posted about how to make your IDE suit your needs and preferences, and help you stay focused and avoid distraction. Today we’re going to focus more on the process of writing code.

Learn faster with a smart code editor

As you learn to code, it is encouraging to have an intelligent assistant right inside your IDE. Language-specific syntax & error highlighting are there to help you avoid code mistakes. You can use code formatting capabilities to learn how to style your code. And you won’t get stuck with your Python coding with code completion and quick documentation at hand.

Use code completion
Learn with documentation
Explore the code
Fix code errors
Style your code Continue reading

Posted in Education | Tagged | 3 Comments