type-bridge 1.4.0.dev0__tar.gz → 1.4.2__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.
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/.github/workflows/ci.yml +59 -2
- type_bridge-1.4.2/.github/workflows/docs.yml +86 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/.github/workflows/release.yml +51 -1
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/.gitignore +11 -1
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/CHANGELOG.md +121 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/CLAUDE.md +22 -19
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/PKG-INFO +52 -37
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/README.md +41 -34
- type_bridge-1.4.2/benchmarks/conftest.py +1014 -0
- type_bridge-1.4.2/benchmarks/run_benchmarks.py +1042 -0
- type_bridge-1.4.2/benchmarks/test_compilation_bench.py +681 -0
- type_bridge-1.4.2/benchmarks/test_validation_bench.py +477 -0
- type_bridge-1.4.2/codecov.yml +32 -0
- type_bridge-1.4.2/docker-compose.proxy.yml +39 -0
- type_bridge-1.4.0.dev0/docs/ABSTRACT_TYPES.md → type_bridge-1.4.2/docs/development/abstract-types.md +2 -2
- type_bridge-1.4.2/docs/development/index.md +9 -0
- type_bridge-1.4.0.dev0/docs/INTERNALS.md → type_bridge-1.4.2/docs/development/internals.md +2 -2
- type_bridge-1.4.0.dev0/docs/DEVELOPMENT.md → type_bridge-1.4.2/docs/development/setup.md +4 -4
- type_bridge-1.4.0.dev0/docs/TESTING.md → type_bridge-1.4.2/docs/development/testing.md +2 -2
- type_bridge-1.4.0.dev0/docs/TYPEDB.md → type_bridge-1.4.2/docs/development/typedb.md +3 -3
- type_bridge-1.4.2/docs/getting-started/index.md +6 -0
- type_bridge-1.4.2/docs/getting-started/installation.md +44 -0
- type_bridge-1.4.2/docs/getting-started/quickstart.md +119 -0
- type_bridge-1.4.0.dev0/docs/api/abstract_types.md → type_bridge-1.4.2/docs/guide/abstract-types.md +2 -2
- {type_bridge-1.4.0.dev0/docs/api → type_bridge-1.4.2/docs/guide}/attributes.md +1 -1
- {type_bridge-1.4.0.dev0/docs/api → type_bridge-1.4.2/docs/guide}/cardinality.md +1 -1
- {type_bridge-1.4.0.dev0/docs/api → type_bridge-1.4.2/docs/guide}/crud.md +107 -0
- {type_bridge-1.4.0.dev0/docs/api → type_bridge-1.4.2/docs/guide}/entities.md +2 -2
- type_bridge-1.4.0.dev0/docs/api/README.md → type_bridge-1.4.2/docs/guide/index.md +6 -3
- {type_bridge-1.4.0.dev0/docs/api → type_bridge-1.4.2/docs/guide}/queries.md +1 -1
- {type_bridge-1.4.0.dev0/docs/api → type_bridge-1.4.2/docs/guide}/relations.md +1 -1
- type_bridge-1.4.2/docs/index.md +38 -0
- type_bridge-1.4.2/mkdocs.yml +118 -0
- type_bridge-1.4.2/perf/1.4.0.dev0.srv.md +250 -0
- type_bridge-1.4.2/perf/1.4.0.dev0.x1c.md +250 -0
- type_bridge-1.4.2/perf/1.4.0.dev1.940xa.md +256 -0
- type_bridge-1.4.2/perf/raw/1.4.0.dev0.srv.toml +1294 -0
- type_bridge-1.4.2/perf/raw/1.4.0.dev0.x1c.toml +1294 -0
- type_bridge-1.4.2/perf/raw/1.4.0.dev1.940xa.toml +1294 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/pyproject.toml +16 -5
- type_bridge-1.4.2/scripts/check.sh +90 -0
- type_bridge-1.4.2/scripts/coverage.sh +102 -0
- type_bridge-1.4.2/scripts/gen_ref_pages.py +53 -0
- type_bridge-1.4.2/test-proxy-integration.sh +28 -0
- type_bridge-1.4.2/tests/integration/proxy/conftest.py +41 -0
- type_bridge-1.4.2/tests/integration/proxy/test_proxy_audit.py +61 -0
- type_bridge-1.4.2/tests/integration/proxy/test_proxy_crud.py +81 -0
- type_bridge-1.4.2/tests/integration/proxy/test_proxy_health.py +30 -0
- type_bridge-1.4.2/tests/unit/crud/test_hooks.py +594 -0
- type_bridge-1.4.2/tests/unit/flags/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/generator/test_parser.py +29 -44
- type_bridge-1.4.2/tests/unit/generator/test_rust_schema.py +406 -0
- type_bridge-1.4.2/tests/unit/generator/test_rust_schema_parity.py +642 -0
- type_bridge-1.4.2/tests/unit/proxy/__init__.py +0 -0
- type_bridge-1.4.2/tests/unit/proxy/test_proxy.py +249 -0
- type_bridge-1.4.2/tests/unit/query/test_query_parser.py +618 -0
- type_bridge-1.4.2/tests/unit/test_value_coercion.py +466 -0
- type_bridge-1.4.2/tests/unit/validation/test_custom_rules.py +268 -0
- type_bridge-1.4.2/tests/unit/validation/test_schema_validation.py +177 -0
- type_bridge-1.4.2/tests/utils/proxy_lifecycle.py +94 -0
- type_bridge-1.4.2/tests/utils/schema_helpers.py +0 -0
- type_bridge-1.4.2/type-bridge-core/Cargo.lock +2645 -0
- type_bridge-1.4.2/type-bridge-core/Cargo.toml +11 -0
- type_bridge-1.4.2/type-bridge-core/Dockerfile.server +48 -0
- type_bridge-1.4.2/type-bridge-core/README.md +53 -0
- type_bridge-1.4.2/type-bridge-core/crates/core/Cargo.toml +37 -0
- type_bridge-1.4.2/type-bridge-core/crates/core/README.md +55 -0
- type_bridge-1.4.2/type-bridge-core/crates/core/benches/compilation.rs +1190 -0
- type_bridge-1.4.2/type-bridge-core/crates/core/benches/schema.rs +140 -0
- type_bridge-1.4.2/type-bridge-core/crates/core/benches/validation.rs +305 -0
- type_bridge-1.4.2/type-bridge-core/crates/core/src/ast.rs +355 -0
- type_bridge-1.4.2/type-bridge-core/crates/core/src/compiler.rs +1588 -0
- type_bridge-1.4.2/type-bridge-core/crates/core/src/lib.rs +36 -0
- type_bridge-1.4.2/type-bridge-core/crates/core/src/parser.rs +1349 -0
- type_bridge-1.4.2/type-bridge-core/crates/core/src/query_parser.rs +2738 -0
- {type_bridge-1.4.0.dev0/type-bridge-core/src/core → type_bridge-1.4.2/type-bridge-core/crates/core/src}/reserved_words.rs +5 -1
- type_bridge-1.4.2/type-bridge-core/crates/core/src/schema.rs +1152 -0
- type_bridge-1.4.2/type-bridge-core/crates/core/src/validation.rs +3210 -0
- type_bridge-1.4.2/type-bridge-core/crates/core/src/value_coercion.rs +1219 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/Cargo.toml +49 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/benches/query_building.rs +149 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/benches/serde.rs +274 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/attribute.rs +368 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/bin/codegen.rs +78 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/codegen/generator.rs +594 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/codegen/mod.rs +8 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/codegen/naming.rs +81 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/entity.rs +229 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/error.rs +55 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/expr.rs +922 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/field_ref.rs +473 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/filter.rs +47 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/hooks/context.rs +43 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/hooks/error.rs +25 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/hooks/mod.rs +16 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/hooks/runner.rs +108 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/hooks/traits.rs +73 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/lib.rs +75 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/manager/entity_manager.rs +490 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/manager/hydration.rs +268 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/manager/mod.rs +13 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/manager/query_builder.rs +892 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/manager/relation_manager.rs +338 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/query/entity_query.rs +153 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/query/group_by_query.rs +127 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/query/mod.rs +14 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/query/relation_query.rs +152 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/relation.rs +288 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/schema/diff.rs +715 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/schema/error.rs +25 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/schema/generator.rs +675 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/schema/info.rs +306 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/schema/manager.rs +359 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/schema/mod.rs +12 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/session/backend.rs +65 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/session/context.rs +60 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/session/database.rs +121 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/session/mod.rs +18 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/session/real_driver.rs +190 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/session/transaction.rs +45 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/src/value.rs +175 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/tests/common/mod.rs +468 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/tests/derive_tests.rs +871 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/tests/entity_manager_tests.rs +410 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/tests/error_handling_tests.rs +227 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/tests/hooks_tests.rs +458 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/tests/include_schema_tests.rs +88 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/tests/integration_tests.rs +469 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/tests/query_tests.rs +885 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/tests/relation_hooks_tests.rs +431 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/tests/relation_manager_tests.rs +362 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/tests/schema_tests.rs +693 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/tests/test_schema.tql +7 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm/tests/transaction_context_tests.rs +204 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm-derive/Cargo.toml +20 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm-derive/src/attribute.rs +204 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm-derive/src/entity.rs +406 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm-derive/src/include_schema.rs +324 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm-derive/src/lib.rs +130 -0
- type_bridge-1.4.2/type-bridge-core/crates/orm-derive/src/relation.rs +528 -0
- {type_bridge-1.4.0.dev0/type-bridge-core → type_bridge-1.4.2/type-bridge-core/crates/python}/Cargo.toml +7 -9
- type_bridge-1.4.2/type-bridge-core/crates/python/README.md +74 -0
- type_bridge-1.4.2/type-bridge-core/crates/python/src/ast/mod.rs +643 -0
- type_bridge-1.4.2/type-bridge-core/crates/python/src/lib.rs +619 -0
- type_bridge-1.4.2/type-bridge-core/crates/python/src/orm.rs +415 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/Cargo.toml +52 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/README.md +216 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/config.rs +427 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/error.rs +80 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/executor.rs +42 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/interceptor/audit_log.rs +486 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/interceptor/chain.rs +419 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/interceptor/crud_info.rs +693 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/interceptor/crud_interceptor.rs +357 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/interceptor/mod.rs +12 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/interceptor/traits.rs +201 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/lib.rs +60 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/main.rs +106 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/pipeline.rs +783 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/schema_source.rs +219 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/test_helpers.rs +130 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/transport/http.rs +651 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/transport/mod.rs +2 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/transport/types.rs +50 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/typedb/backend.rs +48 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/typedb/client.rs +860 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/typedb/mod.rs +5 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/src/typedb/real_driver.rs +140 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/tests/http_integration_tests.rs +419 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/tests/interceptor_integration_tests.rs +465 -0
- type_bridge-1.4.2/type-bridge-core/crates/server/tests/pipeline_integration_tests.rs +393 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type-bridge-core/pyproject.toml +2 -1
- type_bridge-1.4.2/type-bridge-core/server.toml +23 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/__init__.py +12 -1
- type_bridge-1.4.2/type_bridge/coercion.py +27 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/crud/__init__.py +5 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/crud/formatting.py +15 -0
- type_bridge-1.4.2/type_bridge/crud/hooks.py +152 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/crud/typedb_manager.py +89 -8
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/parser.py +249 -12
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/utils/common.py +2 -4
- type_bridge-1.4.2/type_bridge/proxy.py +263 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/query/__init__.py +3 -2
- type_bridge-1.4.2/type_bridge/query/parser.py +321 -0
- type_bridge-1.4.2/type_bridge/rules.py +146 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/session.py +20 -11
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/validation.py +79 -0
- type_bridge-1.4.0.dev0/type-bridge-core/Cargo.lock +0 -256
- type_bridge-1.4.0.dev0/type-bridge-core/README.md +0 -30
- type_bridge-1.4.0.dev0/type-bridge-core/src/ast/mod.rs +0 -890
- type_bridge-1.4.0.dev0/type-bridge-core/src/core/ast.rs +0 -152
- type_bridge-1.4.0.dev0/type-bridge-core/src/core/compiler.rs +0 -326
- type_bridge-1.4.0.dev0/type-bridge-core/src/core/mod.rs +0 -5
- type_bridge-1.4.0.dev0/type-bridge-core/src/core/schema.rs +0 -43
- type_bridge-1.4.0.dev0/type-bridge-core/src/core/validation.rs +0 -297
- type_bridge-1.4.0.dev0/type-bridge-core/src/lib.rs +0 -135
- type_bridge-1.4.0.dev0/type-bridge-core/src/test_clone.rs +0 -8
- type_bridge-1.4.0.dev0/type-bridge-core/src/test_manual_clone.rs +0 -10
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/.claude/hooks/check-preexisting.sh +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/.pre-commit-config.yaml +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/.python-version +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/AGENTS.md +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/LICENSE +0 -0
- {type_bridge-1.4.0.dev0/tests/integration → type_bridge-1.4.2/benchmarks}/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/check.sh +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/docker-compose.yml +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/docs/SKILL.md +0 -0
- {type_bridge-1.4.0.dev0/docs/api → type_bridge-1.4.2/docs/guide}/dto.md +0 -0
- {type_bridge-1.4.0.dev0/docs/api → type_bridge-1.4.2/docs/guide}/functions.md +0 -0
- {type_bridge-1.4.0.dev0/docs/api → type_bridge-1.4.2/docs/guide}/generator.md +0 -0
- {type_bridge-1.4.0.dev0/docs/api → type_bridge-1.4.2/docs/guide}/logging.md +0 -0
- {type_bridge-1.4.0.dev0/docs/api → type_bridge-1.4.2/docs/guide}/schema.md +0 -0
- {type_bridge-1.4.0.dev0/docs/api → type_bridge-1.4.2/docs/guide}/validation.md +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/README.md +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/advanced/config_01_typename_case.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/advanced/config_02_attribute_case.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/advanced/config_03_typeflags.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/advanced/crud_07_chainable_operations.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/advanced/features_01_pydantic.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/advanced/features_02_type_safety.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/advanced/features_03_string_repr.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/advanced/features_04_base_flag.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/advanced/features_05_implicit_flags.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/advanced/query_01_expressions.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/advanced/schema_01_manager.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/advanced/schema_02_comparison.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/advanced/schema_03_conflict.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/advanced/validation_01_reserved_words.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/advanced/validation_02_edge_cases.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/basic/crud.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/basic/crud_01_define.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/basic/crud_02_insert.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/basic/crud_03_read.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/basic/crud_04_update.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/basic/crud_05_filter.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/basic/crud_06_aggregate.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/basic/crud_07_delete.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/basic/crud_08_put.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/patterns/cardinality_01_multi_value.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/examples/patterns/inheritance_01_abstract.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/find_type_ignores.sh +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/pyrightconfig.json +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/test-integration.sh +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/test.sh +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/conftest.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/README.md +0 -0
- {type_bridge-1.4.0.dev0/tests/integration/crud → type_bridge-1.4.2/tests/integration}/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/conftest.py +0 -0
- {type_bridge-1.4.0.dev0/tests/integration/crud/attributes → type_bridge-1.4.2/tests/integration/crud}/__init__.py +0 -0
- {type_bridge-1.4.0.dev0/tests/integration/crud/entities → type_bridge-1.4.2/tests/integration/crud/attributes}/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/attributes/test_boolean.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/attributes/test_date.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/attributes/test_datetime.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/attributes/test_datetimetz.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/attributes/test_decimal.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/attributes/test_double.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/attributes/test_duration.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/attributes/test_integer.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/attributes/test_multi_value.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/attributes/test_multivalue_escaping.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/attributes/test_string.py +0 -0
- {type_bridge-1.4.0.dev0/tests/integration/crud/interop → type_bridge-1.4.2/tests/integration/crud/entities}/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/entities/test_bulk_operations.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/entities/test_chainable.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/entities/test_delete.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/entities/test_fetch.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/entities/test_insert.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/entities/test_integer_key_bug.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/entities/test_put.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/entities/test_update.py +0 -0
- {type_bridge-1.4.0.dev0/tests/integration/crud/relations → type_bridge-1.4.2/tests/integration/crud/interop}/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/interop/test_mixed_entity.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/interop/test_mixed_queries.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/interop/test_type_combinations.py +0 -0
- {type_bridge-1.4.0.dev0/tests/integration/migration/fixtures/v1 → type_bridge-1.4.2/tests/integration/crud/relations}/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/relations/test_abstract_roles.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/relations/test_chainable.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/relations/test_delete.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/relations/test_fetch.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/relations/test_filter.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/relations/test_insert.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/relations/test_multi_role.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/relations/test_put.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/relations/test_update.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/test_complex_relations.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/test_crud_edge_cases.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/test_filter_validation.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/test_iid_feature.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/test_inherited_attribute_filter.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/test_issue_47.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/test_polymorphic_queries.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/test_range_validation.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/test_typedb_manager.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/crud/test_update_advanced.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/expressions/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/expressions/test_builtin.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/generator/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/generator/fixtures/bookstore.tql +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/generator/fixtures/role_cardinality.tql +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/generator/fixtures/social_media.tql +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/generator/fixtures/type_theoretic.tql +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/generator/test_generate_and_import.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/generator/test_generator_use_pipeline.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/migration/__init__.py +0 -0
- {type_bridge-1.4.0.dev0/tests/integration/migration/fixtures/v2 → type_bridge-1.4.2/tests/integration/migration/fixtures/v1}/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/migration/fixtures/v1/models.py +0 -0
- {type_bridge-1.4.0.dev0/tests/integration/queries → type_bridge-1.4.2/tests/integration/migration/fixtures/v2}/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/migration/fixtures/v2/models.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/migration/test_autogenerate.py +0 -0
- {type_bridge-1.4.0.dev0/tests/integration/schema → type_bridge-1.4.2/tests/integration/proxy}/__init__.py +0 -0
- {type_bridge-1.4.0.dev0/tests/unit → type_bridge-1.4.2/tests/integration/queries}/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_bookstore_queries.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_compiler_integration.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_complex_graph.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_cyber_threat_queries.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_drug_discovery_queries.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_expressions.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_filters.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_function_query.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_iam_queries.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_lookup_filters.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_match.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_order_by.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_pagination.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_role_field_expressions.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_role_lookup_filters.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_role_multi_lookup_filters.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_role_players.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_social_network_queries.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/queries/test_typedb_38_builtins.py +0 -0
- {type_bridge-1.4.0.dev0/tests/unit/attributes → type_bridge-1.4.2/tests/integration/schema}/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/schema/test_annotation_sync.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/schema/test_attributes.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/schema/test_cardinality.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/schema/test_conflict.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/schema/test_constraint_enforcement.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/schema/test_creation.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/schema/test_diff.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/schema/test_inheritance.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/schema/test_migration.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/schema/test_relations.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/schema/test_role_player_diff.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/schema/test_types.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/session/test_session_lifecycle.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/session/test_transaction_context.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/session/test_transaction_edge_cases.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/integration/validation/test_reserved_words_integration.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/README.md +0 -0
- {type_bridge-1.4.0.dev0/tests/unit/core → type_bridge-1.4.2/tests/unit}/__init__.py +0 -0
- {type_bridge-1.4.0.dev0/tests/unit/crud → type_bridge-1.4.2/tests/unit/attributes}/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/attributes/test_boolean.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/attributes/test_date.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/attributes/test_datetime_tz.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/attributes/test_decimal.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/attributes/test_double.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/attributes/test_duration.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/attributes/test_formatting.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/attributes/test_integer.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/attributes/test_multivalue_escaping.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/attributes/test_range_validation.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/attributes/test_string.py +0 -0
- {type_bridge-1.4.0.dev0/tests/unit/flags → type_bridge-1.4.2/tests/unit/core}/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/core/test_entity_dict.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/core/test_entity_to_ast.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/core/test_inheritance.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/core/test_inherited_attribute_filter.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/core/test_multi_role_players.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/core/test_relation_to_ast.py +0 -0
- /type_bridge-1.4.0.dev0/tests/utils/schema_helpers.py → /type_bridge-1.4.2/tests/unit/crud/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/crud/test_exceptions.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/crud/test_format_value.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/crud/test_get_by_iid.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/crud/test_negative_cases.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/crud/test_polymorphic_role_player.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/crud/test_recursive_relations.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/crud/test_role_lookup_parser.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/crud/test_typedb_manager.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/crud/test_update_queries.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/crud/test_wrap_attribute_value.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/exceptions/test_exceptions.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/expressions/test_arithmetic.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/expressions/test_boolean_expr.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/expressions/test_builtin.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/expressions/test_field_refs.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/expressions/test_function_query.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/expressions/test_role_player_expr.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/expressions/test_utils.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/fields/test_field_descriptor.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/fields/test_role_ref.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/flags/test_attribute_typename_case.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/flags/test_base_flag.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/flags/test_typename_case.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/generator/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/generator/fixtures/bookstore.tql +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/generator/test_annotations.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/generator/test_api_dto.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/generator/test_functions.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/generator/test_generator.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/generator/test_naming.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/generator/test_range_generation.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/generator/test_registry.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/migration/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/models/test_registry_resolve.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/query/test_ast.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/query/test_compiler.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/query/test_query_builder.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/schema/test_annotation_generation.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/schema/test_breaking.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/schema/test_role_changes.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/session/test_session_unit.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/type-check-except/test_basic.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/type-check-except/test_cardinality.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/type-check-except/test_list_default.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/type-check-except/test_multi_role_players_invalid.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/type-check-except/test_pydantic.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/type-check-except/test_update_api.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/typeql/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/typeql/test_annotations.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/validation/test_duplicate_attributes.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/unit/validation/test_reserved_words.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/utils/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/utils/assertions.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/utils/data_builders.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/tests/utils/typedb_lifecycle.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type-bridge-core/.cargo/config.toml +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/_rust.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/attribute/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/attribute/base.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/attribute/boolean.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/attribute/date.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/attribute/datetime.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/attribute/datetimetz.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/attribute/decimal.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/attribute/double.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/attribute/duration.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/attribute/flags.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/attribute/integer.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/attribute/numeric.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/attribute/string.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/crud/aggregates.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/crud/base.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/crud/exceptions.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/crud/lookup.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/crud/manager.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/crud/patterns.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/crud/role_lookup.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/crud/role_players.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/crud/strategies.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/crud/types.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/crud/utils.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/expressions/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/expressions/aggregate.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/expressions/arithmetic.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/expressions/base.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/expressions/boolean.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/expressions/builtin.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/expressions/comparison.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/expressions/functions.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/expressions/iid.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/expressions/role_player.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/expressions/string.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/expressions/utils.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/fields/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/fields/base.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/fields/role.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/__main__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/annotations.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/dto_config.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/models.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/naming.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/render/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/render/api_dto.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/render/attributes.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/render/entities.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/render/functions.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/render/package.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/render/registry.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/render/relations.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/render/structs.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/render/template_loader.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/templates/_dto_macros.jinja +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/templates/api_dto.py.jinja +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/templates/attributes.py.jinja +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/templates/entities.py.jinja +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/templates/package_init.py.jinja +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/templates/registry.py.jinja +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/templates/relations.py.jinja +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/templates/structs.py.jinja +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/typeql.lark +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/typeql.pest +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/utils/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/generator/utils/types.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/migration/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/migration/__main__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/migration/base.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/migration/breaking.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/migration/diff.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/migration/exceptions.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/migration/executor.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/migration/generator.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/migration/info.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/migration/introspection.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/migration/loader.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/migration/operations.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/migration/registry.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/migration/schema_manager.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/migration/simple_migration.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/migration/state.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/migration/utils.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/models/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/models/base.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/models/entity.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/models/registry.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/models/relation.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/models/role.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/models/schema_scanner.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/models/utils.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/query/ast.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/query/compiler.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/reserved_words.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/typedb_driver.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/typeql/__init__.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/type_bridge/typeql/annotations.py +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/typings/isodate/__init__.pyi +0 -0
- {type_bridge-1.4.0.dev0 → type_bridge-1.4.2}/typings/typedb/driver.pyi +0 -0
|
@@ -18,6 +18,11 @@ jobs:
|
|
|
18
18
|
- name: Checkout code
|
|
19
19
|
uses: actions/checkout@v4
|
|
20
20
|
|
|
21
|
+
- name: Set up Python
|
|
22
|
+
uses: actions/setup-python@v5
|
|
23
|
+
with:
|
|
24
|
+
python-version: "3.13"
|
|
25
|
+
|
|
21
26
|
- name: Install Rust toolchain
|
|
22
27
|
uses: dtolnay/rust-toolchain@stable
|
|
23
28
|
|
|
@@ -44,6 +49,45 @@ jobs:
|
|
|
44
49
|
working-directory: type-bridge-core
|
|
45
50
|
run: cargo clippy --all-targets -- -D warnings
|
|
46
51
|
|
|
52
|
+
# Rust code coverage (informational, does not block CI)
|
|
53
|
+
rust-coverage:
|
|
54
|
+
name: Rust Coverage
|
|
55
|
+
runs-on: ubuntu-latest
|
|
56
|
+
continue-on-error: true
|
|
57
|
+
steps:
|
|
58
|
+
- name: Checkout code
|
|
59
|
+
uses: actions/checkout@v4
|
|
60
|
+
|
|
61
|
+
- name: Install Rust nightly
|
|
62
|
+
uses: dtolnay/rust-toolchain@nightly
|
|
63
|
+
with:
|
|
64
|
+
components: llvm-tools-preview
|
|
65
|
+
|
|
66
|
+
- name: Install cargo-llvm-cov
|
|
67
|
+
uses: taiki-e/install-action@cargo-llvm-cov
|
|
68
|
+
|
|
69
|
+
- name: Cache cargo registry and build
|
|
70
|
+
uses: actions/cache@v4
|
|
71
|
+
with:
|
|
72
|
+
path: |
|
|
73
|
+
~/.cargo/registry
|
|
74
|
+
~/.cargo/git
|
|
75
|
+
type-bridge-core/target
|
|
76
|
+
key: ${{ runner.os }}-cargo-nightly-${{ hashFiles('type-bridge-core/Cargo.lock') }}
|
|
77
|
+
restore-keys: |
|
|
78
|
+
${{ runner.os }}-cargo-nightly-
|
|
79
|
+
|
|
80
|
+
- name: Generate LCOV report
|
|
81
|
+
run: ./scripts/coverage.sh branch --lcov
|
|
82
|
+
|
|
83
|
+
- name: Upload Rust coverage to Codecov
|
|
84
|
+
uses: codecov/codecov-action@v5
|
|
85
|
+
with:
|
|
86
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
87
|
+
files: type-bridge-core/target/llvm-cov/lcov.branch.info
|
|
88
|
+
flags: rust
|
|
89
|
+
fail_ci_if_error: false
|
|
90
|
+
|
|
47
91
|
# Build maturin wheels for all platforms (parallel with other jobs)
|
|
48
92
|
build-wheels:
|
|
49
93
|
name: Build wheel (${{ matrix.target }})
|
|
@@ -194,8 +238,21 @@ jobs:
|
|
|
194
238
|
- name: Install pytest-xdist for parallel execution
|
|
195
239
|
run: uv pip install pytest-xdist
|
|
196
240
|
|
|
197
|
-
- name: Run unit tests
|
|
198
|
-
run:
|
|
241
|
+
- name: Run unit tests with coverage
|
|
242
|
+
run: |
|
|
243
|
+
uv run pytest tests/unit/ -v --tb=short -n auto \
|
|
244
|
+
--cov=type_bridge --cov-branch \
|
|
245
|
+
--cov-report=xml:coverage.xml \
|
|
246
|
+
--cov-report=term-missing
|
|
247
|
+
|
|
248
|
+
- name: Upload Python coverage to Codecov
|
|
249
|
+
uses: codecov/codecov-action@v5
|
|
250
|
+
if: always()
|
|
251
|
+
with:
|
|
252
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
253
|
+
files: coverage.xml
|
|
254
|
+
flags: python
|
|
255
|
+
fail_ci_if_error: false
|
|
199
256
|
|
|
200
257
|
# Integration tests (require TypeDB server, parallel by test category)
|
|
201
258
|
test-integration:
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
name: Documentation
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [master]
|
|
6
|
+
paths:
|
|
7
|
+
- "docs/**"
|
|
8
|
+
- "type_bridge/**"
|
|
9
|
+
- "mkdocs.yml"
|
|
10
|
+
- "scripts/gen_ref_pages.py"
|
|
11
|
+
pull_request:
|
|
12
|
+
branches: [master]
|
|
13
|
+
paths:
|
|
14
|
+
- "docs/**"
|
|
15
|
+
- "type_bridge/**"
|
|
16
|
+
- "mkdocs.yml"
|
|
17
|
+
- "scripts/gen_ref_pages.py"
|
|
18
|
+
workflow_dispatch:
|
|
19
|
+
|
|
20
|
+
# Allow only one concurrent deployment
|
|
21
|
+
concurrency:
|
|
22
|
+
group: pages-${{ github.ref }}
|
|
23
|
+
cancel-in-progress: true
|
|
24
|
+
|
|
25
|
+
# Sets permissions for GitHub Pages deployment
|
|
26
|
+
permissions:
|
|
27
|
+
contents: read
|
|
28
|
+
pages: write
|
|
29
|
+
id-token: write
|
|
30
|
+
|
|
31
|
+
jobs:
|
|
32
|
+
build:
|
|
33
|
+
name: Build docs
|
|
34
|
+
runs-on: ubuntu-latest
|
|
35
|
+
steps:
|
|
36
|
+
- name: Checkout code
|
|
37
|
+
uses: actions/checkout@v4
|
|
38
|
+
|
|
39
|
+
- name: Set up Python
|
|
40
|
+
uses: actions/setup-python@v5
|
|
41
|
+
with:
|
|
42
|
+
python-version: "3.13"
|
|
43
|
+
|
|
44
|
+
- name: Install Rust toolchain
|
|
45
|
+
uses: dtolnay/rust-toolchain@stable
|
|
46
|
+
|
|
47
|
+
- name: Cache cargo registry and build
|
|
48
|
+
uses: actions/cache@v4
|
|
49
|
+
with:
|
|
50
|
+
path: |
|
|
51
|
+
~/.cargo/registry
|
|
52
|
+
~/.cargo/git
|
|
53
|
+
type-bridge-core/target
|
|
54
|
+
key: ${{ runner.os }}-cargo-docs-${{ hashFiles('type-bridge-core/Cargo.lock') }}
|
|
55
|
+
restore-keys: |
|
|
56
|
+
${{ runner.os }}-cargo-docs-
|
|
57
|
+
|
|
58
|
+
- name: Install uv
|
|
59
|
+
uses: astral-sh/setup-uv@v5
|
|
60
|
+
with:
|
|
61
|
+
enable-cache: true
|
|
62
|
+
|
|
63
|
+
- name: Install dependencies
|
|
64
|
+
run: uv sync --extra docs
|
|
65
|
+
|
|
66
|
+
- name: Build documentation
|
|
67
|
+
run: uv run mkdocs build --strict
|
|
68
|
+
|
|
69
|
+
- name: Upload artifact
|
|
70
|
+
if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request'
|
|
71
|
+
uses: actions/upload-pages-artifact@v3
|
|
72
|
+
with:
|
|
73
|
+
path: site/
|
|
74
|
+
|
|
75
|
+
deploy:
|
|
76
|
+
name: Deploy to GitHub Pages
|
|
77
|
+
if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request'
|
|
78
|
+
needs: build
|
|
79
|
+
runs-on: ubuntu-latest
|
|
80
|
+
environment:
|
|
81
|
+
name: github-pages
|
|
82
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
83
|
+
steps:
|
|
84
|
+
- name: Deploy to GitHub Pages
|
|
85
|
+
id: deployment
|
|
86
|
+
uses: actions/deploy-pages@v4
|
|
@@ -45,6 +45,52 @@ jobs:
|
|
|
45
45
|
- name: Run unit tests
|
|
46
46
|
run: uv run pytest tests/unit/ -v --tb=short
|
|
47
47
|
|
|
48
|
+
# Publish Rust crates to crates.io (dependency order)
|
|
49
|
+
publish-crates:
|
|
50
|
+
name: Publish Rust crates to crates.io
|
|
51
|
+
needs: test
|
|
52
|
+
runs-on: ubuntu-latest
|
|
53
|
+
environment: release
|
|
54
|
+
steps:
|
|
55
|
+
- name: Checkout code
|
|
56
|
+
uses: actions/checkout@v4
|
|
57
|
+
|
|
58
|
+
- name: Install Rust toolchain
|
|
59
|
+
uses: dtolnay/rust-toolchain@stable
|
|
60
|
+
|
|
61
|
+
- name: Publish type-bridge-core-lib
|
|
62
|
+
working-directory: type-bridge-core
|
|
63
|
+
env:
|
|
64
|
+
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
|
65
|
+
run: cargo publish -p type-bridge-core-lib || true
|
|
66
|
+
|
|
67
|
+
- name: Wait for crates.io index
|
|
68
|
+
run: sleep 30
|
|
69
|
+
|
|
70
|
+
- name: Publish type-bridge-orm-derive
|
|
71
|
+
working-directory: type-bridge-core
|
|
72
|
+
env:
|
|
73
|
+
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
|
74
|
+
run: cargo publish -p type-bridge-orm-derive || true
|
|
75
|
+
|
|
76
|
+
- name: Wait for crates.io index
|
|
77
|
+
run: sleep 30
|
|
78
|
+
|
|
79
|
+
- name: Publish type-bridge-orm
|
|
80
|
+
working-directory: type-bridge-core
|
|
81
|
+
env:
|
|
82
|
+
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
|
83
|
+
run: cargo publish -p type-bridge-orm || true
|
|
84
|
+
|
|
85
|
+
- name: Wait for crates.io index
|
|
86
|
+
run: sleep 30
|
|
87
|
+
|
|
88
|
+
- name: Publish type-bridge-server
|
|
89
|
+
working-directory: type-bridge-core
|
|
90
|
+
env:
|
|
91
|
+
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
|
92
|
+
run: cargo publish -p type-bridge-server || true
|
|
93
|
+
|
|
48
94
|
# Build type-bridge-core wheels for all platforms
|
|
49
95
|
build-core-wheels:
|
|
50
96
|
name: Build core wheel (${{ matrix.target }})
|
|
@@ -178,6 +224,8 @@ jobs:
|
|
|
178
224
|
|
|
179
225
|
- name: Publish to PyPI
|
|
180
226
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
227
|
+
with:
|
|
228
|
+
skip-existing: true
|
|
181
229
|
|
|
182
230
|
# Publish type-bridge to PyPI (after core is available)
|
|
183
231
|
publish-python-pypi:
|
|
@@ -196,11 +244,13 @@ jobs:
|
|
|
196
244
|
|
|
197
245
|
- name: Publish to PyPI
|
|
198
246
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
247
|
+
with:
|
|
248
|
+
skip-existing: true
|
|
199
249
|
|
|
200
250
|
# Create draft GitHub Release with all artifacts
|
|
201
251
|
github-release:
|
|
202
252
|
name: Create GitHub Release
|
|
203
|
-
needs: publish-python-pypi
|
|
253
|
+
needs: [publish-python-pypi, publish-crates]
|
|
204
254
|
runs-on: ubuntu-latest
|
|
205
255
|
permissions:
|
|
206
256
|
contents: write
|
|
@@ -22,10 +22,20 @@ packages/typescript/dist/
|
|
|
22
22
|
# Coverage
|
|
23
23
|
.coverage
|
|
24
24
|
htmlcov/
|
|
25
|
+
coverage.xml
|
|
25
26
|
|
|
26
27
|
# Temporary
|
|
27
28
|
tmp/
|
|
28
29
|
|
|
30
|
+
# Benchmarks
|
|
31
|
+
benchmarks/.results/
|
|
32
|
+
.benchmarks/
|
|
33
|
+
|
|
34
|
+
# MkDocs build output
|
|
35
|
+
site/
|
|
36
|
+
|
|
29
37
|
# Reference repos
|
|
30
38
|
typeql-ref/
|
|
31
|
-
type-bridge-core
|
|
39
|
+
type-bridge-core/**/target/
|
|
40
|
+
*.profraw
|
|
41
|
+
*.profdata
|
|
@@ -2,6 +2,127 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to TypeBridge will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [Unreleased]
|
|
6
|
+
|
|
7
|
+
## [1.4.2] - 2026-03-04
|
|
8
|
+
|
|
9
|
+
##### Rust Server — `type-bridge-server`
|
|
10
|
+
- **`CrudInfo`** on `RequestContext` — operation, type_name, type_kind, attribute_names, iid
|
|
11
|
+
- **`CrudInterceptor` trait** with `on_crud_request` / `on_crud_response` and `should_intercept`
|
|
12
|
+
- **`CrudInterceptorAdapter`** bridges `CrudInterceptor` into the existing `Interceptor` chain
|
|
13
|
+
|
|
14
|
+
## [1.4.1] - 2026-03-03
|
|
15
|
+
|
|
16
|
+
### New Features
|
|
17
|
+
|
|
18
|
+
#### Lifecycle Hook System (PR #118, closes #116)
|
|
19
|
+
|
|
20
|
+
Three-layer hook system for reacting to CRUD lifecycle events (audit logging, validation, cache invalidation, async notifications).
|
|
21
|
+
|
|
22
|
+
##### Python ORM — `type_bridge.crud.hooks`
|
|
23
|
+
- **`CrudEvent` enum** — `PRE_INSERT`, `POST_INSERT`, `PRE_UPDATE`, `POST_UPDATE`, `PRE_DELETE`, `POST_DELETE`, `PRE_PUT`, `POST_PUT`
|
|
24
|
+
- **`LifecycleHook` protocol** — implement only the methods you need (`pre_insert`, `post_delete`, etc.)
|
|
25
|
+
- **`HookCancelled` exception** — raise in a pre-hook to abort the operation
|
|
26
|
+
- **Per-manager registration** — `manager.add_hook(hook)` / `manager.remove_hook(hook)`, chainable
|
|
27
|
+
- **`should_run(event, sender)`** filtering by event type or model class
|
|
28
|
+
- Pre-hooks run in registration order; post-hooks run in reverse order (middleware unwinding)
|
|
29
|
+
- Zero overhead when no hooks are registered
|
|
30
|
+
|
|
31
|
+
##### Rust ORM — `type-bridge-orm`
|
|
32
|
+
- **`LifecycleHook` trait** with `HookContext`, `PreHookResult` (Continue/Reject), and `HookRunner`
|
|
33
|
+
- Integrated into `EntityManager` and `RelationManager` via `add_hook()`
|
|
34
|
+
- Same semantics as the Python layer (registration-order pre-hooks, reverse-order post-hooks)
|
|
35
|
+
|
|
36
|
+
#### Put (Upsert) Clause — `type-bridge-core-lib`
|
|
37
|
+
- **Added `Clause::Put(Vec<Statement>)` variant** for idempotent insert (upsert) operations
|
|
38
|
+
- Parser: `parse_put_clause` with keyword lookahead in both `parse_patterns` and `parse_statements`
|
|
39
|
+
- Compiler: Generates `put\n<statements>;` TypeQL output
|
|
40
|
+
- Validation: Reuses Insert validation rules (`Clause::Insert | Clause::Put`)
|
|
41
|
+
- Full roundtrip support (parse → AST → compile → parse)
|
|
42
|
+
|
|
43
|
+
### Refactoring
|
|
44
|
+
|
|
45
|
+
#### Server API Simplification — `type-bridge-server`
|
|
46
|
+
- **Removed standalone CRUD module** (`/entities/*`, `/relations/*` endpoints, `CrudQueryBuilder`, raw query support) — superseded by the interceptor-based design
|
|
47
|
+
- **Removed `crud_builder` benchmark** and `criterion` dev-dependency
|
|
48
|
+
- **Server now has 4 endpoints**: `POST /query`, `POST /query/validate`, `GET /health`, `GET /schema`
|
|
49
|
+
|
|
50
|
+
## [1.4.0] - 2026-02-20
|
|
51
|
+
|
|
52
|
+
### Highlights
|
|
53
|
+
|
|
54
|
+
- 5 new Rust crates: `core-lib`, `orm`, `orm-derive`, `server`, and `python` (PyO3 bindings)
|
|
55
|
+
- Up to **40x faster validation** and **2.5x faster query compilation** via the Rust backend
|
|
56
|
+
- Async Rust ORM with derive macros, chainable queries, and batch operations
|
|
57
|
+
- Query-intercepting proxy server with REST endpoints
|
|
58
|
+
- MkDocs Material documentation site
|
|
59
|
+
|
|
60
|
+
### New Features
|
|
61
|
+
|
|
62
|
+
#### Rust Core — `type-bridge-core-lib` (PRs #95, #101-#108)
|
|
63
|
+
- **TypeQL schema parser** with inheritance resolution and PyO3 bindings
|
|
64
|
+
- **TypeQL query parser** with bidirectional AST roundtrip
|
|
65
|
+
- **Schema-aware query validation** with statement and pattern validators
|
|
66
|
+
- **Rust-backed value coercion** and `format_value`
|
|
67
|
+
- **Custom validation rules** with portable JSON DSL
|
|
68
|
+
- **Wired Rust core into Python** compiler and validation pipeline
|
|
69
|
+
|
|
70
|
+
#### Async Rust ORM — `type-bridge-orm` (PR #114)
|
|
71
|
+
- **Async ORM** with entity CRUD and mock-testable session layer
|
|
72
|
+
- **Derive macros** — `#[derive(TypeBridgeEntity)]`, `#[derive(TypeBridgeRelation)]`, `#[derive(TypeBridgeAttribute)]`
|
|
73
|
+
- **Chainable query builders** with expression filtering and aggregation
|
|
74
|
+
- **Schema management** — registration, generation, diff, and sync
|
|
75
|
+
- **Abstract types** with inheritance and code generation
|
|
76
|
+
- **Batch operations** — `insert_many`, `delete_many`, `update_many`
|
|
77
|
+
- **`FieldRef<A>`** for type-safe query field references
|
|
78
|
+
- **`include_schema!`** proc-macro for compile-time TQL codegen
|
|
79
|
+
- **Schema introspection** from live TypeDB database
|
|
80
|
+
- **Group-by queries** with `GroupByResult`
|
|
81
|
+
- **Role player field access** for relation query filtering
|
|
82
|
+
- **Expression helpers** — `in_range()`, `startswith()`, `endswith()`
|
|
83
|
+
- **Connection pooling** with `Database::into_shared()`
|
|
84
|
+
- **Serde support** on all ORM model types
|
|
85
|
+
- **Structured tracing** spans on all public methods
|
|
86
|
+
|
|
87
|
+
#### Query Intercept Proxy — `type-bridge-server` (PR #109)
|
|
88
|
+
- **REST CRUD endpoints** with schema-aware query building
|
|
89
|
+
- **`CrudQueryBuilder` PyO3 class** for TypeQL generation from Python
|
|
90
|
+
- **Extensible library/framework** — pluggable `QueryExecutor`, `Interceptor`, `SchemaSource`
|
|
91
|
+
- **207 tests** with 100% MC/DC coverage
|
|
92
|
+
|
|
93
|
+
### Performance: Python vs Rust
|
|
94
|
+
|
|
95
|
+
#### Validation
|
|
96
|
+
|
|
97
|
+
| Operation | Python | Rust | Speedup |
|
|
98
|
+
|-----------|--------|------|---------|
|
|
99
|
+
| Single type name | 1.89 us | 354.75 ns | **5.3x** |
|
|
100
|
+
| Long name (100+ chars) | 24.90 us | 620.52 ns | **40.1x** |
|
|
101
|
+
| Batch 1,000 names | 5.32 ms | 266.80 us | **19.9x** |
|
|
102
|
+
| Batch 5,000 names | 28.02 ms | 1.33 ms | **21.1x** |
|
|
103
|
+
|
|
104
|
+
#### Query Compilation (via serde bridge)
|
|
105
|
+
|
|
106
|
+
| Operation | Python | Rust | Speedup |
|
|
107
|
+
|-----------|--------|------|---------|
|
|
108
|
+
| Standalone update | 93.28 us | 37.82 us | **2.5x** |
|
|
109
|
+
| Large batch (200 clauses) | 2.26 ms | 1.07 ms | **2.1x** |
|
|
110
|
+
| Heavy insert (100x6) | 1.71 ms | 896.19 us | **1.9x** |
|
|
111
|
+
|
|
112
|
+
### Documentation & CI
|
|
113
|
+
|
|
114
|
+
- **MkDocs + Material** documentation site with auto-generated API reference (PR #98)
|
|
115
|
+
- **Rust crate CI** with multi-platform wheel builds — Linux (x86_64, aarch64), macOS (x86_64, aarch64), Windows (x86_64) (PR #95)
|
|
116
|
+
- **Comprehensive benchmark suite** with TOML storage, comparison reports, and markdown generation (PR #103)
|
|
117
|
+
- **Codecov integration** for Rust coverage tracking (PR #109)
|
|
118
|
+
|
|
119
|
+
### Bug Fixes
|
|
120
|
+
|
|
121
|
+
- Resolve Rust 1.93.0 clippy lint errors
|
|
122
|
+
- Pin Python 3.13 for Rust CI jobs and fix coverage script
|
|
123
|
+
- Add version specifiers to inter-crate path dependencies for crates.io publishing
|
|
124
|
+
- Make release workflow idempotent (skip already-published packages)
|
|
125
|
+
|
|
5
126
|
## [1.3.0] - 2026-02-09
|
|
6
127
|
|
|
7
128
|
### New Features
|
|
@@ -84,6 +84,7 @@ type_bridge/
|
|
|
84
84
|
│ ├── base.py # Type variables (E, R)
|
|
85
85
|
│ ├── utils.py # Shared utilities (format_value, is_multi_value_attribute)
|
|
86
86
|
│ ├── exceptions.py # CRUD exceptions
|
|
87
|
+
│ ├── hooks.py # Lifecycle hooks (CrudEvent, HookCancelled, CrudHook, HookRunner)
|
|
87
88
|
│ ├── entity/ # Entity CRUD operations
|
|
88
89
|
│ │ ├── __init__.py # Entity module exports
|
|
89
90
|
│ │ ├── manager.py # EntityManager class
|
|
@@ -187,37 +188,39 @@ The project requires:
|
|
|
187
188
|
|
|
188
189
|
## Documentation
|
|
189
190
|
|
|
191
|
+
Full documentation site: **[https://ds1sqe.github.io/type-bridge/](https://ds1sqe.github.io/type-bridge/)**
|
|
192
|
+
|
|
190
193
|
### User Documentation
|
|
191
194
|
|
|
192
195
|
- **[README.md](README.md)** - Quick start guide for users
|
|
193
196
|
|
|
194
197
|
### Development Guides
|
|
195
198
|
|
|
196
|
-
- **[docs/
|
|
197
|
-
- **[docs/
|
|
199
|
+
- **[docs/development/setup.md](docs/development/setup.md)** - Development setup, commands, code quality standards
|
|
200
|
+
- **[docs/development/testing.md](docs/development/testing.md)** - Testing strategy, patterns, and execution
|
|
198
201
|
|
|
199
202
|
### TypeDB Integration
|
|
200
203
|
|
|
201
|
-
- **[docs/
|
|
202
|
-
- **[docs/
|
|
204
|
+
- **[docs/development/typedb.md](docs/development/typedb.md)** - TypeDB concepts, driver API, TypeQL syntax, 3.x changes
|
|
205
|
+
- **[docs/development/abstract-types.md](docs/development/abstract-types.md)** - Abstract types and interface hierarchies in TypeDB
|
|
203
206
|
|
|
204
207
|
### Architecture & Internals
|
|
205
208
|
|
|
206
|
-
- **[docs/
|
|
207
|
-
|
|
208
|
-
### API
|
|
209
|
-
|
|
210
|
-
- **[docs/
|
|
211
|
-
- **[docs/
|
|
212
|
-
- **[docs/
|
|
213
|
-
- **[docs/
|
|
214
|
-
- **[docs/
|
|
215
|
-
- **[docs/
|
|
216
|
-
- **[docs/
|
|
217
|
-
- **[docs/
|
|
218
|
-
- **[docs/
|
|
219
|
-
- **[docs/
|
|
220
|
-
- **[docs/
|
|
209
|
+
- **[docs/development/internals.md](docs/development/internals.md)** - Internal type system, ModelAttrInfo, modern Python standards
|
|
210
|
+
|
|
211
|
+
### User Guide (API docs)
|
|
212
|
+
|
|
213
|
+
- **[docs/guide/index.md](docs/guide/index.md)** - API overview and quick reference
|
|
214
|
+
- **[docs/guide/attributes.md](docs/guide/attributes.md)** - Attribute types and value types
|
|
215
|
+
- **[docs/guide/entities.md](docs/guide/entities.md)** - Entity definition and ownership
|
|
216
|
+
- **[docs/guide/relations.md](docs/guide/relations.md)** - Relations, roles, and role players
|
|
217
|
+
- **[docs/guide/abstract-types.md](docs/guide/abstract-types.md)** - Abstract types implementation and patterns
|
|
218
|
+
- **[docs/guide/cardinality.md](docs/guide/cardinality.md)** - Card API and Flag system
|
|
219
|
+
- **[docs/guide/crud.md](docs/guide/crud.md)** - CRUD operations and managers
|
|
220
|
+
- **[docs/guide/queries.md](docs/guide/queries.md)** - Query expressions and aggregations
|
|
221
|
+
- **[docs/guide/schema.md](docs/guide/schema.md)** - Schema management and conflict detection
|
|
222
|
+
- **[docs/guide/generator.md](docs/guide/generator.md)** - Code generator (TQL → Python)
|
|
223
|
+
- **[docs/guide/validation.md](docs/guide/validation.md)** - Pydantic integration and type safety
|
|
221
224
|
|
|
222
225
|
## Getting Help
|
|
223
226
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: type-bridge
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.2
|
|
4
4
|
Summary: A modern, Pythonic ORM for TypeDB with an Attribute-based API
|
|
5
5
|
Project-URL: Homepage, https://github.com/ds1sqe/type-bridge
|
|
6
6
|
Project-URL: Repository, https://github.com/ds1sqe/type-bridge
|
|
7
|
-
Project-URL: Documentation, https://github.
|
|
7
|
+
Project-URL: Documentation, https://ds1sqe.github.io/type-bridge/
|
|
8
8
|
Project-URL: Issues, https://github.com/ds1sqe/type-bridge/issues
|
|
9
9
|
Author-email: ds1sqe <ds1sqe@mensakorea.org>
|
|
10
10
|
License: MIT
|
|
@@ -22,16 +22,24 @@ Requires-Dist: isodate==0.7.2
|
|
|
22
22
|
Requires-Dist: jinja2>=3.1.0
|
|
23
23
|
Requires-Dist: lark>=1.1.9
|
|
24
24
|
Requires-Dist: pydantic>=2.12.4
|
|
25
|
-
Requires-Dist: type-bridge-core>=
|
|
25
|
+
Requires-Dist: type-bridge-core>=1.4.2
|
|
26
26
|
Requires-Dist: typedb-driver>=3.8.0
|
|
27
27
|
Requires-Dist: typer>=0.15.0
|
|
28
28
|
Provides-Extra: dev
|
|
29
29
|
Requires-Dist: pyright>=1.1.407; extra == 'dev'
|
|
30
30
|
Requires-Dist: pytest-asyncio>=1.3.0; extra == 'dev'
|
|
31
|
+
Requires-Dist: pytest-benchmark>=5.1.0; extra == 'dev'
|
|
31
32
|
Requires-Dist: pytest-cov>=6.0.0; extra == 'dev'
|
|
32
33
|
Requires-Dist: pytest-order>=1.2.0; extra == 'dev'
|
|
33
34
|
Requires-Dist: pytest>=9.0.1; extra == 'dev'
|
|
34
35
|
Requires-Dist: ruff>=0.14.5; extra == 'dev'
|
|
36
|
+
Provides-Extra: docs
|
|
37
|
+
Requires-Dist: mkdocs-gen-files>=0.5; extra == 'docs'
|
|
38
|
+
Requires-Dist: mkdocs-literate-nav>=0.6; extra == 'docs'
|
|
39
|
+
Requires-Dist: mkdocs-material>=9.5; extra == 'docs'
|
|
40
|
+
Requires-Dist: mkdocs-section-index>=0.3; extra == 'docs'
|
|
41
|
+
Requires-Dist: mkdocs>=1.6; extra == 'docs'
|
|
42
|
+
Requires-Dist: mkdocstrings[python]>=0.27; extra == 'docs'
|
|
35
43
|
Description-Content-Type: text/markdown
|
|
36
44
|
|
|
37
45
|
# TypeBridge
|
|
@@ -61,6 +69,7 @@ A modern, Pythonic ORM for [TypeDB](https://github.com/typedb/typedb) with an At
|
|
|
61
69
|
- **Data Validation**: Automatic type checking and coercion via Pydantic, including keyword validation
|
|
62
70
|
- **JSON Support**: Seamless JSON serialization/deserialization
|
|
63
71
|
- **CRUD Operations**: Full CRUD with fetching API (get, filter, all, update) for entities and relations
|
|
72
|
+
- **Lifecycle Hooks**: Pre/post-operation hooks for audit logging, validation, cache invalidation, and async notifications
|
|
64
73
|
- **Chainable Operations**: Filter, delete, and bulk update with method chaining and lambda functions
|
|
65
74
|
- **Query Builder**: Pythonic interface for building TypeQL queries
|
|
66
75
|
- **Multi-player Roles**: A single role can accept multiple entity types via `Role.multi(...)`
|
|
@@ -72,18 +81,19 @@ A modern, Pythonic ORM for [TypeDB](https://github.com/typedb/typedb) with an At
|
|
|
72
81
|
## Installation
|
|
73
82
|
|
|
74
83
|
```bash
|
|
75
|
-
#
|
|
76
|
-
|
|
77
|
-
cd type_bridge
|
|
84
|
+
# Install from PyPI
|
|
85
|
+
pip install type-bridge
|
|
78
86
|
|
|
79
|
-
#
|
|
80
|
-
uv
|
|
87
|
+
# Or with uv
|
|
88
|
+
uv add type-bridge
|
|
89
|
+
```
|
|
81
90
|
|
|
82
|
-
|
|
83
|
-
pip install -e .
|
|
91
|
+
**From source:**
|
|
84
92
|
|
|
85
|
-
|
|
86
|
-
|
|
93
|
+
```bash
|
|
94
|
+
git clone https://github.com/ds1sqe/type-bridge.git
|
|
95
|
+
cd type_bridge
|
|
96
|
+
uv sync
|
|
87
97
|
```
|
|
88
98
|
|
|
89
99
|
## Quick Start
|
|
@@ -292,31 +302,16 @@ The generator supports:
|
|
|
292
302
|
- Registry module generation for schema metadata and JSON Schema fragments
|
|
293
303
|
- Both `#` and `//` comment styles
|
|
294
304
|
|
|
295
|
-
See [
|
|
305
|
+
See the [Code Generator guide](https://ds1sqe.github.io/type-bridge/guide/generator/) for full documentation.
|
|
296
306
|
|
|
297
307
|
## Documentation
|
|
298
308
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
-
|
|
302
|
-
-
|
|
303
|
-
-
|
|
304
|
-
-
|
|
305
|
-
- **[docs/SKILL.md](docs/SKILL.md)** - AI assistant skill for using type-bridge (for Claude, GPT, etc.)
|
|
306
|
-
|
|
307
|
-
### API Reference
|
|
308
|
-
|
|
309
|
-
- **[docs/api/README.md](docs/api/README.md)** - API overview and quick reference
|
|
310
|
-
- **[docs/api/attributes.md](docs/api/attributes.md)** - Attribute types and value types
|
|
311
|
-
- **[docs/api/entities.md](docs/api/entities.md)** - Entity definition and ownership
|
|
312
|
-
- **[docs/api/relations.md](docs/api/relations.md)** - Relations, roles, and role players
|
|
313
|
-
- **[docs/api/abstract_types.md](docs/api/abstract_types.md)** - Abstract types implementation and patterns
|
|
314
|
-
- **[docs/api/cardinality.md](docs/api/cardinality.md)** - Card API and Flag system
|
|
315
|
-
- **[docs/api/crud.md](docs/api/crud.md)** - CRUD operations and managers
|
|
316
|
-
- **[docs/api/queries.md](docs/api/queries.md)** - Query expressions and aggregations
|
|
317
|
-
- **[docs/api/schema.md](docs/api/schema.md)** - Schema management and conflict detection
|
|
318
|
-
- **[docs/api/generator.md](docs/api/generator.md)** - Code generator (TQL → Python)
|
|
319
|
-
- **[docs/api/validation.md](docs/api/validation.md)** - Pydantic integration and type safety
|
|
309
|
+
**[https://ds1sqe.github.io/type-bridge/](https://ds1sqe.github.io/type-bridge/)** — Full documentation site with user guide, API reference, and development guides.
|
|
310
|
+
|
|
311
|
+
- [Getting Started](https://ds1sqe.github.io/type-bridge/getting-started/) — Installation and quick start
|
|
312
|
+
- [User Guide](https://ds1sqe.github.io/type-bridge/guide/) — Attributes, entities, relations, CRUD, queries, and more
|
|
313
|
+
- [API Reference](https://ds1sqe.github.io/type-bridge/reference/) — Auto-generated from source docstrings
|
|
314
|
+
- [Development](https://ds1sqe.github.io/type-bridge/development/) — Setup, testing, and internals
|
|
320
315
|
|
|
321
316
|
## Pydantic Integration
|
|
322
317
|
|
|
@@ -374,7 +369,7 @@ TypeBridge uses a two-tier testing approach with **100% test pass rate**:
|
|
|
374
369
|
|
|
375
370
|
```bash
|
|
376
371
|
# Unit tests (fast, no external dependencies) - DEFAULT
|
|
377
|
-
uv run pytest # Run unit tests
|
|
372
|
+
uv run pytest # Run unit tests
|
|
378
373
|
uv run pytest tests/unit/attributes/ -v # Test all 9 attribute types
|
|
379
374
|
uv run pytest tests/unit/core/ -v # Test core functionality
|
|
380
375
|
uv run pytest tests/unit/flags/ -v # Test flag system
|
|
@@ -399,11 +394,31 @@ uv run pytest -m "" -v # Run all tests
|
|
|
399
394
|
./check.sh # Run linting and type checking
|
|
400
395
|
```
|
|
401
396
|
|
|
397
|
+
## Rust Core
|
|
398
|
+
|
|
399
|
+
The project includes a Rust core (`type-bridge-core/`) that provides high-performance implementations of the query compiler, validation engine, and value coercer. When the native extension is installed, Python automatically delegates to Rust for:
|
|
400
|
+
|
|
401
|
+
- **Validation** — up to 40x faster schema-aware query validation
|
|
402
|
+
- **Compilation** — up to 2.5x faster AST-to-TypeQL compilation via serde bridge
|
|
403
|
+
- **Value coercion** — Type-safe value coercion and TypeQL literal formatting
|
|
404
|
+
|
|
405
|
+
The Rust core is a Cargo workspace with five crates:
|
|
406
|
+
|
|
407
|
+
| Crate | Description |
|
|
408
|
+
|-------|-------------|
|
|
409
|
+
| `type-bridge-core-lib` | Pure-Rust AST, schema parser, query compiler, and validation engine |
|
|
410
|
+
| `type-bridge-orm` | Async ORM with entity/relation managers, chainable queries, and batch operations |
|
|
411
|
+
| `type-bridge-orm-derive` | Derive macros for `TypeBridgeEntity`, `TypeBridgeRelation`, `TypeBridgeAttribute` |
|
|
412
|
+
| `type-bridge-core` | PyO3 bindings exposing the Rust core to Python |
|
|
413
|
+
| `type-bridge-server` | Transport-agnostic query pipeline with interceptor chain and HTTP API |
|
|
414
|
+
|
|
415
|
+
See [`type-bridge-core/README.md`](type-bridge-core/README.md) for build instructions and architecture details.
|
|
416
|
+
|
|
402
417
|
## Requirements
|
|
403
418
|
|
|
404
419
|
- Python 3.13+
|
|
405
|
-
- TypeDB 3.
|
|
406
|
-
- typedb-driver>=3.
|
|
420
|
+
- TypeDB 3.x server
|
|
421
|
+
- typedb-driver>=3.8.0
|
|
407
422
|
- pydantic>=2.12.4
|
|
408
423
|
- isodate==0.7.2 (for Duration type support)
|
|
409
424
|
- lark>=1.1.9 (for schema parsing)
|