# This file contains metadata for your plugin.

# This file should be included when you package your plugin.# Mandatory items:

[general]
name=Snowflake Connector for QGIS
qgisMinimumVersion=3.34.1
qgisMaximumVersion=4.99
description=This package includes the Snowflake Connector for QGIS.
version=1.0.24
author=Snowflake Inc.
email=erick.cuberojimenez@snowflake.com

about=The Snowflake Connector for QGIS provides an interface for open-source GIS application QGIS that can connect to Snowflake and perform all standard operations.

tracker=https://github.com/snowflakedb/qgis-snowflake-connector/issues/
repository=https://github.com/snowflakedb/qgis-snowflake-connector/
# End of mandatory metadata

# Recommended items:

hasProcessingProvider=yes
changelog=1.0.24 - Packaging/security fixes for the QGIS Plugin Repository
 validation scan: annotate two best-effort cleanup try/except blocks (the
 Buffer algorithm's temp-table teardown and the feature iterator's cursor
 close) with documented bandit B110 suppressions, matching the convention
 already used elsewhere, and remove the Sphinx help/make.bat Windows helper
 so it no longer trips the suspicious-file check. No user-visible behaviour
 change.
 1.0.23 - Fix plugin load failure ("AttributeError: module 'lib'
 has no attribute 'GEN_EMAIL'"): this is a cryptography/pyOpenSSL version
 mismatch in the QGIS Python environment (cryptography 49+ removed OpenSSL
 bindings that older pyOpenSSL still references), not a QGIS version issue.
 classFactory now catches any load-time exception (not just ImportError) so
 the plugin degrades to a no-op stub with an actionable message instead of a
 raw traceback dialog, and logs the resolved versions and paths of
 snowflake-connector-python, cryptography and pyOpenSSL to help diagnose
 per-user site-packages shadowing.
 1.0.22 - Fix from end-to-end feature testing: editing a feature on a
 Snowflake layer crashed with "TypeError: list indices must be integers or
 slices, not str" because FilterFid/FilterFids requests were pushed down to SQL
 using a column name as a list index. Feature ids are fetch-order positions, not
 primary keys, so these requests are now resolved from the in-memory feature
 cache instead, fixing the identify/attribute-table edit workflow.
 1.0.21 - Fix from end-to-end feature testing: the custom Snowflake
 expression functions (sf_h3_resolution, sf_h3_is_valid, sf_h3_to_string) were
 declared with an extra "node" parameter that QGIS never injects, so every call
 raised a TypeError and returned NULL in the field calculator, labeling, and
 symbology. The unused parameter was removed so the functions evaluate
 correctly.
 1.0.20 - Fix from end-to-end processing testing: Import from
 Snowflake now stores TIMESTAMP/DATE/TIME columns correctly instead of
 silently dropping every feature. Snowflake returns temporal values as
 Python datetime objects, which the memory/OGR sink cannot store directly;
 they are now coerced to QDateTime/QDate/QTime, mirroring the existing
 NUMBER (Decimal) handling.
 1.0.19 - Fixes from end-to-end processing testing:
 * Buffer (server-side) on GEOGRAPHY no longer freezes QGIS. Snowflake's
   optimizer produced a never-returning plan when ST_TRANSFORM and ST_BUFFER
   were fused in one expression; the reproject/buffer/reproject steps are now
   materialized into separate temporary tables.
 * Import from Snowflake now stores numeric (NUMBER) values correctly instead
   of silently dropping every feature (Decimal values are coerced to float).
 * Connections set a bounded STATEMENT_TIMEOUT_IN_SECONDS so a stuck query can
   no longer block the UI indefinitely.
 1.0.18 - Processing algorithms (Buffer, H3 index, Spatial join,
 Execute SQL) now reuse the existing Snowflake connection instead of
 force-closing and rebuilding it, fixing a UI freeze and the disruption of
 already-loaded layers when running an algorithm.
 1.0.17 - Correctness and performance fixes from end-to-end testing:
 integer/NUMBER columns (including primary keys) now display as integers instead
 of decimals; table layers reference their fully-qualified database.schema.table
 so counts/extent/queries no longer depend on the session's current schema;
 single-geometry layers use a cheaper feature count; field type names now show
 the Snowflake source type; and custom SQL-query layers no longer log a
 misleading "primary key not verified" read-only reason.
 1.0.16 - Packaging/metadata cleanup for the QGIS plugin repository:
 remove the deprecated supportsQt6 flag (QGIS 4 compatibility is set via
 qgisMaximumVersion) and exclude the Sphinx help/make.bat from the package so
 it no longer trips the repository's suspicious-file scan.
 1.0.15 - Fix layer load/rendering error at its root: remove a stray
 sys.path entry that let the plugin modules import under two names, causing a
 ModuleNotFoundError in SFFeatureSource. Restores the canonical package folder
 name for the QGIS plugin repository.
 1.0.14 - Packaging change (superseded by 1.0.15).
 1.0.13 - Fix SNOW-3712094 auth-config reuse: load the stored config
 with full=True so the connection alias is matched and the existing authcfg id
 is reused, instead of leaking a new QGIS auth config on every layer creation.
 1.0.12 - Fix plugin load failure ("cannot import name
 'QgsSqlExpressionCompiler' from 'qgis.core'"): reimplement the filter/subset
 expression compiler as a pure-Python QgsExpression AST walker, since
 QgsSqlExpressionCompiler is not exposed in the PyQGIS bindings. Injection
 protection and fail-safe fallback behaviour are preserved.
 1.0.11 - Security hardening for QGIS plugin portal scan:
 route all remaining raw identifier interpolation in helpers/layer_creation.py
 and tasks/sf_connect_task.py through quote_identifier / quote_literal /
 qualified_table_name; validate URL scheme and host before the GitHub update
 check in qgis_snowflake_connector.py; replace silent exception swallowing in
 the feature iterator and export algorithm with QgsMessageLog diagnostics;
 annotate already-sanitized SQL construction sites with documented bandit
 suppressions. No user-visible behaviour change.
 1.0.10 - Refresh attribute table after edits without reopening the layer;
 advertise auto-increment default for numeric primary keys via defaultValueClause();
 add "Load all rows" option for tables exceeding the 50,000-row visualization limit.

# Tags are comma separated with spaces allowed
tags=Snowflake, data provider

homepage=https://docs.snowflake.com/en/sql-reference/functions-geospatial/
category=Analysis
icon=icon.png
# experimental flag
experimental=False

# deprecated flag (applies to the whole plugin, not just a single version)
deprecated=False

# Since QGIS 3.8, a comma separated list of plugins to be installed
# (or upgraded) can be specified.
# Check the documentation for more information.
# plugin_dependencies=

Category of the plugin: Raster, Vector, Database or Web
# category=Database

# If the plugin can run on QGIS Server.
server=False

