# Django 3.2.12 documentation

# Source code for django.contrib.gis.geos.factory

    from django.contrib.gis.geos.geometry import GEOSGeometry, hex_regex, wkt_regex

    def fromfile(file_h):
        """
        Given a string file name, returns a GEOSGeometry. The file may contain WKB,
        WKT, or HEX.
        """
        # If given a file name, get a real handle.
        if isinstance(file_h, str):
            with open(file_h, 'rb') as file_h:
                buf = file_h.read()
        else:
            buf = file_h.read()

        # If we get WKB need to wrap in memoryview(), so run through regexes.
        if isinstance(buf, bytes):
            try:
                decoded = buf.decode()
            except UnicodeDecodeError:
                pass
            else:
                if wkt_regex.match(decoded) or hex_regex.match(decoded):
                    return GEOSGeometry(decoded)
        else:
            return GEOSGeometry(buf)

        return GEOSGeometry(memoryview(buf))

    def fromstr(string, **kwargs):
        "Given a string value, return a GEOSGeometry object."
        return GEOSGeometry(string, **kwargs)