A QGIS integration plugin for Kart repositories

Overview

QGIS Kart Plugin

A plugin to work with Kart repositories

License: GPL v3

Installation

The Kart plugin is available in the QGIS Plugins server. To install the latest version, use the QGIS Plugin Manager and search for the Kart plugin.

Alternatively, you can get the latest version from the release page

Open the QGIS Plugin manager and install the downloaded zip file.

This plugin is compatible with QGIS 3.4 or later.

Usage

Usage documentation can be found here

For developers

For Kart development see the Contributing Notes.

Comments
  • Option to display spatial filter extents on the map

    Option to display spatial filter extents on the map

    If a user has spatial filter(s) set, would be good to be able to (optionally) see the borders of the filters on the map.

    IMO ideally they wouldn't appear as layers, but maybe more like a decoration (ie: layout extents, grids, etc)? Maybe @hamishcampbell has other ideas?

    opened by rcoup 9
  • Fix support for ssh clones of kart repos.

    Fix support for ssh clones of kart repos.

    The plugin currently fails to recognize SSH paths to hosted repositories.

    This change moves the responsibility for determining the users intended clone source into the clone widget. This also fixes handling of paths already prefixed with file:// and tightens up the checking of http/https paths.

    opened by hamishcampbell 8
  • Github Setup for bug reporting & contributing

    Github Setup for bug reporting & contributing

    • [x] Issue template — make sure we're getting the right info/OS/versions/logs/context/etc to help figure issues out quickly.
    • [x] Contributing doc — how to get up and running with the plugin for development (as opposed to "install from here"), conventions, etc.
    documentation 
    opened by rcoup 7
  • Improve installation of kart and/or configuration of plugin and kart executables

    Improve installation of kart and/or configuration of plugin and kart executables

    The plugin should robustly handle the case of Kart not installed or misconfigured.

    Eventually, it might perform installation itself, so they user can do the full setup from QGIS

    enhancement 
    opened by volaya 6
  • UI minor changes rollup

    UI minor changes rollup

    Minor UI changes (mostly wording) rollup issue

    • [x] Working tree → Working copy everywhere

    CleanShot 2021-11-23 at 10 57 33

    • [x] heading → “Your Kart installation location is not configured:”
    • [x] stray "."

    CleanShot 2021-11-23 at 10 52 40

    • [x] pane titlebar → "Kart Repositories"

    • [x] hint text → "Tip: right-click on items for available actions"

    • [x] remove logo/heading (~ideally move logo to pane title~ not a thing)

    • [x] add a space between repo title & branch name

    • [x] can we collapse the repository path in the middle when the panel isn't wide enough and the repo doesn't have a title set? I think Qt supports this via elidedText. ie:

      /Users/rcoup/code/kart-foss4g-2021/workshop/first [mybranch]  # now
      ~/code/kart-foss4g-2021/workshop/first [mybranch]             # use ~ for os.path.expanduser('~') prefix
      ~/code/.../workshop/first [mybranch]                          # collapse in the middle
      

    CleanShot 2021-11-23 at 11 25 21

    • [x] Remove this repository: icon → minus-circle-outline
    • [x] Show log: icon → history
    • [x] Show working tree changes: icon → compare
    • [x] Discard working tree changes: icon → undo
    • [x] Commit working tree changes: icon → content-save-outline
    • [x] Switch branch: icon → swap-horizontal
    • [x] Apply patch: icon → file-import-outline
    • [x] Menu order/wording
      • -break-
      • Show log...
      • Show working copy changes...
      • Discard working copy changes
      • Commit working copy changes...
      • Switch branch...
      • Merge into {current-branch}...
      • -break-
      • Pull...
      • Push...
      • -break-
      • Import layer to repository...
      • Apply patch...
      • -break-
      • Refresh
      • Properties...
      • Remove this repository

    CleanShot 2021-11-23 at 12 02 17

    • [x] Matching icon and wording changes from the repository context menu
    • [x] Menu ordering:
      • Add to QGIS project
      • -break-
      • Show log...
      • Show working copy changes for dataset...
      • Discard working copy changes for dataset
      • Commit working copy changes for dataset...
      • -break-
      • Remove from repository

    Diff Viewer dialog

    • [x] Restore old version
    • [x] Restore new version
    • [x] Don't show restore new version when displaying working-tree changes
    • [x] Project layers should be the default for "additional layers"
    • [x] Map extent needs some padding so vertices don't end up drawn on the edges of the map
    • [x] Swipe cursor should change from hand to resize when the mouse hovers over the black line
    • [x] ~Scrolling to zoom seems really rough~ nevermind, is my machine
    • [x] [status message] Working copy has been updated.

    Layer context menu

    • [x] ~Can we add the Kart icon to make it stand out a bit in the menu?~
    • [x] Wording/icons need to match the other menus
    opened by rcoup 5
  • Add option to remove layer from repository

    Add option to remove layer from repository

    @hamishcampbell @rcoup Not sure how this is done in Kart, since I could not find a command for it.

    Should the plugin just delete the table in the repo database and then commit?

    opened by volaya 5
  • Problem creating a repository

    Problem creating a repository

    Hi!

    Firstable, contragratulations for the plugin! Its a great contribution for the QGIS users community.

    I´m testing the plugin guided by documentation, and when I use the create new repository option, QGIS report me the error message "The specified folder already exists"

    image

    The folder is empty and I don't "init" it before.

    Meanwhile, if I create a new repository with command terminal and add it using the Kart plugin there isn´t any problem.

    This is the information about by environment.

    Kart Plugin version 1.0.1 QGIS version 3.20.2-Odense Operating system Windows 10 10.0.19041 Kart version Kart v0.10.7, Copyright (c) Kart Contributors » GDAL v3.3.2; PROJ v8.1.1 » PyGit2 v1.7.0; Libgit2 v1.3.0; Git v2.29.2.windows.1 » SQLAlchemy v1.4.11; pysqlite3 v2.6.0/v3.31.1; SpatiaLite v5.0.0; Libpq v11.0.9 » SpatialIndex v1.9.3

    Thx

    bug 
    opened by sigdeletras 4
  • New install in QGIS gives Python error UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 591: ordinal not in range(128)

    New install in QGIS gives Python error UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 591: ordinal not in range(128)

    Entirely possible I'm missing something obvious here, but I just tried installing the QGIS Kart plugin, and I'm getting the following error in the Python error log when going to Plugins -> Kart -> About....

    2021-12-20T11:37:56     WARNING    Traceback (most recent call last):
                  File "/Users/leighhunt/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/kart/plugin.py", line 72, in openAbout
                  pluginVersion = self.pluginVersion()
                  File "/Users/leighhunt/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/kart/plugin.py", line 66, in pluginVersion
                  config.read(path)
                  File "/Applications/QGIS.app/Contents/MacOS/../Resources/python/configparser.py", line 697, in read
                  self._read(fp, filename)
                  File "/Applications/QGIS.app/Contents/MacOS/../Resources/python/configparser.py", line 1017, in _read
                  for lineno, line in enumerate(fp, start=1):
                  File "/Applications/QGIS.app/Contents/MacOS/lib/python3.8/encodings/ascii.py", line 26, in decode
                  return codecs.ascii_decode(input, self.errors)[0]
                 UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 591: ordinal not in range(128)
    

    I then went to Plugins -> Kart -> Settings... and set Kart executable to /usr/local/bin/kart and get the following error in the Kart log:

    2021-12-20T11:38:01     INFO    Command: Applications/Kart.app/Contents/MacOS/kart_cli --version
    2021-12-20T11:38:01     CRITICAL    [Errno 2] No such file or directory: 'Applications/Kart.app/Contents/MacOS/kart_cli'
    

    Further info:

    QGIS Plugins log:

    2021-12-20T11:44:50     INFO    Loaded QuickMapServices (package: quick_map_services)
    2021-12-20T11:44:51     INFO    Loaded Relief Visualization Toolbox (package: rvt-qgis)
    2021-12-20T11:44:53     INFO    Loaded Processing (package: processing)
    2021-12-20T11:44:53     INFO    Loaded DB Manager (package: db_manager)
    2021-12-20T11:44:53     INFO    Loaded MetaSearch Catalog Client (package: MetaSearch)
    2021-12-20T11:45:09     INFO    Loaded Kart (package: kart)
    
    which kart
    /usr/local/bin/kart
    
    kart --version
    Kart v0.10.7, Copyright (c) Kart Contributors
    » GDAL v3.3.2; PROJ v6.3.0
    » PyGit2 v1.7.0; Libgit2 v1.3.0; Git v2.33.GIT
    » SQLAlchemy v1.4.11; pysqlite3 v2.6.0/v3.31.1; SpatiaLite v5.0.1; Libpq v14.0.1
    » SpatialIndex v1.9.3
    
    kart_cli
    zsh: command not found: kart_cli
    

    Kart was installed using homebrew, OS: MacOSX Monterey, on MacBook Air with M1 chip. QGIS version 3.18.1-Zürich

    More verbose error message when attempting to see Kart Settings again:

    An error has occurred while executing Python code: 
    
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 591: ordinal not in range(128) 
    Traceback (most recent call last):
      File "/Users/leighhunt/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/kart/plugin.py", line 72, in openAbout
        pluginVersion = self.pluginVersion()
      File "/Users/leighhunt/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/kart/plugin.py", line 66, in pluginVersion
        config.read(path)
      File "/Applications/QGIS.app/Contents/MacOS/../Resources/python/configparser.py", line 697, in read
        self._read(fp, filename)
      File "/Applications/QGIS.app/Contents/MacOS/../Resources/python/configparser.py", line 1017, in _read
        for lineno, line in enumerate(fp, start=1):
      File "/Applications/QGIS.app/Contents/MacOS/lib/python3.8/encodings/ascii.py", line 26, in decode
        return codecs.ascii_decode(input, self.errors)[0]
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 591: ordinal not in range(128)
    
    
    Python version: 3.8.7 (default, Feb 10 2021, 09:04:08) [Clang 12.0.0 (clang-1200.0.32.29)] 
    QGIS version: 3.18.1-Zürich Zürich, 202f1bf7e5 
    
    Python Path:
    /Applications/QGIS.app/Contents/MacOS/../Resources/python
    /Users/leighhunt/Library/Application Support/QGIS/QGIS3/profiles/default/python
    /Users/leighhunt/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins
    /Applications/QGIS.app/Contents/MacOS/../Resources/python/plugins
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/patsy-0.5.1-py3.8.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/Rtree-0.9.4-py3.8.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/geopandas-0.8.1-py3.8.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python38.zip
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/rasterio-1.1.5-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/Fiona-1.8.13.post1-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/click_plugins-1.1.1-py3.8.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/numpy-1.20.1-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/affine-2.3.0-py3.8.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/pandas-1.1.0-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/netCDF4-1.5.4-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/statsmodels-0.11.1-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/lib-dynload
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/cftime-1.2.1-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/pyproj-2.6.0-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/scipy-1.5.1-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/Pillow-7.2.0-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/numba-0.50.1-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/snuggs-1.4.7-py3.8.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/GDAL-3.2.1-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/matplotlib-3.3.0-py3.8-macosx-10.13.0-x86_64.egg
    /Applications/QGIS.app/Contents/MacOS/lib/python3.8/site-packages/opencv_contrib_python-4.3.0.36-py3.8-macosx-10.13.0-x86_64.egg
    /Users/leighhunt/Library/Application Support/QGIS/QGIS3/profiles/default/python
    /Users/leighhunt/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/rvt-qgis
    /Users/leighhunt/dev/playground/covid/covid-geojson
    
    bug 
    opened by leighghunt 4
  • ValueError: too many values to unpack (expected 2)

    ValueError: too many values to unpack (expected 2)

    image_2022-08-23_155102417 When I enter in...

    Show Logs > Show changes introduced by this commit...

    the following error is displayed

    An error has occurred while executing Python code:

    ValueError: too many values to unpack (expected 2) Traceback (most recent call last): File "C:\Users/UTEA/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\kart\gui\diffviewer.py", line 182, in treeItemChanged self._createLayers() File "C:\Users/UTEA/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\kart\gui\diffviewer.py", line 458, in _createLayers self._createFeatureDiffLayers() File "C:\Users/UTEA/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\kart\gui\diffviewer.py", line 513, in _createFeatureDiffLayers self._createVertexDiffLayer(geoms) File "C:\Users/UTEA/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\kart\gui\diffviewer.py", line 557, in _createVertexDiffLayer x, y = coord.strip().split(" ") ValueError: too many values to unpack (expected 2)

    I work with QGIS 3.22.10 and Kart 0.11.3

    Thank you!

    bug 
    opened by bismarksr17 3
  • Can't load datasets from PostGIS working copy

    Can't load datasets from PostGIS working copy

    Describe the bug I have imported datasets into my repository (a localhost postgis working copy), using both the command line and the plugin, but I can't load it into QGIS using the Add to QGIS project option.

    2022-05-04T01:44:23 WARNING Traceback (most recent call last): File "C:\Users/testing/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\kart\gui\dockwidget.py", line 158, in wrapper f(*args) File "C:\Users/testing/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\kart\gui\dockwidget.py", line 734, in addToProject layer = self.repo.workingCopyLayer(self.name) File "C:\Users/testing/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\kart\kartapi.py", line 738, in workingCopyLayer uri.setConnection(host, port, database) TypeError: QgsDataSourceUri.setConnection(): arguments did not match any overloaded call: overload 1: not enough arguments overload 2: not enough arguments

    I am using a Windows 10 virtual machine, with QGIS 3.22.6 and PostgreSQL 13.6 Postgis 3.1

    I am able to load the layers manually, though.

    The same type of error appears when I try to show changes on the working copy dataset. I am able to see the attributes changes, but the geometries changes appear empty and a similar error is shown.

    Version info (this is important!):

    • Operating System (e.g. Windows 10, macOS): Windows 10

    Kart Plugin version 1.0.2 QGIS version 3.22.6-Białowieża Operating system Windows 10 10.0.19044 Kart version Kart v0.11.1, Copyright (c) Kart Contributors » GDAL v3.3.2; PROJ v8.1.1 » PyGit2 v1.9.0; Libgit2 v1.4.2; Git v2.34.0.windows.1.13.g93318cbc8d » SQLAlchemy v1.4.29; pysqlite3 v2.6.0/v3.31.1; SpatiaLite v5.0.0; Libpq v11.0.9 » SpatialIndex v1.9.3

    Paste the contents from "Plugins...Kart...About Kart" into here
    
    bug 
    opened by SrNetoChan 3
  • Plugin doesn't load

    Plugin doesn't load

    Describe the bug Plugin doesn't load.

    To Reproduce Steps to reproduce the behavior:

    1. Open Plugin Manager
    2. Find Kart plugin and attempt to install
    3. Get error: Couldn't load plugin 'kart' due to an error when calling its classFactory() method, ModuleNotFoundError: No module named 'mock' (full error below)
    4. Install from zip instead
    5. Close & re-open QGIS
    6. On QGIS start, same error

    Expected behavior I expected the plugin to install & open without error.

    Version info (this is important!):

    • Operating System (e.g. Windows 10, macOS): Ubuntu 20.04
    • QGIS, Kart & Plugin details:
      • Kart v0.10.7
      • QGIS version: 3.22.1

    Additional context Full error message:

    Couldn't load plugin 'kart' due to an error when calling its classFactory() method 
    
    ModuleNotFoundError: No module named 'mock' 
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/qgis/utils.py", line 423, in _startPlugin
        plugins[packageName] = package.classFactory(iface)
      File "/home/john/.local/share/QGIS/QGIS3/profiles/default/python/plugins/kart/__init__.py", line 2, in classFactory
        from kart.plugin import KartPlugin
      File "/usr/lib/python3/dist-packages/qgis/utils.py", line 888, in _import
        mod = _builtin_import(name, globals, locals, fromlist, level)
      File "/home/john/.local/share/QGIS/QGIS3/profiles/default/python/plugins/kart/plugin.py", line 11, in 
        from kart.gui.dockwidget import KartDockWidget
      File "/usr/lib/python3/dist-packages/qgis/utils.py", line 888, in _import
        mod = _builtin_import(name, globals, locals, fromlist, level)
      File "/home/john/.local/share/QGIS/QGIS3/profiles/default/python/plugins/kart/gui/dockwidget.py", line 27, in 
        from kart.kartapi import (
      File "/usr/lib/python3/dist-packages/qgis/utils.py", line 888, in _import
        mod = _builtin_import(name, globals, locals, fromlist, level)
      File "/home/john/.local/share/QGIS/QGIS3/profiles/default/python/plugins/kart/kartapi.py", line 31, in 
        from kart.gui.installationwarningdialog import InstallationWarningDialog
      File "/usr/lib/python3/dist-packages/qgis/utils.py", line 888, in _import
        mod = _builtin_import(name, globals, locals, fromlist, level)
      File "/home/john/.local/share/QGIS/QGIS3/profiles/default/python/plugins/kart/gui/installationwarningdialog.py", line 13, in 
        from kart.gui.settingsdialog import SettingsDialog
      File "/usr/lib/python3/dist-packages/qgis/utils.py", line 888, in _import
        mod = _builtin_import(name, globals, locals, fromlist, level)
      File "/home/john/.local/share/QGIS/QGIS3/profiles/default/python/plugins/kart/gui/settingsdialog.py", line 9, in 
        from kart.utils import setting, setSetting, KARTPATH, AUTOCOMMIT, DIFFSTYLES
      File "/usr/lib/python3/dist-packages/qgis/utils.py", line 888, in _import
        mod = _builtin_import(name, globals, locals, fromlist, level)
      File "/home/john/.local/share/QGIS/QGIS3/profiles/default/python/plugins/kart/utils.py", line 7, in 
        from qgis.testing.mocked import get_iface
      File "/usr/lib/python3/dist-packages/qgis/utils.py", line 888, in _import
        mod = _builtin_import(name, globals, locals, fromlist, level)
      File "/usr/lib/python3/dist-packages/qgis/testing/mocked.py", line 26, in 
        import mock
      File "/usr/lib/python3/dist-packages/qgis/utils.py", line 888, in _import
        mod = _builtin_import(name, globals, locals, fromlist, level)
    ModuleNotFoundError: No module named 'mock'
    
    
    Python version: 3.8.10 (default, Nov 26 2021, 20:14:08) [GCC 9.3.0] 
    QGIS version: 3.22.1-Białowieża Białowieża, 663dcf8fb9 
    
    Python Path:
    /usr/share/python-wheels/chardet-3.0.4-py2.py3-none-any.whl
    /usr/share/python-wheels/requests-2.22.0-py2.py3-none-any.whl
    /usr/share/python-wheels/colorama-0.4.3-py2.py3-none-any.whl
    /usr/share/python-wheels/html5lib-1.0.1-py2.py3-none-any.whl
    /usr/share/python-wheels/toml-0.10.0-py2.py3-none-any.whl
    /usr/share/python-wheels/lockfile-0.12.2-py2.py3-none-any.whl
    /usr/share/python-wheels/setuptools-44.0.0-py2.py3-none-any.whl
    /usr/share/python-wheels/progress-1.5-py2.py3-none-any.whl
    /usr/share/python-wheels/packaging-20.3-py2.py3-none-any.whl
    /usr/share/python-wheels/retrying-1.3.3-py2.py3-none-any.whl
    /usr/share/python-wheels/idna-2.8-py2.py3-none-any.whl
    /usr/share/python-wheels/wheel-0.34.2-py2.py3-none-any.whl
    /usr/share/python-wheels/six-1.14.0-py2.py3-none-any.whl
    /usr/share/python-wheels/webencodings-0.5.1-py2.py3-none-any.whl
    /usr/share/python-wheels/distlib-0.3.0-py2.py3-none-any.whl
    /usr/share/python-wheels/msgpack-0.6.2-py2.py3-none-any.whl
    /usr/share/python-wheels/ipaddr-2.2.0-py2.py3-none-any.whl
    /usr/share/python-wheels/pyparsing-2.4.6-py2.py3-none-any.whl
    /usr/share/python-wheels/distro-1.4.0-py2.py3-none-any.whl
    /usr/share/python-wheels/pip-20.0.2-py2.py3-none-any.whl
    /usr/share/python-wheels/contextlib2-0.6.0-py2.py3-none-any.whl
    /usr/share/python-wheels/CacheControl-0.12.6-py2.py3-none-any.whl
    /usr/share/python-wheels/urllib3-1.25.8-py2.py3-none-any.whl
    /usr/share/python-wheels/certifi-2019.11.28-py2.py3-none-any.whl
    /usr/share/python-wheels/pep517-0.8.2-py2.py3-none-any.whl
    /usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl
    /usr/share/python-wheels/appdirs-1.4.3-py2.py3-none-any.whl
    /usr/share/qgis/python
    /home/john/.local/share/QGIS/QGIS3/profiles/default/python
    /home/john/.local/share/QGIS/QGIS3/profiles/default/python/plugins
    /usr/share/qgis/python/plugins
    /usr/lib/python38.zip
    /usr/lib/python3.8
    /usr/lib/python3.8/lib-dynload
    /usr/local/lib/python3.8/dist-packages
    /usr/lib/python3/dist-packages
    /home/john/.local/share/QGIS/QGIS3/profiles/default/python
    
    bug 
    opened by johnwbryant 3
  • Make it easier to create branches

    Make it easier to create branches

    Is your feature request related to a problem? Please describe.

    The only place you can create a branch is from within the Repo Log window by right clicking a particular commit to branch from. This is a bit obscure and I would expect to be able to create a branch from the right click menu of the Repo itself, and possibly from within the "Switch Branch" dialog.

    Usually you want to create a branch from the current state of the Repository, so going into the Log shouldn't really be necessary for most use cases.

    Describe the solution you'd like

    Add a "create branch" option to the right click context menu for a Repository (or similar option).

    enhancement 
    opened by hamishcampbell 0
  • History filtering local/UTC time

    History filtering local/UTC time

    It seems that Kart uses UTC for storing all operations (good), however when using history in the plugin depending on the time of the day it will set filter to local machine time which would hide the graph nodes. My timezone is UTC-6 I added some data and I thought it was empty but when expanding the search for the 8th the graph is there, do not know an easy way to handle this but for new people it may be confusing, and I don't know if this is mentioned in the documentation

    image

    image

    enhancement 
    opened by antoniolocandro 1
  • Handling duplicate name/conflict

    Handling duplicate name/conflict

    if the kart repository already includes a layer that happens to have the same name as one you are importing the plugin shows only there is conflict but no way to handle it, ideally it would allow user to specify a non-conflicting name if wanted or cancel the operations

    Steps:

    1. Add a layer to the dataset from any source for example 'airportheliport'
    2. Load a GPKG that also has a source 'airportheliport'

    image

    bug 
    opened by antoniolocandro 1
  • 'show feature history' will always show features from a layer even if it isn't currently visible

    'show feature history' will always show features from a layer even if it isn't currently visible

    Describe the bug If there are more than one layers from Kart repos on a map and "Activate 'show feature history' map tool" is selected on a layer which is not the top most feature history from that layer will always be used even if features from other layers are 'in front' of that chosen layer.

    Expected behavior Not sure as the choice was explicit but the end result is at best non obvious, particularly if the layers are from the same 'Author'. Potentially it should highlight the selected feature as per 'select features' QGIS command.

    Screenshots

    Screenshot 2022-11-07 at 6 16 10 pm Screenshot 2022-11-07 at 6 20 25 pm Screenshot 2022-11-07 at 6 23 14 pm

    Version info (this is important!):

    • Operating System (e.g. Windows 10, macOS): MacOS
    • QGIS, Kart & Plugin details: QGIS 3.28 Kart plugin 1.0.4
    Kart Plugin version
    1.0.4
    QGIS version
    3.28.0-Firenze
    Operating system
    macOS 13.0 x86_64 i386 64bit
    Kart version
    Kart v0.11.5, Copyright (c) Kart Contributors
    » GDAL v3.4.0; PROJ v6.3.0
    » PyGit2 v1.9.0; Libgit2 v1.4.2; Git v2.33.GIT
    » SQLAlchemy v1.4.40; pysqlite3 v2.6.0/v3.31.1; SpatiaLite v5.0.1; Libpq v14.0.5
    » SpatialIndex v1.9.3
    
    bug 
    opened by pfw 2
  • If GPKG has more than one layer it complains no table is specified

    If GPKG has more than one layer it complains no table is specified

    Import a GPKG with more than one layer the following popup shows but there is no option to select which table, so it seems only single layer GPKG are supported

    image

    Ideally when adding a GPKG with multiple tables a user would be able to select all the tables that they want imported to keep track off

    As a sample the world_map.gpkg shipped with QGIS may be used

    bug 
    opened by antoniolocandro 0
Releases(v1.0.3)
  • v1.0.3-rc.1(Aug 25, 2022)

    What's Changed

    • Usage was always showing for ‘install’ and ‘package’ by @pfw in https://github.com/koordinates/kart-qgis-plugin/pull/61
    • Ensure user name and email aren’t blank strings on commit by @pfw in https://github.com/koordinates/kart-qgis-plugin/pull/60
    • parse PostgreSQL username and password from working copy location #63 by @SrNetoChan in https://github.com/koordinates/kart-qgis-plugin/pull/64
    • Maintain the same tab in diffviewer as features are selected by @pfw in https://github.com/koordinates/kart-qgis-plugin/pull/67
    • Support old and new style feature id strings by @pfw in https://github.com/koordinates/kart-qgis-plugin/pull/69
    • Renaming changes to diff for consistency by @benpearman in https://github.com/koordinates/kart-qgis-plugin/pull/71
    • Require Kart 0.11. Fix warning from --json-style option by @craigds in https://github.com/koordinates/kart-qgis-plugin/pull/73
    • Only x and y are used in the diff viewer by @pfw in https://github.com/koordinates/kart-qgis-plugin/pull/68
    • Update to require latest release of 0.11.5 by @pfw in https://github.com/koordinates/kart-qgis-plugin/pull/75

    New Contributors

    • @pfw made their first contribution in https://github.com/koordinates/kart-qgis-plugin/pull/61
    • @SrNetoChan made their first contribution in https://github.com/koordinates/kart-qgis-plugin/pull/64
    • @benpearman made their first contribution in https://github.com/koordinates/kart-qgis-plugin/pull/71
    • @craigds made their first contribution in https://github.com/koordinates/kart-qgis-plugin/pull/73

    Full Changelog: https://github.com/koordinates/kart-qgis-plugin/compare/v1.0.2...v1.0.3-rc.1

    Source code(tar.gz)
    Source code(zip)
    kart-v1.0.3-rc.1.zip(106.08 KB)
  • v1.0.2(Feb 21, 2022)

    Full Changelog: https://github.com/koordinates/kart-qgis-plugin/compare/v1.0.1...v1.0.2

    • The plugin now helps you install the latest Kart version on Windows & macOS
    • You can now import Kart datasets from a PostGIS database
    • Fix for Kart version detection/compatibility (#59)
    • Fix for repository creation in an empty folder (#53)
    • Fix for an error during push (#54)
    • Fix for an error when you remove a dataset from a repository (#58)
    Source code(tar.gz)
    Source code(zip)
    kart-v1.0.2.zip(105.22 KB)
  • v1.0.1(Dec 21, 2021)

  • v1.0.0(Dec 16, 2021)

    This is the initial release of the Kart plugin for QGIS.

    We've exposed much of the basic Kart functionality inside QGIS to allow working with Kart repositories — cloning, creating, making changes and reviewing commit histories. We will continue to extend the functionality, and we'd love to hear your ideas — either create an issue for a specific improvement or start a discussion with any wider ideas you have.

    You can install the plugin via the plugin zip archive below, or search for "Kart" in the QGIS plugins repository.

    Source code(tar.gz)
    Source code(zip)
    kart-v1.0.0.zip(100.32 KB)
Owner
Koordinates
A geospatial data management platform inspired by cracking GIS data out of vendor silos. You can host, manage, share, publish, access, and build apps.
Koordinates
Explore-bikeshare-data - GitHub project as part of the Programming for Data Science with Python Nanodegree from Udacity

Date created February 10, 2022 Project Title Explore US Bikeshare Data Descripti

Thárcyla 1 Feb 14, 2022
🔤 Measure edit distance based on keyboard layout

clavier Measure edit distance based on keyboard layout. Table of contents Table of contents Introduction Installation User guide Keyboard layouts Dist

Max Halford 42 Dec 18, 2022
⚙️ Compile, Read and update your .conf file in python

⚙️ Compile, Read and update your .conf file in python

Reece Harris 2 Aug 15, 2022
Este projeto se trata de uma análise de campanhas de marketing de uma empresa que vende acessórios para veículos.

Marketing Campaigns Este projeto se trata de uma análise de campanhas de marketing de uma empresa que vende acessórios para veículos. 1. Problema A em

Bibiana Prevedello 1 Jan 12, 2022
Shows a pixel art of any Pokémon in your terminal!

pokemon-icat This script is inspired by this project, but since the output heavily depends on the font of your terminal, i decided to make a script th

ph04 52 Dec 22, 2022
ASVspoof 2021 Baseline Systems

ASVspoof 2021 Baseline Systems Baseline systems are grouped by task: Speech Deepfake (DF) Logical Access (LA) Physical Access (PA) Please find more de

91 Dec 28, 2022
LAPS module for CrackMapExec

Crackmapexec-LAPS LAPS module for CrackMapExec Make sure to point to the DC Specify the full domain name Be careful the rid 500 might not be "Administ

28 Oct 05, 2022
A Notifier Program that Notifies you to relax your eyes Every 15 Minutes👀

Every 15 Minutes is an application that is used to Notify you to Relax your eyes Every 15 Minutes, This is fully made with Python and also with the us

FSP Gang s' YT 2 Nov 11, 2021
Simple calculator made in python

calculator Uma alculadora simples feita em python CMD, PowerShell, Bash ✔️ Início 💻 apt-get update apt-get upgrade -y apt-get install python git git

Spyware 8 Dec 28, 2021
Null safe support for Python

Null Safe Python Null safe support for Python. Installation pip install nullsafe Quick Start Dummy Class class Dummy: pass Normal Python code: o =

Paaksing 13 Nov 17, 2022
Data-driven Computer Science UoB

COMS20011_2021 Data-driven Computer Science UoB Staff Laurence Aitchison [ 6 May 16, 2022

Voldemort's Python import helper

importmagician Voldemort's Python import helper pip install importmagician Import from uninstalled Python directories Say you have a directory (relat

Zhengyang Feng 4 Mar 09, 2022
Design-by-contract in Python3 with informative violation messages and inheritance

icontract icontract provides design-by-contract to Python3 with informative violation messages and inheritance. It also gives a base for a flourishing

275 Jan 02, 2023
This is the repo for Uncertainty Quantification 360 Toolkit.

UQ360 The Uncertainty Quantification 360 (UQ360) toolkit is an open-source Python package that provides a diverse set of algorithms to quantify uncert

International Business Machines 207 Dec 30, 2022
This is some simple code to scrape vistbook's system to get an overview of the different cabins availability.

DNT_cabin_availability_system This is some simple code to scrape visbook's system to get an overview of the different cabins availability. The system

Andreas Lorentzen 1 Sep 25, 2022
Singularity Containers on Apple M1 (ARM64)

Singularity Containers on Apple M1 (ARM64) This is a repository containing a ready-to-use environment for singularity in arm64 (M1). It has been prepa

Manuel Parra 4 Nov 14, 2022
A python script to simplify recompiling, signing and installing reverse engineered android apps.

urszi.py A python script to simplify the Uninstall Recompile Sign Zipalign Install cycle when reverse engineering Android applications. It checks if d

Ahmed Harmouche 4 Jun 24, 2022
A multi-platform fuzzer for poking at userland binaries and servers

litefuzz A multi-platform fuzzer for poking at userland binaries and servers litefuzz intro why how it works what it does what it doesn't do support p

52 Nov 18, 2022
An async API wrapper for Dress To Impress written in Python.

dti.py An async API wrapper for Dress To Impress written in Python. Some notes: For the time being, there are no front-facing docs for this beyond doc

Steve C 1 Dec 14, 2022
lets learn Python language with basic examples. highly recommended for beginners who just start coding.

Lets Learn Python 🐍 Learn python from basic programs. learn python from scratch. 1.Online python compiler: https://www.onlinegdb.com/online_python_co

Subhranshu Choudhury 1 Jan 18, 2022