Leo is an Outliner, Editor, IDE and PIM written in 100% Python.

Overview

Hits

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 Python's token and ast worlds.
  • Retired all Qt Dock code.
  • Improved viewrendered and viewrendered3 plugins.
  • Improved several importer plugins.
  • Refactored Leo's key handling code.

Links

Comments
  • Still No Output From Pylint

    Still No Output From Pylint

    See PR #2589 and PR #2590.

    With the new PR, the BPM waits (via proc.communicate) for all output if BPM.wait is True.

    @tbpassin I expect more work is needed, but I wanted to merge PR #2590 right away. Please test devel with wait set to both True and False.

    Bug 
    opened by tbpassin 63
  • leoBridge commander open Leo-Editor file always fails

    leoBridge commander open Leo-Editor file always fails

    Creating a leoBridge commander works, but using the commander to open a file always returns None. This happens with both Python 2 and Python 3.

    This fits the well established pattern of completely breaking leoBridge every few months.

    Test Version

    Leo 5.5, build 20170718062026, Tue Jul 18 06:20:26 CDT 2017 Git repo info: branch = master, commit = 911001d30f73

    Test Program leoBridgeOpenFails.py

    #!/usr/bin/python
    #coding=utf-8
    import sys
    import leo.core.leoBridge as leoBridge
    
    def main():
        """ Module entry point
        """
    
        bridge = leoBridge.controller(gui='nullGui', silent=True,
            verbose=False, loadPlugins=False, readSettings=False)
        cmdrX = bridge.openLeoFile(sys.argv[1])
        print('bridge.openLeoFile({0}) returned {1}'.format(sys.argv[1], cmdrX))
    
    if __name__ == "__main__":
        main()
    
    

    Command Line

    python3 leoBridgeOpenFails.py <Leo-Editor file pathname>

    opened by SegundoBob 44
  • Fully working and clean Leo on PyPi.org

    Fully working and clean Leo on PyPi.org

    Background

    PyPi is the Python Package Index Page

    There has been a lengthy discussion of this issue on leo-editor.

    Leo developers should not use pip because some files left behind when using pip (see #603). Instead, Leo devs should use git as always.

    Goals

    • Any Leo maintainer can update Leo's PyPi page with a straightforward workflow. Expertise with setuptools or distutils expertise should not be required.
    • People can install Leo with pip install leo.
    • People may also have to install PyQt with their favorite package manager: conda install pyqt.

    What Matt has done

    • Cherry picked the old setup.py branch into a new branch, setuppy-clean, uploaded the result to PyPi, and tested the resulting PyPi package on Windows and Linux.
    • Merged the new into master with a pull request and deleted the setuppy-clean branch.
    • Updated the docs and scripts in leo/dist/leoDist.leo.

    Current status

    • Work is now being carried out in master.
    • PyPi compliant wheel packages are built and install successfully on Windows (7,10) and Linux (Mint) with python 2.7 and 3.6.
    • leoDist.leo contains the package upload recipe in the node Matt's workflow for updating pypi. At present, a clone of this node appears at the top level. The clone will remain at the top level until this issue is closed, or perhaps even longer.

    @maphew I have removed the package upload recipe from this comment. I see no reason for the duplication. It will be easy enough to restore if necessary.

    To do

    • [x] Update installation docs. In Progress. @maphew Please put the various documentation sections in leoDist.leo into separate nodes, with subsidiary discussions in child nodes, or even grandchild nodes. That way devs can see the logical relationships between sections. In general, never rely on markup when outline structure is available.

    • [x] Someone besides Matt runs through process from start to finish and is successful. @maphew Is further "internal" testing really necessary? Can't we simply test the wheel after you upload it?

    Enhancement Pip 
    opened by maphew 40
  • leoBridge sometimes assigns the same GNX to two distinct vnodes

    leoBridge sometimes assigns the same GNX to two distinct vnodes

    Seriousness of this Bug

    This bug has probably existed at least since the last time the GNX format was changed.

    This bug probably does not exist in Leo-Editor, that is, the non-batch use of Leo-Editor, because it requires the following to occur within one second: opening a .leo file, creating one or more nodes, closing the .leo file, and then re-opening the .leo file.

    This bug is a real problem in practice. I have a set of about 32 unit tests. For almost every run of these 32 tests, one or two fail because of this bug.

    Essence of this Bug

    In essence the bug is that the starting GNX index (the trailing decimal number to the right of the last period in the GNX) for a Leo-Editor or LeoBridge session currently does not guarantee that all GNX's created in the session will not equal a GNX from a previous session. Currently the starting GNX index is approximately twice the number of vnodes in all the .leo files opened during Leo-Editor initialization. That is, the first explicitly targeted .leo file plus the settings files leoSettings.leo and myLeosettings.leo.

    LeoBridge has a "no settings" option, but Leo-Editor does not. When the settings files are read, the session start GNX index is typically over 1500. When the settings files are NOT read, the session start GNX is about twice the number of vnodes in the .leo file.

    I always specify "no settings" to LeoBridge.

    By now you probably see how to cause the bug to occur. Use LeoBridge to create a file containing about 2K+1 vnodes, then delete the first K of these vnodes, close the file. Use the subprocess library to start new process that uses LeoBridge to re-open the file and create one vnode. If the the preceeding up through the re-open occurs during the same second, then the vnode created by the second session has the same GNX as the last vnode created in the previous session. The 2K+1 and "last" are approximate, because of the "Hidden Root Node."

    The "Hidden Root Node" is special in several ways. It is NOT saved in the .leo file, so it does not have one permanent GNX. It is in fact, assigned what I've been calling the "session start" GNX index. So the "Hidden Root Node" can have the same GNX as a "real" vnode that was created in a previous session. This problem is the one that causes my unit tests to fail even though they only read without modifying a previously created .leo file.

    Suggested Fix

    This bug could be fixed by calculating the maximum GNX index in any of the vnodes in the .leo file, and then setting the "session start GNX" and the Hidden Root Node GNX to the maximum GNX index + 1. Calculating this maximum GNX index could be folded into one of the many scans of all the vnodes that occur during session initialization; or it could be calculated by scanning all the vnodes yet again.

    Question

    The behavior of leoG.app.nodeIndices.lastIndex suggests (but doesn't prove) that Leo-Editor initialization scans all vnodes (including the settings files) two or three times and every scan allocates a vnode and GNX for each vnode. I assume all but one vnode and GNX are thrown away. Why so many scans? Why so many GNX allocations? Why so many vnode creations?

    Bug Demonstration

    This git repository contains three .py files that demonstrate the bug: https://github.com/SegundoBob/GNXrepeats

    Put all three .py files in one directory. Execute hrngpM2.py. This creates a sub-directory hidden_root_tsts containing several files, among which is SlaveLog.txt. Here is a a SlaveLog.txt from a run that shows the bug:

    After bridge create: 0
    After hidden_root_tsts/test1.leo open: 6
    After adding 1 vnode: 7
    Error: True
    bob07.20140717152454.4 "<hidden root VNode>" "1 - 3"
    bob07.20140717152454.7 ""2 - 1"" "1 - 6"
    

    This indicates that "Hidden Root Node" for the Slave session has the same GNX as the node with headline "1 - 3" created by the Master session; and the node with headline "2 - 1" created by the Slave session has the same GNX as the node with headline "1 - 6" created by the Master session.

    Build 7e04b48a7477 runs this test much faster than build 2b9f8da59fc7. Using 2b9f8da59fc7 I had to run the test four times before it showed the bug. Your experience will vary based on the speed of your system.

    Test System

    Xubuntu32 14.04

    Leo 4.11 final, build 7e04b48a7477 (branch: master), 2014-07-03 15:25:31 Python 2.7.6, LeoGui: dummy version

    and

    Leo 4.11 final, build 2b9f8da59fc7 (branch: master), 2014-07-17 15:45:22 Python 2.7.6, LeoGui: dummy version

    Bug 
    opened by SegundoBob 40
  • make `python setup.py install` work again - from #810

    make `python setup.py install` work again - from #810

    spawned from #810. Summary:

    For creating a distribution package one could -in versions prior to 5.7- copy the files 'leo/dist/leo-install.py' and 'leo/dist/setup.py' to the main directory and from there run python setup.py install --root=$PKG with as target the folder in which the package is created ($PKG).

    ...

    Hi, thanks for the update and an extended leo-5.7, which I managed to compile with the leo-5.6/leo/dist/setup.py outwith pip but whether the program is now fully functional time will tell:

    There have a been changes in setup.py since 5.6 not specifically related to pip.

    If there are specific reasons you can't, re-open this issue and we can explore what might be done. I'll need information and feedback though as I don't know about building distribution packages.

    The request for a setup.py that works via install is that it can compile the program in such a way that it can be packaged (that is 'installed') outwith the python-installation of the computer that does the compilation. With 'python setup.py install' one can direct installation of the compiled program to a folder in /tmp, say '/tmp/ leo-package', which will contain a folder structure mimicking the one of any computer that runs that distribution. Then this leo-package folder -after compressing- can be distributed among users/computers that run this distribution. The install/upgrade-scripts of that distribution will then copy the bits from the package into the python-distribution of that computer. Of course, in order to run the installed program correctly, all necessary dependencies have to be installed.

    Thus, users of that distribution can just use the distributed binary or compile the program on their box as if they are an admin using the distribution-specific compile scripts as longs as their box is in a similar state as that of the admin/distributor.

    As an administrator of many computers which need to get a python program installed, one would prefer to only use the distribution-specific install/upgrade tools as this provides an easy way to check what has been installed and/or what needs updating on each computer. In such a scenario, when on top of this, as not all is python on those boxes- one needs to check pip for python updates on each and every computer, things can become difficult to manage. Especially if this also would hold for modules for other programming environments that come with their own installers (e.g. ruby) if these could not be compiled into a form that can be distributed.

    The pip-install is excellent for users with one computer to manage, but if this number increases it becomes quite hard to maintain a set of computers if one is forced to, as currently for leo-5.7, to use pip outwith the common distribution-specific routine.

    In the end, you run the risk of losing users who rely on distributed versions of leo:

    There have a been changes in setup.py since 5.6 not specifically related to pip. Sooner or later using the old version will probably stop working. Pip solves a lot of problems, are you sure you can't use it? as this will in the end break the usage of the leo-5.6/leo/dist/setup.py

    Note, that pip and wheels do not solve any problem for admins who have their computers up to date - or in a consistent state of versions of packages that can work together and want to keep it that way.

    Hope this clarifies the request,

    rob

    Bug Pip 
    opened by brobr 35
  • Unit tests are failing for Terry

    Unit tests are failing for Terry

    Terry says: Here are the fails I get from d1608d30. It would really help if the fail count could be assumed to be zero on pulls from master.

    Trying to create a QVariant instance of QMetaType::Void type, an
    invalid QVariant will be constructed instead
    
    [this is repeated many many times]
    
    ======================================================================
    ERROR: runTest (leo.core.leoTest.GeneralTestCase)
    @test rST import test
    
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoTest.py", line 211, in runTest
        builtins.execfile(scriptFile, d)
      File "/home/tbrown/.leo/scriptFile.py", line 74, in <module>
        assert root.h.startswith('@@'), root.h
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoNodes.py", line 1635, in __get_h
        return p.headString()
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoNodes.py", line 672, in headString
        return self.v.headString()
    AttributeError: 'NoneType' object has no attribute 'headString'
    
    ======================================================================
    ERROR: runTest (leo.core.leoTest.GeneralTestCase)
    @test rST import test: simple
    
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoTest.py", line 211, in runTest
        builtins.execfile(scriptFile, d)
      File "/home/tbrown/.leo/scriptFile.py", line 22, in <module>
        assert root.h.startswith('@@'), root.h
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoNodes.py", line 1635, in __get_h
        return p.headString()
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoNodes.py", line 672, in headString
        return self.v.headString()
    AttributeError: 'NoneType' object has no attribute 'headString'
    
    ======================================================================
    ERROR: runTest (leo.core.leoTest.GeneralTestCase)
    @test rST import test: no double-underlines
    
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoTest.py", line 211, in runTest
        builtins.execfile(scriptFile, d)
      File "/home/tbrown/.leo/scriptFile.py", line 73, in <module>
        assert root.h.startswith('@@'), root.h
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoNodes.py", line 1635, in __get_h
        return p.headString()
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoNodes.py", line 672, in headString
        return self.v.headString()
    AttributeError: 'NoneType' object has no attribute 'headString'
    
    ======================================================================
    ERROR: runTest (leo.core.leoTest.GeneralTestCase)
    @test rST import test: long underlines
    
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoTest.py", line 211, in runTest
        builtins.execfile(scriptFile, d)
      File "/home/tbrown/.leo/scriptFile.py", line 34, in <module>
        assert root.h.startswith('@@'), root.h
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoNodes.py", line 1635, in __get_h
        return p.headString()
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoNodes.py", line 672, in headString
        return self.v.headString()
    AttributeError: 'NoneType' object has no attribute 'headString'
    
    ======================================================================
    ERROR: runTest (leo.core.leoTest.GeneralTestCase)
    @test rST import test: long overlines
    
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoTest.py", line 211, in runTest
        builtins.execfile(scriptFile, d)
      File "/home/tbrown/.leo/scriptFile.py", line 35, in <module>
        assert root.h.startswith('@@'), root.h
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoNodes.py", line 1635, in __get_h
        return p.headString()
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoNodes.py", line 672, in headString
        return self.v.headString()
    AttributeError: 'NoneType' object has no attribute 'headString'
    
    ======================================================================
    ERROR: runTest (leo.core.leoTest.GeneralTestCase)
    @test rST import test: trailing whitespace
    
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoTest.py", line 211, in runTest
        builtins.execfile(scriptFile, d)
      File "/home/tbrown/.leo/scriptFile.py", line 22, in <module>
        assert root.h.startswith('@@'), root.h
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoNodes.py", line 1635, in __get_h
        return p.headString()
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoNodes.py", line 672, in headString
        return self.v.headString()
    AttributeError: 'NoneType' object has no attribute 'headString'
    
    ======================================================================
    ERROR: runTest (leo.core.leoTest.GeneralTestCase)
    @test leo_rst
    
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoTest.py", line 211, in runTest
        builtins.execfile(scriptFile, d)
      File "/home/tbrown/.leo/scriptFile.py", line 48, in <module>
        assert root.h.startswith('@@'), root.h
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoNodes.py", line 1635, in __get_h
        return p.headString()
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoNodes.py", line 672, in headString
        return self.v.headString()
    AttributeError: 'NoneType' object has no attribute 'headString'
    
    ======================================================================
    ERROR: runTest (leo.core.leoTest.GeneralTestCase)
    @test x.makeShadowDirectory
    
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoTest.py", line 211, in runTest
        builtins.execfile(scriptFile, d)
      File "/home/tbrown/.leo/scriptFile.py", line 31, in <module>
        deleteShadowDir(shadow_dir)
      File "/home/tbrown/.leo/scriptFile.py", line 20, in deleteShadowDir
        os.rmdir(shadow_dir)
    OSError: [Errno 39] Directory not empty: '/home/tbrown/.leo/shadow'
    
    ======================================================================
    FAIL: runTest (leo.core.leoTest.GeneralTestCase)
    @test all commands have an event arg
    
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoTest.py", line 211, in runTest
        builtins.execfile(scriptFile, d)
      File "/home/tbrown/.leo/scriptFile.py", line 26, in <module>
        assert arg0 in expected or arg1 in expected, message
    AssertionError:
    no event arg for command quickmove_bookmark_to_first_child, func: <lambda>
    args: ArgSpec(args=['e'], varargs=None, keywords=None, defaults=None)
    
    ======================================================================
    FAIL: runTest (leo.core.leoTest.GeneralTestCase)
    @test add/delete html comments
    
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoTest.py", line 211, in runTest
        builtins.execfile(scriptFile, d)
      File "/home/tbrown/.leo/scriptFile.py", line 27, in <module>
        assert p.b == s,'fail5: s\n%s\nresult\n%s' % (repr(s),repr(p.b))
    AssertionError: fail5: s
    u'@language html\n<html>\n    text \n</html>\n'
    result
    u'@language html\n<html>\n   text \n</html>\n'
    
    ======================================================================
    FAIL: runTest (leo.core.leoTest.GeneralTestCase)
    @test helpForbindings
    
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoTest.py", line 211, in runTest
        builtins.execfile(scriptFile, d)
      File "/home/tbrown/.leo/scriptFile.py", line 7, in <module>
        c.helpCommands.helpForBindings()
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/commands/helpCommands.py", line 326, in helpForBindings
        self.c.putHelpFor(s)
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoCommands.py", line 7020, in putHelpFor
        g.app.gui.put_help(c, s, short_title)
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/plugins/qt_gui.py", line 1029, in put_help
        assert vr # For unit testing.
    AssertionError
    
    ======================================================================
    FAIL: runTest (leo.core.leoTest.GeneralTestCase)
    @test helpForFindCommands
    
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoTest.py", line 211, in runTest
        builtins.execfile(scriptFile, d)
      File "/home/tbrown/.leo/scriptFile.py", line 7, in <module>
        c.helpCommands.helpForFindCommands()
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/commands/helpCommands.py", line 756, in helpForFindCommands
        self.c.putHelpFor(s)
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoCommands.py", line 7020, in putHelpFor
        g.app.gui.put_help(c, s, short_title)
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/plugins/qt_gui.py", line 1029, in put_help
        assert vr # For unit testing.
    AssertionError
    
    ======================================================================
    FAIL: runTest (leo.core.leoTest.GeneralTestCase)
    @test helpForMinibuffer
    
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoTest.py", line 211, in runTest
        builtins.execfile(scriptFile, d)
      File "/home/tbrown/.leo/scriptFile.py", line 6, in <module>
        c.helpCommands.helpForMinibuffer()
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/commands/helpCommands.py", line 815, in helpForMinibuffer
        c.putHelpFor(s)
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoCommands.py", line 7020, in putHelpFor
        g.app.gui.put_help(c, s, short_title)
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/plugins/qt_gui.py", line 1029, in put_help
        assert vr # For unit testing.
    AssertionError
    
    ======================================================================
    FAIL: runTest (leo.core.leoTest.EditBodyTestCase)
    EditBodyTestCase: addComments
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoTest.py", line 105, in runTest
        self.editBody()
      File "/mnt/usr1/usr1/home/tbrown/t/Package/leo/git/leo-editor/leo/core/leoTest.py", line 85, in editBody
        compareHeadlines=False), '%s: before undo1' % commandName
    AssertionError: addComments: before undo1
    
    ----------------------------------------------------------------------
    Ran 904 tests in 108.952s
    
    FAILED (failures=6, errors=8, skipped=28)
    tb:la: ~/t/Package/leo/git/leo-editor
    leo-editorlocalhost:11.0>
    
    Bug 
    opened by edreamleo 33
  • Installing Leo from GitHub via pip does not work

    Installing Leo from GitHub via pip does not work

    Summary: some dependent modules were not referenced so pip didn't know to install them as well. Since fixed, but there remains traceback errors which have not been diagnosed. They might be specific to @ranvik14's environment.

    2018-04-20 [Matt] I've edited posts in this thread to eliminate duplicate info (quoting mainly) and placed this summary at the top.


    Upated 2018-08-25, [Matt]

    Problem

    When installing Leo from GitHub with pip install https://github.com/leo-editor/leo-editor/archive/devel.zip numerous files are left out. See https://github.com/leo-editor/leo-editor/issues/847#issuecomment-384158754

    Solution

    Installing from Github into a new environment must be done in discrete steps: download, unpack, and install in editable mode.

    Example:

    wget https://github.com/leo-editor/leo-editor/archive/devel.zip
    7z x devel.zip -o C:\apps
    pip install --editable C:\apps\leo-editor-devel
    

    On Windows there are powershell versions of wget if needed.

    For easier upgrading substitute git clone for wget & 7z steps:

    git clone --single-branch -b devel --depth=100 https://github.com/leo-editor/leo-editor.git
    pip install --editable leo-editor
    

    time passes, upgrade desired:

    pushd c:\apps\leo-editor
    git pull
    

    single-branch, b and depth are all optional, but will dramatically speed up download time as it only grabs the latest development branch and skips all but the last couple weeks or months of history.

    The rest of this page is likely to be uninteresting now.


    History

    Opening Post

    When I try this in a dedicated virtual environment (VE) I receive the following messages:

    (leo-next) PS C:\Users\Viktor\leo-next> pip install https://github.com/leo-editor/leo-editor/archive/master.zip
    Collecting https://github.com/leo-editor/leo-editor/archive/master.zip
      Downloading https://github.com/leo-editor/leo-editor/archive/master.zip
         - 11.5MB 1.3MB/s
        Complete output from command python setup.py egg_info:
        Traceback (most recent call last):
          File "<string>", line 1, in <module>
          File "C:\Users\Viktor\AppData\Local\Temp\pip-9ceji4i6-build\setup.py", line 10, in <module>
            import semantic_version
        ModuleNotFoundError: No module named 'semantic_version'
    
        ----------------------------------------
    Command "python setup.py egg_info" failed with error code 1 in C:\Users\Viktor\AppData\Local\Temp\pip-9ceji4i6-build\
    (leo-next) PS C:\Users\Viktor\leo-next>
    

    FYI: Here's the environment of my system from 'leo-master', which I created via pip from PyPI:

    Leo Log Window
    Leo 5.7 final, build 20180227091711, Tue Feb 27 09:17:11 CST 2018
    Not running from a git repo
    Python 3.6.5, PyQt version 5.10.1
    Windows 10 AMD64 (build 10.0.16299) SP0
    isPython3: True
    caching enabled
    reading: C:\Users\Viktor\Worklogs\WL2018.leo
    read outline in 0.47 seconds
    
    Bug Pip 
    opened by ranvik14 31
  • Search with

    Search with "wrap around" not working properly

    I make a search of a text in the entire outline with the "wrap Around" option activated. I start the search in the middle of the outline, find some matches in several nodes and keep pressing F3 until I reach the end of the outline. Then the search goes on and finds some other matches at the begining of the outline and so on until the last one is found, in which moment the following message appears in the status bar:

    not found: (ignore-case, wrapping) some_text_searched

    So far, so good.

    But, if at this point, I go to the end of the body of the current node (the node with the last match) and press F3 again to start a new search (without changing the text to search), the search stops right there and shows again the message:

    not found: (ignore-case, wrapping) some_text_searched

    To give more hints as to the possible cause of the problem: if, instead of going to the end of the body of the current node, I go to the begining of the body and press F3 until all matches in this node are found, the next F3 key press shows the error message again and the search stops there, never leaving the node.

    Bug 
    opened by xgid 31
  • Tree abbreviation placeholders in headlines not working as expected

    Tree abbreviation placeholders in headlines not working as expected

    Placeholders (items to be filled in) are not working in the expected way when the placeholders are present at the headlines of any of the nodes of a tree abbreviation.

    Let's take this tree abbreviation example to make it more clear:

    mdfile;;
    	@clean <|filename|>.md
    		""" The body here """
    		Description: <|summary|>
    

    The tree abbreviation mdfile;; has one only node with a placeholder (<|filename|>) in its headline and a second placeholder (<|summary|>) inside its body.

    When I insert the abbreviation (by typing "mdfile;;"), the node is correctly created and the cursor is positioned in the <|summary|> placeholder and I can type the field value. But when I press ,, the behaviour is as if I had already filled the last field. At this point typing two commas does nothing more. So the placeholder in the headline (<|filename|>) is not recognized as such and is never asked to be filled in.

    Bug 
    opened by xgid 31
  • Leo devel from GitHub is not working on Debian

    Leo devel from GitHub is not working on Debian

    For the background of this issue, see these conversation entries on Leo's Google Group:

    • https://groups.google.com/g/leo-editor/c/Uaug4xW21RI/m/48yzQ8JlAAAJ

    • https://groups.google.com/g/leo-editor/c/Uaug4xW21RI/m/XScZf2jJAAAJ

    I followed the description provided in the documentation related to "Installing Leo with git".

    • http://leoeditor.com/installing.html#installing-leo-with-git

    For Step 3 : "Install dependencies and create leo script launcher" I received the following error:

    (Leo) user@debian-leo-vm:~/PyVE/Repo/Leo$ cd leo-editor (Leo) user@debian-leo-vm:~/PyVE/Repo/Leo/leo-editor$ pip3 install --editable /home/user/PyVE/Repo/Leo/leo-editor Obtaining file:///home/user/PyVE/Repo/Leo/leo-editor Installing build dependencies ... error Complete output from command /home/user/PyVE/Repo/Leo/bin/python3 -m pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-_mtbzqd1 --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools>=38.6.0 setupext-janitor>=1.1 wheel>=0.31.0 twine>=1.11.0: Collecting setuptools>=38.6.0 Using cached https://files.pythonhosted.org/packages/60/6a/dd9533ae9367a1f35b1b704e2ac9554a61e6dfa4d97e1d86c3760e1e135d/setuptools-54.1.1-py3-none-any.whl Collecting setupext-janitor>=1.1 Using cached https://files.pythonhosted.org/packages/fe/7c/21ab50164321e657d7ca281bc827b317351b0504dca72025b1e8063d4b91/setupext_janitor-1.1.2-py2.py3-none-any.whl Collecting wheel>=0.31.0 Using cached https://files.pythonhosted.org/packages/65/63/39d04c74222770ed1589c0eaba06c05891801219272420b40311cd60c880/wheel-0.36.2-py2.py3-none-any.whl Collecting twine>=1.11.0 Using cached https://files.pythonhosted.org/packages/eb/d7/a46b7eb07b491a9295c3581f86ad68f97df83e000dc9a4c6e3c710c432dd/twine-3.3.0-py3-none-any.whl Collecting requests-toolbelt!=0.9.0,>=0.8.0 (from twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/60/ef/7681134338fc097acef8d9b2f8abe0458e4d87559c689a8c306d0957ece5/requests_toolbelt-0.9.1-py2.py3-none-any.whl Collecting pkginfo>=1.4.2 (from twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/b0/9a/d78e7c299eb5659bc3a036e5a968a399c62bfe0b2aa18baf7d13f43373ba/pkginfo-1.7.0-py2.py3-none-any.whl Collecting rfc3986>=1.4.0 (from twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/78/be/7b8b99fd74ff5684225f50dd0e865393d2265656ef3b4ba9eaaaffe622b8/rfc3986-1.4.0-py2.py3-none-any.whl Collecting importlib-metadata; python_version < "3.8" (from twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/34/7c/15499080be7cbb30579630238c6472c7c3529deca03bfab7bdead6419cd1/importlib_metadata-3.7.2-py3-none-any.whl Collecting keyring>=15.1 (from twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/4a/4f/a63f284d26eac29a29e24657d12f17bddac58b12673ca39b53ae5f20c1a3/keyring-23.0.0-py3-none-any.whl Collecting requests>=2.20 (from twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/29/c1/24814557f1d22c56d50280771a17307e6bf87b70727d975fd6b2ce6b014a/requests-2.25.1-py2.py3-none-any.whl Collecting tqdm>=4.14 (from twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/f8/3e/2730d0effc282960dbff3cf91599ad0d8f3faedc8e75720fdf224b31ab24/tqdm-4.59.0-py2.py3-none-any.whl Collecting readme-renderer>=21.0 (from twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/39/a5/459adfa22ea237f6e8d0fa95ad29d7369579a5eec26f016ab34bb7f8359c/readme_renderer-29.0-py2.py3-none-any.whl Collecting colorama>=0.4.3 (from twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/44/98/5b86278fbbf250d239ae0ecb724f8572af1c91f4a11edf4d36a206189440/colorama-0.4.4-py2.py3-none-any.whl Collecting typing-extensions>=3.6.4; python_version < "3.8" (from importlib-metadata; python_version < "3.8"->twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/60/7a/e881b5abb54db0e6e671ab088d079c57ce54e8a01a3ca443f561ccadb37e/typing_extensions-3.7.4.3-py3-none-any.whl Collecting zipp>=0.5 (from importlib-metadata; python_version < "3.8"->twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/0f/8c/715c54e9e34c0c4820f616a913a7de3337d0cd79074dd1bed4dd840f16ae/zipp-3.4.1-py3-none-any.whl Collecting jeepney>=0.4.2; sys_platform == "linux" (from keyring>=15.1->twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/51/b0/a6ea72741aaac3f37fb96d195e4ee576a103c4c04e279bc6b446a70960e1/jeepney-0.6.0-py3-none-any.whl Collecting SecretStorage>=3.2; sys_platform == "linux" (from keyring>=15.1->twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/d9/1e/29cd69fdac7391aa51510dfd42aa70b4e6a826c8cd019ee2a8ab9ec0777f/SecretStorage-3.3.1-py3-none-any.whl Collecting certifi>=2017.4.17 (from requests>=2.20->twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/5e/a0/5f06e1e1d463903cf0c0eebeb751791119ed7a4b3737fdc9a77f1cdfb51f/certifi-2020.12.5-py2.py3-none-any.whl Collecting chardet<5,>=3.0.2 (from requests>=2.20->twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/19/c7/fa589626997dd07bd87d9269342ccb74b1720384a4d739a1872bd84fbe68/chardet-4.0.0-py2.py3-none-any.whl Collecting urllib3<1.27,>=1.21.1 (from requests>=2.20->twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/23/fc/8a49991f7905261f9ca9df5aa9b58363c3c821ce3e7f671895442b7100f2/urllib3-1.26.3-py2.py3-none-any.whl Collecting idna<3,>=2.5 (from requests>=2.20->twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/a2/38/928ddce2273eaa564f6f50de919327bf3a00f091b5baba8dfa9460f3a8a8/idna-2.10-py2.py3-none-any.whl Collecting docutils>=0.13.1 (from readme-renderer>=21.0->twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/81/44/8a15e45ffa96e6cf82956dd8d7af9e666357e16b0d93b253903475ee947f/docutils-0.16-py2.py3-none-any.whl Collecting bleach>=2.1.0 (from readme-renderer>=21.0->twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/f0/46/2bbd92086a4c6f051214cb48df6d9132b5f32c5e881d3f4991b16ec7e499/bleach-3.3.0-py2.py3-none-any.whl Collecting six (from readme-renderer>=21.0->twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl Collecting Pygments>=2.5.1 (from readme-renderer>=21.0->twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/3a/80/a52c0a7c5939737c6dca75a831e89658ecb6f590fb7752ac777d221937b9/Pygments-2.8.1-py3-none-any.whl Collecting cryptography>=2.0 (from SecretStorage>=3.2; sys_platform == "linux"->keyring>=15.1->twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/fa/2d/2154d8cb773064570f48ec0b60258a4522490fcb115a6c7c9423482ca993/cryptography-3.4.6.tar.gz Installing build dependencies: started Installing build dependencies: finished with status 'done' Collecting packaging (from bleach>=2.1.0->readme-renderer>=21.0->twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/3e/89/7ea760b4daa42653ece2380531c90f64788d979110a2ab51049d92f408af/packaging-20.9-py2.py3-none-any.whl Collecting webencodings (from bleach>=2.1.0->readme-renderer>=21.0->twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl Collecting cffi>=1.12 (from cryptography>=2.0->SecretStorage>=3.2; sys_platform == "linux"->keyring>=15.1->twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/97/2d/cd29c79f2eb1384577d0662f23c89d29621152f14bef8c6b25747785744b/cffi-1.14.5-cp37-cp37m-manylinux1_x86_64.whl Collecting pyparsing>=2.0.2 (from packaging->bleach>=2.1.0->readme-renderer>=21.0->twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/8a/bb/488841f56197b13700afd5658fc279a2025a39e22449b7cf29864669b15d/pyparsing-2.4.7-py2.py3-none-any.whl Collecting pycparser (from cffi>=1.12->cryptography>=2.0->SecretStorage>=3.2; sys_platform == "linux"->keyring>=15.1->twine>=1.11.0) Using cached https://files.pythonhosted.org/packages/ae/e7/d9c3a176ca4b02024debf82342dab36efadfc5776f9c8db077e8f6e71821/pycparser-2.20-py2.py3-none-any.whl Building wheels for collected packages: cryptography Running setup.py bdist_wheel for cryptography: started Running setup.py bdist_wheel for cryptography: finished with status 'error' Complete output from command /home/user/PyVE/Repo/Leo/bin/python3 -u -c "import setuptools, tokenize;file='/tmp/pip-install-5wtaw6vz/cryptography/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" bdist_wheel -d /tmp/pip-wheel-u1dxni1j --python-tag cp37: running bdist_wheel running build running build_py creating build creating build/lib.linux-x86_64-3.7 creating build/lib.linux-x86_64-3.7/cryptography copying src/cryptography/about.py -> build/lib.linux-x86_64-3.7/cryptography copying src/cryptography/exceptions.py -> build/lib.linux-x86_64-3.7/cryptography copying src/cryptography/fernet.py -> build/lib.linux-x86_64-3.7/cryptography copying src/cryptography/init.py -> build/lib.linux-x86_64-3.7/cryptography copying src/cryptography/utils.py -> build/lib.linux-x86_64-3.7/cryptography creating build/lib.linux-x86_64-3.7/cryptography/hazmat copying src/cryptography/hazmat/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat copying src/cryptography/hazmat/_der.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat copying src/cryptography/hazmat/_oid.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat copying src/cryptography/hazmat/_types.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat creating build/lib.linux-x86_64-3.7/cryptography/x509 copying src/cryptography/x509/ocsp.py -> build/lib.linux-x86_64-3.7/cryptography/x509 copying src/cryptography/x509/name.py -> build/lib.linux-x86_64-3.7/cryptography/x509 copying src/cryptography/x509/oid.py -> build/lib.linux-x86_64-3.7/cryptography/x509 copying src/cryptography/x509/general_name.py -> build/lib.linux-x86_64-3.7/cryptography/x509 copying src/cryptography/x509/init.py -> build/lib.linux-x86_64-3.7/cryptography/x509 copying src/cryptography/x509/base.py -> build/lib.linux-x86_64-3.7/cryptography/x509 copying src/cryptography/x509/extensions.py -> build/lib.linux-x86_64-3.7/cryptography/x509 copying src/cryptography/x509/certificate_transparency.py -> build/lib.linux-x86_64-3.7/cryptography/x509 creating build/lib.linux-x86_64-3.7/cryptography/hazmat/bindings copying src/cryptography/hazmat/bindings/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/bindings creating build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/_asymmetric.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/_cipheralgorithm.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/keywrap.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/hmac.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/hashes.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/poly1305.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/padding.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/_serialization.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/constant_time.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/cmac.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives creating build/lib.linux-x86_64-3.7/cryptography/hazmat/backends copying src/cryptography/hazmat/backends/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends copying src/cryptography/hazmat/backends/interfaces.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends creating build/lib.linux-x86_64-3.7/cryptography/hazmat/bindings/openssl copying src/cryptography/hazmat/bindings/openssl/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/bindings/openssl copying src/cryptography/hazmat/bindings/openssl/_conditional.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/bindings/openssl copying src/cryptography/hazmat/bindings/openssl/binding.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/bindings/openssl creating build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/ciphers copying src/cryptography/hazmat/primitives/ciphers/aead.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/ciphers copying src/cryptography/hazmat/primitives/ciphers/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/ciphers copying src/cryptography/hazmat/primitives/ciphers/base.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/ciphers copying src/cryptography/hazmat/primitives/ciphers/modes.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/ciphers copying src/cryptography/hazmat/primitives/ciphers/algorithms.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/ciphers creating build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/ed448.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/ec.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/dsa.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/x448.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/x25519.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/rsa.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/ed25519.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/dh.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/padding.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/utils.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric creating build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/kdf copying src/cryptography/hazmat/primitives/kdf/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/kdf copying src/cryptography/hazmat/primitives/kdf/kbkdf.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/kdf copying src/cryptography/hazmat/primitives/kdf/scrypt.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/kdf copying src/cryptography/hazmat/primitives/kdf/hkdf.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/kdf copying src/cryptography/hazmat/primitives/kdf/pbkdf2.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/kdf copying src/cryptography/hazmat/primitives/kdf/concatkdf.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/kdf copying src/cryptography/hazmat/primitives/kdf/x963kdf.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/kdf creating build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/serialization copying src/cryptography/hazmat/primitives/serialization/pkcs12.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/serialization copying src/cryptography/hazmat/primitives/serialization/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/serialization copying src/cryptography/hazmat/primitives/serialization/base.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/serialization copying src/cryptography/hazmat/primitives/serialization/pkcs7.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/serialization copying src/cryptography/hazmat/primitives/serialization/ssh.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/serialization creating build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/twofactor copying src/cryptography/hazmat/primitives/twofactor/totp.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/twofactor copying src/cryptography/hazmat/primitives/twofactor/hotp.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/twofactor copying src/cryptography/hazmat/primitives/twofactor/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/twofactor copying src/cryptography/hazmat/primitives/twofactor/utils.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/twofactor creating build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/ocsp.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/x509.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/ed448.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/aead.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/ec.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/dsa.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/backend.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/x448.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/decode_asn1.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/x25519.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/ciphers.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/hmac.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/rsa.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/hashes.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/ed25519.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/poly1305.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/dh.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/utils.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/encode_asn1.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/cmac.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl running egg_info writing src/cryptography.egg-info/PKG-INFO writing dependency_links to src/cryptography.egg-info/dependency_links.txt writing requirements to src/cryptography.egg-info/requires.txt writing top-level names to src/cryptography.egg-info/top_level.txt reading manifest file 'src/cryptography.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' no previously-included directories found matching 'docs/_build' warning: no previously-included files found matching 'vectors' warning: no previously-included files matching '' found under directory 'vectors' warning: no previously-included files matching '' found under directory '.github' warning: no previously-included files found matching 'release.py' warning: no previously-included files found matching '.coveragerc' warning: no previously-included files found matching 'codecov.yml' warning: no previously-included files found matching '.readthedocs.yml' warning: no previously-included files found matching 'dev-requirements.txt' warning: no previously-included files found matching 'tox.ini' warning: no previously-included files found matching 'mypy.ini' warning: no previously-included files matching '' found under directory '.zuul.d' warning: no previously-included files matching '' found under directory '.zuul.playbooks' writing manifest file 'src/cryptography.egg-info/SOURCES.txt' copying src/cryptography/py.typed -> build/lib.linux-x86_64-3.7/cryptography running build_ext generating cffi module 'build/temp.linux-x86_64-3.7/_padding.c' creating build/temp.linux-x86_64-3.7 generating cffi module 'build/temp.linux-x86_64-3.7/_openssl.c' running build_rust

        =============================DEBUG ASSISTANCE=============================
        If you are seeing a compilation error please try the following steps to
        successfully install cryptography:
        1) Upgrade to the latest pip and try again. This will fix errors for most
           users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip
        2) Read https://cryptography.io/en/latest/installation.html for specific
           instructions for your platform.
        3) Check our frequently asked questions for more information:
           https://cryptography.io/en/latest/faq.html
        4) Ensure you have a recent Rust toolchain installed:
           https://cryptography.io/en/latest/installation.html#rust
        5) If you are experiencing issues with Rust for *this release only* you may
           set the environment variable `CRYPTOGRAPHY_DONT_BUILD_RUST=1`.
        =============================DEBUG ASSISTANCE=============================
    
    error: can't find Rust compiler
    
    If you are using an outdated pip version, it is possible a prebuilt wheel is available for this package but pip is not able to install from it. Installing from the wheel would avoid the need for a Rust compiler.
    
    To update pip, run:
    
        pip install --upgrade pip
    
    and then retry package installation.
    
    If you did intend to build this package from source, try installing a Rust compiler from your system package manager and ensure it is on the PATH during installation. Alternatively, rustup (available at https://rustup.rs) is the recommended way to download and update the Rust compiler toolchain.
    
    This package requires Rust >=1.41.0.
    
    ----------------------------------------
    Failed building wheel for cryptography
    Running setup.py clean for cryptography
    Complete output from command /home/user/PyVE/Repo/Leo/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-5wtaw6vz/cryptography/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" clean --all:
    running clean
    removing 'build/temp.linux-x86_64-3.7' (and everything under it)
    removing 'build/lib.linux-x86_64-3.7' (and everything under it)
    'build/bdist.linux-x86_64' does not exist -- can't clean it
    'build/scripts-3.7' does not exist -- can't clean it
    removing 'build'
    running clean_rust
    
        =============================DEBUG ASSISTANCE=============================
        If you are seeing a compilation error please try the following steps to
        successfully install cryptography:
        1) Upgrade to the latest pip and try again. This will fix errors for most
           users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip
        2) Read https://cryptography.io/en/latest/installation.html for specific
           instructions for your platform.
        3) Check our frequently asked questions for more information:
           https://cryptography.io/en/latest/faq.html
        4) Ensure you have a recent Rust toolchain installed:
           https://cryptography.io/en/latest/installation.html#rust
        5) If you are experiencing issues with Rust for *this release only* you may
           set the environment variable `CRYPTOGRAPHY_DONT_BUILD_RUST=1`.
        =============================DEBUG ASSISTANCE=============================
    
    error: can't find Rust compiler
    
    If you are using an outdated pip version, it is possible a prebuilt wheel is available for this package but pip is not able to install from it. Installing from the wheel would avoid the need for a Rust compiler.
    
    To update pip, run:
    
        pip install --upgrade pip
    
    and then retry package installation.
    
    If you did intend to build this package from source, try installing a Rust compiler from your system package manager and ensure it is on the PATH during installation. Alternatively, rustup (available at https://rustup.rs) is the recommended way to download and update the Rust compiler toolchain.
    
    This package requires Rust >=1.41.0.
    
    ----------------------------------------
    Failed cleaning build dir for cryptography
    

    Failed to build cryptography Installing collected packages: setuptools, setupext-janitor, wheel, certifi, chardet, urllib3, idna, requests, requests-toolbelt, pkginfo, rfc3986, typing-extensions, zipp, importlib-metadata, jeepney, pycparser, cffi, cryptography, SecretStorage, keyring, tqdm, docutils, pyparsing, packaging, six, webencodings, bleach, Pygments, readme-renderer, colorama, twine Running setup.py install for cryptography: started Running setup.py install for cryptography: finished with status 'error' Complete output from command /home/user/PyVE/Repo/Leo/bin/python3 -u -c "import setuptools, tokenize;file='/tmp/pip-install-5wtaw6vz/cryptography/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-record-wkvenu2e/install-record.txt --single-version-externally-managed --prefix /tmp/pip-build-env-_mtbzqd1 --compile --install-headers /home/user/PyVE/Repo/Leo/include/site/python3.7/cryptography: running install running build running build_py creating build creating build/lib.linux-x86_64-3.7 creating build/lib.linux-x86_64-3.7/cryptography copying src/cryptography/about.py -> build/lib.linux-x86_64-3.7/cryptography copying src/cryptography/exceptions.py -> build/lib.linux-x86_64-3.7/cryptography copying src/cryptography/fernet.py -> build/lib.linux-x86_64-3.7/cryptography copying src/cryptography/init.py -> build/lib.linux-x86_64-3.7/cryptography copying src/cryptography/utils.py -> build/lib.linux-x86_64-3.7/cryptography creating build/lib.linux-x86_64-3.7/cryptography/hazmat copying src/cryptography/hazmat/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat copying src/cryptography/hazmat/_der.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat copying src/cryptography/hazmat/_oid.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat copying src/cryptography/hazmat/_types.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat creating build/lib.linux-x86_64-3.7/cryptography/x509 copying src/cryptography/x509/ocsp.py -> build/lib.linux-x86_64-3.7/cryptography/x509 copying src/cryptography/x509/name.py -> build/lib.linux-x86_64-3.7/cryptography/x509 copying src/cryptography/x509/oid.py -> build/lib.linux-x86_64-3.7/cryptography/x509 copying src/cryptography/x509/general_name.py -> build/lib.linux-x86_64-3.7/cryptography/x509 copying src/cryptography/x509/init.py -> build/lib.linux-x86_64-3.7/cryptography/x509 copying src/cryptography/x509/base.py -> build/lib.linux-x86_64-3.7/cryptography/x509 copying src/cryptography/x509/extensions.py -> build/lib.linux-x86_64-3.7/cryptography/x509 copying src/cryptography/x509/certificate_transparency.py -> build/lib.linux-x86_64-3.7/cryptography/x509 creating build/lib.linux-x86_64-3.7/cryptography/hazmat/bindings copying src/cryptography/hazmat/bindings/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/bindings creating build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/_asymmetric.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/_cipheralgorithm.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/keywrap.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/hmac.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/hashes.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/poly1305.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/padding.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/_serialization.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/constant_time.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives copying src/cryptography/hazmat/primitives/cmac.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives creating build/lib.linux-x86_64-3.7/cryptography/hazmat/backends copying src/cryptography/hazmat/backends/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends copying src/cryptography/hazmat/backends/interfaces.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends creating build/lib.linux-x86_64-3.7/cryptography/hazmat/bindings/openssl copying src/cryptography/hazmat/bindings/openssl/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/bindings/openssl copying src/cryptography/hazmat/bindings/openssl/_conditional.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/bindings/openssl copying src/cryptography/hazmat/bindings/openssl/binding.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/bindings/openssl creating build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/ciphers copying src/cryptography/hazmat/primitives/ciphers/aead.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/ciphers copying src/cryptography/hazmat/primitives/ciphers/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/ciphers copying src/cryptography/hazmat/primitives/ciphers/base.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/ciphers copying src/cryptography/hazmat/primitives/ciphers/modes.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/ciphers copying src/cryptography/hazmat/primitives/ciphers/algorithms.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/ciphers creating build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/ed448.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/ec.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/dsa.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/x448.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/x25519.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/rsa.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/ed25519.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/dh.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/padding.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric copying src/cryptography/hazmat/primitives/asymmetric/utils.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/asymmetric creating build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/kdf copying src/cryptography/hazmat/primitives/kdf/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/kdf copying src/cryptography/hazmat/primitives/kdf/kbkdf.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/kdf copying src/cryptography/hazmat/primitives/kdf/scrypt.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/kdf copying src/cryptography/hazmat/primitives/kdf/hkdf.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/kdf copying src/cryptography/hazmat/primitives/kdf/pbkdf2.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/kdf copying src/cryptography/hazmat/primitives/kdf/concatkdf.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/kdf copying src/cryptography/hazmat/primitives/kdf/x963kdf.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/kdf creating build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/serialization copying src/cryptography/hazmat/primitives/serialization/pkcs12.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/serialization copying src/cryptography/hazmat/primitives/serialization/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/serialization copying src/cryptography/hazmat/primitives/serialization/base.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/serialization copying src/cryptography/hazmat/primitives/serialization/pkcs7.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/serialization copying src/cryptography/hazmat/primitives/serialization/ssh.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/serialization creating build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/twofactor copying src/cryptography/hazmat/primitives/twofactor/totp.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/twofactor copying src/cryptography/hazmat/primitives/twofactor/hotp.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/twofactor copying src/cryptography/hazmat/primitives/twofactor/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/twofactor copying src/cryptography/hazmat/primitives/twofactor/utils.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/primitives/twofactor creating build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/ocsp.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/x509.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/ed448.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/aead.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/ec.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/dsa.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/backend.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/x448.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/decode_asn1.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/x25519.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/ciphers.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/hmac.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/rsa.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/init.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/hashes.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/ed25519.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/poly1305.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/dh.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/utils.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/encode_asn1.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl copying src/cryptography/hazmat/backends/openssl/cmac.py -> build/lib.linux-x86_64-3.7/cryptography/hazmat/backends/openssl running egg_info writing src/cryptography.egg-info/PKG-INFO writing dependency_links to src/cryptography.egg-info/dependency_links.txt writing requirements to src/cryptography.egg-info/requires.txt writing top-level names to src/cryptography.egg-info/top_level.txt reading manifest file 'src/cryptography.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' no previously-included directories found matching 'docs/_build' warning: no previously-included files found matching 'vectors' warning: no previously-included files matching '' found under directory 'vectors' warning: no previously-included files matching '' found under directory '.github' warning: no previously-included files found matching 'release.py' warning: no previously-included files found matching '.coveragerc' warning: no previously-included files found matching 'codecov.yml' warning: no previously-included files found matching '.readthedocs.yml' warning: no previously-included files found matching 'dev-requirements.txt' warning: no previously-included files found matching 'tox.ini' warning: no previously-included files found matching 'mypy.ini' warning: no previously-included files matching '' found under directory '.zuul.d' warning: no previously-included files matching '' found under directory '.zuul.playbooks' writing manifest file 'src/cryptography.egg-info/SOURCES.txt' copying src/cryptography/py.typed -> build/lib.linux-x86_64-3.7/cryptography running build_ext generating cffi module 'build/temp.linux-x86_64-3.7/_padding.c' creating build/temp.linux-x86_64-3.7 generating cffi module 'build/temp.linux-x86_64-3.7/_openssl.c' running build_rust

          =============================DEBUG ASSISTANCE=============================
          If you are seeing a compilation error please try the following steps to
          successfully install cryptography:
          1) Upgrade to the latest pip and try again. This will fix errors for most
             users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip
          2) Read https://cryptography.io/en/latest/installation.html for specific
             instructions for your platform.
          3) Check our frequently asked questions for more information:
             https://cryptography.io/en/latest/faq.html
          4) Ensure you have a recent Rust toolchain installed:
             https://cryptography.io/en/latest/installation.html#rust
          5) If you are experiencing issues with Rust for *this release only* you may
             set the environment variable `CRYPTOGRAPHY_DONT_BUILD_RUST=1`.
          =============================DEBUG ASSISTANCE=============================
    
      error: can't find Rust compiler
    
      If you are using an outdated pip version, it is possible a prebuilt wheel is available for this package but pip is not able to install from it. Installing from the wheel would avoid the need for a Rust compiler.
    
      To update pip, run:
    
          pip install --upgrade pip
    
      and then retry package installation.
    
      If you did intend to build this package from source, try installing a Rust compiler from your system package manager and ensure it is on the PATH during installation. Alternatively, rustup (available at https://rustup.rs) is the recommended way to download and update the Rust compiler toolchain.
    
      This package requires Rust >=1.41.0.
    
      ----------------------------------------
    

    Command "/home/user/PyVE/Repo/Leo/bin/python3 -u -c "import setuptools, tokenize;file='/tmp/pip-install-5wtaw6vz/cryptography/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-record-wkvenu2e/install-record.txt --single-version-externally-managed --prefix /tmp/pip-build-env-_mtbzqd1 --compile --install-headers /home/user/PyVE/Repo/Leo/include/site/python3.7/cryptography" failed with error code 1 in /tmp/pip-install-5wtaw6vz/cryptography/


    Command "/home/user/PyVE/Repo/Leo/bin/python3 -m pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-_mtbzqd1 --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools>=38.6.0 setupext-janitor>=1.1 wheel>=0.31.0 twine>=1.11.0" failed with error code 1 in None (Leo) user@debian-leo-vm:~/PyVE/Repo/Leo/leo-editor$

    Bug 
    opened by ranvik14 29
  • It should be possible to generate Leo's Documentation locally

    It should be possible to generate Leo's Documentation locally

    I've tried for a while to re-create Leo's Documentation locally to have full access to it, even if I'm not online. - I've not succeeded so far - and - have documented my attempts here:

    • https://groups.google.com/d/msg/leo-editor/lOBQ0fkWtpA/dh59eGDmAgAJ - and
    • https://groups.google.com/d/msg/leo-editor/lOBQ0fkWtpA/fDWO7DRqBAAJ
    Enhancement Delegated 
    opened by ranvik14 28
  • Host Leo's web site using GitHub Pages.

    Host Leo's web site using GitHub Pages.

    This issue is a restart of issue #480.

    • [ ] Create a new website using GitHub pages. Details (and url) unclear at present. I expect to continue to use Sphinx to create Leo's documentation.
    • [ ] When all looks good (and works as expected), change the top-level leo-editor.com page so that it redirects visitors to the new url. We will not transfer leo-editor.com domain itself to the new site.

    This plan eliminates the need to change the DNS entries for leoeditor.com. Eventually leoeditor.com will "wither away".

    I'll communicate with my brother Speed about this new plan.

    Documentation Pip 
    opened by edreamleo 0
  • leoscripts.leo contains all its scripts in an @file leoScripts.txt text file - is that OK?

    leoscripts.leo contains all its scripts in an @file leoScripts.txt text file - is that OK?

    All of the scripts in leoscripts.leo are contained in a single text file: @file leoScripts.txt. That seems strange to me. Why is there such a file? The text file contains leo sentinels, since it is an @file node.

    I imagine there was some apparently good reason behind this choice at some time in the past, but it's not apparent to me. Shouldn't the scripts just be in an ordinary organizer node? What is the value in having them saved outside the Leo outline in a .txt file that contains sentinels?

    Info 
    opened by tbpassin 1
  • show-file-line command can not show some line of @file xyz.vue

    show-file-line command can not show some line of @file xyz.vue

    Example: When cursor on // some methods, run show-file-line show nothing in log panel.

    Example file: @file xyz.vue

    <!--@+leo-ver=5-thin-->
    <!--@+node:swot.20221218204228.2: * @file xyz.vue-->
    <!--@@language xml-->
    <!--@+others-->
    <!--@+node:swot.20221218204228.3: ** template-->
    <!--@@language xml-->
    <template>
    
    </template>
    <!--@+node:swot.20221218204228.4: ** script-->
    <!--@@language javascript-->
    <!--@delims // -->
    <script>
    export default {
      name: '',
      //@+<< methods >>
      //@+node:swot.20221218204325.1: *3* << methods >>
      // some methods
      //@-<< methods >>
    }
    //@delims <!-- --> 
    </script>
    <!--@@language asciidoc-->
    <!--@+doc-->
    <!--
    -->
    <!--@+node:swot.20221218204228.5: ** style-->
    <!--@@language css-->
    <!--@delims /* */ -->
    <style scoped>
    
    /*@delims <!-- --> */
    </style>
    <!--@@language asciidoc-->
    <!--@+doc-->
    <!--
    
    -->
    <!--@-others-->
    <!--@-leo-->
    

    Leo Log Window Leo 6.7.2-devel, None branch, build 3f5198c28f 2022-12-18 20:11:43 +0800 Python 3.9.5, PyQt version 5.15.2 darwin

    Bug 
    opened by wangzhaohe 8
  • Nested comments led to syntax color not displayed

    Nested comments led to syntax color not displayed

    The first three lines are right because html should not contain nested comments. But the syntax color is disappeared in leo-editor.

    image

    The last three lines has syntax color in leo-editor, but --> is shown in web browser.

    image
    <!--@+leo-ver=5-thin-->
    <!--@+node:swot.20221217090125.1: * @file test.html-->
    <!--@@language xml-->
    <!--@+doc-->
    <!--
    <p>no syntax color</p>
    
    -->
    <!--@+doc-->
    <!--
    <!--@@language xml-->
    <p>with syntax color, but --> will show in html page</p>
    
    -->
    <!--@-leo-->
    
    opened by wangzhaohe 11
  • load-leo.html can not load files from the web

    load-leo.html can not load files from the web

    In Leo's Readme om Github, there is a link near the bottom : A web page that displays .leo files. Trying to load the default outline offered, my browser gave an error "File is too large":

    Upload from the Internet.
    Enter the URL below.
    https://github.com/leo-editor/leo-editor/raw/master/leo/doc/LeoDocs.leo
    
    File is too large
    
    Error uploading file
    

    A smaller outline should be found for this demonstration.

    lvl:minor Documentation 
    opened by tbpassin 7
  • Changes to Leo Outline From Outside Don't Get Reloaded

    Changes to Leo Outline From Outside Don't Get Reloaded

    While looking at Issue https://github.com/leo-editor/leo-editor/issues/3001, I noticed that when I opened a Leo node in an external editor (not part of an external file) and saved a change, Leo asked if I wanted to reload the node, but after I clicked "Yes", no change was made.

    This happens with the modified code for the dialog that I tried out in the linked issue.

    I assume the intended behavior is to change the affected node, and if so this would be a bug.

    Bug 
    opened by tbpassin 0
Releases(v6.7.1)
{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
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 3, 2022
A small, simple editor for beginner Python programmers. Written in Python and Qt5.

Mu - A Simple Python Code Editor Mu is a simple code editor for beginner programmers based on extensive feedback from teachers and learners. Having sa

Mu 1.2k Jan 3, 2023
Komodo Edit is a fast and free multi-language code editor. Written in JS, Python, C++ and based on the Mozilla platform.

Komodo Edit This readme explains how to get started building, using and developing with the Komodo Edit source base. Whilst the main Komodo Edit sourc

ActiveState Komodo 2k Dec 28, 2022
Python IDE for beginners

Thonny Thonny is a Python IDE meant for learning programming. End users See https://thonny.org and wiki for more info. Contributors Contributions are

Thonny, Python IDE for beginners 2.1k Jan 2, 2023
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

null 1 May 30, 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

null 5 Dec 28, 2021
A very simple Editor.js parser written in pure Python

pyEditor.js A very simple Editor.js parser written in pure Python. Soon-to-be published on PyPI. Features: Automatically convert Editor.js's JSON outp

Kevo 7 Nov 1, 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
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
Cameray is a lens editor and simulator for fun.

Cameray is a lens editor and simulator for fun. It's could be used for studying an optics system of DSLR in an interactive way. But the project is in a very early version. The program is still crash-prone and also lack of many realistic camera features now.

Shuoliu Yang 59 Dec 10, 2022
An experimental code editor for writing algorithms

Algojammer Algojammer is an experimental, proof-of-concept code editor for writing algorithms in Python. It was mainly written to assist with solving

Chris Knott 2.9k Dec 27, 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 6, 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 how to use the encryption features , please read the readme file.

null 1 May 9, 2022
A gui-script-editor(Based on pyqt5, pyautogui) to writing your gui script.

gui-script-editor A gui-script-editor(Based on pyqt5, pyautogui) to writing your gui script. ##更新说明 版本号:1.0.0 版本说明:实现了脚本编辑器雏形,未实现执行报告,自动化脚本管理(只支持单个脚本运

null 2 Dec 22, 2021
cross-editor syntax highlighter for Lua, showing some merit of Typed BNF

Cross-editor contextual syntax highlighter via Typed BNF Do you like "one grammar, syntax highlighters everywhere?" 喜欢我一个文法,到处高亮吗? PS: NOTE that paren

Taine Zhao 14 Feb 9, 2022
Frappe tinymce - Frappe app to replace default text editor with tinymce

Frappe tinyMCE tinyMCE Text Editor for frappe apps Replace frappe's Quill Text E

Shridhar Patil 23 Nov 16, 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 2, 2023