A JupyterLab extension for version control using Git

Overview

jupyterlab-git

Binder Github Actions Status Version Version Downloads Version Downloads All Contributors

A JupyterLab extension for version control using Git

ui_glow_up

To see the extension in action, open the example notebook included in the Binder demo.

Requirements

  • JupyterLab >= 3.0 (older version available for 2.x)
  • Git (version >=2.x)

Usage

Install

To install perform the following steps, with pip:

pip install --upgrade jupyterlab jupyterlab-git

or with conda:

conda install -c conda-forge jupyterlab jupyterlab-git

For JupyterLab < 3, you will need to run the following command after installing the package:

jupyter lab build

Uninstall

pip uninstall jupyterlab-git

or with conda:

conda remove jupyterlab-git

For JupyterLab < 3, you will also need to run the following command after removing the Python package:

jupyter labextension uninstall @jupyterlab/git

Settings

Authentication to remote repository hosts

This extensions does not handle credentials or authentication details. In order to connect to a remote host, it is recommended to use SSH.

If you are seeing errors similar to [E yyyy-mm-dd hh:mm:ss ServerApp] 500 POST /git/ on the console which is running the JupyterLab server, you probably need to set up a credentials store for your local Git repository. One of the possibility is to use SSH.

Here are the steps to follow (skip any that is already accomplished for your project):

  1. Create a SSH key
  2. Register the public part of it to your Git server:
  3. Optionally, if you have more than one key managed by your ssh agent: Create a config file for the ssh-agent
  4. Tell your local Git repository to connect to remote via ssh

You should now be able to pull and push committed changes to and from your remote repository using the respective buttons on the top of the extension's panel.

UI Settings

Once installed, extension behavior can be modified via the following settings which can be set in JupyterLab's advanced settings editor:

  • blockWhileCommandExecutes: suspend JupyterLab user interaction until Git commands (e.g., commit, pull, reset, revert) finish executing. Setting this to true helps mitigate potential race conditions leading to data loss, conflicts, and a broken Git history. Unless running a slow network, UI suspension should not interfere with standard workflows. Setting this to false allows for actions to trigger multiple concurrent Git actions.
  • cancelPullMergeConflict: cancel pulling changes from a remote repository if there exists a merge conflict. If set to true, when fetching and integrating changes from a remote repository, a conflicting merge is canceled and the working tree left untouched.
  • commitAndPush: Whether to trigger or not a push for each commit; default is false.
  • disableBranchWithChanges: disable all branch operations, such as creating a new branch or switching to a different branch, when there are changed/staged files. When set to true, this setting guards against overwriting and/or losing uncommitted changes.
  • displayStatus: display Git extension status updates in the JupyterLab status bar. If true, the extension displays status updates in the JupyterLab status bar, such as when pulling and pushing changes, switching branches, and polling for changes. Depending on the level of extension activity, some users may find the status updates distracting. In which case, setting this to false should reduce visual noise.
  • doubleClickDiff: double click a file in the Git extension panel to open a diff of the file instead of opening the file for editing.
  • historyCount: number of commits shown in the history log, beginning with the most recent. Displaying a larger number of commits can lead to performance degradation, so use caution when modifying this setting.
  • refreshIfHidden: whether to refresh even if the Git tab is hidden; default to false (i.e. refresh is turned off if the Git tab is hidden).
  • refreshInterval: number of milliseconds between polling the file system for changes. In order to ensure that the UI correctly displays the current repository status, the extension must poll the file system for changes. Longer polling times increase the likelihood that the UI does not reflect the current status; however, longer polling times also incur less performance overhead.
  • simpleStaging: enable a simplified concept of staging. When this setting is true, all files with changes are automatically staged. When we develop in JupyterLab, we often only care about what files have changed (in the broadest sense) and don't need to distinguish between "tracked" and "untracked" files. Accordingly, this setting allows us to simplify the visual presentation of changes, which is especially useful for those less acquainted with Git.

Server Settings

  • Post git init actions: It is possible to provide a list of commands to be executed in a folder after it is initialized as Git repository.

In ~/.jupyter/jupyter_notebook_config.py:

c.JupyterLabGit.actions = {"post_init": ["touch dummy_init.dat"]}

Or equivalently in jupyter_notebook_config.json:

{
  "JupyterLabGit": {
    "actions": {
      "post_init": ["touch dummy_init.dat"]
    }
  }
}

Troubleshoot

Before consulting the following list, be sure the jupyterlab_git server extension and the @jupyterlab/git frontend extension have the same version by executing the following commands:

jupyter server extension list
jupyter labextension list

If they do not match or one is missing, please reinstall the package.

  • Issue: the Git panel does not recognize that you are in a Git repository.

    Possible fixes:

    • Be sure to be in a Git repository in the filebrowser tab

    • Check the server log. If you see a warning with a 404 code similar to: [W 00:27:41.800 LabApp] 404 GET /git/settings?version=0.20.0

      Explicitly enable the server extension by running:

      jupyter server extension enable --py jupyterlab_git
    • If you are using JupyterHub or some other technologies requiring an initialization script which includes the jupyterlab-git extension, be sure to install both the frontend and the server extension before launching JupyterLab.

  • Issue: the Git panel is not visible.

    Possible fixes:

    • Check that the JupyterLab extension is installed:

      jupyter labextension list

      If you don't see @jupyterlab/git v... enabled OK in the list, explicitly install the jupyter labextension by running:

      jupyter labextension install @jupyterlab/git

      If you see @jupyterlab/git under Uninstalled core extensions: , your installation may have been corrupted. You can run jupyter lab clean --all and reinstall all your extensions.

Contributing

If you would like to contribute to the project, please read our contributor documentation.

JupyterLab follows the official Jupyter Code of Conduct.

Development install

Note: You will need NodeJS to build the extension package.

The jlpm command is JupyterLab's pinned version of yarn that is installed with JupyterLab. You may use yarn or npm in lieu of jlpm below.

# Clone the repo to your local environment
git clone https://github.com/jupyterlab/jupyterlab-git.git
# Change directory to the jupyterlab-git directory
cd jupyterlab-git
# Install package in development mode
pip install -e .[dev]
pre-commit install
# Link your development version of the extension with JupyterLab
jupyter labextension develop . --overwrite
# Rebuild extension Typescript source after making changes
jlpm run build

You can watch the source directory and run JupyterLab at the same time in different terminals to watch for changes in the extension's source and automatically rebuild the extension.

# Watch the source directory in one terminal, automatically rebuilding when needed
jlpm run watch
# Run JupyterLab in another terminal
jupyter lab

With the watch command running, every saved change will immediately be built locally and available in your running JupyterLab. Refresh JupyterLab to load the change in your browser (you may need to wait several seconds for the extension to be rebuilt).

By default, the jlpm run build command generates the source maps for this extension to make it easier to debug using the browser dev tools. To also generate source maps for the JupyterLab core extensions, you can run the following command:

jupyter lab build --minimize=False

To execute the tests

pytest jupyterlab_git
jlpm run test

Contributors ✨

The Jupyter Git extension is part of Project Jupyter and is developed by an open community of contributors. To see who has been active recently, please look at the "Contributors" tab. Below we list the people and entities who contributed in different ways to the project (emoji key):


Amazon Web Services

🀝

Ashutosh Bondre

πŸ’» πŸ‘€

Athan

πŸ’» πŸ‘€ πŸ“† 🎨

Brian E. Granger

πŸ“† 🎨 πŸ€” πŸ”

FrΓ©dΓ©ric Collonval

🚧

Hana Zarea

πŸ’» πŸ‘€

Ian Hunt-Isaak

πŸ’» πŸ‘€

Jaipreet Singh

πŸ“† πŸ‘€ πŸ’» 🎨

Ji Zhang

πŸ’» πŸ‘€

Konstantin Taletskiy

πŸ’» πŸ‘€

Max Klein

πŸ’» πŸ‘€ πŸ“† 🎨 πŸš‡

Neelam Gehlot

πŸ’» πŸ‘€

Noah Stapp

πŸ’» πŸ‘€

Saul Shanabrook

πŸ’» πŸ“† πŸ‘€ πŸš‡

Sina Khalili

πŸ’»

Navinn Ravindaran

πŸ’»

MichaΕ‚ Krassowski

πŸ’» πŸ‘€ πŸ›

The D. E. Shaw Group

🀝

jupytercalpoly

🀝

Major League Hacking Fellowship

🀝

This project follows the all-contributors specification. Contributions of any kind are welcomed!

To add yourself, or someone else, to this list you can either use the bot (@all-contributors please add for ) or the CLI (jlpm all-contributors add ).

If you manually edit the .all-contributorsrc config file, run yarn run contributors:generate.

Comments
  • Always complains

    Always complains "You aren’t in a git repository" after launching juputerlab from jupyterhub

    My notebook_url is set to /home/admin, and when admin logged in, it is automatically navigated to /home/admin as default. I've tried to create a new gitlab repo and apply /home/admin to this git repo after commands like (git init; git add .; git commit -m '...'; git push origin master). After all these done, the directory looks as below:

    [[email protected] admin]# pwd
    /home/admin
    [[email protected] admin]# ll -a
    total 40
    drwxrwx---  8 admin admin 4096 Aug 16 18:56 .
    drwxr-xr-x 14 root  root  4096 Aug 16 18:33 ..
    -rw-------  1 admin admin   56 Aug 16 19:10 .bash_history
    drwx------  3 admin admin 4096 Aug 16 18:55 .config
    drwxr-xr-x  7 admin admin 4096 Aug 16 19:16 .git
    

    I launched jupyterhub from path '/' via command jupyterhub --port 8080 and the git extension always complains "You aren’t in a git repository" even though the git repo exists there. Any ideas? Thanks.

    question 
    opened by jason4zhu 42
  • Git extension causing issues for Jupyterlab 3.x

    Git extension causing issues for Jupyterlab 3.x

    Description

    I am seeing this issue mentioned here while using git extension jupyterlab-git version=0.31.0a0 jupyterlab version=3.0.16

    https://github.com/jupyterlab/jupyterlab/issues/10435 Raising this issue as per this suggestion: https://github.com/jupyterlab/jupyterlab/pull/10505#issuecomment-873350982

    Reproduce

    Using git diff is breaking JupyterLab functionality

    1. Open .ipynb image

    2. Do a git diff on a .py file image

    3. this causes .py file is empty image

    4. .ipynb file has empty cells image

    Expected behavior

    JupyterLab works well till I do git diff. If I restart the server via hub control, it works till I do git diff

    Context

    • Python package version: 3.6.12
    • Extension version: 0.31.0a0
    • Git version:2.27.0
    • Operating System and its version: NAME="Red Hat Enterprise Linux Server" VERSION="7.6 (Maipo)" ID="rhel"
    Command Line Output
    Paste the output from your command line running `jupyter lab` here, use `--debug` if possible.
    
    Web Browser Output
    Paste the output from your browser web console here.
    
    bug 
    opened by paravatha 32
  • Git ignore UI

    Git ignore UI

    Fixes https://github.com/jupyterlab/jupyterlab-git/issues/683

    ezgif-4-6ad422d60c0f

    This add a context Ignore menu for untracked files. When the user clicks on Ignore, the server is requested to append a line in the .gitignore file (will create it if it does not exist) and then the .gitignore file is opened and shown to the user.

    opened by echarles 29
  • Update for jupyterlab 3

    Update for jupyterlab 3

    edit - Install jupyterlab-git beta: Jupyterlab-git has a beta release which you can install with:

    pip install --upgrade --pre jupyterlab-git
    

    Description

    Jupyterlab version 3 is nearly upon us (rc this week I think?). The update to jlab3 may be as simple as running: python -m jupyterlab.upgrade_extension . but what should be done w.r.t branches on this repo? Should master track jlab 3 and then create a 0.2x.y branch for bugfixes for jlab2?

    tag:Build System maintenance 
    opened by ianhi 24
  • Fix race condition issues on slower FS

    Fix race condition issues on slower FS

    This adds locking before executing commands. While this may add locking in some cases that are not a race (i.e. things that do not need to acquire index.lock), this solves issues related to using this with a git directory on NFS.

    opened by mlucool 24
  • Installation instructions have you installing mismatched versions

    Installation instructions have you installing mismatched versions

    Description

    pip install --upgrade jupyterlab jupyterlab-git installs backend version 0.23.3

    jupyter labextension install @jupyterlab/git installs frontend version 0.30.0b1

    When you install the two extensions this way and then open JupyterLab you get a message telling you that the two versions are not the same and to run pip install --upgrade jupyterlab-git to fix it:

    Screen Shot 2021-01-24 at 8 49 22 PM

    But the pip install --upgrade jupyterlab-git command also installs the 0.23.3 version. So this isn't a viable solution. The only way for me to get matching versions was to run pip install jupyterlab-git==0.30.0b1 (and I'm assuming we regular users don't want to be running beta versions, right? I couldn't figure out how to install the 0.23.3 frontend version, so I'm stuck using both beta versions for now).

    Reproduce

    After running pip install --upgrade jupyterlab jupyterlab-git you can then run pip list to check the version of the backend version (and in this case see that it is version 0.23.3).

    After running jupyter labextension install @jupyterlab/git you can then run jupyter labextension list to check the frontend version (and in this case see that it is version 0.30.0b1).

    Expected behavior

    When I ran those initial commands to install the extensions I expected both versions to match and to not have to troubleshoot why my versions weren't matching.

    Context

    Not sure additional context is needed, but happy to provide if so!

    bug 
    opened by kgrady 22
  • Git Panel not detecting repo

    Git Panel not detecting repo

    Screen Shot 2019-07-16 at 8 24 00 AM

    I tried the --system flag as in #202 but it did not work. Neither did adding/omitting --sys-prefix (It worked before, but then I upgraded to JLab 1.0), through DockerSpawner via JupyterHub. I waited to upgrade until I saw commits here referencing the compatibility, but the setup instructions as listed didn't work for me. The icon in the file browser that allows you to clone does gray out when I enter a repo, so the extension does seem to have some awareness of its PATH, but the Panel appears to not reflect this.

    If I refresh the page, I can sometimes get the Git Panel to reflect the correct directory but it still shows the "Go Find a Repo" button.

    opened by mpilosov 22
  • Path issue for diffs on Windows

    Path issue for diffs on Windows

    I searched for other issues like this, but couldn't find any.

    Description

    I'm not able to get the diff tool to work on Windows. When trying to view a diff, the DiffWidget component displays an error. I believe this is related to paths being improperly passed to the backend for diffs when using windows paths.

    I believe the function call here is causing the issue: https://github.com/jupyterlab/jupyterlab-git/blob/master/src/components/diff/DiffWidget.tsx#L38 but I'm new here, so take that with a grain of salt πŸ€·β€β™‚

    Reproduce

    1. Go to a repo that has changes in it
    2. Click on the diff icon for a file that has been changed to view the diff
    3. See error Failed to fetch diff with error:JSON.parse: unexpected character at line 1 column 1 of the JSON data

    Expected behavior

    I would expect to be able to view this diff on the windows platform.

    Upon further inspection, I can see the following parameters passed in a Post to my lab server:

    {
      "file_path":"../C:/path_to_a notebook.ipynb",
      "ref_local":{"git":"HEAD"},
      "ref_remote":{"special":"WORKING"}
    }
    

    making the request without ../ in file_path appears to fix the issue.

    I'm familiar with react but I'm not sure where in this project this is getting messed up, and I"m not set up to easily develop on this(although I'm totally willing to figure it out if someone can point me to some links to get up and running)

    Context

    • Python package version:
    conda list jupyterlab-git
    # packages in environment at C:\Users\username\AppData\Local\Continuum\miniconda3:
    #
    # Name                    Version                   Build  Channel
    jupyterlab-git            0.8.2                      py_0    conda-forge
    
    • Extension version:
    jupyter labextension list
    JupyterLab v1.1.4
    Known labextensions:
       app dir: C:\Users\username\AppData\Local\Continuum\miniconda3\share\jupyter\lab
            @jupyter-voila/jupyterlab-preview v0.1.3 enabled  ok
            @jupyter-widgets/jupyterlab-manager v1.0.3 enabled  ok
            @jupyterlab/celltags v0.2.0 enabled  ok
            @jupyterlab/git v0.8.2 enabled  ok
            @jupyterlab/toc v1.0.1 enabled  ok
            nbdime-jupyterlab v1.0.0 enabled  ok
    
    Command Line Output
    Here's the error:
    [E 17:03:01.489 LabApp] C:\
        Traceback (most recent call last):
          File "C:\Users\username\AppData\Local\Continuum\miniconda3\lib\site-packages\nbdime\webapp\nb_server_extension.py", line 97, in get_git_notebooks
            git_root = find_repo_root(file_path)
          File "C:\Users\username\AppData\Local\Continuum\miniconda3\lib\site-packages\nbdime\gitfiles.py", line 52, in find_repo_root
            repo = get_repo(path)[0]
          File "C:\Users\username\AppData\Local\Continuum\miniconda3\lib\site-packages\nbdime\gitfiles.py", line 41, in get_repo
            repo = Repo(path)
          File "C:\Users\username\AppData\Local\Continuum\miniconda3\lib\site-packages\git\repo\base.py", line 184, in __init__
            raise InvalidGitRepositoryError(epath)
        git.exc.InvalidGitRepositoryError: C:\
    [W 17:03:01.498 LabApp] 422 POST /nbdime/api/gitdiff?1575410581479 (::1): Invalid notebook: C:\Users\username\Code\AOE\Users\username\Code\AOE\EDE\notebooks\examples\voila.ipynb
    [W 17:03:01.502 LabApp] 422 POST /nbdime/api/gitdiff?1575410581479 (::1) 15.94ms referer=http://localhost:8888/lab
    [E 17:03:18.133 LabApp] C:\
        Traceback (most recent call last):
          File "C:\Users\username\AppData\Local\Continuum\miniconda3\lib\site-packages\nbdime\webapp\nb_server_extension.py", line 97, in get_git_notebooks
            git_root = find_repo_root(file_path)
          File "C:\Users\username\AppData\Local\Continuum\miniconda3\lib\site-packages\nbdime\gitfiles.py", line 52, in find_repo_root
            repo = get_repo(path)[0]
          File "C:\Users\username\AppData\Local\Continuum\miniconda3\lib\site-packages\nbdime\gitfiles.py", line 41, in get_repo
            repo = Repo(path)
          File "C:\Users\username\AppData\Local\Continuum\miniconda3\lib\site-packages\git\repo\base.py", line 184, in __init__
            raise InvalidGitRepositoryError(epath)
        git.exc.InvalidGitRepositoryError: C:\
    [W 17:03:18.136 LabApp] 422 POST /nbdime/api/gitdiff?1575410598126 (::1): Invalid notebook: C:\Users\username\Code\AOE\Users\username\Code\AOE\EDE\notebooks\examples\voila.ipynb
    
    Browser Output
    Please see request params above, no console output was issued for this error
    
    pkg:Frontend bug 
    opened by jamesjnadeau 21
  • Add history to readme

    Add history to readme

    I have written up a short history of the contributors of this extension on the README. It is meant as an example of one way we could highlight the different companies, organizations, and people who have contributed to this extension. Instead of just putting a number of names and organizations in the README, I thought a narrative history might let us bring more subtlety to the process.

    I am sure it is incomplete and might be inaccurate in places, I tried to do my best from my personal knowledge and from the contributors list on Github. I tried to include people who had regular commits to this repository for some amount of time.

    Please give feedback here on both the particulars of the text and whether you think generally something like this makes sense.

    tag:Documentation enhancement 
    opened by saulshanabrook 19
  • git folder not being recognized

    git folder not being recognized

    This is with jupyterlab 0.31.1 and the latest master of jupyterlab-git.

    In the terminal I'm seeing 404 messages of the form:

    [W 15:45:45.040 LabApp] 404 POST /git/API?1516772745105 (10.200.18.81) 4.00ms
    [W 15:45:52.422 LabApp] 404 POST /git/API?1516772752486 (10.200.18.81) 4.00ms 
    [W 15:45:52.851 LabApp] 404 POST /git/API?1516772752917 (10.200.18.81) 3.99ms 
    [W 15:46:00.031 LabApp] 404 POST /git/API?1516772760098 (10.200.18.81) 4.00ms 
    

    image

    opened by dhirschfeld 19
  • Implement Git context menu in the file browser

    Implement Git context menu in the file browser

    Fixes #774

    Changes:

    • [x] Added Git context menu in File Browser
    • [x] Reworked the context commands to accept multiple files (as multiple files can be selected in the file browser)
    • [x] Added icons to the commands (they also display in the context menu of the Git panel widget)
    • [x] The old context menu and new context menu share the same commands and the same status assignments (the "open" command is not shown in the file browser as redundant to the browser capabilities); EDIT: "delete" is no longer shown either (GIF was not updated)
    • [x] Fixed a typo (_getPathRespository)
    • [x] Formalize types:
      • for context commands (as distinct from other commands): ContextCommandIDs
      • for context commands' arguments (as those were already being cast in type-unsafe way and I needed to change them all): CommandArguments

    jupyterlab-git-context-menu

    The Git panel context menu got icons (updated):

    context-menu-in-git-panel

    opened by krassowski 18
  • Follow-up preview tab for diff file views

    Follow-up preview tab for diff file views

        Great work here, it is a nice feature to have!
    
    • Could we add a setting to disable this behaviour? It seems that https://github.com/jupyterlab/jupyterlab-git/issues/620 proposed adding this as an opt-in setting.
    • When I move the diff to another spit panel (say to the right):
      • the italic style in tab bar disappears (probably the class does not stick after reattaching in another panel)
      • if I open another diff the old diff in right panel gets closed and reopened in the left panel. I find this annoying, I guess it was not intended.
    • I had no idea what italic style means before looking at the docs; it would be helpful if there was an explanation in the title, or maybe even a pin icon; a pin icon could be implemented as unicode prefix (πŸ“Œ or πŸ“or πŸ–ˆ) added to title

    Originally posted by @krassowski in https://github.com/jupyterlab/jupyterlab-git/issues/1184#issuecomment-1364533065

    opened by fcollonval 0
  • Files do not open from side panel if lab started from subdirectory of git

    Files do not open from side panel if lab started from subdirectory of git

    Description

    When working on jupyterlab repo if I start jupyterlab from packages sub-directory and try to open a modified file from the git sidebar it shows:

    Uncaught (in promise) Error: No such file or directory: packages/completer/style/base.css
    

    The path here is wrong: it starts at the git root, but it should be relative to jupyterlab root.

    Context

    • Python package version: 0.41.0
    • Extension version: @jupyterlab/git v0.41.0 enabled OK (python, jupyterlab-git)
    • Git version: 2.37.2
    • Operating System and its version: Ubuntu, latest
    bug 
    opened by krassowski 0
  • [Question] Poll on Git status

    [Question] Poll on Git status

    HI, We are using Git Jupyterlab extension on a directory mounted by S3-fuse. Poll on status api triggers git diff --numstat -z --cached 4b825dc642cb6eb9a060e54bf8d69288fbee4904 exec which in triggers burst of s3 API requests.

    Question: Why we do need to compare current stage with empty tree (from using --cached 4b825dc642cb6eb9a060e54bf8d69288fbee4904) to render the diff in the extension UI? I modified the plugin to use git diff --numstat -z (which doesnt trigger too many S3 requests) and I see that same information in the extension as before. I am interested in use-cases that would require us to compare current stage with empty tree.

    Thanks a lot for your help in advance!

    enhancement 
    opened by cyn0 2
  • front end cache is not working

    front end cache is not working

    I am using gitlab account and saving temp credential option is not working. I need to enter credential on each push request and could you please shed some light on this ?

    Jupyterlab == 3.5.0 version

    Thanks Siva

    bug 
    opened by sivankumar86 1
  • Cannot navigate the file list in side panel without mouse

    Cannot navigate the file list in side panel without mouse

    Description

    Navigating the list of staged/changed/etc files in side panel is not possible without mouse. The tab jumps to next section immediately.

    Reproduce

    1. Open git side panel
    2. Try to tab to a changed file to add it to staged
    3. See focus jump over the list of files

    Expected behavior

    Can use jupyterlab-git without mouse

    Context

    • Python package version:
    • Extension version:
    • Git version:
    • Operating System and its version:
    Command Line Output
    Paste the output from your command line running `jupyter lab` here, use `--debug` if possible.
    
    Web Browser Output
    Paste the output from your browser web console here.
    
    bug tag:Accessibility 
    opened by krassowski 0
Releases(v0.41.0)
  • v0.41.0(Dec 15, 2022)

    What's Changed

    • New feature :sparkles: :
      • Use preview tab for diff file views by @sheezaaziz in https://github.com/jupyterlab/jupyterlab-git/pull/1184
    • Bug fixes :bug: :
      • Update commandsAndMenu.tsx to replace "`" in file path for Open Git Repository since it leads to Command Injection Vulnerability by @rahrad123 in https://github.com/jupyterlab/jupyterlab-git/pull/1196
      • Add support for Jupyter Server 2 by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1203
    • Maintenance :construction: :
      • Bump decode-uri-component from 0.2.0 to 0.2.2 by @dependabot in https://github.com/jupyterlab/jupyterlab-git/pull/1194
      • add sheezaaziz as a contributor for code by @allcontributors in https://github.com/jupyterlab/jupyterlab-git/pull/1197
      • add Damans227 as a contributor for code by @allcontributors in https://github.com/jupyterlab/jupyterlab-git/pull/1199
      • Bump to 0.41.0 by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1204

    New Contributors

    • @rahrad123 made their first contribution in https://github.com/jupyterlab/jupyterlab-git/pull/1196

    Full Changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.40.1...v0.41.0

    Source code(tar.gz)
    Source code(zip)
  • v0.40.1(Nov 28, 2022)

    What's Changed

    • Bug fix :bug: :
      • Fix submodules unhandler error by @seignovert in https://github.com/jupyterlab/jupyterlab-git/pull/1191
    • Maintenance :construction: :
      • add kostyafarber as a contributor for code by @allcontributors in https://github.com/jupyterlab/jupyterlab-git/pull/1190
      • Bump to version 0.40.1 by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1192

    Full Changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.40.0...v0.40.1

    Source code(tar.gz)
    Source code(zip)
  • v0.40.0(Nov 28, 2022)

    What's Changed

    :warning: This version is changing the previous version rule (JupyterLab v:o:.#.# <-> jupyterlab-git v0.:o:#.#) as new features, we stick to semver. Hence the new version is 0.40.0 but it is only compatible with JupyterLab v3.

    • New features :sparkles:
      • Support downloading a git repository snapshot by @sheezaaziz in https://github.com/jupyterlab/jupyterlab-git/pull/1177
      • Add submodules clone checkbox by @seignovert in https://github.com/jupyterlab/jupyterlab-git/pull/1188
    • Bug fixes :bug:
      • Return without an error message when user cancels a push/pull by @Damans227 in https://github.com/jupyterlab/jupyterlab-git/pull/1170
      • Add translation to missing items by @kostyafarber in https://github.com/jupyterlab/jupyterlab-git/pull/1180
    • Maintenance :construction:
      • Bump node js version for publication by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1174
      • Bump loader-utils from 1.4.0 to 1.4.1 by @dependabot in https://github.com/jupyterlab/jupyterlab-git/pull/1181
      • Bump loader-utils from 1.4.1 to 1.4.2 by @dependabot in https://github.com/jupyterlab/jupyterlab-git/pull/1185
      • Bump to 0.40.0 by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1189

    New Contributors

    • @Damans227 made their first contribution in https://github.com/jupyterlab/jupyterlab-git/pull/1170
    • @sheezaaziz made their first contribution in https://github.com/jupyterlab/jupyterlab-git/pull/1177
    • @kostyafarber made their first contribution in https://github.com/jupyterlab/jupyterlab-git/pull/1180
    • @seignovert made their first contribution in https://github.com/jupyterlab/jupyterlab-git/pull/1188

    Full Changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.39.3...v0.40.0

    Source code(tar.gz)
    Source code(zip)
  • v0.39.3.post1(Sep 30, 2022)

    What's Changed

    • Maintenance 🚧
      • Bump node js version for publication by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1174

    Full Changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.39.3...v0.39.3.post1

    Source code(tar.gz)
    Source code(zip)
  • v0.39.3(Sep 30, 2022)

    What's Changed

    • Bug fix πŸ› :
      • fix: export logger instance for external use by @Reginald-King in https://github.com/jupyterlab/jupyterlab-git/pull/1172
    • Maintenance 🚧 :
      • Raise error instead of set status by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1165
      • Fix yarn lock by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1169

    New Contributors πŸŽ‰

    • @Reginald-King made their first contribution in https://github.com/jupyterlab/jupyterlab-git/pull/1172

    Full Changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.39.2...v0.39.3

    Source code(tar.gz)
    Source code(zip)
  • v0.39.2(Sep 6, 2022)

    What's Changed

    • New feature :sparkles: :
      • Add configuration to exclude paths by @divyansshhh in https://github.com/jupyterlab/jupyterlab-git/pull/1163

    New Contributors

    • @divyansshhh made their first contribution in https://github.com/jupyterlab/jupyterlab-git/pull/1163

    Full Changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.39.1...v0.39.2

    Source code(tar.gz)
    Source code(zip)
  • v0.39.1(Aug 29, 2022)

    What's Changed

    • Bug fixes :bug: :
      • URL should be uppercase by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1160

    Full Changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.39.0...v0.39.1

    Source code(tar.gz)
    Source code(zip)
  • v0.39.0(Aug 19, 2022)

    What's Changed

    • New features :sparkles:
      • Implement ui to support multiple remotes by @BoscoCHW in https://github.com/jupyterlab/jupyterlab-git/pull/1146
      • Git commit graph visualization on history sidebar by @BoscoCHW & @iflinda in https://github.com/jupyterlab/jupyterlab-git/pull/1156
    • Maintenance :construction:
      • Fix missing server extension activation in README by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1157

    Full Changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.38.0...v0.39.0

    Source code(tar.gz)
    Source code(zip)
  • v0.38.0(Jul 28, 2022)

    Big thanks to the new contributors @BoscoCHW and @iflinda (thanks to the MLH fellowship program) :clap:

    What's Changed

    • New features :sparkles: :
      • add current branch name on status bar by @BoscoCHW in https://github.com/jupyterlab/jupyterlab-git/pull/1131
      • Display Commit Description by @iflinda in https://github.com/jupyterlab/jupyterlab-git/pull/1134
      • Add 'open file' command to context menu on diff tab by @BoscoCHW in https://github.com/jupyterlab/jupyterlab-git/pull/1135
      • Support multi-selection in file lists by @BoscoCHW and @iflinda in https://github.com/jupyterlab/jupyterlab-git/pull/1136
    • Bug fixes :bug: :
      • close diff window when changes to file are discarded by @BoscoCHW in https://github.com/jupyterlab/jupyterlab-git/pull/1132
      • Close diff only for file in index or working state by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1140
      • avoid crashing if cell id doesnt exist when diffing notebooks by @DeanLight in https://github.com/jupyterlab/jupyterlab-git/pull/1148
    • Maintenance :construction: :
      • Bump cross-fetch from 3.1.4 to 3.1.5 by @dependabot in https://github.com/jupyterlab/jupyterlab-git/pull/1125
      • Fix tests by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1133
      • Bump shell-quote from 1.7.2 to 1.7.3 by @dependabot in https://github.com/jupyterlab/jupyterlab-git/pull/1138
      • Bump terser from 5.7.1 to 5.14.2 by @dependabot in https://github.com/jupyterlab/jupyterlab-git/pull/1149
      • Bump moment from 2.29.2 to 2.29.4 by @dependabot in https://github.com/jupyterlab/jupyterlab-git/pull/1151
      • Bump moment from 2.29.2 to 2.29.4 in /ui-tests by @dependabot in https://github.com/jupyterlab/jupyterlab-git/pull/1150
      • Update integration tests setup by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1152

    New Contributors

    • @BoscoCHW made their first contribution in https://github.com/jupyterlab/jupyterlab-git/pull/1132
    • @iflinda made their first contribution in https://github.com/jupyterlab/jupyterlab-git/pull/1134
    • @DeanLight made their first contribution in https://github.com/jupyterlab/jupyterlab-git/pull/1148

    Full Changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.37.1...v0.38.0

    Source code(tar.gz)
    Source code(zip)
  • v0.37.1(Apr 26, 2022)

    What's Changed

    • Bug fix :bug: :
      • Trim whitespace from user input of clone URI path by @dudash in https://github.com/jupyterlab/jupyterlab-git/pull/1122

    New Contributors

    • @dudash made their first contribution in https://github.com/jupyterlab/jupyterlab-git/pull/1122

    Full Changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.37.0...v0.37.1

    Source code(tar.gz)
    Source code(zip)
  • v0.37.0(Apr 25, 2022)

    • New features :sparkles: :
      • Add the ability to save Git login temporarily by @quachtridat and @ZeshanFayyaz in https://github.com/jupyterlab/jupyterlab-git/pull/1099 This feature is available only for repository linked with HTTP(S) protocol and if no credential helper is set.
      • Add the feature for comparing two arbitrary commits by @quachtridat and @ZeshanFayyaz in https://github.com/jupyterlab/jupyterlab-git/pull/1108
      • Improve commit box and commit diff by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1113 The summary will now be highlighted in red when it is missing; hence blocking the commit The action buttons at the group level are now displayed when a file in the section list is focused or hovered
      • Better handle case of unsaved changes in simple mode by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1115
      • Display diff between any two commits for a single file by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1117

    Full Changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.36.0...v0.37.0

    Source code(tar.gz)
    Source code(zip)
  • v0.36.0(Mar 23, 2022)

    What's Changed

    • Bug fixes :bug: :
      • Fix typo in SinglePastCommitInfo.tsx by @eltociear in https://github.com/jupyterlab/jupyterlab-git/pull/1094
      • New branch is not "based on" selection by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1095
      • Fix diff file broken for working file when Jupytext is installed by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1097
      • Branch list is not updated after a branch is deleted by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1096

    Minor bump is due to #1096 that added a new signal branchesChanged to the git model API.

    New Contributors :tada:

    • @eltociear made their first contribution in https://github.com/jupyterlab/jupyterlab-git/pull/1094

    Full Changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.35.0...v0.36.0

    Source code(tar.gz)
    Source code(zip)
  • v0.35.0(Mar 22, 2022)

    What's Changed

    • New features :sparkles:

      • Refresh open file on pull by @ajbozarth in https://github.com/jupyterlab/jupyterlab-git/pull/1090
      • Add "Reset to Remote" feature by @quachtridat in https://github.com/jupyterlab/jupyterlab-git/pull/1087
      • Warn the user of unsaved changes when working with staged files by @quachtridat in https://github.com/jupyterlab/jupyterlab-git/pull/1075
    • Bug fixes :bug:

      • [Fix] Ignore extensions label should only show each extension once #1070 by @bsande6 in https://github.com/jupyterlab/jupyterlab-git/pull/1080
    • Maintenance :construction:

      • Bump nanoid from 3.1.25 to 3.2.0 by @dependabot in https://github.com/jupyterlab/jupyterlab-git/pull/1069
      • Use galata for integration tests by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1030
      • Correct git ignore path for integration test by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1077
      • Bump url-parse from 1.5.3 to 1.5.7 by @dependabot in https://github.com/jupyterlab/jupyterlab-git/pull/1079
      • Bump url-parse from 1.5.6 to 1.5.10 in /ui-tests by @dependabot in https://github.com/jupyterlab/jupyterlab-git/pull/1083
      • Bump url-parse from 1.5.7 to 1.5.10 by @dependabot in https://github.com/jupyterlab/jupyterlab-git/pull/1084

    New Contributors :tada:

    • @quachtridat made their first contribution in https://github.com/jupyterlab/jupyterlab-git/pull/1075
    • @bsande6 made their first contribution in https://github.com/jupyterlab/jupyterlab-git/pull/1080

    Full Changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.34.2...v0.35.0

    Source code(tar.gz)
    Source code(zip)
  • v0.34.2(Jan 14, 2022)

    What's Changed

    • Bug fix :bug: :
      • Fixed error switching remote branch, fixes #741 by @3coins in https://github.com/jupyterlab/jupyterlab-git/pull/1066

    Full Changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.34.1...v0.34.2

    Source code(tar.gz)
    Source code(zip)
  • v0.34.1(Jan 10, 2022)

    What's Changed

    • Bug fix :bug: :
      • [UI] userSelect css bug by @himanshu007-creator in https://github.com/jupyterlab/jupyterlab-git/pull/1062

    New Contributors

    • :tada: @himanshu007-creator made their first contribution in https://github.com/jupyterlab/jupyterlab-git/pull/1062

    Full Changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.34.0...v0.34.1

    Source code(tar.gz)
    Source code(zip)
  • v0.34.0(Nov 13, 2021)

    What's Changed :new:

    • New features :sparkles:
      • Remote changes notification by @andrewfulton9 in https://github.com/jupyterlab/jupyterlab-git/pull/962
      • Display remotely changed files conditionaly and at the top by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1056
      • Add merging functionality and UI by @ianhi in https://github.com/jupyterlab/jupyterlab-git/pull/600
      • Add 'Discard All and Pull' button by @navn-r in https://github.com/jupyterlab/jupyterlab-git/pull/1020
      • Moved clone command to plugin for extensibility by @3coins in https://github.com/jupyterlab/jupyterlab-git/pull/1051
    • Bug fixes :bug:
      • Don't use uppercase in displayed strings by @fcollonval in https://github.com/jupyterlab/jupyterlab-git/pull/1049
    • Maintenance :construction:
      • Bump nbdime-jupyterlab from 2.1.0 to 2.1.1 by @dependabot in https://github.com/jupyterlab/jupyterlab-git/pull/1053

    New Contributors :tada:

    • @andrewfulton9 made their first contribution in https://github.com/jupyterlab/jupyterlab-git/pull/962
    • @3coins made their first contribution in https://github.com/jupyterlab/jupyterlab-git/pull/1051

    Full Changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.33.0...v0.34.0

    Source code(tar.gz)
    Source code(zip)
  • v0.33.0(Oct 8, 2021)

    • New feature :sparkles: :
      • Diff and resolve files on merge conflict #1013 - thanks to @navn-r
      • Improve merge widgets #1031
    • Maintenance :construction: :
      • Add Integration Tests #1019 - thanks to @navn-r
    Source code(tar.gz)
    Source code(zip)
  • v0.32.4(Sep 16, 2021)

  • v0.32.3(Sep 12, 2021)

    • Bug fixes :bug: :
      • Fix single file history (#1028) - thanks to @navn-r
      • Fix wording (#1021) - thanks to @krassowski
    • Security update :warning: :
      • Bump tar from 6.1.8 to 6.1.11 (#1022)
    Source code(tar.gz)
    Source code(zip)
  • v0.32.2(Aug 19, 2021)

  • v0.32.1(Aug 16, 2021)

    • New features :sparkles: :
      • The extension is using JupyterLab 3.1 context menu and menu bar definition from settings (#979). So user can now remove the git context submenu (in the filebrowser) and customize the git menu (in the top menu bar).
    • Bug fixes :bug: :
      • Use filebrowser tracker (#1004)
      • Correct signal disconnections (#1009)
      • Fix open .gitignore file (#1011)
    Source code(tar.gz)
    Source code(zip)
  • v0.32.0(Aug 4, 2021)

    • New features :sparkles: :
      • Git commit amend (#973)(#994) - Thanks to @SinaKhalili
      • Git history for a selected file (#864) (#980) - Thanks to @navn-r
    • Bug fixes :bug: :
      • Refresh file browser on head change (#950) (#964) - Thanks to @navn-r
      • Correct repository as root case (#966)
      • Preserve commit message when switching to the History tab (#931) (#836) - Thanks to @navn-r
      • Fix domain name for translation (#988)
      • Fix test against null (empty string is valid) (#991)
      • Fix selection in new branch dialog (#996)
      • Use PageConfig info if git repository is the root folder (#1001)
    • Maintenance :construction: :
      • Upgrade packages to address security warnings (#967)
      • Bump tar from 6.1.0 to 6.1.3 (#997)
      • Readme: Authentication to remote repo (#1000) - Thanks to @robna

    :tada: Congratulations to @SinaKhalili and @robna on their first contributions to the repository.

    See the full changelog for more details.

    Source code(tar.gz)
    Source code(zip)
  • v0.31.0(Jul 23, 2021)

    • New features :sparkles: :
      • Use relative path to server root (consistent with Jupyter practice) #939 #966
      • Support HybridContentsManager #939
      • Preserve commit message #971 (thanks to @navn-r)
    • Bug fixes :bug: :
      • Support asynchronous ContentsManager #955 (thanks to @icankeep)
      • Bug preventing to commit #959 (thanks to @DarkmatterVale)
      • Changing branch was not refreshing the file browser #964 (thanks to @navn-r)

    :tada: Congratulations to @DarkmatterVale, @icankeep and @navn-r on their first contributions to the repository.

    See the full changelog for more details.

    Source code(tar.gz)
    Source code(zip)
  • v0.31.0a0(Jun 10, 2021)

  • v0.30.1(May 3, 2021)

  • v0.30.0(Apr 17, 2021)

    Update to JupyterLab 3

    • New features ✨ :
      • Add support for translation #888 #905 (Thanks a lot to @JessicaBarh)
      • Create Ctrl-Enter shortcut to commit #878 (Thanks @krassowski)
      • Add Git actions in file browser context menu #877 (Thanks @krassowski)
      • Use animated icon instead of text in status bar #893
      • Rework files diff API and widgets #900
      • New setting commitAndPush to push after each commit - deactivated by default #887 (Thanks @ktaletsk)
    • Bug fixes πŸ› :
      • Backward fix for JupyterHub #863
      • Avoid 500 error message when current directory is not a Git repository #855 (Thanks @jeanmonet)
      • Correct set repository when the sidebar changes side #880 (Thanks @ktaletsk)

    Detailed changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.23.3...v0.30.0

    Source code(tar.gz)
    Source code(zip)
  • v0.30.0b3(Apr 3, 2021)

    • New features ✨ :
      • Add support for translation #888 #905 (Thanks a lot to @JessicaBarh)
      • Create Ctrl-Enter shortcut to commit #878 (Thanks @krassowski)
      • Add Git actions in file browser context menu #877 (Thanks @krassowski)
      • Use animated icon instead of text in status bar #893
      • Rework files diff API and widgets #900
      • New setting commitAndPush to push after each commit - deactivated by default #887 (Thanks @ktaletsk)
    • Bug fixes πŸ› :
      • Avoid 500 error message when current directory is not a Git repository #855 (Thanks @jeanmonet)
      • Correct set repository when the sidebar changes side #880 (Thanks @ktaletsk)

    Detailed changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.30.0b2...v0.30.0b3

    Source code(tar.gz)
    Source code(zip)
  • v0.24.0(Apr 3, 2021)

    • New features ✨ :
      • Create Ctrl-Enter shortcut to commit #878 (Thanks @krassowski)
      • Add Git actions in file browser context menu #877 (Thanks @krassowski)
      • Use animated icon instead of text in status bar #893
      • Rework files diff API and widgets #900
      • New setting commitAndPush to push after each commit - deactivated by default #887 (Thanks @ktaletsk)
    • Bug fixes πŸ› :
      • Avoid 500 error message when current directory is not a Git repository #855 (Thanks @jeanmonet)
      • Correct set repository when the sidebar changes side #880 (Thanks @ktaletsk)

    Detailed changelog: https://github.com/jupyterlab/jupyterlab-git/compare/v0.23.3...v0.24.0

    Source code(tar.gz)
    Source code(zip)
  • v0.30.0b2(Feb 15, 2021)

  • v0.30.0b1.post1(Jan 20, 2021)

Owner
JupyterLab
JupyterLab: The Next Generation UI for Project Jupyter
JupyterLab
ReText: Simple but powerful editor for Markdown and reStructuredText

Welcome to ReText! ReText is a simple but powerful editor for Markdown and reStructuredText markup languages. One can also add support for custom mark

ReText 1.6k Dec 23, 2022
A powerful text editor for MATE

Pluma - The MATE text editor General Information Pluma (pluma) is a small and lightweight UTF-8 text editor for the MATE environment. It started as a

MATE Desktop 134 Dec 31, 2022
Write maintainable, production-ready pipelines using Jupyter or your favorite text editor. Develop locally, deploy to the cloud. ☁️

Write maintainable, production-ready pipelines using Jupyter or your favorite text editor. Develop locally, deploy to the cloud. ☁️

Ploomber 2.9k Jan 06, 2023
Official repository for Spyder - The Scientific Python Development Environment

Copyright Β© 2009–2021 Spyder Project Contributors Some source files and icons may be under other authorship/licenses; see NOTICE.txt. Project status B

Spyder IDE 7.3k Dec 31, 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
{Ninja-IDE Is Not Just Another IDE}

Ninja-IDE Is Not Just Another IDE Ninja-IDE is a cross-platform integrated development environment (IDE) that allows developers to create applications

ninja-ide 919 Dec 14, 2022
Vim plugin for executing Python's optional static type checker MyPy

Vim plugin for executing Python's optional static type checker MyPy

Mark McDonnell 91 Dec 04, 2022
A free Python source code editor and Notepad replacement for Windows

Website Download Features Toolbar Wide array of view options Syntax highlighting support for Python Usable accelerator keys for each function (Ctrl+N,

Mohamed Ahmed 7 Feb 16, 2022
A simple Notepad-like editor written in Python

monkepad A simple Notepad-like editor written in Python Since MonkePad is written in one file, all your customization can be done without much trouble

5 Dec 28, 2021
A basic Python IDE made by Anh Đức

Python IDE by Anh Đức A basic Python IDE made with python module tkinter. Hope you enjoy this IDE! V 1.3 "Open Terminal from IDE" feature V 1.2 Now yo

1 May 30, 2022
openBrowsser is a Sublime Text plug-in, which allows you to add a keyboard shortcut, to directly access a website from a selection.

openBrowsser is a Sublime Text plug-in, which allows you to add a keyboard shortcut, to directly access a website from a selection. Instal

Florian COLLIN 1 Dec 14, 2021
A JupyterLab extension for version control using Git

A JupyterLab extension for version control using Git

JupyterLab 1.2k Jan 03, 2023
A code-completion engine for Vim

YouCompleteMe: a code-completion engine for Vim NOTE: Minimum Requirements Have Changed Our policy is to support the Vim version that's in the latest

24.5k Dec 30, 2022
Python-Text-editor: a simple text editor on Python and Tkinter

Python-Text-editor This is a simple text editor on Python and Tkinter. The proje

Innokentie 1 Jan 03, 2022
Leo is an Outliner, Editor, IDE and PIM written in 100% Python.

Leo 6.3, http://leoeditor.com, is now available on GitHub. Leo is an IDE, outliner and PIM. The highlights of Leo 6.3 leoAst.py: The unification of Py

Leo Editor 1.4k Dec 27, 2022
PlugNik is a simple implementation of plugin repository for JetBrains Application.

PlugNik is a simple implementation of plugin repository for JetBrains Application.

roy reznik 11 Jun 30, 2022
Emacs Python Development Environment

Elpy, the Emacs Python IDE Elpy is an Emacs package to bring powerful Python editing to Emacs. It combines and configures a number of other packages,

Jorgen SchΓ€fer 1.8k Jan 02, 2023
Encriptificator is a text editor app developed by me as a personal project.

Encriptificator is a text editor app developed by me as a personal project. It provides all basic features of a text editor with the additional feature of encrypting your files. To know more about ho

1 May 09, 2022
A WYSIWYG layout editor for Jupyter widgets

Based on the React library FlexLayout, ipyflex allows you to compose the sophisticated dashboard layouts from existing Jupyter widgets without coding. It supports multiple tabs, resizable cards, drag

Duc Trung LE 93 Nov 24, 2022