Skip to content

Object with integer property causes TypeError when patternProperties are defined #285

@jstewmon

Description

@jstewmon

Example:

from jsonschema import validate schema = { 'type': 'object', 'patternProperties': { '^[0-9]{3}$': {'type': 'string'} }, } validate({200: 'hello'}, schema)

Result:

Traceback (most recent call last): File "/Users/jstewmon/Library/Application Support/IntelliJIdea2016.1/python/helpers/pydev/pydevd.py", line 1530, in <module> globals = debugger.run(setup['file'], None, None, is_module) File "/Users/jstewmon/Library/Application Support/IntelliJIdea2016.1/python/helpers/pydev/pydevd.py", line 937, in run pydev_imports.execfile(file, globals, locals) # execute the script File "/Users/jstewmon/Library/Preferences/IntelliJIdea2016.1/scratches/scratch_158", line 11, in <module> validate({200: 'hello'}, schema) File "/Users/jstewmon/.virtualenvs/pre-commit-swagger/lib/python2.7/site-packages/jsonschema/validators.py", line 478, in validate cls(schema, *args, **kwargs).validate(instance) File "/Users/jstewmon/.virtualenvs/pre-commit-swagger/lib/python2.7/site-packages/jsonschema/validators.py", line 122, in validate for error in self.iter_errors(*args, **kwargs): File "/Users/jstewmon/.virtualenvs/pre-commit-swagger/lib/python2.7/site-packages/jsonschema/validators.py", line 98, in iter_errors for error in errors: File "/Users/jstewmon/.virtualenvs/pre-commit-swagger/lib/python2.7/site-packages/jsonschema/_validators.py", line 14, in patternProperties if re.search(pattern, k): File "/Users/jstewmon/.virtualenvs/pre-commit-swagger/lib/python2.7/re.py", line 146, in search return _compile(pattern, flags).search(string) TypeError: expected string or buffer 

A similar, but discrete, error occurs when additionalProperties is False:

from jsonschema import validate schema = { 'type': 'object', 'patternProperties': { '^[0-9]{3}$': {'type': 'string'} }, 'additionalProperties': False } validate({200: 'hello'}, schema)

Result:

Traceback (most recent call last): File "/Users/jstewmon/Library/Application Support/IntelliJIdea2016.1/python/helpers/pydev/pydevd.py", line 1530, in <module> globals = debugger.run(setup['file'], None, None, is_module) File "/Users/jstewmon/Library/Application Support/IntelliJIdea2016.1/python/helpers/pydev/pydevd.py", line 937, in run pydev_imports.execfile(file, globals, locals) # execute the script File "/Users/jstewmon/Library/Preferences/IntelliJIdea2016.1/scratches/scratch_158", line 11, in <module> validate({200: 'hello'}, schema) File "/Users/jstewmon/.virtualenvs/pre-commit-swagger/lib/python2.7/site-packages/jsonschema/validators.py", line 478, in validate cls(schema, *args, **kwargs).validate(instance) File "/Users/jstewmon/.virtualenvs/pre-commit-swagger/lib/python2.7/site-packages/jsonschema/validators.py", line 122, in validate for error in self.iter_errors(*args, **kwargs): File "/Users/jstewmon/.virtualenvs/pre-commit-swagger/lib/python2.7/site-packages/jsonschema/validators.py", line 98, in iter_errors for error in errors: File "/Users/jstewmon/.virtualenvs/pre-commit-swagger/lib/python2.7/site-packages/jsonschema/_validators.py", line 25, in additionalProperties extras = set(_utils.find_additional_properties(instance, schema)) File "/Users/jstewmon/.virtualenvs/pre-commit-swagger/lib/python2.7/site-packages/jsonschema/_utils.py", line 100, in find_additional_properties if patterns and re.search(patterns, property): File "/Users/jstewmon/.virtualenvs/pre-commit-swagger/lib/python2.7/re.py", line 146, in search return _compile(pattern, flags).search(string) TypeError: expected string or buffer 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions