redis / redis-om-python

Object mapping, and more, for Redis and Python
MIT License
1.09k stars 108 forks source link

Test case `test_pagination_queries` is flaky #475

Open marianhlavac opened 1 year ago

marianhlavac commented 1 year ago

Two successive runs of the test suite resulted in failure and success without any changes to the code.

The first failure was caused by AssertionError in test_pagination_queries :

members = (Member(id=0, first_name='Andrew', last_name='Brookins', email='a@example.com', join_date=datetime.date(2023, 2, 11), ...com', join_date=datetime.date(2023, 2, 11), age=100, bio='This is member 3 who is a funny and lively sort of person.'))
m = Models(BaseHashModel=<class 'tests_sync.test_hash_model.m.<locals>.BaseHashModel'>, Order=<class 'tests_sync.test_hash_model.m.<locals>.Order'>, Member=<class 'tests_sync.test_hash_model.m.<locals>.Member'>)

    @py_test_mark_sync
    def test_pagination_queries(members, m):
        member1, member2, member3 = members

        actual = m.Member.find(m.Member.last_name == "Brookins").page()

        assert actual == [member1, member2]

        actual = m.Member.find().page(1, 1)

>       assert actual == [member2]
E       AssertionError: assert [Member(id=2, first_name='Andrew', last_name='Smith', email='as@example.com', join_date=datetime.date(2023, 2, 11), age=100, bio='This is member 3 who is a funny and lively sort of person.')] == [Member(id=1, first_name='Kim', last_name='Brookins', email='k@example.com', join_date=datetime.date(2023, 2, 11), age=34, bio='This is member 2 who can be quite anxious until you get to know them.')]
E         At index 0 diff: Member(id=2, first_name='Andrew', last_name='Smith', email='as@example.com', join_date=datetime.date(2023, 2, 11), age=100, bio='This is member 3 who is a funny and lively sort of person.') != Member(id=1, first_name='Kim', last_name='Brookins', email='k@example.com', join_date=datetime.date(2023, 2, 11), age=34, bio='This is member 2 who can be quite anxious until you get to know them.')
E         Full diff:
E         - [Member(id=1, first_name='Kim', last_name='Brookins', email='k@example.com', join_date=datetime.date(2023, 2, 11), age=34, bio='This is member 2 who can be quite anxious until you get to know them.')]
E         + [Member(id=2, first_name='Andrew', last_name='Smith', email='as@example.com', join_date=datetime.date(2023, 2, 11), age=100, bio='This is member 3 who is a funny and lively sort of person.')]

tests_sync/test_hash_model.py:187: AssertionError

Attached is a full log showing the first failure and immediate re-run resulting in success.

Full console output ``` ~/Repositories/redis-om-python fix-model-typings* 9s redis-om-DEJACET3-py3.10 ❯ make test /opt/homebrew/bin/poetry install Installing dependencies from lock file No dependencies to install or update Installing the current project: redis-om (0.1.2) touch .install.stamp /opt/homebrew/bin/poetry run python make_sync.py docker-compose up -d [+] Running 7/7 ⠿ oss_redis Pulled 3.6s ⠿ 5731adb3a4ab Already exists 0.0s ⠿ e78ad00da4bd Pull complete 0.6s ⠿ acf81d284940 Pull complete 0.8s ⠿ c19f7ed7779d Pull complete 1.5s ⠿ 9df49c3f82f2 Pull complete 1.5s ⠿ cf4fe2915070 Pull complete 1.5s [+] Running 3/3 ⠿ Network redis-om-python_default Created 0.0s ⠿ Container redis-om-python-oss_redis-1 Started 0.4s ⠿ Container redis-om-python-redis-1 Started 0.5s REDIS_OM_URL=""redis://localhost:6380?decode_responses=True"" /opt/homebrew/bin/poetry run pytest -n auto -vv ./tests/ ./tests_sync/ --cov-report term-missing --cov aredis_om redis_om =============================================================================== test session starts ================================================================================ platform darwin -- Python 3.10.8, pytest-7.2.1, pluggy-1.0.0 -- /Users/marian/Library/Caches/pypoetry/virtualenvs/redis-om-DEJACET3-py3.10/bin/python cachedir: .pytest_cache rootdir: /Users/marian/Repositories/redis-om-python, configfile: pytest.ini plugins: xdist-3.2.0, asyncio-0.20.3, cov-4.0.0 asyncio: mode=strict [gw0] darwin Python 3.10.8 cwd: /Users/marian/Repositories/redis-om-python [gw1] darwin Python 3.10.8 cwd: /Users/marian/Repositories/redis-om-python [gw2] darwin Python 3.10.8 cwd: /Users/marian/Repositories/redis-om-python [gw3] darwin Python 3.10.8 cwd: /Users/marian/Repositories/redis-om-python [gw4] darwin Python 3.10.8 cwd: /Users/marian/Repositories/redis-om-python [gw5] darwin Python 3.10.8 cwd: /Users/marian/Repositories/redis-om-python [gw6] darwin Python 3.10.8 cwd: /Users/marian/Repositories/redis-om-python [gw7] darwin Python 3.10.8 cwd: /Users/marian/Repositories/redis-om-python [gw0] Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] [gw1] Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] [gw2] Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] [gw3] Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] [gw4] Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] [gw5] Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] [gw6] Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] [gw7] Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] gw0 [152] / gw1 [152] / gw2 [152] / gw3 [152] / gw4 [152] / gw5 [152] / gw6 [152] / gw7 [152] scheduling tests via LoadScheduling tests/test_hash_model.py::test_recursive_query_resolution tests/test_hash_model.py::test_numeric_queries tests/test_hash_model.py::test_validation_passes tests/test_hash_model.py::test_raises_error_with_dicts tests/test_hash_model.py::test_delete tests/test_hash_model.py::test_access_result_by_index_not_cached tests/test_hash_model.py::test_delete_many tests/test_hash_model.py::test_exact_match_queries [gw3] [ 0%] PASSED tests/test_hash_model.py::test_validation_passes [gw5] [ 1%] PASSED tests/test_hash_model.py::test_raises_error_with_dicts tests/test_hash_model.py::test_retrieve_first tests/test_hash_model.py::test_raises_error_with_sets [gw4] [ 1%] PASSED tests/test_hash_model.py::test_delete tests/test_hash_model.py::test_expire [gw1] [ 2%] PASSED tests/test_hash_model.py::test_recursive_query_resolution [gw6] [ 3%] PASSED tests/test_hash_model.py::test_delete_many tests/test_hash_model.py::test_updates_a_model tests/test_hash_model.py::test_tag_queries_boolean_logic [gw5] [ 3%] PASSED tests/test_hash_model.py::test_raises_error_with_sets [gw7] [ 4%] PASSED tests/test_hash_model.py::test_access_result_by_index_not_cached tests/test_hash_model.py::test_raises_error_with_lists tests/test_hash_model.py::test_schema [gw2] [ 5%] PASSED tests/test_hash_model.py::test_numeric_queries tests/test_hash_model.py::test_sorting [gw0] [ 5%] PASSED tests/test_hash_model.py::test_exact_match_queries tests/test_hash_model.py::test_delete_non_exist [gw3] [ 6%] PASSED tests/test_hash_model.py::test_retrieve_first tests/test_hash_model.py::test_saves_model_and_creates_pk [gw4] [ 7%] PASSED tests/test_hash_model.py::test_expire tests/test_hash_model.py::test_raises_error_with_embedded_models [gw1] [ 7%] PASSED tests/test_hash_model.py::test_tag_queries_boolean_logic tests/test_hash_model.py::test_tag_queries_punctuation [gw5] [ 8%] PASSED tests/test_hash_model.py::test_raises_error_with_lists [gw7] [ 9%] PASSED tests/test_hash_model.py::test_schema tests/test_hash_model.py::test_saves_many tests/test_hash_model.py::test_primary_key_model_error [gw6] [ 9%] PASSED tests/test_hash_model.py::test_updates_a_model tests/test_hash_model.py::test_paginate_query [gw3] [ 10%] PASSED tests/test_hash_model.py::test_saves_model_and_creates_pk tests/test_hash_model.py::test_all_pks [gw4] [ 11%] PASSED tests/test_hash_model.py::test_raises_error_with_embedded_models tests/test_hash_model.py::test_raises_error_with_dataclasses [gw2] [ 11%] PASSED tests/test_hash_model.py::test_sorting tests/test_hash_model.py::test_validates_required_fields [gw0] [ 12%] PASSED tests/test_hash_model.py::test_delete_non_exist [gw5] [ 13%] PASSED tests/test_hash_model.py::test_saves_many tests/test_hash_model.py::test_count tests/test_hash_model.py::test_full_text_search_queries [gw1] [ 13%] PASSED tests/test_hash_model.py::test_tag_queries_punctuation tests/test_hash_model.py::test_tag_queries_negation [gw6] [ 14%] PASSED tests/test_hash_model.py::test_paginate_query [gw2] [ 15%] PASSED tests/test_hash_model.py::test_validates_required_fields tests/test_hash_model.py::test_access_result_by_index_cached tests/test_hash_model.py::test_validates_field [gw4] [ 15%] PASSED tests/test_hash_model.py::test_raises_error_with_dataclasses tests/test_json_model.py::test_updates_a_model [gw7] [ 16%] PASSED tests/test_hash_model.py::test_primary_key_model_error tests/test_hash_model.py::test_primary_pk_exists [gw3] [ 17%] PASSED tests/test_hash_model.py::test_all_pks [gw0] [ 17%] PASSED tests/test_hash_model.py::test_full_text_search_queries tests/test_json_model.py::test_all_pks tests/test_hash_model.py::test_pagination_queries [gw5] [ 18%] PASSED tests/test_hash_model.py::test_count tests/test_json_model.py::test_validates_required_fields [gw2] [ 19%] PASSED tests/test_hash_model.py::test_validates_field tests/test_json_model.py::test_list_field_limitations [gw1] [ 19%] PASSED tests/test_hash_model.py::test_tag_queries_negation tests/test_json_model.py::test_in_query [gw6] [ 20%] PASSED tests/test_hash_model.py::test_access_result_by_index_cached tests/test_json_model.py::test_tag_queries_negation [gw0] [ 21%] PASSED tests/test_hash_model.py::test_pagination_queries tests/test_json_model.py::test_allows_and_serializes_lists [gw5] [ 21%] PASSED tests/test_json_model.py::test_validates_required_fields tests/test_json_model.py::test_validates_field [gw4] [ 22%] PASSED tests/test_json_model.py::test_updates_a_model tests/test_json_model.py::test_paginate_query [gw1] [ 23%] PASSED tests/test_json_model.py::test_in_query tests/test_json_model.py::test_update_query [gw7] [ 23%] PASSED tests/test_hash_model.py::test_primary_pk_exists tests/test_json_model.py::test_recursive_query_field_resolution [gw5] [ 24%] PASSED tests/test_json_model.py::test_validates_field [gw6] [ 25%] PASSED tests/test_json_model.py::test_tag_queries_negation tests/test_json_model.py::test_validation_passes tests/test_json_model.py::test_numeric_queries [gw2] [ 25%] PASSED tests/test_json_model.py::test_list_field_limitations tests/test_json_model.py::test_allows_dataclasses [gw3] [ 26%] PASSED tests/test_json_model.py::test_all_pks tests/test_json_model.py::test_delete [gw0] [ 26%] PASSED tests/test_json_model.py::test_allows_and_serializes_lists tests/test_json_model.py::test_schema [gw4] [ 27%] PASSED tests/test_json_model.py::test_paginate_query [gw5] [ 28%] PASSED tests/test_json_model.py::test_validation_passes tests/test_json_model.py::test_access_result_by_index_cached tests/test_json_model.py::test_saves_model_and_creates_pk [gw1] [ 28%] PASSED tests/test_json_model.py::test_update_query tests/test_json_model.py::test_exact_match_queries [gw3] [ 29%] PASSED tests/test_json_model.py::test_delete tests/test_json_model.py::test_saves_many_implicit_pipeline [gw2] [ 30%] PASSED tests/test_json_model.py::test_allows_dataclasses tests/test_json_model.py::test_allows_and_serializes_dicts [gw0] [ 30%] PASSED tests/test_json_model.py::test_schema tests/test_json_model.py::test_count [gw6] [ 31%] PASSED tests/test_json_model.py::test_numeric_queries tests/test_json_model.py::test_sorting [gw3] [ 32%] PASSED tests/test_json_model.py::test_saves_many_implicit_pipeline tests/test_json_model.py::test_saves_many_explicit_transaction [gw4] [ 32%] PASSED tests/test_json_model.py::test_access_result_by_index_cached [gw7] [ 33%] PASSED tests/test_json_model.py::test_recursive_query_field_resolution tests/test_json_model.py::test_access_result_by_index_not_cached [gw5] [ 34%] PASSED tests/test_json_model.py::test_saves_model_and_creates_pk tests/test_json_model.py::test_full_text_search tests/test_oss_redis_features.py::test_not_found [gw1] [ 34%] PASSED tests/test_json_model.py::test_exact_match_queries tests/test_json_model.py::test_recursive_query_expression_resolution [gw2] [ 35%] PASSED tests/test_json_model.py::test_allows_and_serializes_dicts [gw6] [ 36%] PASSED tests/test_json_model.py::test_sorting tests/test_json_model.py::test_allows_and_serializes_sets tests/test_json_model.py::test_not_found [gw0] [ 36%] PASSED tests/test_json_model.py::test_count tests/test_oss_redis_features.py::test_all_keys [gw3] [ 37%] PASSED tests/test_json_model.py::test_saves_many_explicit_transaction tests/test_json_model.py::test_delete_many_implicit_pipeline [gw5] [ 38%] PASSED tests/test_oss_redis_features.py::test_not_found tests/test_oss_redis_features.py::test_validates_required_fields [gw6] [ 38%] PASSED tests/test_json_model.py::test_not_found tests_sync/test_hash_model.py::test_recursive_query_resolution [gw1] [ 39%] PASSED tests/test_json_model.py::test_recursive_query_expression_resolution [gw4] [ 40%] PASSED tests/test_json_model.py::test_access_result_by_index_not_cached tests/test_pydantic_integrations.py::test_email_str tests/test_oss_redis_features.py::test_saves_model_and_creates_pk [gw2] [ 40%] PASSED tests/test_json_model.py::test_allows_and_serializes_sets tests_sync/test_hash_model.py::test_delete_non_exist [gw7] [ 41%] PASSED tests/test_json_model.py::test_full_text_search tests/test_json_model.py::test_tag_queries_boolean_logic [gw3] [ 42%] PASSED tests/test_json_model.py::test_delete_many_implicit_pipeline tests_sync/test_hash_model.py::test_validates_required_fields [gw5] [ 42%] PASSED tests/test_oss_redis_features.py::test_validates_required_fields tests/test_oss_redis_features.py::test_validates_field [gw6] [ 43%] PASSED tests_sync/test_hash_model.py::test_recursive_query_resolution tests_sync/test_hash_model.py::test_tag_queries_boolean_logic [gw4] [ 44%] PASSED tests/test_oss_redis_features.py::test_saves_model_and_creates_pk tests/test_oss_redis_features.py::test_raises_error_with_embedded_models [gw3] [ 44%] PASSED tests_sync/test_hash_model.py::test_validates_required_fields tests_sync/test_hash_model.py::test_validates_field [gw2] [ 45%] PASSED tests_sync/test_hash_model.py::test_delete_non_exist tests_sync/test_hash_model.py::test_full_text_search_queries [gw1] [ 46%] PASSED tests/test_pydantic_integrations.py::test_email_str tests/test_redis_type.py::test_redis_type [gw1] [ 46%] PASSED tests/test_redis_type.py::test_redis_type tests_sync/test_hash_model.py::test_exact_match_queries [gw0] [ 47%] PASSED tests/test_oss_redis_features.py::test_all_keys [gw6] [ 48%] PASSED tests_sync/test_hash_model.py::test_tag_queries_boolean_logic tests_sync/test_hash_model.py::test_tag_queries_negation tests_sync/test_hash_model.py::test_tag_queries_punctuation [gw5] [ 48%] PASSED tests/test_oss_redis_features.py::test_validates_field tests/test_oss_redis_features.py::test_validation_passes [gw7] [ 49%] PASSED tests/test_json_model.py::test_tag_queries_boolean_logic tests/test_json_model.py::test_tag_queries_punctuation [gw3] [ 50%] PASSED tests_sync/test_hash_model.py::test_validates_field tests_sync/test_hash_model.py::test_validation_passes [gw2] [ 50%] PASSED tests_sync/test_hash_model.py::test_full_text_search_queries tests_sync/test_hash_model.py::test_pagination_queries [gw4] [ 51%] PASSED tests/test_oss_redis_features.py::test_raises_error_with_embedded_models tests/test_oss_redis_features.py::test_saves_many [gw3] [ 51%] PASSED tests_sync/test_hash_model.py::test_validation_passes tests_sync/test_hash_model.py::test_raises_error_with_sets [gw6] [ 52%] PASSED tests_sync/test_hash_model.py::test_tag_queries_punctuation tests_sync/test_hash_model.py::test_all_pks [gw5] [ 53%] PASSED tests/test_oss_redis_features.py::test_validation_passes tests_sync/test_hash_model.py::test_expire [gw0] [ 53%] PASSED tests_sync/test_hash_model.py::test_tag_queries_negation tests_sync/test_hash_model.py::test_numeric_queries [gw1] [ 54%] PASSED tests_sync/test_hash_model.py::test_exact_match_queries tests_sync/test_hash_model.py::test_retrieve_first [gw3] [ 55%] PASSED tests_sync/test_hash_model.py::test_raises_error_with_sets tests_sync/test_hash_model.py::test_raises_error_with_lists [gw7] [ 55%] PASSED tests/test_json_model.py::test_tag_queries_punctuation tests_sync/test_hash_model.py::test_raises_error_with_dataclasses [gw5] [ 56%] PASSED tests_sync/test_hash_model.py::test_expire tests_sync/test_hash_model.py::test_raises_error_with_embedded_models [gw3] [ 57%] PASSED tests_sync/test_hash_model.py::test_raises_error_with_lists tests_sync/test_hash_model.py::test_updates_a_model [gw2] [ 57%] FAILED tests_sync/test_hash_model.py::test_pagination_queries tests_sync/test_hash_model.py::test_saves_many [gw1] [ 58%] PASSED tests_sync/test_hash_model.py::test_retrieve_first tests_sync/test_hash_model.py::test_saves_model_and_creates_pk [gw4] [ 59%] PASSED tests/test_oss_redis_features.py::test_saves_many tests/test_oss_redis_features.py::test_updates_a_model [gw0] [ 59%] PASSED tests_sync/test_hash_model.py::test_numeric_queries tests_sync/test_hash_model.py::test_sorting [gw5] [ 60%] PASSED tests_sync/test_hash_model.py::test_raises_error_with_embedded_models tests_sync/test_hash_model.py::test_access_result_by_index_cached [gw7] [ 61%] PASSED tests_sync/test_hash_model.py::test_raises_error_with_dataclasses tests_sync/test_hash_model.py::test_raises_error_with_dicts [gw2] [ 61%] PASSED tests_sync/test_hash_model.py::test_saves_many tests_sync/test_hash_model.py::test_delete_many [gw3] [ 62%] PASSED tests_sync/test_hash_model.py::test_updates_a_model [gw1] [ 63%] PASSED tests_sync/test_hash_model.py::test_saves_model_and_creates_pk tests_sync/test_hash_model.py::test_paginate_query tests_sync/test_hash_model.py::test_schema [gw6] [ 63%] PASSED tests_sync/test_hash_model.py::test_all_pks tests_sync/test_hash_model.py::test_delete [gw7] [ 64%] PASSED tests_sync/test_hash_model.py::test_raises_error_with_dicts tests_sync/test_hash_model.py::test_count [gw0] [ 65%] PASSED tests_sync/test_hash_model.py::test_sorting tests_sync/test_hash_model.py::test_primary_pk_exists [gw2] [ 65%] PASSED tests_sync/test_hash_model.py::test_delete_many [gw1] [ 66%] PASSED tests_sync/test_hash_model.py::test_schema tests_sync/test_json_model.py::test_validates_required_fields tests_sync/test_json_model.py::test_validation_passes [gw5] [ 67%] PASSED tests_sync/test_hash_model.py::test_access_result_by_index_cached tests_sync/test_hash_model.py::test_access_result_by_index_not_cached [gw6] [ 67%] PASSED tests_sync/test_hash_model.py::test_delete [gw4] [ 68%] PASSED tests/test_oss_redis_features.py::test_updates_a_model tests_sync/test_json_model.py::test_saves_model_and_creates_pk tests_sync/test_hash_model.py::test_primary_key_model_error [gw3] [ 69%] PASSED tests_sync/test_hash_model.py::test_paginate_query tests_sync/test_json_model.py::test_validates_field [gw7] [ 69%] PASSED tests_sync/test_hash_model.py::test_count tests_sync/test_json_model.py::test_all_pks [gw2] [ 70%] PASSED tests_sync/test_json_model.py::test_validates_required_fields [gw1] [ 71%] PASSED tests_sync/test_json_model.py::test_validation_passes tests_sync/test_json_model.py::test_saves_many_implicit_pipeline tests_sync/test_json_model.py::test_saves_many_explicit_transaction [gw0] [ 71%] PASSED tests_sync/test_hash_model.py::test_primary_pk_exists tests_sync/test_json_model.py::test_delete [gw3] [ 72%] PASSED tests_sync/test_json_model.py::test_validates_field [gw5] [ 73%] PASSED tests_sync/test_hash_model.py::test_access_result_by_index_not_cached tests_sync/test_json_model.py::test_access_result_by_index_cached tests_sync/test_json_model.py::test_delete_many_implicit_pipeline [gw6] [ 73%] PASSED tests_sync/test_json_model.py::test_saves_model_and_creates_pk tests_sync/test_json_model.py::test_updates_a_model [gw4] [ 74%] PASSED tests_sync/test_hash_model.py::test_primary_key_model_error tests_sync/test_json_model.py::test_paginate_query [gw2] [ 75%] PASSED tests_sync/test_json_model.py::test_saves_many_implicit_pipeline tests_sync/test_json_model.py::test_in_query [gw1] [ 75%] PASSED tests_sync/test_json_model.py::test_saves_many_explicit_transaction tests_sync/test_json_model.py::test_update_query [gw3] [ 76%] PASSED tests_sync/test_json_model.py::test_access_result_by_index_cached [gw0] [ 76%] PASSED tests_sync/test_json_model.py::test_delete tests_sync/test_json_model.py::test_recursive_query_expression_resolution tests_sync/test_json_model.py::test_exact_match_queries [gw5] [ 77%] PASSED tests_sync/test_json_model.py::test_delete_many_implicit_pipeline tests_sync/test_json_model.py::test_recursive_query_field_resolution [gw2] [ 78%] PASSED tests_sync/test_json_model.py::test_in_query tests_sync/test_json_model.py::test_tag_queries_punctuation [gw4] [ 78%] PASSED tests_sync/test_json_model.py::test_paginate_query tests_sync/test_json_model.py::test_tag_queries_boolean_logic [gw6] [ 79%] PASSED tests_sync/test_json_model.py::test_updates_a_model tests_sync/test_json_model.py::test_full_text_search [gw1] [ 80%] PASSED tests_sync/test_json_model.py::test_update_query [gw3] [ 80%] PASSED tests_sync/test_json_model.py::test_recursive_query_expression_resolution tests_sync/test_json_model.py::test_tag_queries_negation tests_sync/test_json_model.py::test_numeric_queries [gw7] [ 81%] PASSED tests_sync/test_json_model.py::test_all_pks tests_sync/test_json_model.py::test_access_result_by_index_not_cached [gw2] [ 82%] PASSED tests_sync/test_json_model.py::test_tag_queries_punctuation tests_sync/test_json_model.py::test_list_field_limitations [gw5] [ 82%] PASSED tests_sync/test_json_model.py::test_recursive_query_field_resolution tests_sync/test_json_model.py::test_not_found [gw0] [ 83%] PASSED tests_sync/test_json_model.py::test_exact_match_queries tests_sync/test_json_model.py::test_sorting [gw6] [ 84%] PASSED tests_sync/test_json_model.py::test_full_text_search [gw4] [ 84%] PASSED tests_sync/test_json_model.py::test_tag_queries_boolean_logic tests_sync/test_json_model.py::test_allows_and_serializes_dicts tests_sync/test_json_model.py::test_allows_dataclasses [gw1] [ 85%] PASSED tests_sync/test_json_model.py::test_tag_queries_negation tests_sync/test_json_model.py::test_allows_and_serializes_sets [gw3] [ 86%] PASSED tests_sync/test_json_model.py::test_numeric_queries tests_sync/test_json_model.py::test_allows_and_serializes_lists [gw5] [ 86%] PASSED tests_sync/test_json_model.py::test_not_found tests_sync/test_oss_redis_features.py::test_all_keys [gw7] [ 87%] PASSED tests_sync/test_json_model.py::test_access_result_by_index_not_cached tests_sync/test_json_model.py::test_schema [gw6] [ 88%] PASSED tests_sync/test_json_model.py::test_allows_and_serializes_dicts tests_sync/test_oss_redis_features.py::test_validates_required_fields [gw0] [ 88%] PASSED tests_sync/test_json_model.py::test_sorting tests_sync/test_oss_redis_features.py::test_not_found [gw4] [ 89%] PASSED tests_sync/test_json_model.py::test_allows_dataclasses [gw2] [ 90%] PASSED tests_sync/test_json_model.py::test_list_field_limitations tests_sync/test_oss_redis_features.py::test_validates_field tests_sync/test_json_model.py::test_count [gw1] [ 90%] PASSED tests_sync/test_json_model.py::test_allows_and_serializes_sets [gw3] [ 91%] PASSED tests_sync/test_json_model.py::test_allows_and_serializes_lists tests_sync/test_oss_redis_features.py::test_validation_passes tests_sync/test_oss_redis_features.py::test_saves_model_and_creates_pk [gw7] [ 92%] PASSED tests_sync/test_json_model.py::test_schema tests_sync/test_oss_redis_features.py::test_saves_many [gw6] [ 92%] PASSED tests_sync/test_oss_redis_features.py::test_validates_required_fields [gw0] [ 93%] PASSED tests_sync/test_oss_redis_features.py::test_not_found tests_sync/test_oss_redis_features.py::test_updates_a_model [gw2] [ 94%] PASSED tests_sync/test_json_model.py::test_count tests_sync/test_pydantic_integrations.py::test_email_str [gw4] [ 94%] PASSED tests_sync/test_oss_redis_features.py::test_validates_field tests_sync/test_redis_type.py::test_redis_type [gw4] [ 95%] PASSED tests_sync/test_redis_type.py::test_redis_type [gw3] [ 96%] PASSED tests_sync/test_oss_redis_features.py::test_saves_model_and_creates_pk [gw1] [ 96%] PASSED tests_sync/test_oss_redis_features.py::test_validation_passes [gw7] [ 97%] PASSED tests_sync/test_oss_redis_features.py::test_saves_many [gw6] [ 98%] PASSED tests_sync/test_oss_redis_features.py::test_updates_a_model [gw5] [ 98%] PASSED tests_sync/test_oss_redis_features.py::test_all_keys tests_sync/test_oss_redis_features.py::test_raises_error_with_embedded_models [gw0] [ 99%] PASSED tests_sync/test_pydantic_integrations.py::test_email_str [gw5] [100%] PASSED tests_sync/test_oss_redis_features.py::test_raises_error_with_embedded_models ===================================================================================== FAILURES ===================================================================================== _____________________________________________________________________________ test_pagination_queries ______________________________________________________________________________ [gw2] darwin -- Python 3.10.8 /Users/marian/Library/Caches/pypoetry/virtualenvs/redis-om-DEJACET3-py3.10/bin/python members = (Member(id=0, first_name='Andrew', last_name='Brookins', email='a@example.com', join_date=datetime.date(2023, 2, 11), ...com', join_date=datetime.date(2023, 2, 11), age=100, bio='This is member 3 who is a funny and lively sort of person.')) m = Models(BaseHashModel=.BaseHashModel'>, Order=.Order'>, Member=.Member'>) @py_test_mark_sync def test_pagination_queries(members, m): member1, member2, member3 = members actual = m.Member.find(m.Member.last_name == "Brookins").page() assert actual == [member1, member2] actual = m.Member.find().page(1, 1) > assert actual == [member2] E AssertionError: assert [Member(id=2, first_name='Andrew', last_name='Smith', email='as@example.com', join_date=datetime.date(2023, 2, 11), age=100, bio='This is member 3 who is a funny and lively sort of person.')] == [Member(id=1, first_name='Kim', last_name='Brookins', email='k@example.com', join_date=datetime.date(2023, 2, 11), age=34, bio='This is member 2 who can be quite anxious until you get to know them.')] E At index 0 diff: Member(id=2, first_name='Andrew', last_name='Smith', email='as@example.com', join_date=datetime.date(2023, 2, 11), age=100, bio='This is member 3 who is a funny and lively sort of person.') != Member(id=1, first_name='Kim', last_name='Brookins', email='k@example.com', join_date=datetime.date(2023, 2, 11), age=34, bio='This is member 2 who can be quite anxious until you get to know them.') E Full diff: E - [Member(id=1, first_name='Kim', last_name='Brookins', email='k@example.com', join_date=datetime.date(2023, 2, 11), age=34, bio='This is member 2 who can be quite anxious until you get to know them.')] E + [Member(id=2, first_name='Andrew', last_name='Smith', email='as@example.com', join_date=datetime.date(2023, 2, 11), age=100, bio='This is member 3 who is a funny and lively sort of person.')] tests_sync/test_hash_model.py:187: AssertionError ---------- coverage: platform darwin, python 3.10.8-final-0 ---------- Name Stmts Miss Cover Missing ---------------------------------------------------------------------- aredis_om/__init__.py 5 0 100% aredis_om/async_redis.py 1 0 100% aredis_om/checks.py 21 12 43% 9-10, 15-18, 23-28 aredis_om/connections.py 10 1 90% 20 aredis_om/model/__init__.py 2 0 100% aredis_om/model/cli/__init__.py 0 0 100% aredis_om/model/cli/migrate.py 13 13 0% 1-18 aredis_om/model/encoders.py 72 35 51% 68, 70, 73-86, 94, 96, 98, 132-147, 150-155, 159-173 aredis_om/model/migrations/__init__.py 0 0 100% aredis_om/model/migrations/migrator.py 87 15 83% 24-35, 45, 56, 83-84, 89-90, 101, 112-114 aredis_om/model/model.py 888 115 87% 100, 111, 128, 136, 145-152, 166, 185, 193, 199, 203, 207, 211-214, 218, 241, 245, 297, 305, 352, 394, 401, 419, 446, 474, 499, 502-508, 527, 529, 533, 561-571, 592-595, 606, 653, 667-672, 685, 699, 701, 703, 705, 768, 787, 823-828, 844-854, 904, 927-928, 1072, 1135, 1157, 1161, 1166, 1190, 1221-1224, 1232, 1308, 1314, 1374-1382, 1396, 1436-1445, 1449, 1464-1472, 1483-1493, 1506, 1606-1607, 1634-1637, 1721, 1725-1729 aredis_om/model/query_resolver.py 23 23 0% 1-103 aredis_om/model/render_tree.py 33 31 6% 24-75 aredis_om/model/token_escaper.py 13 1 92% 16 aredis_om/sync_redis.py 1 1 0% 1 aredis_om/util.py 6 1 83% 7 ---------------------------------------------------------------------- TOTAL 1175 248 79% ============================================================================= short test summary info ============================================================================== FAILED tests_sync/test_hash_model.py::test_pagination_queries - AssertionError: assert [Member(id=2, first_name='Andrew', last_name='Smith', email='as@example.com', join_date=datetime.date(2023, 2, 11), age=100, bio='This is member 3 who i... ========================================================================== 1 failed, 151 passed in 1.54s =========================================================================== make: *** [test] Error 1 ~/Repositories/redis-om-python fix-model-typings* 8s redis-om-DEJACET3-py3.10 ❯ make test /opt/homebrew/bin/poetry run python make_sync.py docker-compose up -d [+] Running 2/2 ⠿ Container redis-om-python-oss_redis-1 Started 0.5s ⠿ Container redis-om-python-redis-1 Running 0.0s REDIS_OM_URL=""redis://localhost:6380?decode_responses=True"" /opt/homebrew/bin/poetry run pytest -n auto -vv ./tests/ ./tests_sync/ --cov-report term-missing --cov aredis_om redis_om =============================================================================== test session starts ================================================================================ platform darwin -- Python 3.10.8, pytest-7.2.1, pluggy-1.0.0 -- /Users/marian/Library/Caches/pypoetry/virtualenvs/redis-om-DEJACET3-py3.10/bin/python cachedir: .pytest_cache rootdir: /Users/marian/Repositories/redis-om-python, configfile: pytest.ini plugins: xdist-3.2.0, asyncio-0.20.3, cov-4.0.0 asyncio: mode=strict [gw0] darwin Python 3.10.8 cwd: /Users/marian/Repositories/redis-om-python [gw1] darwin Python 3.10.8 cwd: /Users/marian/Repositories/redis-om-python [gw2] darwin Python 3.10.8 cwd: /Users/marian/Repositories/redis-om-python [gw3] darwin Python 3.10.8 cwd: /Users/marian/Repositories/redis-om-python [gw4] darwin Python 3.10.8 cwd: /Users/marian/Repositories/redis-om-python [gw5] darwin Python 3.10.8 cwd: /Users/marian/Repositories/redis-om-python [gw6] darwin Python 3.10.8 cwd: /Users/marian/Repositories/redis-om-python [gw7] darwin Python 3.10.8 cwd: /Users/marian/Repositories/redis-om-python [gw0] Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] [gw1] Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] [gw2] Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] [gw3] Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] [gw4] Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] [gw5] Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] [gw6] Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] [gw7] Python 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)] gw0 [152] / gw1 [152] / gw2 [152] / gw3 [152] / gw4 [152] / gw5 [152] / gw6 [152] / gw7 [152] scheduling tests via LoadScheduling tests/test_hash_model.py::test_exact_match_queries tests/test_hash_model.py::test_numeric_queries tests/test_hash_model.py::test_delete tests/test_hash_model.py::test_validation_passes tests/test_hash_model.py::test_access_result_by_index_not_cached tests/test_hash_model.py::test_recursive_query_resolution tests/test_hash_model.py::test_delete_many tests/test_hash_model.py::test_raises_error_with_dicts [gw5] [ 0%] PASSED tests/test_hash_model.py::test_raises_error_with_dicts [gw3] [ 1%] PASSED tests/test_hash_model.py::test_validation_passes tests/test_hash_model.py::test_retrieve_first tests/test_hash_model.py::test_raises_error_with_sets [gw4] [ 1%] PASSED tests/test_hash_model.py::test_delete tests/test_hash_model.py::test_expire [gw6] [ 2%] PASSED tests/test_hash_model.py::test_delete_many tests/test_hash_model.py::test_updates_a_model [gw1] [ 3%] PASSED tests/test_hash_model.py::test_recursive_query_resolution tests/test_hash_model.py::test_tag_queries_boolean_logic [gw0] [ 3%] PASSED tests/test_hash_model.py::test_exact_match_queries tests/test_hash_model.py::test_delete_non_exist [gw5] [ 4%] PASSED tests/test_hash_model.py::test_raises_error_with_sets tests/test_hash_model.py::test_raises_error_with_lists [gw2] [ 5%] PASSED tests/test_hash_model.py::test_numeric_queries tests/test_hash_model.py::test_sorting [gw4] [ 5%] PASSED tests/test_hash_model.py::test_expire [gw7] [ 6%] PASSED tests/test_hash_model.py::test_access_result_by_index_not_cached tests/test_hash_model.py::test_raises_error_with_embedded_models tests/test_hash_model.py::test_schema [gw3] [ 7%] PASSED tests/test_hash_model.py::test_retrieve_first tests/test_hash_model.py::test_saves_model_and_creates_pk [gw6] [ 7%] PASSED tests/test_hash_model.py::test_updates_a_model tests/test_hash_model.py::test_paginate_query [gw5] [ 8%] PASSED tests/test_hash_model.py::test_raises_error_with_lists tests/test_hash_model.py::test_saves_many [gw1] [ 9%] PASSED tests/test_hash_model.py::test_tag_queries_boolean_logic tests/test_hash_model.py::test_tag_queries_punctuation [gw4] [ 9%] PASSED tests/test_hash_model.py::test_raises_error_with_embedded_models tests/test_hash_model.py::test_raises_error_with_dataclasses [gw7] [ 10%] PASSED tests/test_hash_model.py::test_schema tests/test_hash_model.py::test_primary_key_model_error [gw3] [ 11%] PASSED tests/test_hash_model.py::test_saves_model_and_creates_pk tests/test_hash_model.py::test_all_pks [gw0] [ 11%] PASSED tests/test_hash_model.py::test_delete_non_exist [gw2] [ 12%] PASSED tests/test_hash_model.py::test_sorting tests/test_hash_model.py::test_validates_required_fields tests/test_hash_model.py::test_full_text_search_queries [gw5] [ 13%] PASSED tests/test_hash_model.py::test_saves_many tests/test_hash_model.py::test_count [gw2] [ 13%] PASSED tests/test_hash_model.py::test_validates_required_fields tests/test_hash_model.py::test_validates_field [gw6] [ 14%] PASSED tests/test_hash_model.py::test_paginate_query [gw4] [ 15%] PASSED tests/test_hash_model.py::test_raises_error_with_dataclasses tests/test_hash_model.py::test_access_result_by_index_cached tests/test_json_model.py::test_all_pks [gw1] [ 15%] PASSED tests/test_hash_model.py::test_tag_queries_punctuation tests/test_hash_model.py::test_tag_queries_negation [gw0] [ 16%] PASSED tests/test_hash_model.py::test_full_text_search_queries tests/test_hash_model.py::test_pagination_queries [gw2] [ 17%] PASSED tests/test_hash_model.py::test_validates_field [gw3] [ 17%] PASSED tests/test_hash_model.py::test_all_pks tests/test_json_model.py::test_list_field_limitations tests/test_json_model.py::test_updates_a_model [gw5] [ 18%] PASSED tests/test_hash_model.py::test_count [gw7] [ 19%] PASSED tests/test_hash_model.py::test_primary_key_model_error tests/test_json_model.py::test_validates_required_fields tests/test_hash_model.py::test_primary_pk_exists [gw6] [ 19%] PASSED tests/test_hash_model.py::test_access_result_by_index_cached tests/test_json_model.py::test_in_query [gw1] [ 20%] PASSED tests/test_hash_model.py::test_tag_queries_negation tests/test_json_model.py::test_recursive_query_field_resolution [gw0] [ 21%] PASSED tests/test_hash_model.py::test_pagination_queries tests/test_json_model.py::test_allows_and_serializes_lists [gw4] [ 21%] PASSED tests/test_json_model.py::test_all_pks tests/test_json_model.py::test_delete [gw5] [ 22%] PASSED tests/test_json_model.py::test_validates_required_fields tests/test_json_model.py::test_validates_field [gw6] [ 23%] PASSED tests/test_json_model.py::test_in_query tests/test_json_model.py::test_update_query [gw3] [ 23%] PASSED tests/test_json_model.py::test_updates_a_model tests/test_json_model.py::test_paginate_query [gw5] [ 24%] PASSED tests/test_json_model.py::test_validates_field tests/test_json_model.py::test_validation_passes [gw2] [ 25%] PASSED tests/test_json_model.py::test_list_field_limitations tests/test_json_model.py::test_allows_dataclasses [gw4] [ 25%] PASSED tests/test_json_model.py::test_delete tests/test_json_model.py::test_saves_many_implicit_pipeline [gw0] [ 26%] PASSED tests/test_json_model.py::test_allows_and_serializes_lists [gw1] [ 26%] PASSED tests/test_json_model.py::test_recursive_query_field_resolution tests/test_json_model.py::test_schema tests/test_json_model.py::test_full_text_search [gw7] [ 27%] PASSED tests/test_hash_model.py::test_primary_pk_exists tests/test_json_model.py::test_tag_queries_negation [gw5] [ 28%] PASSED tests/test_json_model.py::test_validation_passes tests/test_json_model.py::test_saves_model_and_creates_pk [gw6] [ 28%] PASSED tests/test_json_model.py::test_update_query tests/test_json_model.py::test_exact_match_queries [gw3] [ 29%] PASSED tests/test_json_model.py::test_paginate_query [gw2] [ 30%] PASSED tests/test_json_model.py::test_allows_dataclasses tests/test_json_model.py::test_access_result_by_index_cached tests/test_json_model.py::test_allows_and_serializes_dicts [gw0] [ 30%] PASSED tests/test_json_model.py::test_schema tests/test_json_model.py::test_count [gw4] [ 31%] PASSED tests/test_json_model.py::test_saves_many_implicit_pipeline tests/test_json_model.py::test_saves_many_explicit_transaction [gw1] [ 32%] PASSED tests/test_json_model.py::test_full_text_search tests/test_json_model.py::test_tag_queries_boolean_logic [gw5] [ 32%] PASSED tests/test_json_model.py::test_saves_model_and_creates_pk tests/test_oss_redis_features.py::test_not_found [gw3] [ 33%] PASSED tests/test_json_model.py::test_access_result_by_index_cached tests/test_json_model.py::test_access_result_by_index_not_cached [gw6] [ 34%] PASSED tests/test_json_model.py::test_exact_match_queries tests/test_json_model.py::test_recursive_query_expression_resolution [gw2] [ 34%] PASSED tests/test_json_model.py::test_allows_and_serializes_dicts tests/test_json_model.py::test_allows_and_serializes_sets [gw0] [ 35%] PASSED tests/test_json_model.py::test_count tests/test_oss_redis_features.py::test_all_keys [gw7] [ 36%] PASSED tests/test_json_model.py::test_tag_queries_negation tests/test_json_model.py::test_numeric_queries [gw4] [ 36%] PASSED tests/test_json_model.py::test_saves_many_explicit_transaction tests/test_json_model.py::test_delete_many_implicit_pipeline [gw1] [ 37%] PASSED tests/test_json_model.py::test_tag_queries_boolean_logic tests/test_json_model.py::test_tag_queries_punctuation [gw5] [ 38%] PASSED tests/test_oss_redis_features.py::test_not_found [gw6] [ 38%] PASSED tests/test_json_model.py::test_recursive_query_expression_resolution tests/test_oss_redis_features.py::test_validates_required_fields tests/test_pydantic_integrations.py::test_email_str [gw3] [ 39%] PASSED tests/test_json_model.py::test_access_result_by_index_not_cached tests/test_oss_redis_features.py::test_saves_model_and_creates_pk [gw4] [ 40%] PASSED tests/test_json_model.py::test_delete_many_implicit_pipeline tests_sync/test_hash_model.py::test_tag_queries_negation [gw1] [ 40%] PASSED tests/test_json_model.py::test_tag_queries_punctuation tests_sync/test_hash_model.py::test_validates_required_fields [gw2] [ 41%] PASSED tests/test_json_model.py::test_allows_and_serializes_sets tests_sync/test_hash_model.py::test_delete_non_exist [gw5] [ 42%] PASSED tests/test_oss_redis_features.py::test_validates_required_fields tests/test_oss_redis_features.py::test_validates_field [gw7] [ 42%] PASSED tests/test_json_model.py::test_numeric_queries tests/test_json_model.py::test_sorting [gw1] [ 43%] PASSED tests_sync/test_hash_model.py::test_validates_required_fields tests_sync/test_hash_model.py::test_validates_field [gw3] [ 44%] PASSED tests/test_oss_redis_features.py::test_saves_model_and_creates_pk tests/test_oss_redis_features.py::test_raises_error_with_embedded_models [gw6] [ 44%] PASSED tests/test_pydantic_integrations.py::test_email_str tests/test_redis_type.py::test_redis_type [gw6] [ 45%] PASSED tests/test_redis_type.py::test_redis_type tests_sync/test_hash_model.py::test_exact_match_queries [gw4] [ 46%] PASSED tests_sync/test_hash_model.py::test_tag_queries_negation tests_sync/test_hash_model.py::test_numeric_queries [gw5] [ 46%] PASSED tests/test_oss_redis_features.py::test_validates_field [gw2] [ 47%] PASSED tests_sync/test_hash_model.py::test_delete_non_exist tests_sync/test_hash_model.py::test_full_text_search_queries [gw1] [ 48%] PASSED tests_sync/test_hash_model.py::test_validates_field tests/test_oss_redis_features.py::test_validation_passes tests_sync/test_hash_model.py::test_validation_passes [gw0] [ 48%] PASSED tests/test_oss_redis_features.py::test_all_keys tests_sync/test_hash_model.py::test_recursive_query_resolution [gw1] [ 49%] PASSED tests_sync/test_hash_model.py::test_validation_passes tests_sync/test_hash_model.py::test_expire [gw3] [ 50%] PASSED tests/test_oss_redis_features.py::test_raises_error_with_embedded_models tests/test_oss_redis_features.py::test_saves_many [gw7] [ 50%] PASSED tests/test_json_model.py::test_sorting [gw2] [ 51%] PASSED tests_sync/test_hash_model.py::test_full_text_search_queries tests/test_json_model.py::test_not_found tests_sync/test_hash_model.py::test_pagination_queries [gw4] [ 51%] PASSED tests_sync/test_hash_model.py::test_numeric_queries tests_sync/test_hash_model.py::test_sorting [gw6] [ 52%] PASSED tests_sync/test_hash_model.py::test_exact_match_queries [gw5] [ 53%] PASSED tests/test_oss_redis_features.py::test_validation_passes tests_sync/test_hash_model.py::test_retrieve_first tests_sync/test_hash_model.py::test_all_pks [gw1] [ 53%] PASSED tests_sync/test_hash_model.py::test_expire [gw0] [ 54%] PASSED tests_sync/test_hash_model.py::test_recursive_query_resolution tests_sync/test_hash_model.py::test_raises_error_with_embedded_models tests_sync/test_hash_model.py::test_tag_queries_boolean_logic [gw2] [ 55%] PASSED tests_sync/test_hash_model.py::test_pagination_queries tests_sync/test_hash_model.py::test_raises_error_with_sets [gw6] [ 55%] PASSED tests_sync/test_hash_model.py::test_retrieve_first [gw1] [ 56%] PASSED tests_sync/test_hash_model.py::test_raises_error_with_embedded_models tests_sync/test_hash_model.py::test_updates_a_model tests_sync/test_hash_model.py::test_saves_model_and_creates_pk [gw4] [ 57%] PASSED tests_sync/test_hash_model.py::test_sorting [gw7] [ 57%] PASSED tests/test_json_model.py::test_not_found tests_sync/test_hash_model.py::test_saves_many tests_sync/test_hash_model.py::test_raises_error_with_dataclasses [gw3] [ 58%] PASSED tests/test_oss_redis_features.py::test_saves_many tests/test_oss_redis_features.py::test_updates_a_model [gw0] [ 59%] PASSED tests_sync/test_hash_model.py::test_tag_queries_boolean_logic tests_sync/test_hash_model.py::test_tag_queries_punctuation [gw2] [ 59%] PASSED tests_sync/test_hash_model.py::test_raises_error_with_sets tests_sync/test_hash_model.py::test_raises_error_with_lists [gw6] [ 60%] PASSED tests_sync/test_hash_model.py::test_saves_model_and_creates_pk tests_sync/test_hash_model.py::test_access_result_by_index_cached [gw4] [ 61%] PASSED tests_sync/test_hash_model.py::test_saves_many tests_sync/test_hash_model.py::test_delete_many [gw7] [ 61%] PASSED tests_sync/test_hash_model.py::test_raises_error_with_dataclasses tests_sync/test_hash_model.py::test_raises_error_with_dicts [gw2] [ 62%] PASSED tests_sync/test_hash_model.py::test_raises_error_with_lists [gw1] [ 63%] PASSED tests_sync/test_hash_model.py::test_updates_a_model tests_sync/test_hash_model.py::test_paginate_query tests_sync/test_hash_model.py::test_primary_pk_exists [gw0] [ 63%] PASSED tests_sync/test_hash_model.py::test_tag_queries_punctuation tests_sync/test_hash_model.py::test_primary_key_model_error [gw6] [ 64%] PASSED tests_sync/test_hash_model.py::test_access_result_by_index_cached tests_sync/test_hash_model.py::test_access_result_by_index_not_cached [gw4] [ 65%] PASSED tests_sync/test_hash_model.py::test_delete_many [gw7] [ 65%] PASSED tests_sync/test_hash_model.py::test_raises_error_with_dicts tests_sync/test_hash_model.py::test_count tests_sync/test_json_model.py::test_validates_required_fields [gw3] [ 66%] PASSED tests/test_oss_redis_features.py::test_updates_a_model tests_sync/test_hash_model.py::test_schema [gw5] [ 67%] PASSED tests_sync/test_hash_model.py::test_all_pks tests_sync/test_hash_model.py::test_delete [gw0] [ 67%] PASSED tests_sync/test_hash_model.py::test_primary_key_model_error tests_sync/test_json_model.py::test_saves_model_and_creates_pk [gw7] [ 68%] PASSED tests_sync/test_json_model.py::test_validates_required_fields tests_sync/test_json_model.py::test_saves_many_implicit_pipeline [gw1] [ 69%] PASSED tests_sync/test_hash_model.py::test_paginate_query tests_sync/test_json_model.py::test_validates_field [gw2] [ 69%] PASSED tests_sync/test_hash_model.py::test_primary_pk_exists tests_sync/test_json_model.py::test_validation_passes [gw3] [ 70%] PASSED tests_sync/test_hash_model.py::test_schema [gw4] [ 71%] PASSED tests_sync/test_hash_model.py::test_count tests_sync/test_json_model.py::test_saves_many_explicit_transaction tests_sync/test_json_model.py::test_delete [gw6] [ 71%] PASSED tests_sync/test_hash_model.py::test_access_result_by_index_not_cached tests_sync/test_json_model.py::test_all_pks [gw5] [ 72%] PASSED tests_sync/test_hash_model.py::test_delete tests_sync/test_json_model.py::test_delete_many_implicit_pipeline [gw7] [ 73%] PASSED tests_sync/test_json_model.py::test_saves_many_implicit_pipeline tests_sync/test_json_model.py::test_paginate_query [gw1] [ 73%] PASSED tests_sync/test_json_model.py::test_validates_field tests_sync/test_json_model.py::test_access_result_by_index_cached [gw4] [ 74%] PASSED tests_sync/test_json_model.py::test_delete tests_sync/test_json_model.py::test_update_query [gw2] [ 75%] PASSED tests_sync/test_json_model.py::test_validation_passes tests_sync/test_json_model.py::test_access_result_by_index_not_cached [gw0] [ 75%] PASSED tests_sync/test_json_model.py::test_saves_model_and_creates_pk tests_sync/test_json_model.py::test_updates_a_model [gw5] [ 76%] PASSED tests_sync/test_json_model.py::test_delete_many_implicit_pipeline [gw3] [ 76%] PASSED tests_sync/test_json_model.py::test_saves_many_explicit_transaction tests_sync/test_json_model.py::test_recursive_query_expression_resolution tests_sync/test_json_model.py::test_in_query [gw7] [ 77%] PASSED tests_sync/test_json_model.py::test_paginate_query [gw1] [ 78%] PASSED tests_sync/test_json_model.py::test_access_result_by_index_cached tests_sync/test_json_model.py::test_recursive_query_field_resolution tests_sync/test_json_model.py::test_full_text_search [gw4] [ 78%] PASSED tests_sync/test_json_model.py::test_update_query tests_sync/test_json_model.py::test_tag_queries_boolean_logic [gw5] [ 79%] PASSED tests_sync/test_json_model.py::test_recursive_query_expression_resolution tests_sync/test_json_model.py::test_numeric_queries [gw2] [ 80%] PASSED tests_sync/test_json_model.py::test_access_result_by_index_not_cached [gw3] [ 80%] PASSED tests_sync/test_json_model.py::test_in_query tests_sync/test_json_model.py::test_tag_queries_punctuation tests_sync/test_json_model.py::test_sorting [gw0] [ 81%] PASSED tests_sync/test_json_model.py::test_updates_a_model tests_sync/test_json_model.py::test_tag_queries_negation [gw7] [ 82%] PASSED tests_sync/test_json_model.py::test_recursive_query_field_resolution [gw4] [ 82%] PASSED tests_sync/test_json_model.py::test_tag_queries_boolean_logic tests_sync/test_json_model.py::test_not_found tests_sync/test_json_model.py::test_allows_dataclasses [gw1] [ 83%] PASSED tests_sync/test_json_model.py::test_full_text_search tests_sync/test_json_model.py::test_list_field_limitations [gw6] [ 84%] PASSED tests_sync/test_json_model.py::test_all_pks tests_sync/test_json_model.py::test_exact_match_queries [gw3] [ 84%] PASSED tests_sync/test_json_model.py::test_sorting tests_sync/test_json_model.py::test_allows_and_serializes_lists [gw5] [ 85%] PASSED tests_sync/test_json_model.py::test_numeric_queries tests_sync/test_json_model.py::test_allows_and_serializes_dicts [gw7] [ 86%] PASSED tests_sync/test_json_model.py::test_not_found tests_sync/test_json_model.py::test_count [gw2] [ 86%] PASSED tests_sync/test_json_model.py::test_tag_queries_punctuation tests_sync/test_json_model.py::test_allows_and_serializes_sets [gw4] [ 87%] PASSED tests_sync/test_json_model.py::test_allows_dataclasses [gw0] [ 88%] PASSED tests_sync/test_json_model.py::test_tag_queries_negation tests_sync/test_oss_redis_features.py::test_all_keys tests_sync/test_json_model.py::test_schema [gw3] [ 88%] PASSED tests_sync/test_json_model.py::test_allows_and_serializes_lists [gw5] [ 89%] PASSED tests_sync/test_json_model.py::test_allows_and_serializes_dicts tests_sync/test_oss_redis_features.py::test_validates_field tests_sync/test_oss_redis_features.py::test_validation_passes [gw7] [ 90%] PASSED tests_sync/test_json_model.py::test_count [gw0] [ 90%] PASSED tests_sync/test_json_model.py::test_schema tests_sync/test_oss_redis_features.py::test_saves_model_and_creates_pk tests_sync/test_oss_redis_features.py::test_updates_a_model [gw1] [ 91%] PASSED tests_sync/test_json_model.py::test_list_field_limitations [gw6] [ 92%] PASSED tests_sync/test_json_model.py::test_exact_match_queries tests_sync/test_oss_redis_features.py::test_not_found tests_sync/test_oss_redis_features.py::test_validates_required_fields [gw2] [ 92%] PASSED tests_sync/test_json_model.py::test_allows_and_serializes_sets tests_sync/test_oss_redis_features.py::test_raises_error_with_embedded_models [gw5] [ 93%] PASSED tests_sync/test_oss_redis_features.py::test_validation_passes tests_sync/test_redis_type.py::test_redis_type [gw5] [ 94%] PASSED tests_sync/test_redis_type.py::test_redis_type [gw3] [ 94%] PASSED tests_sync/test_oss_redis_features.py::test_validates_field [gw7] [ 95%] PASSED tests_sync/test_oss_redis_features.py::test_saves_model_and_creates_pk tests_sync/test_pydantic_integrations.py::test_email_str [gw6] [ 96%] PASSED tests_sync/test_oss_redis_features.py::test_validates_required_fields [gw0] [ 96%] PASSED tests_sync/test_oss_redis_features.py::test_updates_a_model [gw1] [ 97%] PASSED tests_sync/test_oss_redis_features.py::test_not_found [gw2] [ 98%] PASSED tests_sync/test_oss_redis_features.py::test_raises_error_with_embedded_models [gw4] [ 98%] PASSED tests_sync/test_oss_redis_features.py::test_all_keys tests_sync/test_oss_redis_features.py::test_saves_many [gw3] [ 99%] PASSED tests_sync/test_pydantic_integrations.py::test_email_str [gw4] [100%] PASSED tests_sync/test_oss_redis_features.py::test_saves_many ---------- coverage: platform darwin, python 3.10.8-final-0 ---------- Name Stmts Miss Cover Missing ---------------------------------------------------------------------- aredis_om/__init__.py 5 0 100% aredis_om/async_redis.py 1 0 100% aredis_om/checks.py 21 12 43% 9-10, 15-18, 23-28 aredis_om/connections.py 10 1 90% 20 aredis_om/model/__init__.py 2 0 100% aredis_om/model/cli/__init__.py 0 0 100% aredis_om/model/cli/migrate.py 13 13 0% 1-18 aredis_om/model/encoders.py 72 35 51% 68, 70, 73-86, 94, 96, 98, 132-147, 150-155, 159-173 aredis_om/model/migrations/__init__.py 0 0 100% aredis_om/model/migrations/migrator.py 87 15 83% 24-35, 45, 56, 83-84, 89-90, 101, 112-114 aredis_om/model/model.py 888 115 87% 100, 111, 128, 136, 145-152, 166, 185, 193, 199, 203, 207, 211-214, 218, 241, 245, 297, 305, 352, 394, 401, 419, 446, 474, 499, 502-508, 527, 529, 533, 561-571, 592-595, 606, 653, 667-672, 685, 699, 701, 703, 705, 768, 787, 823-828, 844-854, 904, 927-928, 1072, 1135, 1157, 1161, 1166, 1190, 1221-1224, 1232, 1308, 1314, 1374-1382, 1396, 1436-1445, 1449, 1464-1472, 1483-1493, 1506, 1606-1607, 1634-1637, 1721, 1725-1729 aredis_om/model/query_resolver.py 23 23 0% 1-103 aredis_om/model/render_tree.py 33 31 6% 24-75 aredis_om/model/token_escaper.py 13 1 92% 16 aredis_om/sync_redis.py 1 1 0% 1 aredis_om/util.py 6 1 83% 7 ---------------------------------------------------------------------- TOTAL 1175 248 79% =============================================================================== 152 passed in 1.45s ================================================================================ docker-compose down [+] Running 3/3 ⠿ Container redis-om-python-oss_redis-1 Removed 0.2s ⠿ Container redis-om-python-redis-1 Removed 0.1s ⠿ Network redis-om-python_default Removed 0.0s ~/Repositories/redis-om-python fix-model-typings* redis-om-DEJACET3-py3.10 ❯ ```