
The Python Podcast.__init__
Jedi Code Completion with David Halter
Jun 11, 2017 · 42 min · Episode 113 · 41.2 MB
0:00-42:56
Streams straight from the publisher. podnod never proxies or re-hosts episode audio.
Summary
When you’re writing python code and your editor offers some suggestions, where does that suggestion come from? The most likely answer is Jedi! This week David Halter explains the history of how the Jedi auto completion library was created, how it works under the hood, and where he plans on taking it.
Preface
- Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
- I would like to thank everyone who supports us on Patreon. Your contributions help to make the show sustainable.
- When you’re ready to launch your next project you’ll need somewhere to deploy it. Check out Linode at www.podastinit.com/linode?utm_source=rss&utm_medium=rss and get a $20 credit to try out their fast and reliable Linux virtual servers for running your awesome app.
- Visit the site to subscribe to the show, sign up for the newsletter, read the show notes, and get in touch.
- To help other people find the show please leave a review on iTunes, or Google Play Music, tell your friends and co-workers, and share it on social media.
- Your host as usual is Tobias Macey and today I’m interviewing David Halter about Jedi, an awesome autocompletion and static analysis library for Python
Interview
- Introductions
- How did you get introduced to Python?
- Can you explain what Jedi is and what problem you were trying to solve when you created it?
- What is the story behind the name?
- While reading through the documentation I noticed that there is alpha support for linting with Jedi. Can you compare the linting approach and capabilities with those found in other tools such as pylint and flake8?
- What does the internal architecture and design look like?
- From the research that I did for the show it seems that, rather than use the AST to determine the structure of the code being completed you built your own parser and recursive evaluation of the other methods that you use for determining accurate completion?
- What was lacking in existing parsers that led you to build your own?
- What are some of the difficulties that you have encountered building and maintaining the grammar definitions and higher level API for parsing multiple versions of Python, including the 2 vs 3 split?
- What are some of the biggest challenges associated with introspecting user code?
- What are some of the ways that Jedi can be confounded by a user’s project?
- What are some of the most difficult technical hurdles that you have been faced with while building Jedi?
- What are some unusual or unexpected uses of Jedi that you have seen?
- What do you have planned for the future of Jedi?
Keep In Touch
- davidhalter on GitHub
- @jedidjah_ch on Twitter
Picks
Links
- Cloudscale.ch
- Vim
- Youcompleteme
- Neocomplete
- pyflakes
- pycodestyle
- pylint
- Parser Generator
- Parser Error Recovery
- lib2to3
- Python grammar file
- Finite state automata
- Type inference
- yapf
- AST module
- MyPy
- IPython
The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA
Patreon
pythonpodcast.comwww.podastinit.com/linode?utm_source=rss&utm_medium=rss
pythonpodcast.comsite
pythonpodcast.comiTunes
itunes.apple.comGoogle Play Music
play.google.comdavidhalter
github.com@jedidjah_ch
twitter.comPatch utility
linux.die.netBears Den
bearsdenmusic.co.ukSoccer
en.wikipedia.orgSinging
en.wikipedia.orgDancing
en.wikipedia.orgDocOpt
docopt.orgOpenStack
openstack.orgCloudscale.ch
cloudscale.chVim
vim.orgYoucompleteme
valloric.github.ioNeocomplete
github.compyflakes
github.compycodestyle
github.compylint
pylint.orgParser Generator
en.wikipedia.orgParser Error Recovery
tutorialspoint.comlib2to3
github.comPython grammar file
docs.python.orgFinite state automata
en.wikipedia.orgType inference
en.wikipedia.orgyapf
github.comAST module
docs.python.orgMyPy
mypy-lang.orgIPython
ipython.orgThe Freak Fandango Orchestra
freemusicarchive.orgCC BY-SA
creativecommons.org