changeset 8:2352d14ae261

Make the packagedata automatic subdir customizable
author Franz Glasner <fzglas.hg@dom66.de>
date Fri, 07 Jul 2023 00:32:30 +0200
parents 72f8dd2ce0ba
children f4e1b6d6fe63
files data_schema/util.py
diffstat 1 files changed, 9 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/data_schema/util.py	Fri Jul 07 00:00:50 2023 +0200
+++ b/data_schema/util.py	Fri Jul 07 00:32:30 2023 +0200
@@ -32,7 +32,8 @@
     return True
 
 
-def get_data_stream(uri, basedir=None, basepackage=None):
+def get_data_stream(uri, basedir=None,
+                    basepackage=None, packagesubdir="packagedata"):
     """
 
     "data:" URIs are resolved as Python package resources for packages
@@ -41,7 +42,7 @@
 
     "file:" URIs are resolved by prepending `basedir` to the URI path.
 
-    "data:" URIs are resolve within "<basepackage>.packagedata".
+    "data:" URIs are resolve within "<basepackage>.<packagesubdir>".
 
     The returned stream needs to be closes as usual.
 
@@ -79,13 +80,17 @@
                     datapath_sep = '.'
                 else:
                     datapath_sep = ''
+                if packagesubdir:
+                    psubdir = "." + packagesubdir
                 return il_resources.open_binary(
-                    datapackage + '.packagedata' + datapath_sep
+                    datapackage + psubdir + datapath_sep
                         + '.'.join(datapath_dirs),               # noqa: E131
                     datapath_file)
             else:
+                if packagesubdir:
+                    psubdir = packagesubdir + "/"
                 return pkg_resources.resource_stream(  # noqa:E501    # pylint:disable=used-before-assignment
-                    datapackage, "packagedata/" + datapath)
+                    datapackage, psubdir + datapath)
         else:
             raise ValueError(
                 "URI path for the `data' scheme must not be absolute")