llguidance 0.7.16__tar.gz → 0.7.17__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {llguidance-0.7.16 → llguidance-0.7.17}/CHANGELOG.md +5 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/Cargo.lock +5 -5
- {llguidance-0.7.16 → llguidance-0.7.17}/PKG-INFO +1 -1
- {llguidance-0.7.16 → llguidance-0.7.17}/docs/json_schema.md +13 -5
- {llguidance-0.7.16 → llguidance-0.7.17}/json_stats/expected_maskbench.json +171 -317
- {llguidance-0.7.16 → llguidance-0.7.17}/json_stats/src/json_stats.rs +7 -3
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/Cargo.toml +1 -1
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/earley/parser.rs +82 -56
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/json/compiler.rs +125 -16
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/json/schema.rs +94 -99
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/tokenparser.rs +1 -1
- {llguidance-0.7.16 → llguidance-0.7.17}/pyproject.toml +1 -1
- {llguidance-0.7.16 → llguidance-0.7.17}/python_ext/Cargo.toml +1 -1
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/tests/test_lark.rs +299 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/tests/test_ll.rs +15 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/scripts/test-guidance.sh +1 -1
- {llguidance-0.7.16 → llguidance-0.7.17}/toktrie/Cargo.toml +1 -1
- {llguidance-0.7.16 → llguidance-0.7.17}/toktrie_hf_downloader/Cargo.toml +1 -1
- {llguidance-0.7.16 → llguidance-0.7.17}/toktrie_hf_tokenizers/Cargo.toml +1 -1
- {llguidance-0.7.16 → llguidance-0.7.17}/.github/workflows/rust.yml +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/.github/workflows/wheels.yml +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/.gitignore +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/CODE_OF_CONDUCT.md +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/Cargo.toml +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/LICENSE +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/README.md +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/SECURITY.md +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/SUPPORT.md +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/c_sample/Makefile +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/c_sample/README.md +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/c_sample/c_sample.cpp +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/docs/fast_forward.md +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/docs/mask_plot.png +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/docs/optimizations.md +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/docs/special_tokens.md +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/docs/syntax.md +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/docs/toktrie.md +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/json_stats/Cargo.toml +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/json_stats/jstats.sh +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/json_stats/scripts/split-stats.sh +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/json_stats/scripts/split_plot.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/json_stats/src/lib.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/json_stats/src/stats.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/LICENSE +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/README.md +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/build.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/cbindgen.toml +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/grammars/character.json +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/grammars/json.json +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/llguidance.h +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/api.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/constraint.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/earley/from_guidance.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/earley/grammar.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/earley/lexer.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/earley/lexerspec.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/earley/mod.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/earley/perf.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/earley/regexvec.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/earley/slicer.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/factory.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/ffi.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/ffi_par.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/grammar_builder.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/json/README.md +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/json/context_ref.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/json/context_simple/context.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/json/context_simple/draft.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/json/context_simple/mod.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/json/formats.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/json/mod.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/json/numeric.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/json/shared_context.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/json_validation.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/lark/README.md +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/lark/ast.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/lark/common.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/lark/compiler.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/lark/lexer.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/lark/mod.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/lark/parser.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/lib.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/logging.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/matcher.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/output.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/panic_utils.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/regex_rewrite.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/stop_controller.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/substring.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/parser/src/tokenizer_json.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/plan.md +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python/llguidance/__init__.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python/llguidance/_grammar_from.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python/llguidance/_lib.pyi +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python/llguidance/_struct_tag.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python/llguidance/_tokenizer.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python/llguidance/_util.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python/llguidance/cli.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python/llguidance/gbnf_to_lark.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python/llguidance/hf.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python/llguidance/mlx.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python/llguidance/numpy.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python/llguidance/py.typed +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python/llguidance/torch.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python/mypy.ini +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python/torch_tests/__init__.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python/torch_tests/test_bitmask.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python/torch_tests/test_hf.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python/torch_tests/test_matcher.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python_ext/src/lib.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python_ext/src/llinterpreter.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python_ext/src/llmatcher.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python_ext/src/parserlimits.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python_ext/src/py.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/python_ext/src/pyjson.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/Cargo.toml +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/README.md +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/cli.sh +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/data/blog.sample.json +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/data/blog.schema.json +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/data/blog.schema.ll.json +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/data/from-llama.cpp/README.md +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/data/from-llama.cpp/arithmetic.gbnf +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/data/from-llama.cpp/c.gbnf +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/data/from-llama.cpp/chess.gbnf +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/data/from-llama.cpp/english.gbnf +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/data/from-llama.cpp/japanese.gbnf +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/data/from-llama.cpp/json.gbnf +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/data/from-llama.cpp/json_arr.gbnf +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/data/from-llama.cpp/list.gbnf +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/data/from-llama.cpp/vllm-sql.gbnf +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/data/lark.lark +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/data/rfc.lark +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/data/rfc.xml +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/data/ulysses.md +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/gtest.sh +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/lark.sh +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/run.sh +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/src/lib.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/src/minimal.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/src/sample_parser.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/tests/test_raw_parser.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/sample_parser/tests/test_stop.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/scripts/annotate_asm.js +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/scripts/bump.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/scripts/cbindgen.sh +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/scripts/checklinks.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/scripts/checklinks.sh +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/scripts/ci-publish.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/scripts/disasm.sh +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/scripts/gbnf_to_lark.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/scripts/gen-testcase.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/scripts/git-version.sh +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/scripts/install-deps.sh +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/scripts/jsonschema-stats.js +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/scripts/remote-guidance-test.sh +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/scripts/rust-size.js +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/scripts/rust_size.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/scripts/tokenizer_test.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/scripts/update-git.py +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/toktrie/LICENSE +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/toktrie/README.md +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/toktrie/src/bytes.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/toktrie/src/lib.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/toktrie/src/recognizer.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/toktrie/src/rng.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/toktrie/src/svob.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/toktrie/src/tokenv.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/toktrie/src/toktree.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/toktrie/tests/test_svob.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/toktrie_hf_downloader/LICENSE +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/toktrie_hf_downloader/src/lib.rs +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/toktrie_hf_tokenizers/LICENSE +0 -0
- {llguidance-0.7.16 → llguidance-0.7.17}/toktrie_hf_tokenizers/src/lib.rs +0 -0
|
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file. Dates are d
|
|
|
4
4
|
|
|
5
5
|
If a release doesn't introduce any interesting changes (build fixes etc.), it's skipped.
|
|
6
6
|
|
|
7
|
+
#### [0.7.17](https://github.com/guidance-ai/llguidance/compare/v0.7.16...0.7.17) 2025-04-22
|
|
8
|
+
|
|
9
|
+
- support for min/maxProperties in JSON Schema [`#168`](https://github.com/guidance-ai/llguidance/issues/168)
|
|
10
|
+
- give priority to <[123]> over "foo" in grammar [`3e9f3b5`](https://github.com/guidance-ai/llguidance/commit/3e9f3b5e8c1cac92daab6e9709f01ebccc20342b)
|
|
11
|
+
|
|
7
12
|
#### [0.7.16](https://github.com/guidance-ai/llguidance/compare/v0.7.15...0.7.16) 2025-04-17
|
|
8
13
|
|
|
9
14
|
- fix special token tokenization [`ae7870f`](https://github.com/guidance-ai/llguidance/commit/ae7870f05ca0de68599088607ba742b7071f92ad)
|
|
@@ -1178,7 +1178,7 @@ checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856"
|
|
|
1178
1178
|
|
|
1179
1179
|
[[package]]
|
|
1180
1180
|
name = "llguidance"
|
|
1181
|
-
version = "0.7.
|
|
1181
|
+
version = "0.7.17"
|
|
1182
1182
|
dependencies = [
|
|
1183
1183
|
"anyhow",
|
|
1184
1184
|
"derivre",
|
|
@@ -1197,7 +1197,7 @@ dependencies = [
|
|
|
1197
1197
|
|
|
1198
1198
|
[[package]]
|
|
1199
1199
|
name = "llguidance_py"
|
|
1200
|
-
version = "0.7.
|
|
1200
|
+
version = "0.7.17"
|
|
1201
1201
|
dependencies = [
|
|
1202
1202
|
"anyhow",
|
|
1203
1203
|
"bytemuck",
|
|
@@ -2362,7 +2362,7 @@ dependencies = [
|
|
|
2362
2362
|
|
|
2363
2363
|
[[package]]
|
|
2364
2364
|
name = "toktrie"
|
|
2365
|
-
version = "0.7.
|
|
2365
|
+
version = "0.7.17"
|
|
2366
2366
|
dependencies = [
|
|
2367
2367
|
"anyhow",
|
|
2368
2368
|
"bytemuck",
|
|
@@ -2373,7 +2373,7 @@ dependencies = [
|
|
|
2373
2373
|
|
|
2374
2374
|
[[package]]
|
|
2375
2375
|
name = "toktrie_hf_downloader"
|
|
2376
|
-
version = "0.7.
|
|
2376
|
+
version = "0.7.17"
|
|
2377
2377
|
dependencies = [
|
|
2378
2378
|
"anyhow",
|
|
2379
2379
|
"hf-hub",
|
|
@@ -2384,7 +2384,7 @@ dependencies = [
|
|
|
2384
2384
|
|
|
2385
2385
|
[[package]]
|
|
2386
2386
|
name = "toktrie_hf_tokenizers"
|
|
2387
|
-
version = "0.7.
|
|
2387
|
+
version = "0.7.17"
|
|
2388
2388
|
dependencies = [
|
|
2389
2389
|
"anyhow",
|
|
2390
2390
|
"log",
|
|
@@ -8,6 +8,9 @@ but [see below](#departures-from-json-schema-semantics) for some known differenc
|
|
|
8
8
|
There are various limits on the size of the input schema and the resulting grammar.
|
|
9
9
|
However, we've successfully processed schemas up to 4 MB in size.
|
|
10
10
|
|
|
11
|
+
For features that are not fully supported, we provide percentages of support among
|
|
12
|
+
the 11k [maskbench](https://github.com/guidance-ai/jsonschemabench/tree/main/maskbench) schemas.
|
|
13
|
+
|
|
11
14
|
## Supported JSON schema features
|
|
12
15
|
|
|
13
16
|
Following JSON schema features are supported.
|
|
@@ -15,8 +18,8 @@ Following JSON schema features are supported.
|
|
|
15
18
|
Core features:
|
|
16
19
|
|
|
17
20
|
- `anyOf`
|
|
18
|
-
- `oneOf` - converted to `anyOf` only when provably equivalent
|
|
19
|
-
- `allOf` - intersection of certain schemas is not supported right now
|
|
21
|
+
- `oneOf` (68%) - converted to `anyOf` only when provably equivalent
|
|
22
|
+
- `allOf` (98%) - intersection of certain schemas is not supported right now
|
|
20
23
|
- `$ref` - external/remote refs unsupported
|
|
21
24
|
- `const`
|
|
22
25
|
- `enum`
|
|
@@ -34,15 +37,20 @@ Object features:
|
|
|
34
37
|
|
|
35
38
|
- `properties` - order of properties is fixed to the order in schema
|
|
36
39
|
- `additionalProperties`
|
|
37
|
-
- `patternProperties` - they have to be disjoint
|
|
40
|
+
- `patternProperties` (98%) - they have to be disjoint
|
|
38
41
|
- `required`
|
|
42
|
+
- `minProperties` and `maxProperties` (90%) - only supported when everything defined in `properties`
|
|
43
|
+
is `required` (i.e., it only limits `additionalProperties` or `patternProperties`) - this covers
|
|
44
|
+
case of an object used as a map with upper/lower bounds on the number of keys;
|
|
45
|
+
there is also some special handling for either/both being `0` or `1` -
|
|
46
|
+
mostly for the case of at-least-one-property-required
|
|
39
47
|
|
|
40
48
|
String features:
|
|
41
49
|
|
|
42
50
|
- `minLength`
|
|
43
51
|
- `maxLength`
|
|
44
|
-
- `pattern`
|
|
45
|
-
- `format
|
|
52
|
+
- `pattern` (99%) - lookarounds not supported
|
|
53
|
+
- `format` (74%), with the following formats: `date-time`, `time`, `date`, `duration`, `email`, `hostname`, `ipv4`, `ipv6`, `uuid`,
|
|
46
54
|
|
|
47
55
|
Number features (for both integer and number):
|
|
48
56
|
|