structtype 0.2.0__tar.gz → 0.4.0__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.
Files changed (65) hide show
  1. structtype-0.4.0/.opencode/opencode.json +6 -0
  2. structtype-0.4.0/.opencode/plugins/graphify.js +30 -0
  3. {structtype-0.2.0 → structtype-0.4.0}/AGENTS.md +16 -3
  4. {structtype-0.2.0 → structtype-0.4.0}/MANIFEST.in +0 -1
  5. {structtype-0.2.0 → structtype-0.4.0}/Makefile +28 -0
  6. {structtype-0.2.0/src/structtype.egg-info → structtype-0.4.0}/PKG-INFO +1 -1
  7. structtype-0.4.0/graphify-out/.graphify_labels.json +108 -0
  8. structtype-0.4.0/graphify-out/.graphify_labels.json.sig +1 -0
  9. structtype-0.4.0/graphify-out/.graphify_root +1 -0
  10. structtype-0.4.0/graphify-out/2026-08-09/.graphify_labels.json +93 -0
  11. structtype-0.4.0/graphify-out/2026-08-09/GRAPH_REPORT.md +385 -0
  12. structtype-0.4.0/graphify-out/2026-08-09/graph.json +75971 -0
  13. structtype-0.4.0/graphify-out/2026-08-09/manifest.json +332 -0
  14. structtype-0.4.0/graphify-out/GRAPH_REPORT.md +448 -0
  15. structtype-0.4.0/graphify-out/graph.html +320 -0
  16. structtype-0.4.0/graphify-out/graph.json +77910 -0
  17. structtype-0.4.0/graphify-out/manifest.json +327 -0
  18. {structtype-0.2.0 → structtype-0.4.0}/pyproject.toml +8 -0
  19. {structtype-0.2.0 → structtype-0.4.0}/setup.py +24 -11
  20. {structtype-0.2.0 → structtype-0.4.0}/src/structtype/__init__.py +3 -2
  21. {structtype-0.2.0 → structtype-0.4.0}/src/structtype/__init__.pyi +34 -28
  22. {structtype-0.2.0 → structtype-0.4.0}/src/structtype/_adapter.py +46 -18
  23. {structtype-0.2.0 → structtype-0.4.0}/src/structtype/_core.c +838 -1201
  24. {structtype-0.2.0 → structtype-0.4.0}/src/structtype/_inspect.py +77 -11
  25. {structtype-0.2.0 → structtype-0.4.0}/src/structtype/_json_schema.py +12 -7
  26. {structtype-0.2.0 → structtype-0.4.0}/src/structtype/_utils.py +29 -1
  27. {structtype-0.2.0 → structtype-0.4.0}/src/structtype/_version.py +2 -2
  28. {structtype-0.2.0 → structtype-0.4.0}/src/structtype/common.h +2 -0
  29. {structtype-0.2.0 → structtype-0.4.0}/src/structtype/ryu.h +1 -1
  30. {structtype-0.2.0 → structtype-0.4.0/src/structtype.egg-info}/PKG-INFO +1 -1
  31. structtype-0.4.0/src/structtype.egg-info/SOURCES.txt +58 -0
  32. {structtype-0.2.0/tests/unit → structtype-0.4.0/tests}/conftest.py +10 -0
  33. {structtype-0.2.0/tests/unit → structtype-0.4.0/tests}/test_JSONTestSuite.py +3 -3
  34. structtype-0.4.0/tests/test_adapter.py +259 -0
  35. {structtype-0.2.0/tests/unit → structtype-0.4.0/tests}/test_check.py +9 -47
  36. {structtype-0.2.0/tests/unit → structtype-0.4.0/tests}/test_constraints.py +3 -3
  37. structtype-0.4.0/tests/test_free_threading.py +167 -0
  38. {structtype-0.2.0/tests/unit → structtype-0.4.0/tests}/test_inspect.py +19 -0
  39. {structtype-0.2.0/tests/unit → structtype-0.4.0/tests}/test_json.py +248 -290
  40. structtype-0.4.0/tests/test_memory.py +81 -0
  41. {structtype-0.2.0/tests/unit → structtype-0.4.0/tests}/test_msgspec.py +1 -2
  42. {structtype-0.2.0/tests/unit → structtype-0.4.0/tests}/test_schema.py +123 -0
  43. {structtype-0.2.0/tests/unit → structtype-0.4.0/tests}/test_struct.py +46 -8
  44. {structtype-0.2.0/tests/unit → structtype-0.4.0/tests}/test_struct_meta.py +13 -13
  45. structtype-0.4.0/uv.lock +1520 -0
  46. structtype-0.2.0/.cibuildwheel.toml +0 -4
  47. structtype-0.2.0/src/structtype.egg-info/SOURCES.txt +0 -45
  48. structtype-0.2.0/tests/unit/__init__.py +0 -0
  49. structtype-0.2.0/tests/unit/test_adapter.py +0 -122
  50. structtype-0.2.0/tests/unit/test_free_threading.py +0 -59
  51. {structtype-0.2.0 → structtype-0.4.0}/LICENSE +0 -0
  52. {structtype-0.2.0 → structtype-0.4.0}/README.md +0 -0
  53. {structtype-0.2.0 → structtype-0.4.0}/setup.cfg +0 -0
  54. {structtype-0.2.0 → structtype-0.4.0}/src/structtype/atof.h +0 -0
  55. {structtype-0.2.0 → structtype-0.4.0}/src/structtype/atof_consts.h +0 -0
  56. {structtype-0.2.0 → structtype-0.4.0}/src/structtype/itoa.h +0 -0
  57. {structtype-0.2.0 → structtype-0.4.0}/src/structtype/py.typed +0 -0
  58. {structtype-0.2.0 → structtype-0.4.0}/src/structtype.egg-info/dependency_links.txt +0 -0
  59. {structtype-0.2.0 → structtype-0.4.0}/src/structtype.egg-info/top_level.txt +0 -0
  60. {structtype-0.2.0 → structtype-0.4.0}/tests/__init__.py +0 -0
  61. {structtype-0.2.0/tests/unit → structtype-0.4.0/tests}/test_cpylint.py +0 -0
  62. {structtype-0.2.0/tests/unit → structtype-0.4.0/tests}/test_pydantic.py +0 -0
  63. {structtype-0.2.0/tests/unit → structtype-0.4.0/tests}/test_raw.py +0 -0
  64. {structtype-0.2.0/tests/unit → structtype-0.4.0/tests}/test_utils.py +0 -0
  65. {structtype-0.2.0/tests/unit → structtype-0.4.0/tests}/utils.py +0 -0
@@ -0,0 +1,6 @@
1
+ {
2
+ "$schema": "https://opencode.ai/config.json",
3
+ "plugin": [
4
+ ".opencode/plugins/graphify.js"
5
+ ]
6
+ }
@@ -0,0 +1,30 @@
1
+ // graphify OpenCode plugin
2
+ // Injects a knowledge graph reminder before bash tool calls when the graph exists.
3
+ //
4
+ // IMPORTANT: keep the reminder string free of backticks and $(...) constructs.
5
+ // The hook prepends `echo "<reminder>" && <cmd>` to the user's bash command;
6
+ // backticks inside the double-quoted echo trigger bash command substitution,
7
+ // which both corrupts tool output and silently executes the very graphify
8
+ // command we are only suggesting. Plain words render fine in opencode's TUI.
9
+ import { existsSync } from "fs";
10
+ import { join } from "path";
11
+
12
+ export const GraphifyPlugin = async ({ directory }) => {
13
+ let reminded = false;
14
+
15
+ return {
16
+ "tool.execute.before": async (input, output) => {
17
+ if (reminded) return;
18
+ if (!existsSync(join(directory, "graphify-out", "graph.json"))) return;
19
+
20
+ if (input.tool === "bash") {
21
+ // ';' not '&&' — Windows PowerShell 5.1 rejects '&&' as a statement
22
+ // separator, breaking the first bash command of the session (#1646).
23
+ output.args.command =
24
+ 'echo "[graphify] knowledge graph at graphify-out/. For focused questions, run graphify query with your question (scoped subgraph, usually much smaller than GRAPH_REPORT.md) instead of grepping raw files. Read GRAPH_REPORT.md only for broad architecture context." ; ' +
25
+ output.args.command;
26
+ reminded = true;
27
+ }
28
+ },
29
+ };
30
+ };
@@ -19,7 +19,7 @@ All commands go through `make`.
19
19
  | Task | Command |
20
20
  |---|---|
21
21
  | Unit tests (reinstall + last-failed) | `make test-lf` |
22
- | Targeted tests | `uv run --reinstall pytest tests/unit/test_json.py -k test_something` |
22
+ | Targeted tests | `uv run --reinstall pytest tests/test_json.py -k test_something` |
23
23
  | Coverage | `make test-cov` |
24
24
  | Build docs | `make docs` |
25
25
  | Format | `make format` |
@@ -35,6 +35,7 @@ All commands go through `make`.
35
35
  - C code uses `ms_`/`MS_` prefix
36
36
  - Type stubs (`.pyi`) alongside public modules
37
37
  - Sentinel values: `NODEFAULT`, `UNSET`, `_NoDefault`, `UnsetType`
38
+ - never do git commit
38
39
 
39
40
  ## Key API
40
41
 
@@ -48,8 +49,7 @@ All commands go through `make`.
48
49
 
49
50
  - `obj.struct_dump_json(*, enc_hook=None, decimal_format=None, uuid_format=None, order=None)` — serialize to JSON bytes
50
51
  - `obj.struct_dump()` — convert to built-in Python types (uses `encode_name` for keys)
51
- - `obj.struct_force_setattr(name, value)` — set attr on frozen struct
52
- - `obj.struct_validate_self(*, strict=True, dec_hook=None)` — validate field values against types + constraints
52
+ - `obj.struct_validate_self()` — validate field values against types + constraints
53
53
  - `cls.struct_validate_json(buf, *, strict=True, dec_hook=None)` — deserialize from JSON
54
54
  - `cls.struct_validate(obj, *, strict=True, from_attributes=False, dec_hook=None)` — convert built-in types to struct
55
55
 
@@ -62,3 +62,16 @@ Struct instances support the mapping protocol:
62
62
  ## Gotchas
63
63
 
64
64
  - `make test-lf` reinstalls the C extension before running (last-failed first)
65
+
66
+ ## graphify
67
+
68
+ This project has a knowledge graph at graphify-out/ with god nodes, community structure, and cross-file relationships.
69
+
70
+ When the user types `/graphify`, use the installed graphify skill or instructions before doing anything else.
71
+
72
+ Rules:
73
+ - For codebase questions, first run `graphify query "<question>"` when graphify-out/graph.json exists. Use `graphify path "<A>" "<B>"` for relationships and `graphify explain "<concept>"` for focused concepts. These return a scoped subgraph, usually much smaller than GRAPH_REPORT.md or raw grep output.
74
+ - Dirty graphify-out/ files are expected after hooks or incremental updates; dirty graph files are not a reason to skip graphify. Only skip graphify if the task is about stale or incorrect graph output, or the user explicitly says not to use it.
75
+ - If graphify-out/wiki/index.md exists, use it for broad navigation instead of raw source browsing.
76
+ - Read graphify-out/GRAPH_REPORT.md only for broad architecture review or when query/path/explain do not surface enough context.
77
+ - After modifying code, run `graphify update .` to keep the graph current (AST-only, no API cost).
@@ -5,4 +5,3 @@ prune docs
5
5
  prune examples
6
6
  prune scripts
7
7
  exclude .*
8
- include .cibuildwheel.toml
@@ -13,6 +13,14 @@ docs: ## build docs
13
13
  rm -rf .doctrees site
14
14
  uv run --group docs sphinx-build -d .doctrees -b html docs site --fail-on-warning
15
15
 
16
+ .PHONY: docs-serve
17
+ docs-serve: ## Open built docs in browser
18
+ uv run python -m webbrowser site/index.html
19
+
20
+ .PHONY: wheels
21
+ wheels: ## build wheels
22
+ uvx --from cibuildwheel==4.2.0 cibuildwheel
23
+
16
24
  ##@ Quality
17
25
  .PHONY: test-cov
18
26
  test-cov: ## Run tests with coverage
@@ -32,6 +40,26 @@ test-all: ## Run tests in all supporte Python versions
32
40
  uv run --isolated -p $$py_v pytest; \
33
41
  done
34
42
 
43
+ UNAME_S := $(shell uname -s)
44
+ ifeq ($(UNAME_S),Darwin)
45
+ ASAN_RUNTIME := $(shell clang --print-file-name=libclang_rt.asan_osx_dynamic.dylib)
46
+ SANITIZE_PRELOAD := DYLD_INSERT_LIBRARIES=$(ASAN_RUNTIME)
47
+ else
48
+ ASAN_RUNTIME := $(shell gcc --print-file-name=libasan.so)
49
+ SANITIZE_PRELOAD := LD_PRELOAD=$(ASAN_RUNTIME)
50
+ endif
51
+
52
+ DEBUG_PY ?= 3.14+debug
53
+ DEBUG_VENV = .venv-debug
54
+
55
+ .PHONY: test-debug
56
+ test-debug: ## Build core with Py_DEBUG + ASan/UBSan + debug allocator and run all tests
57
+ uv venv --clear --python $(DEBUG_PY) $(DEBUG_VENV)
58
+ STRUCTTYPE_SANITIZE=1 uv pip install --python $(DEBUG_VENV) --reinstall --no-cache --group dev -e .
59
+ $(SANITIZE_PRELOAD) STRUCTTYPE_ASAN_RUNTIME=$(ASAN_RUNTIME) ASAN_OPTIONS=detect_leaks=0 \
60
+ PYTHONMALLOC=debug PYTHONFAULTHANDLER=1 PYTHONDEVMODE=1 \
61
+ $(DEBUG_VENV)/bin/python -m pytest
62
+
35
63
  .PHONY: check
36
64
  check: ## Run all checks
37
65
  -uvx ty check ${SOURCE_DIR}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: structtype
3
- Version: 0.2.0
3
+ Version: 0.4.0
4
4
  Summary: Fast Struct type with validation and JSON serialization for Python.
5
5
  Maintainer-email: Wolfgang Langner <tds333@mailbox.org>
6
6
  License-Expression: BSD-3-Clause
@@ -0,0 +1,108 @@
1
+ {
2
+ "0": "_core.c",
3
+ "1": "test_schema.py",
4
+ "2": "TypeNodeCollectState",
5
+ "3": "TypeNode",
6
+ "4": "EncoderState",
7
+ "5": "test_inspect.py",
8
+ "6": "_inspect.py",
9
+ "7": "ryu.h",
10
+ "8": "JSONDecoderState",
11
+ "9": "PathNode",
12
+ "10": "parametrize",
13
+ "11": "Field",
14
+ "12": "StructspecState",
15
+ "13": "test_struct_meta.py",
16
+ "14": "unicode_str_and_size",
17
+ "15": "test_json.py",
18
+ "16": "visitproc",
19
+ "17": "test_struct.py",
20
+ "18": "parametrize",
21
+ "19": "TestDict",
22
+ "20": "test_check.py",
23
+ "21": "test_msgspec.py",
24
+ "22": "structtype/__init__.py",
25
+ "23": "test_constraints.py",
26
+ "24": "test_pydantic.py",
27
+ "25": "TestRename",
28
+ "26": "StructAdapter",
29
+ "27": "TestStruct",
30
+ "28": "TestDatetime",
31
+ "29": "TestEncoderMisc",
32
+ "30": "multi_type_info",
33
+ "31": "PyObject",
34
+ "32": "TestStructParameterOrdering",
35
+ "33": "bench_libs.py",
36
+ "34": "TestGetClassAnnotations",
37
+ "35": "_utils.py",
38
+ "36": "temp_module",
39
+ "37": "replace",
40
+ "38": "_Lookup_OnMissing",
41
+ "39": "test_raw.py",
42
+ "40": "TestRaw",
43
+ "41": "bench_gc.py",
44
+ "42": "atof.h",
45
+ "43": "Rand",
46
+ "44": "TestBoolAndNone",
47
+ "45": "TestSetAttr",
48
+ "46": "TestStructGC",
49
+ "47": "structtype — AGENTS.md",
50
+ "48": "TestStrings",
51
+ "49": "TestDecodeFunction",
52
+ "50": "TestSequences",
53
+ "51": "TestOrderAndEq",
54
+ "52": "structtype_geojson.py",
55
+ "53": ".roundtrip",
56
+ "54": "TestStructArray",
57
+ "55": "TestRepr",
58
+ "56": "TestEncodeFunction",
59
+ "57": "TestInspectFields",
60
+ "58": "strbuilder_build",
61
+ "59": "test_cpylint.py",
62
+ "60": "test_free_threading.py",
63
+ "61": "utils.py",
64
+ "62": "structtype",
65
+ "63": "TestDecimal",
66
+ "64": "test_JSONTestSuite.py",
67
+ "65": "TestMixins",
68
+ "66": "LiteralType",
69
+ "67": "TestFloatConstraints",
70
+ "68": "TestStructArrayUnion",
71
+ "69": "TestPostInit",
72
+ "70": "bench_structs.py",
73
+ "71": "Changelog",
74
+ "72": "as_tuple",
75
+ "73": "EnumType",
76
+ "74": "TestSignature",
77
+ "75": "graphify.js",
78
+ "76": "Struct_get_index",
79
+ "77": "generate_atof_consts.py",
80
+ "78": "BoolType",
81
+ "79": ".__init__",
82
+ "80": ".struct_dump_json",
83
+ "81": ".struct_validate",
84
+ "82": ".struct_dump",
85
+ "83": "__dir__",
86
+ "84": ".includes_none",
87
+ "85": "MS_INLINE",
88
+ "86": "dump_obj",
89
+ "87": "test_python_validate_pydantic",
90
+ "88": "structtype",
91
+ "89": "setup.py",
92
+ "90": "tests/__init__.py",
93
+ "91": "json_encode_dataclass",
94
+ "92": "PyTypeObject",
95
+ "93": "structtype_get_global_state",
96
+ "94": "Encoder",
97
+ "95": "ms_passes_big_int_constraints",
98
+ "96": "typenode_collect_validate_literals",
99
+ "97": "structtype_get_state",
100
+ "98": "JSONDecoder_decode",
101
+ "99": "typenode_collect_constraints",
102
+ "100": "StructMetaObject",
103
+ "101": "TestStrConstraints",
104
+ "102": "opencode.json",
105
+ "103": ".struct_validate_json",
106
+ "104": "test_dump_builtin_types",
107
+ "105": "test_pydantic_with_default"
108
+ }
@@ -0,0 +1 @@
1
+ {"0": "d643c6cb13aaab4d", "1": "30cda3f2c9f4b116", "2": "a6d0fb59a6a2b804", "3": "8d971e8caf15c483", "4": "8566e5b3097372de", "5": "8ccf9a8216edc743", "6": "d4af17cc9de752b0", "7": "e9aa28c8ea371408", "8": "c7be1f55cc29cdc5", "9": "a86c4cdc8ba7141e", "10": "2acd3bf8d9823ee3", "11": "8b16559f248d3529", "12": "d33fcbc65b320f4d", "13": "106b80706f3e6407", "14": "898e2a4cf01ac53c", "15": "ce38cd6eac91f798", "16": "325cd5c4323c7131", "17": "d6946e44a13605fe", "18": "4f79efe7f9f1b95b", "19": "e6bbe969de75b939", "20": "f6f0ca8580c58960", "21": "bd118bda83700a30", "22": "c8aee1190bb46ed4", "23": "f07f0c3bca2e2c5e", "24": "d42c0071d964e0f0", "25": "0ea7f4ccd262c5f7", "26": "0551132be5589e8a", "27": "79ae2f66fd3d4cab", "28": "35d060ddf8835410", "29": "c06eaf5d4c15c91c", "30": "47a53cf0d19b9b25", "31": "2d3cd5fc40831866", "32": "1f2e529287de1129", "33": "61732978d44bfd1e", "34": "1532479ab8bd3527", "35": "043c7680510ea7b1", "36": "8db47582fd26984e", "37": "353f0a389c6cd66d", "38": "f6b36bbcc3d8ea00", "39": "80d3d56a2deec119", "40": "33fe916671500430", "41": "6e8fc4efdd69a5de", "42": "18f1cb0d9dd50899", "43": "ff23f8ee8952f749", "44": "d25dd65e4c5a6eb9", "45": "874874871833ac97", "46": "80f99cc1e0e70d07", "47": "d8c95f051295545a", "48": "4b5151ba8559d935", "49": "9c627f8e884be79f", "50": "74aa1435cbeb0f15", "51": "a294de0f391e4129", "52": "da025785d2e0def1", "53": "d30dd5e1985345f1", "54": "be70274335b469cb", "55": "da1c5973a1f91f99", "56": "b80ceeac4e9d9744", "57": "84c08d48d4a8c724", "58": "241ed0f17056465d", "59": "081ddb1790597c81", "60": "bb4f879e81ba01be", "61": "f21b78d8d6f651af", "62": "a5c6b49ab3c3ddd5", "63": "8e17b78f5c7aeb3a", "64": "f9e3877e16cd2034", "65": "ba4157cdcbddbfc7", "66": "6d1fbf1ddff278f1", "67": "40152a379f07657b", "68": "0a0dfcc47ee8b84d", "69": "96278a3510f58d7b", "70": "6383729bf4e402b7", "71": "e8428b8467ea6788", "72": "7772bb812f6b2b4e", "73": "f50c76eb2822aab3", "74": "3e06f29c6af9c475", "75": "f49f271aca1ae6ea", "76": "9f3e513e909e330f", "77": "b288304b40cb9e39", "78": "7bee85e51cca5a92", "79": "f934926580f53f49", "80": "eddf0ecb3f2cd816", "81": "a12fe16947302b9b", "82": "55d8fb4ea2c4932b", "83": "1c14db22800a9721", "84": "39168562a3e74dc9", "85": "799421abaca69864", "86": "f5e2387512027e5d", "87": "a3f65c0563c93809", "88": "82f5347c5f1fde6c", "89": "e76aec1367ea2252", "90": "43bbf35b96423d46", "91": "b839fd4b64b048cc", "92": "a64dcaa27dde0bd3", "93": "5decd6d5db678576", "94": "ffd6ed1437af78cb", "95": "b819762cf2d2b450", "96": "f47d1d0d20e1f658", "97": "3b43aff1e5dcc748", "98": "a8c11bc3ea56c13a", "99": "ed9780dfc51f724c", "100": "13cf78b368b49c84", "101": "5f6224204d52e0ca", "102": "919edef32945baa9", "103": "07b3d7351d3788b2", "104": "10d0037c220e2fee", "105": "f6dc073f17e45301"}
@@ -0,0 +1 @@
1
+ .
@@ -0,0 +1,93 @@
1
+ {
2
+ "0": "_core.c",
3
+ "1": "test_schema.py",
4
+ "2": "structtype_get_global_state",
5
+ "3": "TypeNode",
6
+ "4": "EncoderState",
7
+ "5": "test_inspect.py",
8
+ "6": "_inspect.py",
9
+ "7": "dump_obj",
10
+ "8": "JSONDecoderState",
11
+ "9": "PathNode",
12
+ "10": "parametrize",
13
+ "11": "Field",
14
+ "12": "StructspecState",
15
+ "13": "test_struct_meta.py",
16
+ "14": "Py_ssize_t",
17
+ "15": "test_json.py",
18
+ "16": "visitproc",
19
+ "17": "test_struct.py",
20
+ "18": "parametrize",
21
+ "19": "TestDict",
22
+ "20": "test_check.py",
23
+ "21": "test_msgspec.py",
24
+ "22": "structtype/__init__.py",
25
+ "23": "test_constraints.py",
26
+ "24": "test_pydantic.py",
27
+ "25": "TestRename",
28
+ "26": "StructAdapter",
29
+ "27": "TestStruct",
30
+ "28": "TestDatetime",
31
+ "29": "TestEncoderMisc",
32
+ "30": "multi_type_info",
33
+ "31": "json_decode_struct_array_inner",
34
+ "32": "TestStructParameterOrdering",
35
+ "33": "bench_libs.py",
36
+ "34": "TestGetClassAnnotations",
37
+ "35": "_utils.py",
38
+ "36": "temp_module",
39
+ "37": "replace",
40
+ "38": "validate_lookup_tag",
41
+ "39": "test_raw.py",
42
+ "40": "TestRaw",
43
+ "41": "bench_gc.py",
44
+ "42": "atof.h",
45
+ "43": "Rand",
46
+ "44": "TestBoolAndNone",
47
+ "45": "TestHash",
48
+ "46": "TestStructGC",
49
+ "47": "structtype — AGENTS.md",
50
+ "48": "TestStrings",
51
+ "49": "TestDecodeFunction",
52
+ "50": "TestSequences",
53
+ "51": "TestOrderAndEq",
54
+ "52": "structtype_geojson.py",
55
+ "53": ".roundtrip",
56
+ "54": "TestStructArray",
57
+ "55": "TestRepr",
58
+ "56": "TestEncodeFunction",
59
+ "57": "TestInspectFields",
60
+ "58": "strbuilder_build",
61
+ "59": "test_cpylint.py",
62
+ "60": "test_free_threading.py",
63
+ "61": "utils.py",
64
+ "62": "structtype",
65
+ "63": "TestDecimal",
66
+ "64": "test_JSONTestSuite.py",
67
+ "65": "TestMixins",
68
+ "66": "LiteralType",
69
+ "67": "TestFloatConstraints",
70
+ "68": "TestStructArrayUnion",
71
+ "69": "TestPostInit",
72
+ "70": "bench_structs.py",
73
+ "71": "Changelog",
74
+ "72": "as_tuple",
75
+ "73": "EnumType",
76
+ "74": "TestSignature",
77
+ "75": "graphify.js",
78
+ "76": "Struct_hash",
79
+ "77": "generate_atof_consts.py",
80
+ "78": "BoolType",
81
+ "79": ".__init__",
82
+ "80": ".struct_dump_json",
83
+ "81": ".struct_validate",
84
+ "82": ".struct_dump",
85
+ "83": "__dir__",
86
+ "84": ".includes_none",
87
+ "85": "test_structadapter_pydantic",
88
+ "86": "test_decode_pydantic_direct",
89
+ "87": "test_python_validate_pydantic",
90
+ "88": "structtype",
91
+ "89": "setup.py",
92
+ "90": "tests/__init__.py"
93
+ }