當前位置: 首頁>>代碼示例>>Python>>正文


Python fastjsonschema.compile方法代碼示例

本文整理匯總了Python中fastjsonschema.compile方法的典型用法代碼示例。如果您正苦於以下問題:Python fastjsonschema.compile方法的具體用法?Python fastjsonschema.compile怎麽用?Python fastjsonschema.compile使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在fastjsonschema的用法示例。


在下文中一共展示了fastjsonschema.compile方法的10個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: fast_validate

# 需要導入模塊: import fastjsonschema [as 別名]
# 或者: from fastjsonschema import compile [as 別名]
def fast_validate(
    schema: RawSchema, raw_items: RawItems, keys: pd.Index
) -> Dict[str, set]:
    """Verify items one by one. It stops after the first error in an item in most cases.
    Faster than jsonschema validation

    Args:
        schema: a JSON schema
        raw_items: a raw data to validate one by one
        keys: keys corresponding to raw_items index

    Returns:
        A dictionary of errors with message and item keys
    """
    errors: DefaultDict = defaultdict(set)

    validate = fastjsonschema.compile(schema)
    for i, raw_item in enumerate(tqdm(raw_items, desc="Fast Schema Validation")):
        raw_item.pop("_type", None)
        raw_item.pop("_key", None)
        try:
            validate(raw_item)
        except fastjsonschema.JsonSchemaException as error:
            errors[str(error)].add(keys[i])
    return dict(errors) 
開發者ID:scrapinghub,項目名稱:arche,代碼行數:27,代碼來源:schema.py

示例2: validate

# 需要導入模塊: import fastjsonschema [as 別名]
# 或者: from fastjsonschema import compile [as 別名]
def validate(definition, data, handlers={}, formats={}):
    """
    Validation function for lazy programmers or for use cases, when you need
    to call validation only once, so you do not have to compile it first.
    Use it only when you do not care about performance (even thought it will
    be still faster than alternative implementations).

    .. code-block:: python

        import fastjsonschema

        fastjsonschema.validate({'type': 'string'}, 'hello')
        # same as: compile({'type': 'string'})('hello')

    Preferred is to use :any:`compile` function.
    """
    return compile(definition, handlers, formats)(data)


# pylint: disable=redefined-builtin,dangerous-default-value,exec-used 
開發者ID:horejsek,項目名稱:python-fastjsonschema,代碼行數:22,代碼來源:__init__.py

示例3: asserter

# 需要導入模塊: import fastjsonschema [as 別名]
# 或者: from fastjsonschema import compile [as 別名]
def asserter():
    def f(definition, value, expected, formats={}):
        # When test fails, it will show up code.
        code_generator = CodeGeneratorDraft07(definition, formats=formats)
        print(code_generator.func_code)
        pprint(code_generator.global_state)

        # By default old tests are written for draft-04.
        definition.setdefault('$schema', 'http://json-schema.org/draft-04/schema')

        validator = compile(definition, formats=formats)
        if isinstance(expected, JsonSchemaException):
            with pytest.raises(JsonSchemaException) as exc:
                validator(value)
            assert exc.value.message == expected.message
            assert exc.value.value == (value if expected.value == '{data}' else expected.value)
            assert exc.value.name == expected.name
            assert exc.value.definition == (definition if expected.definition == '{definition}' else expected.definition)
            assert exc.value.rule == expected.rule
        else:
            assert validator(value) == expected
    return f 
開發者ID:horejsek,項目名稱:python-fastjsonschema,代碼行數:24,代碼來源:conftest.py

示例4: _validate

# 需要導入模塊: import fastjsonschema [as 別名]
# 或者: from fastjsonschema import compile [as 別名]
def _validate(cls, data: JsonDict, validate_enums: bool = True):
        try:
            if fast_validation:
                # TODO: Support validating with other schema types
                schema_validator = cls.__compiled_schema.get(SchemaOptions(DEFAULT_SCHEMA_TYPE, validate_enums))
                if schema_validator is None:
                    schema_validator = fastjsonschema.compile(cls.json_schema(validate_enums=validate_enums))
                    cls.__compiled_schema[SchemaOptions(DEFAULT_SCHEMA_TYPE, validate_enums)] = schema_validator
                schema_validator(data)
            else:
                validate_func(data, cls.json_schema(validate_enums=validate_enums))
        except JsonSchemaValidationError as e:
            raise ValidationError(str(e)) from e 
開發者ID:s-knibbs,項目名稱:dataclasses-jsonschema,代碼行數:15,代碼來源:__init__.py

示例5: _validate

# 需要導入模塊: import fastjsonschema [as 別名]
# 或者: from fastjsonschema import compile [as 別名]
def _validate(req_schema: Dict = None, resp_schema: Dict = None):
    def decorator(func):
        @wraps(func)
        def wrapper(self, req, resp, *args, **kwargs):
            if req_schema is not None:
                try:
                    schema = fastjsonschema.compile(req_schema)
                    schema(req.media)
                except fastjsonschema.JsonSchemaException as e:
                    msg = "Request data failed validation: {}".format(e.message)
                    raise HTTPError(falcon.HTTP_BAD_REQUEST, msg)

            result = func(self, req, resp, *args, **kwargs)

            if resp_schema is not None:
                try:
                    schema = fastjsonschema.compile(resp_schema)
                    schema(resp.media)
                except fastjsonschema.JsonSchemaException:
                    raise HTTPError(
                        falcon.HTTP_INTERNAL_SERVER_ERROR,
                        "Response data failed validation",
                    )
                    # Do not return 'e.message' in the response to
                    # prevent info about possible internal response
                    # formatting bugs from leaking out to users.

            return result

        return wrapper

    return decorator 
開發者ID:alexferl,項目名稱:falcon-boilerplate,代碼行數:34,代碼來源:jsonschema.py

示例6: getJsValidator

# 需要導入模塊: import fastjsonschema [as 別名]
# 或者: from fastjsonschema import compile [as 別名]
def getJsValidator(schema):
    '''
    Get a fastjsonschema callable.

    Args:
        schema (dict): A JSON Schema object.

    Returns:
        callable: A callable function that can be used to validate data against the json schema.
    '''
    if schema.get('$schema') is None:
        schema['$schema'] = 'http://json-schema.org/draft-07/schema#'

    # It is faster to hash and cache the functions here than it is to
    # generate new functions each time we have the same schema.
    key = s_hashitem.hashitem(schema)
    func = _JsValidators.get(key)
    if func:
        return func

    func = fastjsonschema.compile(schema)

    def wrap(*args, **kwargs):
        try:
            return func(*args, **kwargs)
        except JsonSchemaException as e:
            raise s_exc.SchemaViolation(mesg=e.message, name=e.name)

    _JsValidators[key] = wrap
    return wrap 
開發者ID:vertexproject,項目名稱:synapse,代碼行數:32,代碼來源:config.py

示例7: template_test

# 需要導入模塊: import fastjsonschema [as 別名]
# 或者: from fastjsonschema import compile [as 別名]
def template_test(schema_version, schema, data, is_valid):
    """
    Test function to be used (imported) in final test file to run the tests
    which are generated by `pytest_generate_tests` hook.
    """
    # For debug purposes. When test fails, it will print stdout.
    resolver = RefResolver.from_schema(schema, handlers={'http': remotes_handler})

    debug_generator = _get_code_generator_class(schema_version)(schema, resolver=resolver)
    print(debug_generator.global_state_code)
    print(debug_generator.func_code)

    # JSON schema test suits do not contain schema version.
    # Our library needs to know that or it would use always the latest implementation.
    if isinstance(schema, dict):
        schema.setdefault('$schema', schema_version)

    validate = compile(schema, handlers={'http': remotes_handler})
    try:
        result = validate(data)
        print('Validate result:', result)
    except JsonSchemaException:
        if is_valid:
            raise
    else:
        if not is_valid:
            pytest.fail('Test should not pass') 
開發者ID:horejsek,項目名稱:python-fastjsonschema,代碼行數:29,代碼來源:utils.py

示例8: test_invalid_properties

# 需要導入模塊: import fastjsonschema [as 別名]
# 或者: from fastjsonschema import compile [as 別名]
def test_invalid_properties(asserter):
    with pytest.raises(JsonSchemaDefinitionException):
        fastjsonschema.compile({
            'properties': {
                'item': ['wrong'],
            },
        }) 
開發者ID:horejsek,項目名稱:python-fastjsonschema,代碼行數:9,代碼來源:test_object.py

示例9: fast_not_compiled

# 需要導入模塊: import fastjsonschema [as 別名]
# 或者: from fastjsonschema import compile [as 別名]
def fast_not_compiled(value, json_schema):
    fastjsonschema.compile(json_schema)(value) 
開發者ID:horejsek,項目名稱:python-fastjsonschema,代碼行數:4,代碼來源:performance.py

示例10: __init__

# 需要導入模塊: import fastjsonschema [as 別名]
# 或者: from fastjsonschema import compile [as 別名]
def __init__(
        self,
        app: web.Application,
        *,
        validate: bool,
        spec: Dict,
        request_key: str,
        swagger_ui_settings: Optional[SwaggerUiSettings],
        redoc_ui_settings: Optional[ReDocUiSettings],
        rapidoc_ui_settings: Optional[RapiDocUiSettings],
    ) -> None:
        self._app = app
        self.validate = validate
        self.spec = spec
        self.request_key = request_key
        self.handlers: DefaultDict[
            str, Dict[str, Callable[[web.Request], Awaitable[Tuple[Any, bool]]]]
        ] = defaultdict(dict)

        uis = (rapidoc_ui_settings, redoc_ui_settings, swagger_ui_settings)
        paths: Set[str] = set()
        for ui in uis:
            if ui is None:
                continue
            if ui.path in paths:
                raise Exception("cannot bind two UIs on the same path")
            paths.add(ui.path)

        base_path = pathlib.Path(__file__).parent
        with open(base_path / "schema/schema.json") as f:
            schema = json.load(f)

        self.spec_validate = fastjsonschema.compile(
            schema, formats={"uri-reference": r"^\w+:(\/?\/?)[^\s]+\Z|^#(\/\w+)+"}
        )
        self.spec_validate(self.spec)

        for ui in uis:
            if ui is not None:
                self._register_ui(ui)

        STRING_FORMATS.set({})
        if self.validate:
            self.register_media_type_handler("application/json", application_json)
            self.register_media_type_handler(
                "application/x-www-form-urlencoded", x_www_form_urlencoded
            )

            self.register_string_format_validator("byte", sf_byte_validator)
            self.register_string_format_validator("date-time", sf_date_time_validator)
            self.register_string_format_validator("date", sf_date_validator)
            self.register_string_format_validator("email", sf_email_validator)
            self.register_string_format_validator("hostname", sf_hostname_validator)
            self.register_string_format_validator("ipv4", sf_ipv4_validator)
            self.register_string_format_validator("ipv6", sf_ipv6_validator)
            self.register_string_format_validator("uuid", sf_uuid_validator)

        super().__init__() 
開發者ID:hh-h,項目名稱:aiohttp-swagger3,代碼行數:60,代碼來源:swagger.py


注:本文中的fastjsonschema.compile方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。