assertpy2 2.28.0__tar.gz → 2.29.1__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.
- {assertpy2-2.28.0 → assertpy2-2.29.1}/PKG-INFO +1 -1
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_compare.py +1 -1
- assertpy2-2.29.1/assertpy2/_engine/_contract.py +927 -0
- assertpy2-2.29.1/assertpy2/_engine/_diff.py +916 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_equality.py +86 -18
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_membership.py +2 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_ordering.py +34 -4
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_path.py +70 -12
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_matcher_impls.py +54 -31
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_satisfies.py +36 -26
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/assertpy.py +27 -14
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/base.py +12 -7
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/collection.py +21 -6
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/contains.py +34 -21
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/date.py +5 -5
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/dynamic.py +3 -1
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/errors.py +13 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/helpers.py +34 -31
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/numeric.py +6 -6
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/snapshot.py +3 -3
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/string.py +21 -12
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/concepts/type-safety.md +29 -1
- {assertpy2-2.28.0 → assertpy2-2.29.1}/pyproject.toml +1 -1
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_complexity.py +4 -10
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_datetime.py +25 -24
- assertpy2-2.29.1/tests/test_deep_nesting.py +437 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_duality.py +13 -156
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_evaluation_core.py +486 -2
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_match_result.py +53 -0
- assertpy2-2.29.1/tests/test_matcher_algebra.py +230 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_property_based.py +9 -4
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_recursive_compare.py +17 -0
- assertpy2-2.29.1/tests/test_structural.py +2580 -0
- assertpy2-2.29.1/tests/test_unrenderable_values.py +244 -0
- assertpy2-2.28.0/assertpy2/_engine/_contract.py +0 -166
- assertpy2-2.28.0/assertpy2/_engine/_diff.py +0 -718
- assertpy2-2.28.0/tests/test_structural.py +0 -1214
- {assertpy2-2.28.0 → assertpy2-2.29.1}/.gitignore +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/CONTRIBUTING.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/LICENSE +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/README.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/SECURITY.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/__init__.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_clustering.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_dangling.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/__init__.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_builder_check_typing.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_capable_typing.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_check_typing.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_compat.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_introspection.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_mixin_base.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_negated_typing.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_operations.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_pairing.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_poll_typing.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_require.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_size.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_text.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_engine/_typing.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_hints.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_inline.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/_snapshot_codec.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/async_assertions.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/behave_matchers.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/bytes_mixin.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/dataframe.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/dict.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/exception.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/extracting.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/file.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/http_mixin.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/json_mixin.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/matchers.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/outcome.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/py.typed +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/pytest_plugin.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/assertpy2/warning.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/benchmarks/test_perf.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/assets/diff-equal.png +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/assets/diff-equal.svg +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/assets/diff-gallery.png +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/assets/diff-match.svg +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/assets/diff-sequence.svg +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/assets/diff-set.svg +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/assets/diff-string.svg +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/concepts/stability.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/extending/custom-assertions.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/extending/integrations.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/getting-started/comparison.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/getting-started/migration.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/getting-started/quickstart.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/guides/assertions.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/guides/data.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/guides/errors.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/guides/fluent.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/guides/matchers.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/guides/testing.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/index.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/logo-dark.svg +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/logo.svg +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/recipes.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/async.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/bytes.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/collections.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/containment.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/core.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/dataframes.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/dates.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/dicts.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/dynamic.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/entry-points.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/errors.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/exceptions.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/extracting.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/files.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/http.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/json.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/matchers.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/numbers.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/overview.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/snapshots.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/strings.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/reference/warnings.md +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/docs/stylesheets/extra.css +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/mkdocs.yml +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/mkdocs_hooks.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/scripts/generate_check_protocols.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/scripts/generate_poll_protocols.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/scripts/mutation_report.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/scripts/regenerate.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/api_snapshot.json +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/api_surface.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/chain_corpus.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/chain_model.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/chain_surfaces.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/conftest.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/docs_fixtures.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/group_compat.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/poll_parity_baseline.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/poll_parity_cases.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/pyright_baseline.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_api_compatibility.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_api_vocabulary.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_architecture_doc.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_async.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_async_predicates.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_attrs_support.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_behave_matchers.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_bool.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_boundary_cases.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_bytes.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_call_awaitables.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_callable.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_capable_protocol.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_chain_machine.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_chaining.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_check.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_check_protocols.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_class.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_clustering.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_collection.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_core.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_custom_dict.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_custom_list.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_dangling.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_dataframe.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_declared_floors.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_description.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_dict.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_dict_compare.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_docs_examples.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_docs_typing.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_dynamic.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_equality_signals.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_equals.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_errors.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_exception_context.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_expected_contract.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_expected_exception.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_expected_warning.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_extensions.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_extracting.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_fail.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_file.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_grouped_soft.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_hints.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_hostile_values.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_http.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_in.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_inline_record.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_inline_snapshot.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_integer_arguments.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_iterable_cluster.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_json.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_list.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_matcher_parity.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_matcher_registry.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_matchers.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_message_elision.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_namedtuple.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_negated_protocols.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_none.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_not.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_number_zoo.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_numbers.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_numeric_questions.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_openapi_contract.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_operation_contract.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_optional_integration_contracts.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_overload_order.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_overloads.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_pin_coverage.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_pipeline.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_poll_parity.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_poll_protocols.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_prerequisites.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_property_attrs.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_protocol_parity.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_public_surface.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_pyright_baseline.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_pytest_plugin.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_recursive_assertion.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_recursive_compare_attrs.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_recursive_compare_config.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_recursive_compare_pydantic.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_refusals.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_regex_groups.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_requirement.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_rich_diff.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_same_as.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_satisfy.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_skip_guard.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_snapshots.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_soft.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_soft_fail.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_string.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_surface_conformance.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_sync_eventually.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_traceback.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_type.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_type_expression_failures.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_typing.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_typing_chain_corpus.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_typing_claims.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_typing_completeness.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_typing_conformance.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_typing_from_a_wheel.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_typing_http.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_typing_integrations.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_typing_negative.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_typing_promises.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_vacuity_contract.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_verdict_corpus.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/test_warn.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/typing_cases.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/typing_chain_corpus_baseline.json +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/typing_harness.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/typing_http.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/typing_integrations.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/typing_integrations_baseline.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/typing_negative_baseline.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/typing_promises.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/verdict_corpus.py +0 -0
- {assertpy2-2.28.0 → assertpy2-2.29.1}/tests/verdict_golden.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: assertpy2
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.29.1
|
|
4
4
|
Summary: Fluent, fully typed assertion library for Python: your type checker sees only the assertions that fit the value, and every failure carries a structured diff. Soft assertions, polling, inline snapshots, OpenAPI contracts.
|
|
5
5
|
Project-URL: Homepage, https://github.com/Solganis/assertpy2
|
|
6
6
|
Project-URL: Repository, https://github.com/Solganis/assertpy2
|
|
@@ -630,7 +630,7 @@ def _node_decision(actual, expected, config: _CompareConfig | None, *, field=Non
|
|
|
630
630
|
``"strict"`` is the fourth: the two sides are equal, but ``strict_types`` or a comparator still has to
|
|
631
631
|
look inside, because a container's ``==`` says nothing about the types of its members, nor about what a
|
|
632
632
|
comparator says of them. It differs from ``"recurse"`` only in what an undecomposable value means,
|
|
633
|
-
which `assertpy2._engine._diff.
|
|
633
|
+
which `assertpy2._engine._diff._Walk.descend()` is the single place to know.
|
|
634
634
|
"""
|
|
635
635
|
if config is not None:
|
|
636
636
|
if config.ignore_null and field is not None and as_held(expected) is None:
|