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
Este script añade la config de s4vitar a bspwm automaticamente!

Se ha testeado este script en ParrotOS, Kali y Ubuntu. Funciona para todos los sistemas operativos basados en Debian. Instalación git clone https://gi

yorkox 201 Dec 30, 2022
WordlistPasswordGenerator - Shuhfab Basheer

WordlistPasswordGenerator - Shuhfab Basheer Python wordlist generator MAINTAINER

1 Dec 31, 2021
You'll learn about Iterators, Generators, Closure, Decorators, Property, and RegEx in detail with examples.

07_Python_Advanced_Topics Introduction 👋 In this tutorial, you will learn about: Python Iterators: They are objects that can be iterated upon. In thi

Milaan Parmar / Милан пармар / _米兰 帕尔马 252 Dec 23, 2022
Basic cryptography done in Python for study purposes

criptografia Criptografia básica feita em Python para fins de estudo Converte letras em numeros partindo do indice 0 e vice-versa A criptografia é fei

Carlos Eduardo 2 Dec 05, 2021
3D Printed Flip Clock Design and Code

Smart Flip Clock 3D printed smart clock that puts a new twist on old technology. Making The Smart Flip Clock The first thing that must be done for thi

Thomas 105 Oct 17, 2022
Job Guy Backend

جاب‌گای چیست؟ اونجا وضعیت چطوریه؟ یه سوال به همین کلیت و ابهام معمولا وقتی برای یه شرکت رزومه می‌فرستیم این سوال کلی و بزرگ برای همه پیش میاد.اونجا وض

Jobguy.work 217 Dec 25, 2022
Python solutions to Codeforces problems

CodeForces This repository is dedicated to my Python solutions for CodeForces problems. Feel free to copy, contribute and/or comment. If you find any

Shukur Sabzaliev 15 Dec 20, 2022
Course materials for a 3-day seminar "Machine Learning and NLP: Advances and Applications" at New College of Florida

Machine Learning and NLP: Advances and Applications This repository hosts the course materials used for a 3-day seminar "Machine Learning and NLP: Adv

Yoshi Suhara 11 Jun 22, 2022
A Puzzle A Day Keep the Work Away

A Puzzle A Day Keep the Work Away No moyu again!

P4SSER8Y 5 Feb 12, 2022
A project to work with databases in 4 worksheets, insert, update, select, delete using Python and MySqI

A project to work with databases in 4 worksheets, insert, update, select, delete using Python and MySqI As a small project for school or college hope it is useful

Sina Org 1 Jan 11, 2022
🍕 A small app with capabilities ordering food and listing them with pub/sub pattern

food-ordering A small app with capabilities ordering food and listing them. Prerequisites Docker Run Tests docker-compose run --rm web ./manage.py tes

Muhammet Mücahit 1 Jan 14, 2022
A Brainfuck interpreter written in Python.

A Brainfuck interpreter written in Python.

Ethan Evans 1 Dec 05, 2021
Easily Generate Revolut Business Cards

RevBusinessCardGen Easily Generate Revolut Business Cards Prerequisites Before you begin, ensure you have met the following requirements: You have ins

Younes™ 35 Dec 14, 2022
Python based scripts for obtaining system information from Linux.

sysinfo Python based scripts for obtaining system information from Linux. Python2 and Python3 compatible Output in JSON format Simple scripts and exte

Petr Vavrin 70 Dec 20, 2022
Watcher for systemdrun user scopes

Systemctl Memory Watcher Animated watcher for systemdrun user scopes. Usage Launch some process in your GNU-Linux or compatible OS with systemd-run co

Antonio Vanegas 2 Jan 20, 2022
Python Create Your Own Tool Series

Python Create Your Own Tool Series Hey there! This is an additional Github repository that contains the final product files for each video in my Youtu

Joe Helle 21 Dec 02, 2022
Exactly what it sounds like, which is something rad

EyeWitnessTheFitness External recon got ya down? That scan prevention system preventing you from enumerating web pages? Well look no further, I have t

Ellis Springe 18 Dec 31, 2022
Web service which feeds Navitia with real-time disruptions

Chaos Chaos is the web service which can feed Navitia with real-time disruptions. It can work together with Kirin which can feed Navitia with real-tim

KISIO Digital 7 Jan 07, 2022
Web app to find your chance of winning at Texas Hold 'Em

poker_mc Web app to find your chance of winning at Texas Hold 'Em A working version of this project is deployed at poker-mc.ue.r.appspot.com. It's run

Aadith Vittala 7 Sep 15, 2021
Bookmarkarchiver - Python script that archives all of your bookmarks on the Internet Archive

bookmarkarchiver Python script that archives all of your bookmarks on the Internet Archive. Supports all major browsers. bookmarkarchiver uses the off

Anthony Chen 3 Oct 09, 2022