[GRASS-dev] [GRASS GIS] #3392: t.register: encoding error
GRASS GIS
trac at osgeo.org
Sun Aug 13 14:23:39 PDT 2017
#3392: t.register: encoding error
--------------------------+---------------------------------
Reporter: mlennert | Owner: grass-dev@…
Type: defect | Status: new
Priority: normal | Milestone: 7.2.2
Component: Temporal | Version: svn-trunk
Resolution: | Keywords: t.register encoding
CPU: Unspecified | Platform: Unspecified
--------------------------+---------------------------------
Comment (by annakrat):
The problem mostly comes from calling gisenv function from script.utils
which returns unicode. This was done some time ago to make the library
Python3 compatible. So we eventually need to move towards unicode, but to
have a quick fix for the release, we can keep the temporal library using
bytestrings. This is a possible solution:
{{{
Index: lib/python/temporal/core.py
===================================================================
--- lib/python/temporal/core.py (revision 71395)
+++ lib/python/temporal/core.py (working copy)
@@ -542,9 +542,9 @@
grassenv = gscript.gisenv()
# Set the global variable for faster access
- current_mapset = grassenv["MAPSET"]
- current_location = grassenv["LOCATION_NAME"]
- current_gisdbase = grassenv["GISDBASE"]
+ current_mapset = gscript.encode(grassenv["MAPSET"])
+ current_location = gscript.encode(grassenv["LOCATION_NAME"])
+ current_gisdbase = gscript.encode(grassenv["GISDBASE"])
# Check environment variable GRASS_TGIS_RAISE_ON_ERROR
if os.getenv("GRASS_TGIS_RAISE_ON_ERROR") == "True" or \
@@ -1107,6 +1107,7 @@
detect_types=self.dbmi.PARSE_DECLTYPES |
self.dbmi.PARSE_COLNAMES)
self.connection.row_factory = self.dbmi.Row
self.connection.isolation_level = None
+ self.connection.text_factory = str
self.cursor = self.connection.cursor()
self.cursor.execute("PRAGMA synchronous = OFF")
self.cursor.execute("PRAGMA journal_mode = MEMORY")
}}}
plus all gisenv calls in temporal modules need to be encoded to not let
any unicode into the library. I would appreciate if somebody could test it
more thoroughly. This would be a temporary solution, we need to move to
unicode eventually, but I think that would require more time to fix and
more significant changes.
Also, this works only for sqlite3 backend, I haven't looked at postgres...
--
Ticket URL: <https://trac.osgeo.org/grass/ticket/3392#comment:12>
GRASS GIS <https://grass.osgeo.org>
More information about the grass-dev
mailing list