Skip to content

feat: relax Python version requirement#31

Open
KimigaiiWuyi wants to merge 2 commits into
vstorm-co:mainfrom
KimigaiiWuyi:main
Open

feat: relax Python version requirement#31
KimigaiiWuyi wants to merge 2 commits into
vstorm-co:mainfrom
KimigaiiWuyi:main

Conversation

@KimigaiiWuyi
Copy link
Copy Markdown
Contributor

@KimigaiiWuyi KimigaiiWuyi commented Apr 7, 2026

Summary

relax Python version requirement to >=3.11 or >=3.10

Changes

  • StrEnum → (str, Enum) change in models.py
  • requires-python bump to >=3.10
  • CI matrix expansion to test 3.10, 3.11, 3.12, 3.13 (.github/workflows/ci.yml)

Related

#30

Checklist

  • Tests pass (make all)
  • Docs updated (if user-facing)
~:\> make all
uv run ruff format src/
46 files left unchanged
uv run ruff check --fix --fix-only src/
uv run ruff format --check src/
46 files already formatted
uv run ruff check src/
All checks passed!
uv run ty check src/
All checks passed!
uv run pytest
================================================================ test session starts =================================================================
platform win32 -- Python 3.13.1, pytest-9.0.2, pluggy-1.6.0
rootdir: E:\MyPyProject\memv
configfile: pyproject.toml
testpaths: tests
plugins: anyio-4.13.0, langsmith-0.7.23, asyncio-1.3.0
asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collected 229 items

tests\test_atomization.py ..........                                                                                                            [  4%]
tests\test_batch_segmenter.py ..........                                                                                                        [  8%]
tests\test_episode_generator.py .......                                                                                                         [ 11%]
tests\test_episode_merger.py ........                                                                                                           [ 15%]
tests\test_episode_store.py ..............                                                                                                      [ 21%]
tests\test_extractor.py ............                                                                                                            [ 26%]
tests\test_knowledge_store.py .............................                                                                                     [ 39%]
tests\test_memory_e2e.py ....................................                                                                                   [ 55%]
tests\test_message_store.py ...............                                                                                                     [ 61%]
tests\test_models.py ..........                                                                                                                 [ 65%]
tests\test_retriever.py ..........                                                                                                              [ 70%]
tests\test_temporal.py ......................................                                                                                   [ 86%]
tests\test_text_index.py ..............                                                                                                         [ 93%]
tests\test_vector_index.py ................                                                                                                     [100%]

================================================================ 229 passed in 11.97s ================================================================

vermin test

~:\> vermin -t=3.10 -v .
Detecting python files..
Analyzing 70 files using 12 processes..
!2, 3.7      F:\memv\examples\agent_integration.py
!2, 3.7      F:\memv\examples\autogen_agent.py
!2, 3.7      F:\memv\examples\crewai_agent.py
!2, 3.7      F:\memv\examples\demo.py
!2, 3.9      F:\memv\examples\langgraph_agent.py
!2, 3.7      F:\memv\examples\llamaindex_agent.py
!2, 3.7      F:\memv\examples\pydantic_ai_agent.py
!2, 3.7      F:\memv\examples\quickstart.py
!2, 3.0      F:\memv\src\memv_init_.py
!2, 3.7      F:\memv\src\memv\cache.py
!2, 3.7      F:\memv\src\memv\config.py
~2, ~3       F:\memv\src\memv\dashboard_init_.py
!2, 3.6      F:\memv\src\memv\dashboard_main_.py
!2, 3.6      F:\memv\src\memv\dashboard\app.py
!2, 3.6      F:\memv\src\memv\embeddings_init_.py
!2, 3.6      F:\memv\src\memv\embeddings\cohere.py
!2, 3.9      F:\memv\src\memv\embeddings\fastembed.py
!2, 3.6      F:\memv\src\memv\embeddings\openai.py
!2, 3.6      F:\memv\src\memv\embeddings\voyage.py
~2, ~3       F:\memv\src\memv\llm_init_.py
!2, 3.6      F:\memv\src\memv\llm\pydantic_ai.py
~2, ~3       F:\memv\src\memv\memory_init_.py
!2, 3.10     F:\memv\src\memv\memory_api.py
!2, 3.7      F:\memv\src\memv\memory_lifecycle.py
!2, 3.10     F:\memv\src\memv\memory_pipeline.py
!2, 3.7      F:\memv\src\memv\memory_task_manager.py
!2, 3.7      F:\memv\src\memv\memory\memory.py
!2, 3.8      F:\memv\src\memv\models.py
~2, ~3       F:\memv\src\memv\processing_init_.py
!2, 3.6      F:\memv\src\memv\processing\batch_segmenter.py
!2, 3.6      F:\memv\src\memv\processing\boundary.py
!2, 3.10     F:\memv\src\memv\processing\episode_merger.py
!2, 3.6      F:\memv\src\memv\processing\episodes.py
!2, 3.6      F:\memv\src\memv\processing\extraction.py
!2, 3.6      F:\memv\src\memv\processing\prompts.py
!2, 3.7      F:\memv\src\memv\processing\temporal.py
!2, 3.8      F:\memv\src\memv\protocols.py
~2, ~3       F:\memv\src\memv\retrieval_init_.py
!2, 3.7      F:\memv\src\memv\retrieval\retriever.py
~2, ~3       F:\memv\src\memv\storage_init_.py
~2, ~3       F:\memv\src\memv\storage\postgres_init_.py
!2, 3.7      F:\memv\src\memv\storage\postgres_base.py
!2, 3.7      F:\memv\src\memv\storage\postgres_episodes.py
!2, 3.7      F:\memv\src\memv\storage\postgres_knowledge.py
!2, 3.7      F:\memv\src\memv\storage\postgres_messages.py
!2, 3.7      F:\memv\src\memv\storage\postgres_text_index.py
!2, 3.7      F:\memv\src\memv\storage\postgres_vector_index.py
~2, ~3       F:\memv\src\memv\storage\sqlite_init_.py
!2, 3.7      F:\memv\src\memv\storage\sqlite_base.py
!2, 3.7      F:\memv\src\memv\storage\sqlite_episodes.py
!2, 3.7      F:\memv\src\memv\storage\sqlite_knowledge.py
!2, 3.5      F:\memv\src\memv\storage\sqlite_messages.py
!2, 3.7      F:\memv\src\memv\storage\sqlite_text_index.py
!2, 3.7      F:\memv\src\memv\storage\sqlite_vector_index.py
~2, ~3       F:\memv\tests_init_.py
!2, 3.6      F:\memv\tests\conftest.py
!2, 3.5      F:\memv\tests\test_atomization.py
!2, 3.5      F:\memv\tests\test_batch_segmenter.py
!2, 3.5      F:\memv\tests\test_episode_generator.py
!2, 3.5      F:\memv\tests\test_episode_merger.py
!2, 3.5      F:\memv\tests\test_episode_store.py
!2, 3.5      F:\memv\tests\test_extractor.py
!2, 3.6      F:\memv\tests\test_knowledge_store.py
!2, 3.5      F:\memv\tests\test_memory_e2e.py
!2, 3.5      F:\memv\tests\test_message_store.py
!2, 3.2      F:\memv\tests\test_models.py
!2, 3.6      F:\memv\tests\test_retriever.py
!2, 3.2      F:\memv\tests\test_temporal.py
!2, 3.6      F:\memv\tests\test_text_index.py
!2, 3.5      F:\memv\tests\test_vector_index.py

Copy link
Copy Markdown
Member

@brgsk brgsk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clean change - thanks for the vermin analysis! Great to see the true minimum version verified systematically.

LGTM to merge from my side.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants