Skip to main content

PyPI - Python Version PyPI Status Join Slack Twitter

Python Autocomplete

The full length Python autocompletion Video and a Twitter thread describing how it works

This is a learning/demo project to show how deep learning can be used to auto complete Python code. You can experiment with LSTM and Transformer models. We also have built a simple VSCode extension to try out the trained models.

Training model: Open In Colab

Evaluating trained model: Open In Colab

It gives quite decent results by saving above 30% key strokes in most files, and close to 50% in some. We calculated key strokes saved by making a single (best) prediction and selecting it with a single key.

The dataset we use is the python code found in repos linked in Awesome-pytorch-list. We download all the repositories as zip files, extract them, remove non python files and split them randomly to build training and validation datasets.

We train a character level model without any tokenization of the source code, since it's the simplest.

Try it yourself

  1. Clone this repo
  2. Install requirements from requirements.txt
  3. Run python_autocomplete/create_dataset.py.
    • It collects repos mentioned in PyTorch awesome list
    • Downloads the zip files of the repos
    • Extract the zips
    • Remove non python files
    • Collect all python code to data/train.py and, data/eval.py
  4. Run python_autocomplete/train.py to train the model. Try changing hyper-parameters like model dimensions and number of layers.
  5. Run evaluate.py to evaluate the model.

You can also run the training notebook on Google Colab.

Open In Colab

VSCode extension

  1. Clone this repo

  2. Install requirements from requirements.txt

  3. Install npm packages

You need to have Node.JS installed

cd vscode_extension
npm install # This will install the NPM packages
  1. Start the server python_autocomplete/serve.py

  2. Open the extension project (folder) in VSCode

cd vscode_extension
code . # This will open vscode_extension in VSCode

If you don't have VSCode command line launcher start VSCode and open the project with File > Open

  1. Run the extension from VSCode
Run > Start Debugging

This will open another VSCode editor window, with the extension

  1. Create or open a python file and start editing!

Sample

Here's a sample evaluation of a trained transformer model.

Colors:

  • yellow: the token predicted is wrong and the user needs to type that character.
  • blue: the token predicted is correct and the user selects it with a special key press, such as TAB or ENTER.
  • green: autocompleted characters based on the prediction

Metadata

Release files for labml-python-autocomplete 0.0.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for labml-python-autocomplete 0.0.8
File Size Uploaded
labml_python_autocomplete-0.0.8.tar.gz 17.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for labml-python-autocomplete 0.0.8
File Interpreter ABI Platform
labml_python_autocomplete-0.0.8-py3-none-any.whl Python 3 none any Details

Total release size: 45.6 kB

Release files / labml_python_autocomplete-0.0.8.tar.gz

Download URL labml_python_autocomplete-0.0.8.tar.gz
Size 17.8 kB
Tags Source
SHA-256 checksum
How to use checksums
d65f2b714d8b869a1ef0debe9f4996e307315ccb186b491b9795f32962f9eb70
BLAKE2b-256 checksum
How to use checksums
cd0bd19a9cc30d5f5648d02b29b6974136959b77994653753756fbaf03ef708e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.25.1 setuptools/51.1.1 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.5

Release files / labml_python_autocomplete-0.0.8-py3-none-any.whl

Download URL labml_python_autocomplete-0.0.8-py3-none-any.whl
Size 27.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6df9949bd44b6bcb0fcf10f6e17aca4d766b545a0c577334cc69460148ebf099
BLAKE2b-256 checksum
How to use checksums
bf1fe730dfb9e9072a9d3f6156738b75fe43bafeff1f56fae3ec737bb2152e9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.25.1 setuptools/51.1.1 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.5

Release history Release notifications | RSS feed

This release

0.0.8 This release

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page