Python Indent - Correct python indentation in Visual Studio Code.

Overview

Python Indent

Correct python indentation in Visual Studio Code. See the extension on the VSCode Marketplace and its source code on GitHub.

Build Status Installs Stars

Please consider donating via paypal or on GitHub Sponsors if you find this extension useful and have some spare cash!

How it works

Every time you press the Enter key in a python context, this extension will parse your python file up to the location of your cursor, and determine exactly how much the next line (or two in the case of hanging indents) should be indented and how much nearby lines should be un-indented.

There are three main cases when determining the correct indentation, described below.

Between bracket pairs

In cases when you have your cursor between an open bracket (one of [({) and its closing bracket pair (the corresponding one of })]), this extension will keep subsequent lines indented just to the right of where it was opened:

data = {'a': 0,
        | # <- pressing enter should put your cursor at the "|"
| # <- This is where default VS Code puts your cursor.

Even heavily nested brackets are handled:

data = {'a': 0,
        'b': [[1, 2],
              | # <- match the more recently opened [ instead of the {
        | # <- default behavior of VS Code.
data = {'a': 0,
        'b': [[1, 2],
              [3, 4]],
        | # <- since the lists are all closed, go back to the { position
              | # <- default behavior of VS Code.
data = {'a': 0,
        'b': [[1, 2],
              [3, 4]],
        'c': 5}
| # <- go back to indentation level before any brackets were opened
        | # <- default behavior of VS Code.

In the full example below, default VS Code required nine extra key presses (three tab's, two space's, and four backspace's) to match the automatic indentation of this extension.

data = {'a': 0,
        'b': [[1, 2],
              [3, 4]],
        'c': 5}
done(data)

Hanging indents

When you have opened a bracket, but not yet inserted any content, pressing Enter will create a hanging indent, matching the base behavior of VS Code.

result = my_func(
    | # <- your cursor should end up here
) # <- the closing bracket should end up here

You can use the setting useTabOnHangingIndent to make it so that when you are done typing you can simply press Tab to be taken to the closing bracket.

If there is content to the right of your cursor when you press Enter, then this extension falls back on just indenting by your set tab size.

# The "|" is your cursor's location.
result = my_func(|x, y, z)
# and when you press enter...
result = my_func(
    |x, y, z)

If you never want to have the closing bracket end up on its own line (i.e. you always want to just indent by the set tab size), use the keepHangingBracketOnLine configuration setting. Warning: This may cause confusing indentation with function definitions as the argument list and the function code may end up at the same indentation level.

It's not often used, but a backslash to continue a line will also result in the next line being indented.

my_long_calculation = 1234 + \
    5678

Keywords

Some keywords in python imply certain indentation behaviors. For example, if there is a return statement, then we know the next line can be un-indented (or dedented) since no statements can follow a return in the same code block. Other keywords that follow the same pattern are pass, break, continue, and raise

Similarly, if there is an else: on the current line, that the current line needs to be dedented, and the next line needs to be indented relative to the new position of the else:. Other keywords that follow the same pattern are elif : , except : , and finally:. Some examples are shown below.

if True:
    pass
    else:|
# and when you press enter...
if True:
    pass
else:
    |

But if you have manually changed the indentation, then the extension should not change it for you:

if True:
    if True:
        pass
    else:|
# and when you press enter, do NOT dedent!
if True:
    if True:
        pass
    else:
        |

# Or even more nested

if True:
    if True:
        if True:
            pass
    else:|
# and when you press enter, still do NOT dedent
if True:
    if True:
        if True:
            pass
    else:
        |

Extending comments

If (and only if) you press Enter while your cursor is in the middle of a comment, then the next line will automatically be made into a comment.

# As always, the "|" indicates your cursor
def f():
    # This function is |gonna be REAL good!

def f():
    # This function is
    # |gonna be REAL good

Trimming whitespace lines

You can trim whitespace from lines that contain only whitespace by using the trimLinesWithOnlyWhitespace configuration setting (the default is to not trim whitespace in this way). This setting brings the behavior closer to native VSCode behavior.

# In the below code, the character "·" represents a space.
def f():
····|

# The default of false preserves whitespace
def f():
····
····|

# Setting trimLinesWithOnlyWhitespace = true will trim the whitespace.
def f():

····|

Why is it needed?

There are many related issues on GitHub ([1], [2], [3], [4], [5]) asking for improved python indentation in VS Code. It seems like the maintainers of the python extension at microsoft are not prioritizing indentation, since there has been no progress in the years since it was first asked for.

Caveats

Known caveats are listed below.

  • Using tabs (\t) for your indentation will not work.
  • If your python code is not correctly formatted, you may not get correct indentation.
  • The extension works by registering the Enter key as a keyboard shortcut. The conditions when the shortcut is triggered have been heavily restricted, but there may still be times this extension is unexpectedly overriding Enter behavior.
    • Specifically, vim related plugins seem to require special attention. See the when clause in package.json.

If you experience any problems, please submit an issue, or better yet a pull request.

Release Notes

See the change log.

Developing

See the developer docs for pointers on how to develop this extension.

Comments
  • Pressing enter when mid-line in an existing comment should auto comment the rest of the line when it moves down.

    Pressing enter when mid-line in an existing comment should auto comment the rest of the line when it moves down.

    Easier to probably demonstrate:

    Lets say we have the following line (pretend the cursor is the £ symbol): # test test £test test

    when you press enter, it should become:

    # test test 
    # test test
    

    instead, it becomes:

    # test test
    test test
    

    (missing the hash+space)

    enhancement good first issue indentation 
    opened by asdasd-123 9
  • The plug-in is not compatible with vscode-neovim

    The plug-in is not compatible with vscode-neovim

    Hi, I've been trying outvscode-neovim lately and seems it is not fully compatible with python-indent

    The exact issue:

    when pressing o in normal mode, it shall insert a line below the current cursor line. However with python-indent enabled, it enters insert mode and leave the cursor in the same line.

    I'm not entirely sure it is a python-indent issue or from vscode-neovim. But i have to give up python-indent for now as I'm migrating most workflow on vscode nowadays.

    Let me know if additional info is needed on the bug.

    opened by echaya 7
  • Python: Return key does not work after some time

    Python: Return key does not work after some time

    Issue Type: Bug

    In some cases the editor does not react on the return key when editing a Python file (other keys are still working, but you can't add a new line which is quite annoying).

    I can' really tell the circumstances in which this phenomenon occurs.

    After disabling the extension, the problem disappeared.

    Extension version: 1.11.0 VS Code version: Code 1.50.1 (d2e414d9e4239a252d1ab117bd7067f125afd80a, 2020-10-13T15:06:15.712Z) OS version: Windows_NT x64 10.0.18363

    opened by Magolves 7
  • Use with other commands in macros(vs code extension)

    Use with other commands in macros(vs code extension)

    I used to use Shift+Enter to insert a newline after current line, but the newline still has same indent with previous line, even the previous line is a Return Statement. So I want to use this indent etension to solve it. My idea is use macros and config the order like that:

    "macros": {
            "insertLineAfterWithAutoIndent": [
                 "cursorEnd",
                 "pythonIndent.newlineAndIndent",
             ]
    }
    

    and bind this command with keyboard shortcuts Shift+Enter, but the result is not satisfied. It executes "pythonIndent.newlineAndIndent" firstly, and then executes "cursorEnd", I don't know why order is changed and want know whether this idea can be realize.

    enhancement extension compatibility pull requests welcome 
    opened by ghost 7
  • Extension is not activated with highlighted text and pressing ENTER

    Extension is not activated with highlighted text and pressing ENTER

    First off, thank you for putting in the time to create and share this nifty little tool!

    I noticed the following minor inconsistency and I thought I would share it just in case it was important (personally I can live with it) or if the fix is simple (I'm guessing this may only require also registering the ENTER key for the extension when text is highlighted). At the very least, I suggest putting this in the Caveats section.

    Minimal code example:

    What the code looks like before pressing enter:

    my_dict = {'a': 1, |'b': 2}
    # Now highlight the space between the dict entries to bring 'b' to a new line and eliminate the would-be trailing space
    

    What I want the code to look like after pressing enter:

    my_dict = {'a': 1,
               'b': 2}|
    # No trailing space and code is aligned
    

    What the code actually looks like after pressing enter:

    my_dict = {'a': 1,
    'b': 2}|
    # No trailing space but code is not aligned
    

    Often times, we have to go back and change our code and sometimes we run up against linting line limits when we add to a line of code. We then have to choose a place to break the line into two lines. Invariably this logical break occurs at a separation point that involves a space. In order to avoid getting lint-bombed, we delete the space. I prefer to highlight the space and hit ENTER. I'm sure that there are a lot of keyboard-only people that will never encounter this and the alternative of course is to simply delete the space before or after hitting ENTER.

    Environment (please complete the following information):

    • Python Indent version: [e.g. 1.0.0]
    • Visual Studio Code version: [e.g. 1.35.1]
    • OS: Windows 10 1809 64 bit
    indentation 
    opened by WhistleWhileYouWork 7
  • this plugin breaks `:w` in vim plugin

    this plugin breaks `:w` in vim plugin

    I've narrowed it down to this plugin.

    When using this plugin with the vim plugin, it breaks the very important :w operator to save your file. When disabling vsc-python-indent, :w works well. When enabling it, :w fails when editing any .py file. This is the stack trace in dev tools:

    mainThreadExtensionService.ts:60 [[object Object]]Illegal value for `line`
    $onExtensionRuntimeError @ mainThreadExtensionService.ts:60
    _doInvokeHandler @ rpcProtocol.ts:399
    _invokeHandler @ rpcProtocol.ts:384
    _receiveRequest @ rpcProtocol.ts:304
    _receiveOneMessage @ rpcProtocol.ts:226
    _protocol.onMessage.e @ rpcProtocol.ts:101
    fire @ event.ts:584
    a @ ipc.net.ts:392
    e @ ipc.net.ts:399
    fire @ event.ts:584
    _receiveMessage @ ipc.net.ts:678
    _socketDisposables.push._socketReader.onMessage.e @ ipc.net.ts:549
    fire @ event.ts:584
    acceptChunk @ ipc.net.ts:212
    _register._socket.onData.e @ ipc.net.ts:173
    t @ ipc.net.ts:24
    emit @ events.js:182
    addChunk @ _stream_readable.js:279
    readableAddChunk @ _stream_readable.js:264
    Readable.push @ _stream_readable.js:219
    onread @ net.js:636
    mainThreadExtensionService.ts:61 Error: Illegal value for `line`
    	at u._lineAt (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:356)
    	at Object.lineAt (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:355)
    	at TagManager.getWordAtPosition (/home/ryan/.vscode/extensions/formulahendry.auto-rename-tag-0.0.15/out/src/tagManager.js:36)
    	at TagManager.getCurrentWord (/home/ryan/.vscode/extensions/formulahendry.auto-rename-tag-0.0.15/out/src/tagManager.js:29)
    	at run.vscode.window.onDidChangeTextEditorSelection.event (/home/ryan/.vscode/extensions/formulahendry.auto-rename-tag-0.0.15/out/src/tagManager.js:11)
    	at u.fire (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:44)
    	at c.$acceptEditorPropertiesChanged (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:577)
    	at d._doInvokeHandler (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:622)
    	at d._invokeHandler (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:621)
    	at d._receiveRequest (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:620)
    	at d._receiveOneMessage (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:619)
    	at define.constructor._protocol.onMessage.e (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:617)
    	at u.fire (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:44)
    	at e (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:40)
    	at u.fire (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:44)
    	at a (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:172)
    	at e (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:172)
    	at u.fire (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:44)
    	at y._receiveMessage (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:181)
    	at define.constructor._socketDisposables.push._socketReader.onMessage.e (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:178)
    	at u.fire (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:44)
    	at f.acceptChunk (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:175)
    	at define.constructor._register._socket.onData.e (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:174)
    	at Socket.t (/usr/share/code/resources/app/out/vs/workbench/services/extensions/node/extensionHostProcess.js:182)
    	at Socket.emit (events.js:182)
    	at addChunk (_stream_readable.js:279)
    	at readableAddChunk (_stream_readable.js:264)
    	at Socket.Readable.push (_stream_readable.js:219)
    	at Pipe.onread (net.js:636)```
    
    extension compatibility 
    opened by ryanrca 7
  • Extreme lag from pressing Enter to action when extension is running in remote (ssh) host.

    Extreme lag from pressing Enter to action when extension is running in remote (ssh) host.

    Due to network speed or load on the remote host machine sometimes I experience huge delays from when I press the Enter key until I see the cursor move. It can get up to 10 sec sometimes and there is noting more annoying than typing unresponsiveness.

    I guess my question is that does the extension have to run on the remote site or it can achieve the same result running locally? If it can't be run locally, then is it possible to have a timeout of max one second (or maybe adjustable via settings) for remote host to respond and if it doesn't respond it just run normal Enter?

    opened by picrots 6
  • Close parens on indented line

    Close parens on indented line

    Just a matter of taste but I prefer to close parens at the end of the indented line instead of putting them on a new line, i.e.

    variable = function(
        |)
    

    instead of

    
    variable = function(
        |
    )
    

    It seems like it should be fairly easy to add a config setting to specify this (I could have a crack at it myself although I am not familiar with TS). Would this be desirable?

    opened by tclose 6
  • Incorrect indentation of

    Incorrect indentation of "elif", "else", "except", "finally" keywords depending on their indent level before pressing ENTER

    The extension tries to handle if and try blocks by de-denting the current line based on whether the previous line was a control statement or not (pass, return, continue etc...). It assumes that the starting location of the new line is where the extension would have put it (this isn't always the case) and then de-dents in certain scenarios. Having the start of the line in a different location is where we get the issue. Examples that illustrate the extension's intended logic (the two examples produce the intended output correctly):

    1. With pass statement before enter:
    def test():
        if x:
            pass|
    

    After enter:

    def test():
        if x:
            pass
        |
    
    1. With non-control statement before enter:
    def test():
        if x:
            some_code = ''|
    

    After enter:

    def test():
        if x:
            some_code = ''
            |
    

    After typing else::

    def test():
        if x:
            some_code = ''
            else:|
    

    After enter:

    def test():
        if x:
            some_code = ''
        else:
            |
    

    However, a user might come back to an if statement and add an else statement such as this example (before pressing enter):

    def test():
        if x:
            some_code = ''
        else:|
    

    We expect to see this after pressing enter:

    def test():
        if x:
            some_code = ''
        else:
            |
    

    What the code actually looks like after pressing enter:

    def test():
        if x:
            some_code = ''
    else:
    |
    

    The extra de-dent logic won't work properly unless the extension looks back to previous lines to find the location of the corresponding if or try statement to ensure it only de-dents dedentKeywords that need it. Removing lines 27-34 from indent.ts solves the issue but requires the user to manually de-dent before typing else: in the case of the second example. That isn't so bad considering we have to do this anyway without the extension.

    Environment (please complete the following information):

    • Python Indent version: [e.g. 1.0.0]
    • Visual Studio Code version: [e.g. 1.36.0]
    • OS: Windows 10 1809
    indentation 
    opened by WhistleWhileYouWork 6
  • Space after line break

    Space after line break

    Minimal code example:

    What the code looks like before pressing enter:

    result = my_func(first_argument, second_keyword=some_value1,| third_keyword=some_value2)
    

    What I want the code to look like after pressing enter: (no space between cursor and third_keyword)

    result = my_func(first_argument, second_keyword=some_value1,
                    |third_keyword=some_value2)
    

    What the code actually looks like after pressing enter: (but space left between cursor and third_keyword)

    result = my_func(first_argument, second_keyword=some_value1,
                    | third_keyword=some_value2)
    
    indentation 
    opened by doyou89 5
  • Blank lines retain the inserted indentation on Enter

    Blank lines retain the inserted indentation on Enter

    Using the editor without Python Indent installed, the auto-inserted indentation is removed when enter is pressed on a line which is otherwise blank. With Python Indent installed, we end up with trailing whitespace.

    What the code looks like before pressing enter:

    def my_example():
        print('something')
    ····|
    

    What I want the code to look like after pressing enter:

    def my_example():
        print('something')
    
    ····|
    

    What the code actually looks like after pressing enter:

    def my_example():
        print('something')
    ····
    ····|
    

    (· here denotes an actual space)

    indentation 
    opened by thebertster 5
  • Automatic dedent for return doesn't always work

    Automatic dedent for return doesn't always work

    What the code looks like before pressing Enter:

    def foo():
        return|
    

    When I get to the above state by typing in the function from scratch, then pressing Enter produces this:

    def foo():
        return
        |
    

    However, if I subsequently reposition the cursor to just after return and then press Enter, I get the expected

    def foo():
        return
    |
    

    I also get the correct auto-dedent if I am typing from scratch but press Enter here (note the space between return and the cursor):

    def foo():
        return |
    

    The same issue occurs if I'm returning an expression that ends with a variable or any of the constants None, True, or False:

    def foo(x):
        return 3 + x|
    

    After Enter:

    def foo(x):
        return 3 + x
        |
    

    Before Enter (with space after x):

    def foo(x):
        return 3 + x |
    

    After Enter:

    def foo(x):
        return 3 + x
    |
    

    The issue does not occur if the return expression ends with a numeric constant, string constant, or parenthesis:

    def foo(x):
        return x + 3|
    

    After Enter:

    def foo(x):
        return x + 3
    |
    

    Before Enter:

    def foo(x):
        return 3 + (x)|
    

    After Enter:

    def foo(x):
        return 3 + (x)
    |
    

    And to reiterate, the issue also does not occur, no matter what the return expression, if the return line was already previously typed, and I reposition the cursor back to the end of that line, and then press Enter.

    I am also not noticing the issue with other keywords, such as pass, raise, break, or continue, which produce the correct auto-dedent without any extra spaces or cursor repositioning.

    indentation 
    opened by jkyeung 9
  • keepHangingBracketOnLine doesn't seem to be working for square brackets

    keepHangingBracketOnLine doesn't seem to be working for square brackets

    What the code looks like before pressing enter:

    foo = [|]
    

    What I want the code to look like after pressing enter:

    foo = [
        |]
    

    What the code actually looks like after pressing enter:

    foo = [
        |
    ]
    

    This issue is specifically about square brackets. For parens and curly braces, this setting works as expected (thank you for that!).

    I am presuming that this setting is meant to apply to square brackets as well. If that hasn't changed, and no one else has brought it up, then maybe there is something about my other VS Code settings or extensions that is somehow in conflict. I'll be glad to try stuff out and report back, if you have any ideas.

    indentation 
    opened by jkyeung 2
  • Maybe adjust behavior of useTabOnHangingIndent?

    Maybe adjust behavior of useTabOnHangingIndent?

    This is more of a question or comment than a feature request or bug report: What's the rationale for putting the cursor just before the closing bracket rather than just after, upon pressing Tab?

    If I've got

    foo = (|)
    

    and press Enter to get

    foo = (
        |
    )
    

    and then type some elements, like

    foo = (
        'spam',
        'ham',|
    )
    

    I would think that I am trying to get to

    foo = (
        'spam',
        'ham',
    )|
    

    or perhaps even

    foo = (
        'spam',
        'ham',
    )
    |
    

    as simply and easily as possible, but Tab actually gets me to

    foo = (
        'spam',
        'ham',
    |)
    

    which is probably very rarely what I want. And by that time, the closing bracket is no longer considered "automatically inserted" by VS Code, and is thus not subject to the default typeover. (Setting "editor.autoClosingOvertype": "always" could help, but some people can't stomach that option.)

    I've been playing around with this a little bit, because it's close to allowing me to feel OK about letting VS Code autoclose brackets for me, but not quite there. And clearly most people don't seem to have any problem with the current VS Code behavior, with or without useTabOnHangingIndent.

    opened by jkyeung 1
  • Continuing strs when broken across lines

    Continuing strs when broken across lines

    Love the extension. Thanks for the work.

    It would be great if str literals could be continued when broken across lines.

    I had a line of code Like this:

    my_str = f"{steps: >5d}    3    1    3    0{nodes: >5d}{elements: >5d}{boundaries: >5d}{materials: >5d}{optional(interfaces, ' >5d'):s}    1"
    

    ...and (with the help of Python Indent) reformatted it like this:

    my_str = (f"{steps: >5d}    3    1    3    0"
              f"{nodes: >5d}{elements: >5d}"
              f"{boundaries: >5d}{materials: >5d}"
              f"{optional(interfaces, ' >5d'):s}    1")
    

    A cool feature would be to have the quotation marks (with preceding f) automatically inserted.

    enhancement 
    opened by Ricyteach 9
  • Add 4 spaces (an extra level of indentation) to distinguish arguments from the rest.

    Add 4 spaces (an extra level of indentation) to distinguish arguments from the rest.

    See PEP8 Indentation for example.

    Minimal code example:

    What I want the code to look like after pressing enter:

    # Add 4 spaces (an extra level of indentation) to distinguish arguments from the rest.
    def long_function_name(
            var_one, var_two, var_three,
            var_four):
        print(var_one)
    

    What the code actually looks like after pressing enter:

    def long_function_name(
        var_one, var_two, var_three,
        var_four):
        print(var_one)
    
    indentation 
    opened by parkershamblin 2
Releases(v1.18.0)
Mu - A Simple Python Code Editor

A small, simple editor for beginner Python programmers. Written in Python and Qt5.

Mu 1.2k Jan 3, 2023
A Python code editor that looks like GNU Emacs.

?? WARNING ?? : Under development... Testing is not recommended! Welcome to Snake Editor! Hi! This is our repository, we are here to present our new p

Marcio Dantas 5 May 20, 2022
Run context-aware commands from your source code comments

Run context-aware commands from your source code comments. Codeline allows you to run custom commands directly from source-code comments, combining th

Rory Byrne 32 Nov 9, 2021
Automatically detect obfuscated code and other state machines

Scripts to automatically detect obfuscated code and state machines in binaries.

Aaron 110 Dec 4, 2022
💻 Open recent VS Code folders and files using Ulauncher

ulauncher-vscode-recent ?? Open recent VS Code folders and files using Ulauncher. Quickly open recently-opened VS Code project directories and files.

Mihir Chaturvedi 14 Nov 24, 2022
Launch a ready-to-code Wagtail Live development environment with a single click.

Wagtail Live Gitpod Launch a ready-to-code Wagtail Live development environment with a single click. Steps: Click the Open in Gitpod button. Relax: a

Coen van der Kamp 6 Oct 29, 2021
VSCode extension to sort and refactor python imports using reorder-python-imports.

reorder-python-imports VSCode extension to sort and refactor python imports using reorder-python-imports. Unlike other import organizers, reorder-pyth

Ryan Butler 3 Aug 26, 2022
Spyder - The Scientific Python Development Environment

Spyder is a powerful scientific environment written in Python, for Python, and designed by and for scientists, engineers and data analysts. It offers a unique combination of the advanced editing, analysis, debugging, and profiling functionality of a comprehensive development tool with the data exploration, interactive execution, deep inspection, and beautiful visualization capabilities of a scientific package.

Spyder IDE 7.3k Jan 8, 2023
Gaphor is a UML and SysML modeling application written in Python.

Gaphor is a UML and SysML modeling application written in Python. It is designed to be easy to use, while still being powerful. Gaphor implements a fully-compliant UML 2 data model, so it is much more than a picture drawing tool. You can use Gaphor to quickly visualize different aspects of a system as well as create complete, highly complex models.

Gaphor 1.3k Jan 7, 2023
notebookJS: seamless JavaScript integration in Python Notebooks

notebookJS enables the execution of custom JavaScript code in Python Notebooks (Jupyter Notebook and Google Colab). This Python library can be useful for implementing and reusing interactive Data Visualizations in the Notebook environment.

jorgehpo 146 Dec 7, 2022
A GitHub Action hosted Python IDE!

What is this ? This is an IDE running on GitHub Actions which can help in..... Running small snippets. Running codes whenever PC is not available and

Jainam Oswal 21 Nov 9, 2022
Python 3 patcher for Sublime Text v4107-4114 Windows x64

sublime-text-4-patcher Python 3 patcher for Sublime Text v4107-4114 Windows x64 Credits for signatures and patching logic goes to https://github.com/l

null 187 Dec 27, 2022
Python IDE or notebook to generate a basic Kepler.gl data visualization

geospatial-data-analysis [readme] Use this code in your Python IDE or notebook to generate a basic Kepler.gl data visualization, without pre-configura

null 2 Sep 5, 2022
cottonformation is a Python tool providing best development experience and highest productivity

Welcome to cottonformation Documentation Full Documentatioin Here cottonformation is a Python tool providing best development experience and highest p

Sanhe 6 Jul 8, 2022
Live coding in Python with PyCharm, Emacs, Sublime Text, or even a browser

Live Coding in Python Visualize your Python code while you type it in PyCharm, Emacs, Sublime Text, or even your browser. To see how to use one of the

Don Kirkby 256 Dec 14, 2022
An amazing simple Python IDE for developers!

PyHub An amazing simple Python IDE for developers! Get ready to compile and run your code in the most simplest and easiest IDE of the ancient world! T

Aniket Bhattacharjee 2 Dec 31, 2022
Open a file in your locally running Visual Studio Code instance from arbitrary terminal connections.

code-connect Open a file in your locally running Visual Studio Code instance from arbitrary terminal connections. Motivation VS Code supports opening

Christian Volkmann 56 Nov 19, 2022
Python Tools for Visual Studio

Python tools for Visual Studio Python support for Visual Studio is developed and managed here. Visit our product overview and downloads page, read our

Microsoft 2.4k Dec 30, 2022
A discord bot to check if messages have the correct code formatting.

discord-code-formatter A discord bot to check if messages have the correct code formatting. This was a basic project to help me learn Python and learn

Nash Boisvert 1 Nov 23, 2021