Skip to content

merge from functions from develop to release/v1.1.0#164

Merged
hnwyllmm merged 10 commits intorelease/v1.1.0from
develop
Feb 2, 2026
Merged

merge from functions from develop to release/v1.1.0#164
hnwyllmm merged 10 commits intorelease/v1.1.0from
develop

Conversation

@hnwyllmm
Copy link
Copy Markdown
Member

@hnwyllmm hnwyllmm commented Feb 2, 2026

Summary

merge from functions from develop to release/v1.1.0:

  • support python3.14
  • MorphEmbeddingFunction/MistralEmbeddingFunction/OnnxEmbeddingFunction

WSL0809 and others added 10 commits January 31, 2026 13:58
…138)

## Summary
close #103 

## Solution Description
In hybrid_search, users use "include" on the SDK side to control the
returned fields. However, "include" only filters data on the SDK side;
in reality, the database returns data for all fields, which causes
additional overhead. Therefore, "_source" is introduced to control the
actual fields returned by the database. The main purpose is to reduce
overhead, not to add a new filtering option. For users who are already
using "include", efforts should be made to reduce overhead while keeping
the change as unnoticeable as possible. The SDK will derive the minimal
"_source" based on the "include" parameter to ensure that users are not
affected while reducing overhead.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added an include parameter to hybrid search so users can request
specific fields (documents, metadata, embeddings); results now always
include the record id and return only requested fields in a
deterministic order.
* **Tests**
* New unit and integration tests validating include-driven result
shapes, SQL generation, and various include combinations.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary
Fix #136.

Support
[Morph](https://docs.morphllm.com/api-reference/endpoint/embedding)
embedding platform based on OpenAI.

## Solution Description
Morph provides an OpenAI-compatible Embedding API and morph-embedding-v4
as the default model (1536 dimensions).

Morph test result:
```
 .venv/bin/python -m pytest tests/unit_tests/test_morph_embedding_function.py -vv
=========================================================================================== test session starts ============================================================================================
platform darwin -- Python 3.11.13, pytest-9.0.2, pluggy-1.6.0 -- /pyseekdb/.venv/bin/python
cachedir: .pytest_cache
rootdir: /pyseekdb
configfile: pyproject.toml
plugins: anyio-4.12.1
collected 22 items                                                                                                                                                                                         

tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunction::test_morph_env PASSED                                                                                                 [  4%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunction::test_initialization_with_model_name PASSED                                                                            [  9%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunction::test_initialization_with_custom_api_key_env PASSED                                                                    [ 13%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunction::test_initialization_with_custom_api_base PASSED                                                                       [ 18%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunction::test_initialization_with_kwargs PASSED                                                                                [ 22%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunction::test_initialization_missing_api_key PASSED                                                                            [ 27%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunction::test_initialization_missing_model_name PASSED                                                                         [ 31%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunction::test_dimension_property_known_model PASSED                                                                            [ 36%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunction::test_call_single_document PASSED                                                                                      [ 40%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunction::test_call_multiple_documents PASSED                                                                                   [ 45%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunction::test_call_empty_input PASSED                                                                                          [ 50%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunction::test_dimension_of_function PASSED                                                                                     [ 54%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunction::test_get_default_api_base PASSED                                                                                      [ 59%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunction::test_get_default_api_key_env PASSED                                                                                   [ 63%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunction::test_get_model_dimensions PASSED                                                                                      [ 68%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunctionPersistence::test_name PASSED                                                                                           [ 72%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunctionPersistence::test_get_config_with_defaults PASSED                                                                       [ 77%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunctionPersistence::test_get_config_with_custom_values PASSED                                                                  [ 81%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunctionPersistence::test_build_from_config_with_defaults PASSED                                                                [ 86%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunctionPersistence::test_build_from_config_with_custom_values PASSED                                                           [ 90%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunctionPersistence::test_build_from_config_with_dimensions_ignored PASSED                                                      [ 95%]
tests/unit_tests/test_morph_embedding_function.py::TestMorphEmbeddingFunctionPersistence::test_persistence_roundtrip PASSED                                                                          [100%]

============================================================================================ 22 passed in 3.97s ============================================================================================
```

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added Morph embedding function ("morph") with support for
morph-embedding-v4, discoverable via the embedding registry
  * Configurable via environment variables and custom API endpoints

* **Tests**
* Added comprehensive unit tests covering initialization, configuration,
dimensions, embedding calls, and persistence round-trips

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary

Fix #135.

Integrate
[Mistral](https://docs.morphllm.com/api-reference/endpoint/embedding)
embedding function


## Solution Description
Mistral test result:
```
uv run pytest tests/unit_tests/test_mistral_embedding_function.py -vv   
================================================================================ test session starts ================================================================================
platform darwin -- Python 3.11.13, pytest-9.0.2, pluggy-1.6.0 -- /pyseekdb/.venv/bin/python3
cachedir: .pytest_cache
rootdir: /pyseekdb
configfile: pyproject.toml
plugins: anyio-4.12.1
collected 12 items                                                                                                                                                                  

tests/unit_tests/test_mistral_embedding_function.py::TestMistralEmbeddingFunction::test_mistral_env PASSED                                                                    [  8%]
tests/unit_tests/test_mistral_embedding_function.py::TestMistralEmbeddingFunction::test_initialization_with_defaults PASSED                                                   [ 16%]
tests/unit_tests/test_mistral_embedding_function.py::TestMistralEmbeddingFunction::test_initialization_with_custom_api_key_env PASSED                                         [ 25%]
tests/unit_tests/test_mistral_embedding_function.py::TestMistralEmbeddingFunction::test_initialization_with_custom_api_base PASSED                                            [ 33%]
tests/unit_tests/test_mistral_embedding_function.py::TestMistralEmbeddingFunction::test_initialization_with_additional_kwargs PASSED                                          [ 41%]
tests/unit_tests/test_mistral_embedding_function.py::TestMistralEmbeddingFunction::test_initialization_with_missing_api_key PASSED                                            [ 50%]
tests/unit_tests/test_mistral_embedding_function.py::TestMistralEmbeddingFunction::test_dimension_property_for_known_model PASSED                                             [ 58%]
tests/unit_tests/test_mistral_embedding_function.py::TestMistralEmbeddingFunction::test_embedding_generation_single_document PASSED                                           [ 66%]
tests/unit_tests/test_mistral_embedding_function.py::TestMistralEmbeddingFunction::test_embedding_generation_multiple_documents PASSED                                        [ 75%]
tests/unit_tests/test_mistral_embedding_function.py::TestMistralEmbeddingFunction::test_embedding_with_empty_input PASSED                                                     [ 83%]
tests/unit_tests/test_mistral_embedding_function.py::TestMistralEmbeddingFunction::test_dimension_of_function PASSED                                                          [ 91%]
tests/unit_tests/test_mistral_embedding_function.py::TestMistralEmbeddingFunction::test_persistence PASSED                                                                    [100%]

================================================================================ 12 passed in 3.22s =================================================================================


<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

* **New Features**
  * Added support for Mistral text embeddings: a new embedding provider is available and can be configured via environment variable and standard embedding settings; supports batch inputs and serialization.

* **Tests**
  * Added comprehensive unit tests for the Mistral embedding provider (guarded for runtime API availability).

<sub>✏️ Tip: You can customize this high-level summary in your review settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary
Addressing issue #105.
Formatted the docstrings for the collection management APIs in
`client_base.py` to improve readability and consistency.

### Changes
- Updated docstrings for the following methods in `BaseClient` and
`ClientAPI`:
    - `create_collection`
    - `get_collection`
    - `get_or_create_collection`
    - `delete_collection`
    - `list_collections`
    - `count_collection`
    - `has_collection`
- Adopted a more standard docstring format (closer to Google style) with
clear `Args`, `Returns`, `Raises`, and `Examples` sections.
- Removed redundant or repetitive text.
- Added comprehensive examples for `create_collection` showing different
configuration options.

## Test plan
- Verified that the code still parses and runs correctly by running
existing tests: `uv run pytest
tests/unit_tests/test_collection_name_validation.py -v`.
- Checked formatting visually to ensure clarity.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Documentation**
* Expanded user-facing documentation for collection management methods
with detailed examples and clearer behavior descriptions.

* **Improvements**
  * Enhanced validation and error messaging for collection operations.
* Improved handling of embedding function configuration and automatic
dimension inference.
  * More robust collection lifecycle management.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary
- Add Development section to README with UV workflow documentation
(prerequisites, setup, common commands, build artifacts)
- Update Testing section to use `uv run pytest` consistently
- Add `build` job to CI workflow to verify `uv build` produces valid
artifacts

Closes #130

## Test plan
- [x] Verified `uv build` produces both `.tar.gz` and `.whl` artifacts
locally
- [ ] CI build job runs successfully

🤖 Generated with [Claude Code](https://claude.ai/code)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Chores**
* Enhanced CI/CD pipeline with automated build verification and artifact
management.

* **Documentation**
* Restructured and expanded development and setup instructions for
improved clarity and ease of contributor onboarding.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
<!--
Thank you for contributing to OceanBase! 
Please feel free to ping the maintainers for the review!
-->

## Summary
close #104
<!-- 
Please clearly and concisely describe the purpose of this pull request.
If this pull request resolves an issue, please link it via "close #xxx"
or "fix #xxx".
-->



## Solution Description
1. 多版本文档构建系统
- 集成 sphinx-multiversion 扩展,支持为多个分支和标签构建文档
- 配置了版本白名单规则:
  - 标签格式:v *.*.*(如 v1.0.0, v1.1.0)
  - 分支:main 和 develop
- 自动创建重定向页面,默认跳转到 develop 版本
2. Makefile 新增命令
- `make docs-multiversion`:构建所有版本的文档
- `make docs-serve`:启动支持自动重载的开发服务器
- `make docs`:单版本构建(已更新注释)


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Multi-version documentation build and a local doc server with
auto-reload for live previews
* Version selector dropdown in the docs UI to switch between
documentation versions

* **Documentation**
* New styling and banners for version-aware documentation and a redirect
to the latest version for easy access

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from
6.33.2 to 6.33.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/protocolbuffers/protobuf/releases">protobuf's
releases</a>.</em></p>
<blockquote>
<h2>Protocol Buffers v34.0-rc1</h2>
<h1>Announcements</h1>
<ul>
<li><strong>This version includes breaking changes to: C++, Objective-C,
PHP, Python.</strong></li>
<li>[Bazel] Remove deprecated ProtoInfo.transitive_imports. Use
equivalent transitive_sources instead (<a
href="https://github.com/protocolbuffers/protobuf/commit/0a5c2f6b633c1e5259f566cb42d30fe347b8aadb">https://github.com/protocolbuffers/protobuf/commit/0a5c2f6b633c1e5259f566cb42d30fe347b8aadb</a>)</li>
<li>[C++] Make generator headers private (<a
href="https://github.com/protocolbuffers/protobuf/commit/3a2af3510f0d454dbe3e4dc281674b61c4d20b9e">https://github.com/protocolbuffers/protobuf/commit/3a2af3510f0d454dbe3e4dc281674b61c4d20b9e</a>)</li>
<li>[C++] Add a debug check that the target of CopyFrom is not a
descendant of the source. (<a
href="https://github.com/protocolbuffers/protobuf/commit/7a7589823d2cfaaf7994b050e98d5d553bc9b1c1">https://github.com/protocolbuffers/protobuf/commit/7a7589823d2cfaaf7994b050e98d5d553bc9b1c1</a>)</li>
<li>[C++] Add [[nodiscard]] to many APIs. (<a
href="https://github.com/protocolbuffers/protobuf/commit/a70115f33f9af2c4b2202c800b84837e7fe0d738">https://github.com/protocolbuffers/protobuf/commit/a70115f33f9af2c4b2202c800b84837e7fe0d738</a>)</li>
<li>[C++] Make the arena-enabled constructors of
<code>RepeatedField</code>, <code>RepeatedPtrField</code>, and
<code>Map</code> private. (<a
href="https://github.com/protocolbuffers/protobuf/commit/ef890c3d0c79398c70e047fe5dd893f460ba2336">https://github.com/protocolbuffers/protobuf/commit/ef890c3d0c79398c70e047fe5dd893f460ba2336</a>)</li>
<li>[C++] Remove deprecated FieldDescriptor::label() in OSS. Use
is_repeated() or is_required() instead (<a
href="https://github.com/protocolbuffers/protobuf/commit/b76faa921fdd244f374c7be0bddd4050fc42c292">https://github.com/protocolbuffers/protobuf/commit/b76faa921fdd244f374c7be0bddd4050fc42c292</a>)</li>
<li>[C++] Removes proto2::util::MessageDifferencer::AddIgnoreCriteria
that takes a raw pointer as an argument in favor of the overload that
takes a unique_ptr. Remove macro
PROTOBUF_FUTURE_REMOVE_ADD_IGNORE_CRITERIA (<a
href="https://github.com/protocolbuffers/protobuf/commit/b115358c64127896fed88b8b5ef5d91d86d8cbae">https://github.com/protocolbuffers/protobuf/commit/b115358c64127896fed88b8b5ef5d91d86d8cbae</a>)</li>
<li>[C++] Remove deprecated FieldDescriptor::has_optional_keyword() in
OSS. Use is_repeated() or has_presence() instead (<a
href="https://github.com/protocolbuffers/protobuf/commit/68346ec9348e932664e58c3ecdcd1478f95233a8">https://github.com/protocolbuffers/protobuf/commit/68346ec9348e932664e58c3ecdcd1478f95233a8</a>)</li>
<li>[C++] Remove AddUnusedImportTrackFile() and
ClearUnusedImportTrackFiles(). Remove
PROTOBUF_FUTURE_RENAME_ADD_UNUSED_IMPORT (<a
href="https://github.com/protocolbuffers/protobuf/commit/837a2cd1d6c75402b2503ffe7cd8aeaf25868536">https://github.com/protocolbuffers/protobuf/commit/837a2cd1d6c75402b2503ffe7cd8aeaf25868536</a>)</li>
<li>[C++] Remove deprecated FieldDescriptor::is_optional() in OSS. Use
(!is_required() &amp;&amp; !is_repeated()) instead (<a
href="https://github.com/protocolbuffers/protobuf/commit/9dbc5d479a8e453921485d8d3de47fb3c005f1af">https://github.com/protocolbuffers/protobuf/commit/9dbc5d479a8e453921485d8d3de47fb3c005f1af</a>)</li>
<li>[C++] Remove deprecated UseDeprecatedLegacyJsonFieldConflicts() (<a
href="https://github.com/protocolbuffers/protobuf/commit/c301c2ca286327a21c50c0c4cd877afc9c655b00">https://github.com/protocolbuffers/protobuf/commit/c301c2ca286327a21c50c0c4cd877afc9c655b00</a>)</li>
<li>[C++] All entity names have length limit (2afb0dc)</li>
<li>[ObjC] Remove <code>generate_minimal_imports</code> generation
option warning (<a
href="https://github.com/protocolbuffers/protobuf/commit/45b1297fdaad5a9436d0e207422168c38dc45ac4">https://github.com/protocolbuffers/protobuf/commit/45b1297fdaad5a9436d0e207422168c38dc45ac4</a>)</li>
<li>[ObjC] Fix nullability annotations on some
<code>GPB*Dictionary</code> types. (<a
href="https://github.com/protocolbuffers/protobuf/commit/ea67d6d26a48478a567c404679e3bb99cf230d50">https://github.com/protocolbuffers/protobuf/commit/ea67d6d26a48478a567c404679e3bb99cf230d50</a>)</li>
<li>[ObjC] Remove <code>-[GPBFieldDescriptor optional]</code> (<a
href="https://github.com/protocolbuffers/protobuf/commit/3414dc151eb4dcbdb2ca952e2589993bf7af75c4">https://github.com/protocolbuffers/protobuf/commit/3414dc151eb4dcbdb2ca952e2589993bf7af75c4</a>)</li>
<li>[Other] Remove deprecated flag for enabling MSVC support (<a
href="https://github.com/protocolbuffers/protobuf/commit/97c979be6e0907e1051bee62584dac4594e73fa7">https://github.com/protocolbuffers/protobuf/commit/97c979be6e0907e1051bee62584dac4594e73fa7</a>)</li>
<li>[PHP] Remove deprecated PHP APIs (<a
href="https://github.com/protocolbuffers/protobuf/commit/9c45014099a4f7004fab6dd1278de2f4f2a393c5">https://github.com/protocolbuffers/protobuf/commit/9c45014099a4f7004fab6dd1278de2f4f2a393c5</a>)</li>
<li>[PHP] Remove deprecated PHP APIs FieldDescriptor getLabel, use
IsRepeated or isRequired instead. (<a
href="https://github.com/protocolbuffers/protobuf/commit/42081219920c6fad17ba6ddd1e28d111bcfb3345">https://github.com/protocolbuffers/protobuf/commit/42081219920c6fad17ba6ddd1e28d111bcfb3345</a>,
<a
href="https://github.com/protocolbuffers/protobuf/commit/cd76e675b14d00dda5623b30835d2bc7105fccc6">https://github.com/protocolbuffers/protobuf/commit/cd76e675b14d00dda5623b30835d2bc7105fccc6</a>,
<a
href="https://github.com/protocolbuffers/protobuf/commit/42081219920c6fad17ba6ddd1e28d111bcfb3345">https://github.com/protocolbuffers/protobuf/commit/42081219920c6fad17ba6ddd1e28d111bcfb3345</a>)</li>
<li>[PHP] Add PHP typehints for setters and remove redundant GPBUtil
checks (<a
href="https://redirect.github.com/protocolbuffers/protobuf/pull/25296">protocolbuffers/protobuf#25296</a>)
(<a
href="https://github.com/protocolbuffers/protobuf/commit/aee03b78929c02461a5f9d8e136a2a016359b0cd">https://github.com/protocolbuffers/protobuf/commit/aee03b78929c02461a5f9d8e136a2a016359b0cd</a>)</li>
<li>[PHP] support default values for editions/proto2 (<a
href="https://redirect.github.com/protocolbuffers/protobuf/pull/25161">protocolbuffers/protobuf#25161</a>)
(<a
href="https://github.com/protocolbuffers/protobuf/commit/b01099d56350551bae3da88b97bf3027274c9f17">https://github.com/protocolbuffers/protobuf/commit/b01099d56350551bae3da88b97bf3027274c9f17</a>)</li>
<li>[Python] Raise errors in OSS when assign bool to int/enum field in
Python Proto. (<a
href="https://github.com/protocolbuffers/protobuf/commit/5b116fe2f14f49dd0cc3b76089983717f211025c">https://github.com/protocolbuffers/protobuf/commit/5b116fe2f14f49dd0cc3b76089983717f211025c</a>)</li>
<li>[Python] Remove float_format/double_format from python proto
text_format (<a
href="https://github.com/protocolbuffers/protobuf/commit/e4854a186e0bfa867d5bfa5cd850608a948fd488">https://github.com/protocolbuffers/protobuf/commit/e4854a186e0bfa867d5bfa5cd850608a948fd488</a>)</li>
<li>[Python] Raise TypeError when convert non-timedelta to Duration, or
convert non-datetime to Timestamp in python proto. (Original code may
raise ArributeError) (<a
href="https://github.com/protocolbuffers/protobuf/commit/00aaca1b4d98954bc2933d7c8a5379ba6088124c">https://github.com/protocolbuffers/protobuf/commit/00aaca1b4d98954bc2933d7c8a5379ba6088124c</a>)</li>
<li>[Python] Remove float_precision from python proto json_format (<a
href="https://github.com/protocolbuffers/protobuf/commit/f027f1fcd52b9d080b7ee79f4024f53cf54e0dc5">https://github.com/protocolbuffers/protobuf/commit/f027f1fcd52b9d080b7ee79f4024f53cf54e0dc5</a>)</li>
<li>[Python] Remove deprecated FieldDescriptor::label() in OSS. Use
is_repeated() or is_required() instead (<a
href="https://github.com/protocolbuffers/protobuf/commit/b76faa921fdd244f374c7be0bddd4050fc42c292">https://github.com/protocolbuffers/protobuf/commit/b76faa921fdd244f374c7be0bddd4050fc42c292</a>)</li>
<li>[Python] Remove deprecated FieldDescriptor.label (<a
href="https://github.com/protocolbuffers/protobuf/commit/0a8ff55518ea5874478ad5b26515b31d186045a9">https://github.com/protocolbuffers/protobuf/commit/0a8ff55518ea5874478ad5b26515b31d186045a9</a>)</li>
<li>[Python] Remove deprecated UseDeprecatedLegacyJsonFieldConflicts()
(<a
href="https://github.com/protocolbuffers/protobuf/commit/c301c2ca286327a21c50c0c4cd877afc9c655b00">https://github.com/protocolbuffers/protobuf/commit/c301c2ca286327a21c50c0c4cd877afc9c655b00</a>)</li>
<li><a href="https://protobuf.dev/news/">Protobuf News</a> may include
additional announcements or pre-announcements for upcoming changes.</li>
<li><a href="https://protobuf.dev/support/migration/">Migration
Guide</a> may include additional guidance for breaking changes.</li>
</ul>
<h1>Bazel</h1>
<ul>
<li>Fix: cc_toolchain should prefer protoc when prebuilt flag is
flipped. (<a
href="https://redirect.github.com/protocolbuffers/protobuf/issues/25168">#25168</a>)
(<a
href="https://github.com/protocolbuffers/protobuf/commit/8c857c3a1c6a106b0a096f1c9fa504bfaca035a9">https://github.com/protocolbuffers/protobuf/commit/8c857c3a1c6a106b0a096f1c9fa504bfaca035a9</a>)</li>
<li>Breaking change: Remove deprecated ProtoInfo.transitive_imports. Use
equivalent transitive_sources instead (<a
href="https://github.com/protocolbuffers/protobuf/commit/0a5c2f6b633c1e5259f566cb42d30fe347b8aadb">https://github.com/protocolbuffers/protobuf/commit/0a5c2f6b633c1e5259f566cb42d30fe347b8aadb</a>)</li>
<li>Feat(bazel): wire up prebuilt protoc toolchain (<a
href="https://redirect.github.com/protocolbuffers/protobuf/issues/24115">#24115</a>)
(<a
href="https://github.com/protocolbuffers/protobuf/commit/cc23698b486e690ea2eb873cc7596a87c74a3ba6">https://github.com/protocolbuffers/protobuf/commit/cc23698b486e690ea2eb873cc7596a87c74a3ba6</a>)</li>
<li>Migrate <code>proto_descriptor_set</code> (<a
href="https://redirect.github.com/protocolbuffers/protobuf/issues/23369">#23369</a>)
(<a
href="https://github.com/protocolbuffers/protobuf/commit/8d4dfdd39a7a242a9ed631a6ab2192c57dd9b9c8">https://github.com/protocolbuffers/protobuf/commit/8d4dfdd39a7a242a9ed631a6ab2192c57dd9b9c8</a>)</li>
</ul>
<h1>Compiler</h1>
<ul>
<li>Ruby codegen: support generation of rbs files (<a
href="https://redirect.github.com/protocolbuffers/protobuf/issues/15633">#15633</a>)
(<a
href="https://github.com/protocolbuffers/protobuf/commit/6ebdf851ba78728f0aa145d38454ed9a316fb08d">https://github.com/protocolbuffers/protobuf/commit/6ebdf851ba78728f0aa145d38454ed9a316fb08d</a>)</li>
<li>Avoid collision name problems between a message named
<code>Xyz</code> and a direct sibling enum named <code>XyzView</code>
(<a
href="https://github.com/protocolbuffers/protobuf/commit/eba53e8f172b273d679759a72ce4250131ee3df1">https://github.com/protocolbuffers/protobuf/commit/eba53e8f172b273d679759a72ce4250131ee3df1</a>)</li>
<li>Generalizing and implementing ValidateFeatureSupport for both
Options and Features during proto parsing (<a
href="https://github.com/protocolbuffers/protobuf/commit/ed3c57114d8e2b47cca7697ddaa50c1b3762a6b0">https://github.com/protocolbuffers/protobuf/commit/ed3c57114d8e2b47cca7697ddaa50c1b3762a6b0</a>)</li>
<li>Fix a bug with custom features outside of the <code>pb</code>
package. (<a
href="https://github.com/protocolbuffers/protobuf/commit/872d3ce7a4da00d7dcec33ced20cfe45235935e8">https://github.com/protocolbuffers/protobuf/commit/872d3ce7a4da00d7dcec33ced20cfe45235935e8</a>)</li>
<li>Fix import option handling when include_imports isn't set. (<a
href="https://github.com/protocolbuffers/protobuf/commit/9ef9e80afd9bc8379d578fe67e5ab0738728c04e">https://github.com/protocolbuffers/protobuf/commit/9ef9e80afd9bc8379d578fe67e5ab0738728c04e</a>)</li>
<li>Fix a bug in STRICT check of namespaced enums to properly check for
'reserved 1 to max' (<a
href="https://github.com/protocolbuffers/protobuf/commit/1229d4adba24c0952ab85ce96bc7b7f8a1fe6d0f">https://github.com/protocolbuffers/protobuf/commit/1229d4adba24c0952ab85ce96bc7b7f8a1fe6d0f</a>)</li>
<li>Prevent accidental stripping of <code>debug_redact</code> options
via import option. (<a
href="https://github.com/protocolbuffers/protobuf/commit/f58b098bffa7ca4045ef7773b09151a6af5d0c28">https://github.com/protocolbuffers/protobuf/commit/f58b098bffa7ca4045ef7773b09151a6af5d0c28</a>)</li>
</ul>
<h1>C++</h1>
<ul>
<li>Add EnumerateEnumValues function. (<a
href="https://github.com/protocolbuffers/protobuf/commit/397d5d99db274b379d1384814074bf7df39d32f7">https://github.com/protocolbuffers/protobuf/commit/397d5d99db274b379d1384814074bf7df39d32f7</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/protocolbuffers/protobuf/commits">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=protobuf&package-manager=uv&previous-version=6.33.2&new-version=6.33.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/oceanbase/pyseekdb/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Introduce a **CLI for pyseekdb** to support debugging and managing
SeekDB databases/collections (close #55).

### Changes

- **CLI 模块**
- 新增
`src/pyseekdb/cli/__init__.py`、`src/pyseekdb/cli/main.py`,实现命令行入口与子命令分发。
- **连接方式**(与 spec 一致)
  - 嵌入式:`--path`(默认当前目录下 `seekdb.db`)。
- 服务端:`--host`、`--port`(默认
2881)、`--tenant`、`--database`、`--user`、`--password`(或环境变量
`SEEKDB_PASSWORD`)。
- **子命令**
  - **db**:`list` / `create <name>` / `delete <name>`(数据库管理)。
- **collections**(别名 **coll**):`list` / `create <name> [--dimension N]`
/ `delete <name>` / `info <name> [--sample N]`(collection 管理及预览)。
  - **sql**:执行原始 SQL(调试用)。
  - **query**:按文本对指定 collection 做向量/语义查询(`--text`、`--n`)。
  - **get**:按 id 或 limit 拉取 collection 文档(`--ids`、`--limit`)。
- **输出**:全局 `-o table`(默认)或 `-o json`。
- **入口**:在 `pyproject.toml` 中增加 `[project.scripts]`,将 `pyseekdb` 指向
`pyseekdb.cli:main`。

## Solution Description

针对 [issue #55](https://github.com/oceanbase/pyseekdb/issues/55),基于现有
`Client` / `AdminClient` 和 spec 中的连接与能力说明,实现一个统一的 CLI,便于:

- **管理**:列出/创建/删除数据库与 collections,查看 collection 信息与样本数据。
- **调试**:执行任意 SQL、对 collection 做 query/get,支持 table 与 json 两种输出。

CLI 复用 `Client()` 与 `AdminClient()`
的工厂逻辑,支持嵌入式(`--path`)与服务端(`--host`/`--port` 等)两种模式;子命令通过 argparse
组织,无额外依赖。

## Test plan

- 安装后执行 `pyseekdb --help`、`pyseekdb db --help`、`pyseekdb collections
--help` 等,确认子命令与参数展示正确。
- 在嵌入式或服务端环境下分别验证:`db list`、`collections list`、`collections info <name>
--sample N`、`sql "SHOW TABLES"`、`query <collection> --text "..."`、`get
<collection> --limit N` 及 `-o json` 输出,确认无报错且结果符合预期。

related  to #55 

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Packs a command-line interface (CLI) as a public executable entry
point.
  * Adds DB management commands: list, create, delete.
* Adds collection commands: list, create, delete, info (with optional
sample).
  * Adds query, document retrieval, and raw SQL execution commands.
* Supports embedded/server connection modes, configurable credentials,
and output formats (table or JSON).

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary

close #137 
refactor DefaultEmbeddingFunction.
Split it into two classes: OnnxEmbeddingFunction and
DefaultEmbeddingFunction.
DefaultEmbeddingFunction worked based on OnnxEmbeddingFunction.
OnnxEmbeddingFunction can execute model based on ONNX.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added a standalone ONNX-based embedding implementation and exposed it
as an embedding option.

* **Refactor**
* Default embedding now delegates embedding work to the new ONNX
embedding path for simpler, modular behavior.

* **Breaking Change**
* Removed several public embedding-related attributes and updated the
default embedding constructor signature.

* **Tests**
* Added unit tests for the ONNX embedding and adjusted test startup path
handling.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary

close #70 
Pyseekdb depends on onnxruntime to execute default embedding function.
But onnxruntime doesn't support python3.14 yet and we waited it too
long.


## Solution Description
We use Sentence Transformers to execute default embedding model on
python3.14.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Broadened Python support to include newer 3.14+ runtimes with an
optimized embedding backend on those versions

* **Chores**
* CI updated to run tests across multiple Python versions and test modes
with more robust pass/fail checks
* Dependency declarations adjusted for broader Python compatibility and
conditional packages
* Reduced routine log verbosity for successful client operations;
improved connection-close log details
  * Deferred network library imports to improve import-time behavior

* **Tests**
* Added and refactored tests to validate embedding behavior across
Python versions and simplified integration flows
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Feb 2, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • 🔍 Trigger a full review
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch develop

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@hnwyllmm hnwyllmm merged commit 845938f into release/v1.1.0 Feb 2, 2026
13 of 14 checks passed
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.

8 participants