Exemple #1
0
    def check_proj4_data(cls):
        """ Check the correctness of os env PROJ_LIB """

        if cls.proj4_data_fixed:
            return

        if hasattr(pyproj, 'pyproj_datadir'):
            # noinspection PyTypeChecker
            proj_path = os.path.join(pyproj.pyproj_datadir, "epsg")
            if os.path.exists(proj_path):
                # logger.debug("PROJ_LIB = %s" % proj_path)
                return

        if 'PROJ_LIB' in os.environ:

            # logger.debug("unset original PROJ_LIB = %s" % os.environ['PROJ_LIB'])
            del os.environ['PROJ_LIB']

        proj4_data_path1 = os.path.join(os.path.dirname(pyproj.__file__),
                                        'data')
        epsg_path1 = os.path.join(proj4_data_path1, 'epsg')
        if os.path.exists(epsg_path1):

            os.environ['PROJ_LIB'] = proj4_data_path1
            if hasattr(pyproj, 'pyproj_datadir'):
                pyproj.pyproj_datadir = proj4_data_path1
            # logger.debug("PROJ_LIB = %s" % os.environ['PROJ_LIB'])
            cls.proj4_data_fixed = True
            return

        # anaconda specific (Win)
        proj4_data_path2 = os.path.join(Helper.python_path(), 'Library',
                                        'data')
        epsg_path2 = os.path.join(proj4_data_path2, 'epsg')
        if os.path.exists(epsg_path2):

            os.environ['PROJ_LIB'] = proj4_data_path2
            if hasattr(pyproj, 'pyproj_datadir'):
                pyproj.pyproj_datadir = proj4_data_path2
            # logger.debug("PROJ_LIB = %s" % os.environ['PROJ_LIB'])
            cls.proj4_data_fixed = True
            return

        # anaconda specific (Win)
        proj4_data_path3 = os.path.join(Helper.python_path(), 'Library',
                                        'share')
        epsg_path3 = os.path.join(proj4_data_path3, 'epsg')
        if os.path.exists(epsg_path3):

            os.environ['PROJ_LIB'] = proj4_data_path3
            if hasattr(pyproj, 'pyproj_datadir'):
                pyproj.pyproj_datadir = proj4_data_path3
            # logger.debug("PROJ_LIB = %s" % os.environ['PROJ_LIB'])
            cls.proj4_data_fixed = True
            return

        # anaconda specific (Linux)
        proj4_data_path4 = os.path.join(Helper.python_path(), 'share')
        epsg_path4 = os.path.join(proj4_data_path4, 'epsg')
        if os.path.exists(epsg_path4):

            os.environ['PROJ_LIB'] = proj4_data_path4
            if hasattr(pyproj, 'pyproj_datadir'):
                pyproj.pyproj_datadir = proj4_data_path4
            # logger.debug("PROJ_LIB = %s" % os.environ['PROJ_LIB'])
            cls.proj4_data_fixed = True
            return

        # anaconda specific (Linux)
        proj4_data_path5 = os.path.join(Helper.python_path(), 'share', 'proj')
        proj_db_path5 = os.path.join(proj4_data_path5, 'proj.db')
        if os.path.exists(proj_db_path5):

            os.environ['PROJ_LIB'] = proj4_data_path5
            if hasattr(pyproj, 'pyproj_datadir'):
                pyproj.pyproj_datadir = proj4_data_path5
            # logger.debug("PROJ_LIB = %s" % os.environ['PROJ_LIB'])
            cls.proj4_data_fixed = True
            return

        # anaconda specific (Win)
        proj4_data_path6 = os.path.join(Helper.python_path(), 'Library',
                                        'share', 'proj')
        proj_db_path6 = os.path.join(proj4_data_path6, 'proj.db')
        if os.path.exists(proj_db_path6):

            os.environ['PROJ_LIB'] = proj4_data_path6
            if hasattr(pyproj, 'pyproj_datadir'):
                pyproj.pyproj_datadir = proj4_data_path6
            # logger.debug("PROJ_LIB = %s" % os.environ['PROJ_LIB'])
            cls.proj4_data_fixed = True
            return

        try:
            # noinspection PyUnresolvedReferences
            import conda

            conda_file_dir = conda.__file__
            conda_dir = conda_file_dir.split('lib')[0]
            proj4_data_path999 = os.path.join(os.path.join(conda_dir, 'share'),
                                              'proj')
            epsg_path999 = os.path.join(proj4_data_path999, 'epsg')
            if os.path.exists(epsg_path999):

                os.environ['PROJ_LIB'] = proj4_data_path999
                if hasattr(pyproj, 'pyproj_datadir'):
                    pyproj.pyproj_datadir = proj4_data_path999
                # logger.debug("PROJ_LIB = %s" % os.environ['PROJ_LIB'])
                cls.proj4_data_fixed = True
                return

        except Exception as e:
            logger.warning("%s" % e)

        # TODO: add more cases to find PROJ_LIB

        raise RuntimeError(
            "Unable to locate PROJ4 data at:\n- %s\n- %s\n- %s\n- %s\n- %s\n- %s\n- Conda/share/proj"
            % (proj4_data_path1, proj4_data_path2, proj4_data_path3,
               proj4_data_path4, proj4_data_path5, proj4_data_path6))
Exemple #2
0
from hyo2.abc.lib.helper import Helper
from hyo2.qc.common import lib_info
from hyo2.qc.common import default_logging
from hyo2.qc.common import testing

default_logging.load()

Helper.explore_folder(Helper(lib_info=lib_info).package_folder())
Helper(lib_info=lib_info).explore_package_folder()

print("- This file size: %s" % Helper.file_size(__file__))

print("- Info libs:\n%s" % Helper(lib_info=lib_info).package_info())

print("- Python path: %s" % Helper.python_path())

print("- QC2 package folder: %s" % Helper(lib_info=lib_info).package_folder())

print("- Testing output: %s" % testing.output_data_folder())

print("- Web URL: %s" % Helper(lib_info=lib_info).web_url(suffix="test"))
Exemple #3
0
    def check_gdal_data(cls):
        """ Check the correctness of os env GDAL_DATA """

        if cls.gdal_data_fixed:
            return

        if 'GDAL_DATA' in os.environ:

            # logger.debug("unset original GDAL_DATA = %s" % os.environ['GDAL_DATA'])
            del os.environ['GDAL_DATA']

        if 'GDAL_DRIVER_PATH' in os.environ:

            # logger.debug("unset original GDAL_DRIVER_PATH = %s" % os.environ['GDAL_DRIVER_PATH'])
            del os.environ['GDAL_DRIVER_PATH']

        gdal_data_path0 = os.path.join(os.path.dirname(gdal.__file__), 'osgeo',
                                       'data', 'gdal')
        s57_agencies_csv_path0 = os.path.join(gdal_data_path0,
                                              's57agencies.csv')
        if os.path.exists(s57_agencies_csv_path0):

            gdal.SetConfigOption('GDAL_DATA', gdal_data_path0)
            logger.debug("GDAL_DATA = %s" % gdal.GetConfigOption('GDAL_DATA'))
            cls.gdal_data_fixed = True
            cls.push_gdal_error_handler()
            return

        gdal_data_path1 = os.path.join(os.path.dirname(gdal.__file__), 'data',
                                       'gdal')
        s57_agencies_csv_path1 = os.path.join(gdal_data_path1,
                                              's57agencies.csv')
        if os.path.exists(s57_agencies_csv_path1):

            gdal.SetConfigOption('GDAL_DATA', gdal_data_path1)
            logger.debug("GDAL_DATA = %s" % gdal.GetConfigOption('GDAL_DATA'))
            cls.gdal_data_fixed = True
            cls.push_gdal_error_handler()
            return

        # anaconda specific (Win)
        gdal_data_path2 = os.path.join(Helper.python_path(), 'Library', 'data')
        s57_agencies_csv_path2 = os.path.join(gdal_data_path2,
                                              's57agencies.csv')
        if os.path.exists(s57_agencies_csv_path2):

            gdal.SetConfigOption('GDAL_DATA', gdal_data_path2)
            logger.debug("GDAL_DATA = %s" % gdal.GetConfigOption('GDAL_DATA'))
            cls.gdal_data_fixed = True
            cls.push_gdal_error_handler()
            return

        # anaconda specific (Win)
        gdal_data_path3 = os.path.join(Helper.python_path(), 'Library',
                                       'share', 'gdal')
        s57_agencies_csv_path3 = os.path.join(gdal_data_path3,
                                              's57agencies.csv')
        if os.path.exists(s57_agencies_csv_path3):

            gdal.SetConfigOption('GDAL_DATA', gdal_data_path3)
            logger.debug("GDAL_DATA = %s" % gdal.GetConfigOption('GDAL_DATA'))
            cls.gdal_data_fixed = True
            cls.push_gdal_error_handler()
            return

        # anaconda specific (Linux)
        gdal_data_path4 = os.path.join(Helper.python_path(), 'share', 'gdal')
        s57_agencies_csv_path4 = os.path.join(gdal_data_path4,
                                              's57agencies.csv')
        if os.path.exists(s57_agencies_csv_path4):

            gdal.SetConfigOption('GDAL_DATA', gdal_data_path4)
            logger.debug("GDAL_DATA = %s" % gdal.GetConfigOption('GDAL_DATA'))
            cls.gdal_data_fixed = True
            cls.push_gdal_error_handler()
            return

        # TODO: add more cases to find GDAL_DATA

        raise RuntimeError(
            "Unable to locate GDAL data at:\n- %s\n- %s\n- %s\n- %s\n- %s" %
            (gdal_data_path0, gdal_data_path1, gdal_data_path2,
             gdal_data_path3, gdal_data_path4))
Exemple #4
0
class TestABCLibHelper(unittest.TestCase):

    def setUp(self):

        self.h = Helper(lib_info=LibInfo())

    @unittest.skipIf(Helper.is_linux(), "test not supported on Linux")
    def test_explore_folder(self):
        self.assertTrue(self.h.explore_folder(__file__))
        self.assertFalse(self.h.explore_folder(__file__ + ".fake"))
        self.assertTrue(self.h.explore_folder(os.path.dirname(__file__)))
        self.assertFalse(self.h.explore_folder(os.path.dirname(__file__) + "fake"))

    def test_first_match(self):
        # fake dict
        a_dict = {
            "a": 1,
            "b": 99,
            "c": 1,
        }

        # test if it gives back the first matching key
        self.assertTrue(Helper.first_match(a_dict, 1) in ["a", "c"])

        # test if it raises with a not-existing value
        with self.assertRaises(RuntimeError):
            Helper.first_match(a_dict, 2)

    def test_is_64bit_os(self):
        self.assertIsInstance(self.h.is_64bit_os(), bool)

    def test_is_64bit_python(self):
        self.assertIsInstance(self.h.is_64bit_python(), bool)

    def test_is_darwin_linux_windows(self):
        self.assertIsInstance(self.h.is_darwin(), bool)
        self.assertIsInstance(self.h.is_linux(), bool)
        self.assertIsInstance(self.h.is_windows(), bool)

        self.assertTrue(any([self.h.is_linux(), self.h.is_darwin(), self.h.is_windows()]))

    def test_is_pydro(self):
        self.assertIsInstance(self.h.is_pydro(), bool)

    def test_is_url(self):
        self.assertTrue(self.h.is_url("https://www.hydroffice.org"))
        self.assertTrue(self.h.is_url("http://www.hydroffice.org"))
        self.assertFalse(self.h.is_url("ftp://fake/url"))

    def test_python_path(self):
        self.assertTrue(os.path.exists(self.h.python_path()))

    def test_package_info(self):
        self.assertIsInstance(self.h.package_info(qt_html=True), str)
        self.assertIsInstance(self.h.package_info(qt_html=False), str)

    def test_package_folder(self):
        self.assertTrue(os.path.exists(self.h.package_folder()))

    def test_hydroffice_folder(self):
        self.assertTrue(os.path.exists(self.h.hydroffice_folder()))