spacemacs/contrib/!lang/python
Christoph Paulik ff8cd06046 Fix various issues with org markup
- lists were not correctly indented sometimes
- **note** and such things do not exist in org
- Note and Important
- Change Feature list to heading
- Change TODOS to actual org TODOS
- Add TOC to python layer
- list indentation
- some typos I could not leave unchanged
- TODO formatting
- List indentation
- typos
- wrong markup

fix conversion issues
2015-06-11 21:31:42 -04:00
..
extensions Prefix categories with ! 2015-05-25 00:50:38 -04:00
img Prefix categories with ! 2015-05-25 00:50:38 -04:00
config.el python layer: new variable python-test-runner, can be nose or pytest 2015-06-07 23:59:23 -04:00
extensions.el python layer: new variable python-test-runner, can be nose or pytest 2015-06-07 23:59:23 -04:00
funcs.el Prefix categories with ! 2015-05-25 00:50:38 -04:00
packages.el python layer: new variable python-test-runner, can be nose or pytest 2015-06-07 23:59:23 -04:00
README.org Fix various issues with org markup 2015-06-11 21:31:42 -04:00

Python contribution layer for Spacemacs

/TakeV/spacemacs/media/commit/ff8cd060466a2d6b19fb4677473b3db4f38d75dc/contrib/!lang/python/img/python.png /TakeV/spacemacs/media/commit/ff8cd060466a2d6b19fb4677473b3db4f38d75dc/contrib/!lang/python/img/django.png

Description

This layer adds support for the Python language.

Features:

Install

Layer

To use this contribution add it to your ~/.spacemacs

  (setq-default dotspacemacs-configuration-layers '(python))

Test runner

Both nose and pytest are supported. By default nose is used. To choose your test runner set the layer variable python-test-runner to either nose or pytest.

The root of the project is detected with a .git directory or a setup.cfg file.

(setq-default dotspacemacs-configuration-layers
  '((python :variables python-test-runner 'pytest)))

Anaconda dependencies

anaconda-mode tries to install the dependencies itself but sometimes it does not work and you may encounter the following message when opening a python buffer:

    Blocking call to accept-process-output with quit inhibited!!

To fix this, install the anaconda-mode anaconda-deps by hand:

    pip install  jedi==0.8.1 json-rpc==1.8.1 service_factory==0.1.2

Source: https://github.com/proofit404/anaconda-mode#issues

Automatic buffer formatting on save

To enable automatic buffer formatting on save with YAPF set the variable python-enable-yapf-format-on-save to t.

  (setq-default dotspacemacs-configuration-layers '(
    (python :variables python-enable-yapf-format-on-save t)))

autoflake

To be able to suppress unused imports easily, install autoflake:

  pip install autoflake

Key Bindings

Inferior REPL process

Start a Python or iPython inferior REPL process with SPC m s i. If ipython is available in system executable search paths, ipython will be used to launch python shell; otherwise, default python interpreter will be used. You may change your system executable search path by activating a virtual environment.

Send code to inferior process commands:

Key Binding Description
SPC m s b send buffer and keep code buffer focused
SPC m s B send buffer and switch to REPL in insert mode
SPC m s f send function and keep code buffer focused
SPC m s F send function and switch to REPL in insert mode
SPC m s i start inferior REPL process
SPC m s r send region and keep code buffer focused
SPC m s R send region and switch to REPL in insert mode
CTRL+j next item in REPL history
CTRL+k previous item in REPL history

Running Python Script in shell

To run a Python script like you would in the shell press SPC m c c to start the Python script in comint mode. This is useful when working with multiple Python files since the REPL does not reload changes made in other modules.

Key Binding Description
SPC m c c Execute current file in a comint shell
SPC m c C Execute current file in a comint shell and switch to it in insert state

Note: With the universal argument SPC u you can enter a new compilation command.

Testing

Test commands (start with m t or m T):

No Debug Description
SPC m t a launch all tests of the project
SPC m t b launch all tests of the current buffer (same as module)
SPC m t m launch all tests of the current module
SPC m t s launch all tests of the current suite (only with nose)
SPC m t t launch the current test (function)
Debug Description
SPC m T a launch all tests of the project in debug mode
SPC m T b launch all tests of the current buffer (module) in debug mode
SPC m T m launch all tests of the current module in debug mode
SPC m T s launch all tests of the current suite in debug mode (only with nose)
SPC m T t launch the current test (function) in debug mode

Refactoring

Key Binding Description
SPC m r i remove unused imports with autoflake

Other Python commands

Key Binding Description
SPC m = Reformat the buffer according to PEP8 using YAPF
SPC m d b toggle a breakpoint
SPC m g g go to definition using anaconda-mode-goto (C-o to jump back)
SPC m h d look for documentation using helm-pydoc
SPC m h h quick documentation using anaconda
SPC m h H open documentation in firefox using [pylookup][pylookup]
SPC m v activate a virtual environment with pyenv
SPC m V activate a virtual environment with pyvenv

Django

Django related key bindings uses pony-mode and are behind the prefix

SPC m j.

Configuration options for pony-mode are documented at deadpansincerity.com

Manage Django with SPC m j m.

Fabric

Key Binding Description
mjaf Run a fabric command
mjad Deploy project with fab deploy

Files

Key Binding Description
mjfs Open the settings.py for this project
mjfc Interactively display a setting value in the minibuffer
mjft Jump to template at point
mjfr Jump to the view file that the URL resolves to (experimental)

Interactive

Key Binding Description
mjid Run interpreter for this project's default database as an inferior process
mjis Open a Python shell with the current pony project's context loaded. If the project has the django_extras package installed, then use the excellent shell_plus command. Otherwise, fall back to manage.py shell

Server

Key Binding Description
mjrd Stop the dev server
mjro Open a tab at the dev server
mjrr Restart the dev server (works better with django_extras/werkzeug)
mjru Start or open the dev server
mjrt Open a second server with a "throwaway" host/port

South/Syncdb

Key Binding Description
mjsc Convert an existing app to south
mjsh Create migration for modification
mjsi Run the initial south migration for an app
mjsm Migrate an app
mjss Run syncdb on the current project

Test

Key Binding Description
mjtd Move down the traceback one level
mjte Go to the file and line of the last stack trace in a test buffer
mjto Open the file in a traceback at the line specified
mjtt Run the test(s) given by command
mjtu Move up the traceback one level