polyvalid 0.1.7

A validator for package names, namespace, username and app name on wasmer
Documentation
---
source: /home/ayushjha/.cargo/registry/src/github.com-1ecc6299db9ec823/wasmer-pack-testing-0.6.0/src/autodiscover.rs
---
'''
Bindings to the  library.
'''

from pathlib import Path
from typing import Optional, Any

from wasmer import Store, Module, wasi # type: ignore
from .polyvalid.bindings import (
    Polyvalid as _Polyvalid,
)

class Bindings:
    """
    Instantiate bindings to the various libraries in this package.
    """

    def __init__(self, store: Store):
        self._store = store
        self._cache: dict[str, Module] = {}

    def _get_module(self, filename: str) -> Module:
        if filename in self._cache:
            return self._cache[filename]

        wasm = Path(__file__).parent.joinpath(filename).read_bytes()
        module = Module(self._store, wasm)
        self._cache[filename] = module
        return module

    def polyvalid(
        self,
        module: Optional[Module] = None,
    ) -> _Polyvalid:
        """
        Instantiate the "polyvalid" library.
        :param module: A user-specified WebAssembly module to use instead of the
                       one bundled with this package.
        """

        filename = "polyvalid/polyvalid.wasm"
        if not module:
            module = self._get_module(filename)

        imports: dict[str, Any] = {}

        wrapper = None

        def get_export(item_name: str):
            assert wrapper is not None
            return getattr(wrapper.instance.exports, item_name)

        wrapper = _Polyvalid(self._store, imports, module)
        return wrapper