Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [
"agent-sdk",
"agentic-ai",
"agents",
"python-sdk",
"vector-database"
],
"is_fork": false,
"size_kb": 363,
"has_wiki": false,
"homepage": "https://www.oceanbase.ai",
"languages": {
"Python": 400651,
"Makefile": 1302
},
"pushed_at": "2026-07-29T02:51:34Z",
"created_at": "2024-09-25T03:26:25Z",
"owner_type": "Organization",
"updated_at": "2026-07-29T02:50:56Z",
"description": "A Python SDK for OceanBase Multimodal Store—enabling vector search, full-text search, and JSON table operations—offers both Milvus-compatible API and SQLAlchemy-based SQL mode, and supports both OceanBase and OceanBase seekdb.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "Apache-2.0",
"default_branch": "main",
"license_spdx_raw": "Apache-2.0",
"primary_language": "Python",
"significant_languages": [
"Python"
]
},
"owner": {
"blog": "https://en.oceanbase.com/",
"name": "OceanBase",
"type": "Organization",
"login": "oceanbase",
"company": null,
"location": "Singapore",
"followers": 744,
"avatar_url": "https://avatars.githubusercontent.com/u/82347605?v=4",
"created_at": "2021-04-12T00:14:26Z",
"is_verified": null,
"public_repos": 123,
"account_age_days": 1934
},
"license": {
"state": "standard",
"spdx_id": "Apache-2.0",
"raw_spdx": "Apache-2.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "release-v0.2.29",
"kind": "other",
"published_at": "2026-07-29T02:52:39Z"
},
{
"tag": "release-v0.2.28",
"kind": "other",
"published_at": "2026-06-05T06:42:08Z"
},
{
"tag": "release-v0.2.27",
"kind": "other",
"published_at": "2026-06-04T19:18:59Z"
},
{
"tag": "release-v0.2.26",
"kind": "other",
"published_at": "2026-04-15T02:21:50Z"
},
{
"tag": "release-v0.2.25",
"kind": "other",
"published_at": "2026-03-10T07:17:59Z"
},
{
"tag": "release-v0.2.24",
"kind": "other",
"published_at": "2026-02-05T06:51:10Z"
},
{
"tag": "release-v0.2.23",
"kind": "other",
"published_at": "2026-01-29T09:29:03Z"
},
{
"tag": "release-v0.2.22",
"kind": "other",
"published_at": "2026-01-15T03:19:26Z"
},
{
"tag": "release-v0.2.21",
"kind": "other",
"published_at": "2026-01-13T03:02:29Z"
},
{
"tag": "release-v0.2.20",
"kind": "other",
"published_at": "2025-11-20T09:29:29Z"
},
{
"tag": "release-v0.2.19",
"kind": "other",
"published_at": "2025-11-10T08:29:25Z"
},
{
"tag": "release-v0.2.18",
"kind": "other",
"published_at": "2025-11-05T06:14:48Z"
},
{
"tag": "release-v0.2.17",
"kind": "other",
"published_at": "2025-11-03T06:41:31Z"
},
{
"tag": "release-v0.2.16",
"kind": "other",
"published_at": "2025-09-03T08:48:53Z"
},
{
"tag": "release-v0.2.15",
"kind": "other",
"published_at": "2025-08-18T02:46:01Z"
},
{
"tag": "release-v0.2.14",
"kind": "other",
"published_at": "2025-06-11T06:54:01Z"
},
{
"tag": "release-v0.2.13",
"kind": "other",
"published_at": "2025-06-11T02:37:32Z"
},
{
"tag": "release-v0.2.12",
"kind": "other",
"published_at": "2025-06-09T13:21:17Z"
},
{
"tag": "release-v0.2.11",
"kind": "other",
"published_at": "2025-04-19T11:13:29Z"
},
{
"tag": "release-v0.2.10",
"kind": "other",
"published_at": "2025-04-14T06:44:53Z"
},
{
"tag": "release-v0.2.9",
"kind": "other",
"published_at": "2025-04-11T08:03:05Z"
},
{
"tag": "release-v0.2.8",
"kind": "other",
"published_at": "2025-04-10T06:49:56Z"
},
{
"tag": "release-v0.2.7",
"kind": "other",
"published_at": "2025-04-09T08:47:07Z"
},
{
"tag": "release-v0.2.6",
"kind": "other",
"published_at": "2025-04-08T09:11:30Z"
},
{
"tag": "release-v0.2.5",
"kind": "other",
"published_at": "2025-04-07T11:45:52Z"
},
{
"tag": "release-v0.2.4",
"kind": "other",
"published_at": "2025-03-27T07:33:14Z"
},
{
"tag": "release-v0.2.3",
"kind": "other",
"published_at": "2025-03-25T02:35:48Z"
},
{
"tag": "release-v0.2.2",
"kind": "other",
"published_at": "2025-03-24T12:15:45Z"
},
{
"tag": "release-v0.2.1",
"kind": "other",
"published_at": "2025-03-24T09:31:16Z"
},
{
"tag": "release-v0.2.0",
"kind": "other",
"published_at": "2025-03-23T03:29:34Z"
},
{
"tag": "release-v0.1.20",
"kind": "other",
"published_at": "2025-03-17T12:28:51Z"
},
{
"tag": "release-v0.1.19",
"kind": "other",
"published_at": "2025-01-02T12:53:39Z"
},
{
"tag": "release-v0.1.18",
"kind": "other",
"published_at": "2024-12-20T10:04:03Z"
},
{
"tag": "release-v0.1.17",
"kind": "other",
"published_at": "2024-12-05T06:17:47Z"
},
{
"tag": "release-v0.1.16",
"kind": "other",
"published_at": "2024-12-03T12:07:43Z"
},
{
"tag": "release-v0.1.15",
"kind": "other",
"published_at": "2024-12-02T06:30:44Z"
},
{
"tag": "release-v0.1.14",
"kind": "other",
"published_at": "2024-11-20T11:45:30Z"
},
{
"tag": "release-v0.1.13",
"kind": "other",
"published_at": "2024-11-12T03:18:48Z"
},
{
"tag": "release-v0.1.12",
"kind": "other",
"published_at": "2024-11-11T08:24:01Z"
},
{
"tag": "release-v0.1.11",
"kind": "other",
"published_at": "2024-11-11T06:14:27Z"
},
{
"tag": "release-v0.1.10",
"kind": "other",
"published_at": "2024-11-08T04:02:39Z"
},
{
"tag": "release-v0.1.9",
"kind": "other",
"published_at": "2024-11-07T13:28:11Z"
},
{
"tag": "release-v0.1.8",
"kind": "other",
"published_at": "2024-11-05T07:11:05Z"
},
{
"tag": "release-v0.1.7",
"kind": "other",
"published_at": "2024-10-30T08:54:58Z"
},
{
"tag": "release-v0.1.6",
"kind": "other",
"published_at": "2024-10-14T11:57:57Z"
},
{
"tag": "release-v0.1.5",
"kind": "other",
"published_at": "2024-10-12T09:45:48Z"
},
{
"tag": "release-v0.1.4",
"kind": "other",
"published_at": "2024-10-09T08:59:01Z"
},
{
"tag": "release-v0.1.2",
"kind": "other",
"published_at": "2024-09-30T08:32:36Z"
},
{
"tag": "release-v0.1.1",
"kind": "other",
"published_at": "2024-09-26T03:11:41Z"
},
{
"tag": "release-v0.1.0",
"kind": "other",
"published_at": "2024-09-25T13:31:38Z"
}
],
"recent_commits": [
{
"oid": "72fc9a60633e125062c29624b65613c3d9e0fcf9",
"body": null,
"is_bot": false,
"headline": "v0.2.29",
"author_name": "xxsc0529",
"author_login": "xxsc0529",
"committed_at": "2026-07-29T02:50:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e322d84c06ad6513f5741ba3a955ffe9d541599f",
"body": "…… (#71)\n\n* feat(hybrid-search): support HYBRID_SEARCH SQL syntax for OceanBase 4.6.0\n\n- add HybridSearch.sql_search() based on the HYBRID_SEARCH table function\n- add version-gated tests for the SQL-level hybrid search syntax\n- document the SQL-level DSL in README and add module to Sphinx index\n- re\n[…]\ne interpolated verbatim and must be\n trusted SQL fragments (SQL injection risk), prefer DSL filters for\n user-provided values\n\n---------\n\nCo-authored-by: xxsc0529 <xxsc0529@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(hybrid-search): support HYBRID_SEARCH SQL syntax for OceanBase 4…",
"author_name": "zhouyh",
"author_login": "xxsc0529",
"committed_at": "2026-07-28T10:26:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2512b79bad97f277d62cc76680dd85df3a222641",
"body": null,
"is_bot": false,
"headline": "fix: refresh embedded seekdb index after upsert",
"author_name": "Haili Zhang",
"author_login": "webup",
"committed_at": "2026-07-10T06:58:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3cfc6adfbf0dda31a82da24e41c87ed0bd159c27",
"body": "Co-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "v0.2.28",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2026-06-05T06:39:08Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "47308c312d4807b8ad178afb0c2f281a735891ef",
"body": "…(#68)\n\n* fix(reflection): parse OceanBase FTS_INDEX_TYPE in SHOW CREATE TABLE\n\nfix:\n- Allow optional spaces around `=` for PARSER_PROPERTIES (align with BLOCK_SIZE style)\n- Parse FTS_INDEX_TYPE clause to avoid SAWarning on unknown schema content during reflect\n\nCo-authored-by: Cursor <cursoragent@c\n[…]\n line limits\n- Use readable parser_properties JSON instead of nested escapes in SQL literal\n\nCo-authored-by: Cursor <cursoragent@cursor.com>\n\n---------\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "fix(reflection): parse OceanBase FTS_INDEX_TYPE in SHOW CREATE TABLE …",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2026-06-05T06:21:49Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e41b6ea14eaa2e40703db68b16a766d15a59a501",
"body": null,
"is_bot": false,
"headline": "v0.2.27",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2026-06-04T19:12:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "920de9760be891a47256668f0565df35fd1d81ad",
"body": "* fix(client): buffer search results before connection closes\n\nCo-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>\n\n* fix(seekdb): flush async HNSW index after insert and fix empty-SELECT cursor\n\nfix:\n- Auto-flush seekdb async HNSW index build after insert so ann_search returns results\n- Set cur\n[…]\nropic.com>\n\n* style: wrap long ternary in seekdb_engine to pass ruff format\n\nCo-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Sonnet 4 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(seekdb): fix ann_search returning no rows in embedded mode (#67)",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2026-06-04T18:57:43Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "11468da73d9e377d5c9396db5341fb4c03394557",
"body": "* feat(fts): support ANALYZER parser with PARSER_PROPERTIES\n\nCo-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>\n\n* style: fix ruff format violations\n\nCo-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>\n\n* fix(fts): enforce analyzer parser_properties validation for string parser_type and Fts\n[…]\n5728472+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Claude Sonnet 4 <noreply@anthropic.com>\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "feat(fts): support ANALYZER parser with PARSER_PROPERTIES (#65)",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2026-06-04T13:03:57Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d1fe001e536ec2b2620f96e2fb6fea589784091f",
"body": "…m global singleton (#66)\n\nCo-authored-by: Claude Sonnet 4 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(seekdb): fix cursor result loss after close and test segfault fro…",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2026-06-04T12:52:37Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6190a03e2627b8afc3bfbf79e6592141d8cf63af",
"body": "Made-with: Cursor",
"is_bot": false,
"headline": "v0.2.26",
"author_name": "xxsc0529",
"author_login": "xxsc0529",
"committed_at": "2026-04-15T02:20:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b0a3d8c045f202017374a6ad2fc54fdfdae9dc19",
"body": "sqlglot 30 removed Expression from the package __init__ re-exports.\nImporting from sqlglot.expressions remains valid from 26.x onward.\n\nMade-with: Cursor\n\nCo-authored-by: xxsc0529 <xxsc0529@users.noreply.github.com>",
"is_bot": false,
"headline": "fix: import Expression from sqlglot.expressions for sqlglot",
"author_name": "zhouyh",
"author_login": "xxsc0529",
"committed_at": "2026-03-24T06:26:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4b0bcc8575737470791428cfc3e424519fae54e5",
"body": "Made-with: Cursor",
"is_bot": false,
"headline": "v0.2.25",
"author_name": "xxsc0529",
"author_login": "xxsc0529",
"committed_at": "2026-03-10T07:16:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "76812f154876fe559a7e8a3bd0afe269c9bc9da6",
"body": "… table options when adding sparse vector indexes\n\n* fix: preserve table options when adding sparse vector indexes\n\n* feat: ObClient embedded SeekDB support, docs, tests and CI\n\n- ObClient/ObVecClient: path=, engine=, pyseekdb_client= for embedded SeekDB\n- seekdb_engine: create_embedded_engine, crea\n[…]\nnnection, create_table, insert, ann_search\n- CI: test-embedded-seekdb job runs tests/test_seekdb_embedded.py\n\nMade-with: Cursor\n\n---------\n\nCo-authored-by: xxsc0529 <xxsc0529@users.noreply.github.com>",
"is_bot": false,
"headline": "feature:Complement the connection of the embedded seekdb and preserve…",
"author_name": "zhouyh",
"author_login": "xxsc0529",
"committed_at": "2026-03-10T07:11:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "08d1b26489f2f19ae8dbf249757d800664019ffb",
"body": null,
"is_bot": false,
"headline": "v0.2.24",
"author_name": "xxsc0529",
"author_login": "xxsc0529",
"committed_at": "2026-02-05T06:45:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9c0dc1155912d099e6a9015bd6cd39fc29551c90",
"body": "Co-authored-by: xxsc0529 <xxsc0529@users.noreply.github.com>",
"is_bot": false,
"headline": "fix: preserve table options when adding sparse vector indexes",
"author_name": "zhouyh",
"author_login": "xxsc0529",
"committed_at": "2026-02-05T06:39:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a87901cf13cab20a63d97bf0646ad1ca8e49663c",
"body": null,
"is_bot": false,
"headline": "v0.2.23",
"author_name": "xxsc0529",
"author_login": "xxsc0529",
"committed_at": "2026-01-29T09:25:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a9b07b9e1740c069853b67354da0c761e9649416",
"body": "Co-authored-by: xxsc0529 <xxsc0529@users.noreply.github.com>",
"is_bot": false,
"headline": "fix: make SeekDB version check case-insensitive",
"author_name": "zhouyh",
"author_login": "xxsc0529",
"committed_at": "2026-01-29T09:20:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ef6423757643491b9652c5044e9387ebd958b0ce",
"body": "* chore: align tooling with make targets\n\n* chore: apply pre-commit fixes\n\n* fix: quote pytest filter in CI",
"is_bot": false,
"headline": "chore: intro pre commit",
"author_name": "Chojan Shang",
"author_login": "PsiACE",
"committed_at": "2026-01-19T09:02:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cdf6fc8d8d987eba234c33b3d54b561f4a8148ec",
"body": null,
"is_bot": false,
"headline": "v0.2.22",
"author_name": "xxsc0529",
"author_login": "xxsc0529",
"committed_at": "2026-01-15T03:17:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4bf3362e06a8d26758356bd57dee4d654bbd35d9",
"body": "… organization\n\n- Add **kwargs parameter to create_table_with_index_params method\n- Pass **kwargs to ObTable constructor to support mysql_organization='heap' and other parameters\n- Set extend_existing=True as default in kwargs to maintain backward compatibility\n\nCo-authored-by: xxsc0529 <xxsc0529@users.noreply.github.com>",
"is_bot": false,
"headline": "feat: add **kwargs support to create_table_with_index_params for heap…",
"author_name": "zhouyh",
"author_login": "xxsc0529",
"committed_at": "2026-01-15T03:13:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9cbdb9b9d047718f7cdda24c07b4f35f7f75e32b",
"body": "…pty results",
"is_bot": false,
"headline": "fix: HybridSearch.search() crashes when OceanBase returns NULL for em…",
"author_name": "longbingljw",
"author_login": "longbingljw",
"committed_at": "2026-01-15T02:48:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "76c3e4a1fe23ed37e20ec5bf24522b9328b29f0e",
"body": null,
"is_bot": false,
"headline": "v0.2.21",
"author_name": "xxsc0529",
"author_login": null,
"committed_at": "2026-01-13T02:57:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8d6a8a9256c64db287023dab54c855c7513902f7",
"body": null,
"is_bot": false,
"headline": "align required python versions and test on python version matrix",
"author_name": "Bowen Liang",
"author_login": "bowenliang123",
"committed_at": "2026-01-06T08:39:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "740cef8bd7e4b20f709d73f83d7c4580c111959f",
"body": null,
"is_bot": false,
"headline": "fix typo in word partition",
"author_name": "Bowen Liang",
"author_login": "bowenliang123",
"committed_at": "2026-01-06T08:37:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f47fde1bf0561587c0edaa86d06ca20e09b4888a",
"body": "* Add full-text index type support\n\n* Add full-text index type support\n\n---------\n\nCo-authored-by: xxsc0529 <xxsc0529@users.noreply.github.com>",
"is_bot": false,
"headline": "feat: Add full-text index type support (#51)",
"author_name": "zhouyh",
"author_login": "xxsc0529",
"committed_at": "2026-01-06T07:28:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f7d265a3fcb90770d10f758edc4bd09ddde8e0dc",
"body": "* update\n\n* use [dependency-groups] as PEP 735 defined",
"is_bot": false,
"headline": "use [dependency-groups] as PEP 735 defined",
"author_name": "Bowen Liang",
"author_login": "bowenliang123",
"committed_at": "2026-01-06T02:37:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "794b7e19ead3336838ce21877f2aa25632f100b2",
"body": "* update\n\n* migrate tool.poetry section to project section following PEP 518",
"is_bot": false,
"headline": "migrate tool.poetry section to project section following PEP 518",
"author_name": "Bowen Liang",
"author_login": "bowenliang123",
"committed_at": "2026-01-06T02:12:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cba6e3fb509dc5bffcc644b744959b0ee74e0bdd",
"body": null,
"is_bot": false,
"headline": "v0.2.20",
"author_name": "xxsc0529",
"author_login": "xxsc0529",
"committed_at": "2025-11-20T09:28:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "460ae169b6f45871a60e70e376b607c7b9b20205",
"body": null,
"is_bot": false,
"headline": "feat: support seekdb sparse vector index (#45)",
"author_name": "zhouyh",
"author_login": "xxsc0529",
"committed_at": "2025-11-20T09:13:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "68fe586767b97a3d15850ad5c9df758ec94d6606",
"body": null,
"is_bot": false,
"headline": "v0.2.19",
"author_name": "xxsc0529",
"author_login": "xxsc0529",
"committed_at": "2025-11-10T08:19:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f5db55027f62cb96fd8df344a2a6447f99555832",
"body": null,
"is_bot": false,
"headline": "docs: add hybrid search documentation (#41)",
"author_name": "zhouyh",
"author_login": "xxsc0529",
"committed_at": "2025-11-10T06:53:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "30cc6a7acb3b3411243595b211b22802ed8b6f61",
"body": null,
"is_bot": false,
"headline": "feat: add SeekDB version check (#39)",
"author_name": "zhouyh",
"author_login": "xxsc0529",
"committed_at": "2025-11-08T07:38:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c58ca45a41c7db39de40717df4c6205eec84d24",
"body": null,
"is_bot": false,
"headline": "v0.2.18",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2025-11-05T06:13:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "89513057ffdc1b18d16eb333c833f67dc4be5716",
"body": "* feat: add hybrid search client\n\n* update init sql",
"is_bot": false,
"headline": "feat: add hybrid search client (#37)",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2025-11-05T05:56:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "be55a4cf45f6f140919715ed47603601d21a3be0",
"body": null,
"is_bot": false,
"headline": "docs: add RELEASE_NOTES.md (#35)",
"author_name": "zhouyh",
"author_login": "xxsc0529",
"committed_at": "2025-11-03T08:08:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1872fe0b37eebd05ee1055be094e621a036ddb65",
"body": null,
"is_bot": false,
"headline": "v0.2.17",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2025-11-03T06:37:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d36ea782caa517a7392189f22339c66eaaebbc05",
"body": null,
"is_bot": false,
"headline": "update sqlglot version (#33)",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2025-11-03T06:25:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8a29fc882c6b5f1dc4d3eba5550cb81e5d30a0f2",
"body": null,
"is_bot": false,
"headline": "feat: ann_search function adds a distance threshold parameter (#32)",
"author_name": "zhouyh",
"author_login": "xxsc0529",
"committed_at": "2025-11-03T05:21:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "50bcc0bef5ea588f986522fadc89dd00b4b20674",
"body": null,
"is_bot": false,
"headline": "chore: fix docstring format and typos (#30)",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2025-10-31T04:21:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8fbb12ab9b484a90e677173716f6ae406496a4f6",
"body": "- Add output_columns parameter to ann_search method for flexible column selection\n- Support SQLAlchemy Column objects and expressions similar to select() function\n- Maintain backward compatibility with output_column_names parameter\n- Add parameter priority: output_columns takes precedence over outpu\n[…]\numns list is empty\n- Update README.md with usage examples and parameter documentation\n- Add comprehensive tests for output_columns functionality\n- Simplify function docstring to focus on new parameter",
"is_bot": false,
"headline": "feat: add output_columns parameter to ann_search function (#29)",
"author_name": "zhouyh",
"author_login": "xxsc0529",
"committed_at": "2025-10-31T02:53:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "906df6cbfdeda2356838ada0c755e89caf17619a",
"body": "Signed-off-by: kenwood chan <kenwoodchan@kenwooddeMacBook-Pro.local>",
"is_bot": false,
"headline": "security: bump aiomysql to 0.3.2 to resolve CVE-2025-62611 (#27)",
"author_name": "kenwoodjw",
"author_login": "kenwoodjw",
"committed_at": "2025-10-30T12:28:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "57b1571418066faa0bd0434b18fea80a14ac07b8",
"body": null,
"is_bot": false,
"headline": "add additional param to create_table method (#26)",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2025-10-29T14:40:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5d415e4d8a622c03dab7e11c96a1f7a306ed861a",
"body": "* add base class ObClient and format code\n\n* use setup-oceanbase-ce in ci\n\n* fix ci yaml format\n\n* free disk space\n\n* modify ob container log disk size\n\n* add datafile size",
"is_bot": false,
"headline": "refactor: add base class ObClient and format code (#25)",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2025-10-29T13:53:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5f388b3aa7a46bc2b974d65a6128c2c735e2a058",
"body": "…ests\n\nSigned-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "add sparse_vector_calculation & imilarity_search_with_scalar_filter t…",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-09-08T03:49:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eed4b109a555a5a1b3b6444af2dba69919ac696a",
"body": "* support sparse vector\n\nSigned-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>\n\n* update oceanbase docker version in ci.yml\n\nSigned-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>\n\n---------\n\nSigned-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "support sparse vector (#19)",
"author_name": "GITHUBear",
"author_login": "GITHUBear",
"committed_at": "2025-09-05T10:00:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cd0620f0eceebd76e61de5b595973e01c280662e",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "v0.2.16",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-09-03T08:42:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "024d563e33ad04050073af282e3b759d4d21c025",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "fix: MilvusLikeClient does not support cosine metric type",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-09-03T08:35:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e5a0ad6334fa857f04a9f2e06fa32afd38270224",
"body": null,
"is_bot": false,
"headline": "v0.2.15",
"author_name": "川粉",
"author_login": "whhe",
"committed_at": "2025-08-18T02:43:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bdbaf32de452ff7144c720617442b0ef191c1c6f",
"body": null,
"is_bot": false,
"headline": "fix: update key regex of parser and update test cases (#18)",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2025-08-15T10:07:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "57aa981e6856d84d61dda0e1332f09862b7ee389",
"body": "* fix:spec issue when it is string\n\n* bugfix test\n\n* test fix\n\n* spec bug fix and test fix\n\n* simplify the bugfix logic of spec\n\n* use sql to test instead of mock",
"is_bot": false,
"headline": "fix: add type check for constraints spec to deal with string value (#17)",
"author_name": "longbingljw",
"author_login": "longbingljw",
"committed_at": "2025-08-01T03:28:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2c2cf12b5d466131b079bda16cdefbd111c3fc77",
"body": null,
"is_bot": false,
"headline": "v0.2.14",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2025-06-11T06:52:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "153725ed0ba6ac59c34663611589c87c527a4b54",
"body": null,
"is_bot": false,
"headline": "add add_columns and drop_columns method to ObVecClient (#15)",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2025-06-11T06:50:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9a6848bfa66ba975655d022f5ec560645e5d6a2a",
"body": "* simplify type instantiation\n\n* manually set autocommit on session",
"is_bot": false,
"headline": "simplify array type instantiation and fix autocommit config (#14)",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2025-06-11T06:50:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e784048275d18bfde4f61e6dc5c3f02c5d64e388",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "v0.2.13",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-06-11T02:36:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e835840514320164854307b7abda69eb225d6c05",
"body": null,
"is_bot": false,
"headline": "validate array dimension (#13)",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2025-06-11T02:35:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c045390a2b080e06117bd903418279607cdec0f0",
"body": null,
"is_bot": false,
"headline": "add refresh_metadata method to ObVecClient (#12)",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2025-06-10T12:37:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "791d425e9e2391e073fe4b19e4ab1b333cdd3dde",
"body": "* fix nested array for cache warnings and duplicate json process\n\n* support json string",
"is_bot": false,
"headline": "fix nested array for cache warnings and duplicate json process (#11)",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2025-06-10T11:51:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3b7ca4e55f8f267c8c1dd7eb2c84194bf700d6ba",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "v0.2.12",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-06-09T13:10:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "329d5b717abdf7722adc39a4be9d704a88fde0ec",
"body": "* add array type\n\n* update coltype_with_args pattern",
"is_bot": false,
"headline": "add array type and override parsing function for array column (#10)",
"author_name": "He Wang",
"author_login": "whhe",
"committed_at": "2025-06-09T13:07:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c10effa3d5689d7d1f1576c08a411a5f954fe574",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "support TIMESTAMPTZ",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-06-09T12:33:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "36fa10d92c3c611475bb9524e241feba25f1d3ac",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "trigger ci",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-06-09T12:23:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "59248d3af19f8f37ee0b2a1bef3c0c878d3eeef6",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "rename json tables",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-04-19T11:06:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "73fca4d6c2ff2220976de2eac815d730be01b38b",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "v0.2.10: JSON TABLE: support alias in order by clause",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-04-14T06:35:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "427e1bc98ca1d14509a4e38b953e58bd52777832",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "v0.2.9",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-04-11T07:53:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "017728e6bd5a4242c22e4e4ff626e0c0d14314fc",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "v0.2.8",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-04-10T07:45:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fd1ea713682beecbb64f9688fce8103974c15956",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "sqlalchemy = '>=1.4,<=3'",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-04-10T07:44:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "231d099d6aff160bd1b19fbecabf7cd400f3fa7b",
"body": "… perform_json_table_sql; fix None where clause in update and delete\n\nSigned-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "JSONTable: return row count for insert/update/delete; opt_user_id for…",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-04-10T06:21:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "81c44b680ab31374cdfb4c692f085f611dea88bd",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "fix user & password encoding bug",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-04-09T08:38:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7c00eebec401206456e1ab404955702adba4acde",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "support JSON table select with data id",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-04-08T09:02:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8a453bf1e93f5da168793e0a905cbabd83eae004",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "v0.2.5: support user group & multi users client for ObVecJsonTableClient",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-04-07T11:37:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "71becc03027021a1640e32db3538a836629bc57b",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "v0.2.4",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-03-27T07:16:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "43833cbd9d6567ffe0a11bcbb4eced22907dfeff",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "use python3.9 compatible union type hint",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-03-27T07:14:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0da573d5028dae902a32cc9d433e3f7b2970414a",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "v0.2.3",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-03-25T02:24:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "78fdabec22afdc7b7483b3958efce6a5b8660f53",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "downgrade numpy version",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-03-25T02:11:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "06062b937cdd2c0d012f662a4a372021cf189030",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "use pydantic>=2.7<3",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-03-24T12:08:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "68fb244536de03fe4fb9ee487a388884d97a4fc5",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "downgrade pydantic",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-03-24T12:04:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0960157a8d39312a3b4da85326075f4ffb6c0895",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "v0.2.1",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-03-24T09:24:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "03d4baa7085f1d3cfe6b090550b6ed719f7aaa0f",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "fix MatchAgainst function compile cache bug",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-03-24T09:15:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eb494971c9549c35c668f2f0b24f833bf6fd8260",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "v0.2.0",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-03-23T03:22:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "061525b9e08be42d1da8d582d77494fd7f846ec3",
"body": "* support FTS & vector new feature\n\nSigned-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>\n\n* support limit in ObVecClient::get\n\nSigned-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>\n\n* add more test case\n\nSigned-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>\n\n* update ob d\n[…]\naikang.shk <shanhaikang.shk@oceanbase.com>\n\n* fix docker name\n\nSigned-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>\n\n---------\n\nSigned-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "Full text search & More Vector Search Algorithm supporting (#8)",
"author_name": "GITHUBear",
"author_login": "GITHUBear",
"committed_at": "2025-03-23T03:19:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8d1d48294fb2549f279bda8c0567501b5d8cab3b",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "v0.1.20",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-03-17T12:19:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "265978000ee098c3f8694a29f49dbaa9d293f32a",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "support online basic cases (#7)",
"author_name": "GITHUBear",
"author_login": "GITHUBear",
"committed_at": "2025-03-17T12:07:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4959ed0cf691749c5eede37abcf800cbd17b3d66",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "v0.1.19",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2025-01-02T12:50:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e0bf21f48baa0ddde0fdc2da0f741329f5be7dd5",
"body": "* Support virtual SQL for JSON TABLE\r\n\r\nSigned-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "Support virtual SQL for JSON TABLE (#4)",
"author_name": "GITHUBear",
"author_login": "GITHUBear",
"committed_at": "2025-01-02T12:47:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1086b6cc59a4287ecf01b84a2355e3d9edb1d0ed",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "v0.1.18",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2024-12-20T10:00:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "619e08e04a44ee2e003fd8cf32978ee2bb8492f0",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "fix chinese-english-hybrid table name issue",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2024-12-20T09:57:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "32b56ab4677453f4a338462fef495c75e9d6b6fd",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "v0.1.17",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2024-12-05T06:13:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8b771a5f93f707a1de11c4c677545f6e627688e8",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "fix sqlalchemy metadata concurrency issue",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2024-12-05T06:04:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b92da4f000ef71f418a23d70ef38964357bef69e",
"body": "… SQLAlchemy mode\n\nSigned-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "remove 'func.' name from vector distance function & add docs for pure…",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2024-12-03T12:02:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fc8c5b1fb8f5ba51c11985433035ea449112ea59",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "set sqlalchemy version to >=1.4,<2.0.36",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2024-12-02T06:22:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1155dc6b41f73d8a4207ec9902dfa6a3f0a04613",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "add downloads metric",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2024-11-22T06:06:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d40c142d544c8ae8d6bc834de2668b60720a96f1",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "v0.1.14",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2024-11-20T11:42:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ca6ed520969fa61425dcfc170a707c3cdb8d8ba5",
"body": "Escape @ to avoid parsing errors.",
"is_bot": false,
"headline": "Merge pull request #3 from caifeizhi/main",
"author_name": "GITHUBear",
"author_login": "GITHUBear",
"committed_at": "2024-11-20T11:36:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7c9ba2dbb3e2717e4b7ab9664343f365d16345a6",
"body": "Escape @ to avoid parsing errors.",
"is_bot": false,
"headline": "Update ob_vec_client.py",
"author_name": "Feizhi Cai",
"author_login": "caifeizhi",
"committed_at": "2024-11-20T11:19:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "871a782cb82703662c24fde46ce2c0e4da36a641",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "fix embedchain unexpected keyword app_id",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2024-11-12T03:14:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7e8254b98c8a28fd852d3f1b2838262443004675",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "bp version",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2024-11-11T08:15:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cd8316559e74a7b012d4a6d59aaeba5b1aed14ac",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "fix python3.9 zip() issue",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2024-11-11T08:13:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dfd6dbf37ee7cab0ea4c96f6f4f32c653c5f76e0",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "v0.1.11",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2024-11-11T06:10:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "efb46dc238a4bbfe9146c040f10b7eb3473a63e1",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "show stmt str",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2024-11-11T06:09:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "783dd64a3569c7e5223dd7da9a249cb9ad114fe1",
"body": "Signed-off-by: shanhaikang.shk <shanhaikang.shk@oceanbase.com>",
"is_bot": false,
"headline": "support post ann search",
"author_name": "shanhaikang.shk",
"author_login": "GITHUBear",
"committed_at": "2024-11-08T04:01:18Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 50,
"commits_last_year": 49,
"latest_release_at": "2026-07-29T02:52:39Z",
"latest_release_tag": "release-v0.2.29",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 17,
"days_since_latest_release": 0,
"mean_days_between_releases": 27.9
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 100,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "pyobvector",
"exists": true,
"license": "Apache-2.0",
"keywords": [
"obvector",
"oceanbase",
"vector store"
],
"ecosystem": "pypi",
"matches_repo": true,
"registry_url": "https://pypi.org/project/pyobvector/",
"is_deprecated": false,
"latest_version": "0.2.29",
"repository_url": "https://github.com/oceanbase/pyobvector.git",
"versions_count": 50,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 115588,
"first_published_at": "2024-09-25T13:32:40.421845Z",
"latest_published_at": "2026-07-29T02:53:22.676404Z",
"latest_version_yanked": null,
"days_since_latest_publish": 0
}
]
},
"popularity": {
"forks": 12,
"stars": 19,
"watchers": 4,
"fork_history": {
"days": [
{
"date": "2024-11-20",
"count": 1
},
{
"date": "2025-05-26",
"count": 1
},
{
"date": "2025-08-11",
"count": 1
},
{
"date": "2025-08-19",
"count": 1
},
{
"date": "2025-10-30",
"count": 1
},
{
"date": "2025-11-03",
"count": 1
},
{
"date": "2025-12-26",
"count": 1
},
{
"date": "2026-01-16",
"count": 1
},
{
"date": "2026-01-19",
"count": 1
},
{
"date": "2026-06-17",
"count": 1
},
{
"date": "2026-07-10",
"count": 1
}
],
"complete": true,
"collected": 11,
"total_forks": 12
},
"star_history": null,
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 47630,
"source_files_sampled": 53,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"pyproject.toml"
],
"advisories": {
"error": "No resolved dependencies carried a version and a supported ecosystem",
"scope": "repository_graph",
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 12,
"direct_affected_count": 0
},
"ecosystems": [
"pypi"
],
"dependencies": [
{
"name": "numpy",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=1.17.0"
},
{
"name": "sqlalchemy",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=1.4,<=3"
},
{
"name": "pymysql",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=1.1.1"
},
{
"name": "aiomysql",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=0.3.2"
},
{
"name": "sqlglot",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=26.0.1"
},
{
"name": "pydantic",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=2.7.0,<3"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "aiomysql",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "numpy",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "pydantic",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "pymysql",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "sqlalchemy",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "sqlglot",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "prek",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "pylint",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "pyseekdb",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "pytest",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "ruff",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "sphinx",
"direct": false,
"version": null,
"ecosystem": "pypi"
}
],
"collected": true,
"truncated": false,
"total_count": 12,
"direct_count": 6,
"indirect_count": 6
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 45,
"open_issues": 0,
"closed_ratio": 1,
"closed_issues": 24,
"closed_unmerged_prs": 2
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "GITHUBear",
"commits": 86,
"avatar_url": "https://avatars.githubusercontent.com/u/22553387?v=4"
},
{
"type": "User",
"login": "whhe",
"commits": 22,
"avatar_url": "https://avatars.githubusercontent.com/u/27404407?v=4"
},
{
"type": "User",
"login": "xxsc0529",
"commits": 21,
"avatar_url": "https://avatars.githubusercontent.com/u/93303124?v=4"
},
{
"type": "User",
"login": "bowenliang123",
"commits": 4,
"avatar_url": "https://avatars.githubusercontent.com/u/1935105?v=4"
},
{
"type": "User",
"login": "longbingljw",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/216498729?v=4"
},
{
"type": "User",
"login": "PsiACE",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/36896360?v=4"
},
{
"type": "User",
"login": "caifeizhi",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/5435903?v=4"
},
{
"type": "User",
"login": "webup",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/2936504?v=4"
},
{
"type": "User",
"login": "kenwoodjw",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/10386710?v=4"
},
{
"type": "User",
"login": "powerfooI",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/26134111?v=4"
}
],
"contributors_sampled": 10,
"top_contributor_share": 0.614
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml",
"python-publish.yml"
],
"has_docs_dir": false,
"linter_configs": [
".pylintrc"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": true
},
"security_signals": {
"lockfiles": [],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 8,
"reason": "16 out of 19 merged PRs checked by a CI test -- score normalized to 8",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 3,
"reason": "Found 9/30 approved changesets -- score normalized to 3",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 5 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 7,
"reason": "9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 10,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "72fc9a60633e125062c29624b65613c3d9e0fcf9",
"ran_at": "2026-07-29T03:00:07Z",
"aggregate_score": 5.1,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-29T02:53:27Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-28T10:26:32Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/oceanbase/pyobvector",
"host": "github.com",
"name": "pyobvector",
"owner": "oceanbase"
},
"metrics": {
"overall": {
"key": "overall",
"band": "excellent",
"name": "Overall health",
"note": "The weighted overall 70 is calibrated to 83 on the published index scale (record calibration 2026-08-02).",
"notes": [
{
"code": "overall_calibration",
"params": {
"raw": 70,
"calibrated": 83,
"calibration": "2026-08-02"
}
}
],
"value": 83,
"inputs": {
"security": 51,
"vitality": 82,
"community": 66,
"governance": 72,
"calibration": "2026-08-02",
"engineering": 80,
"ai_readiness": 46,
"weighted_overall_raw": 70
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "excellent",
"name": "Vitality",
"value": 82,
"weight": 0.21,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 70,
"inputs": {
"commits_last_year": 49,
"human_commit_share": 1,
"days_since_last_push": 0,
"active_weeks_last_year": 17
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "17/52 weeks with commits",
"points": 11.8,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 17
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "49 commits in the last year",
"points": 15.3,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 49
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7",
"points": 7,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "exceptional",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 50,
"latest_release_tag": "release-v0.2.29",
"releases_from_tags": false,
"days_since_latest_release": 0,
"mean_days_between_releases": 27.9
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "50 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 50
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~27.9 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 27.9
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "exceptional",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 5,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 5 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 5
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "good",
"name": "Community & Adoption",
"value": 66,
"weight": 0.17,
"metrics": [
{
"key": "popularity",
"band": "at_risk",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 32,
"inputs": {
"forks": 12,
"stars": 19,
"watchers": 4,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "19 stars",
"points": 20.4,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 19
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "12 forks",
"points": 8.7,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 12
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "4 watchers",
"points": 2.7,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 4
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"has_readme": true,
"has_license": true,
"readme_badges": null,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"readme_badge_services": [],
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (Apache-2.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "Apache-2.0"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "excellent",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 84,
"inputs": {
"packages": [
"pyobvector"
],
"dependents": null,
"ecosystems": "pypi",
"total_downloads": null,
"monthly_downloads": 115588
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "115,588 downloads/month across pypi",
"points": 67.5,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 115588,
"ecosystems": "pypi"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "good",
"name": "Sustainability & Governance",
"value": 72,
"weight": 0.23,
"metrics": [
{
"key": "maintainer_resilience",
"band": "weak",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 41,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 10,
"top_contributor_share": 0.614
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 61% of commits",
"points": 8.7,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 61
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "10 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 10
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 5 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "excellent",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"newcomer_pr_acceptance"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 86,
"inputs": {
"merged_prs": 45,
"open_issues": 0,
"closed_issues": 24,
"prs_merged_7d": null,
"prs_decided_7d": null,
"prs_merged_30d": null,
"prs_decided_30d": null,
"issue_closed_ratio": 1,
"closed_unmerged_prs": 2,
"first_time_authors_30d": null,
"first_time_prs_merged_30d": null,
"first_time_prs_decided_30d": null
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "100% of issues closed",
"points": 42,
"status": "met",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 100
}
}
],
"max_points": 42
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "45/47 decided PRs merged",
"points": 28.7,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 45,
"decided": 47
}
}
],
"max_points": 30
},
{
"key": "newcomer_pr_acceptance",
"name": "Newcomer PR acceptance",
"detail": "no first-time contributor's PR decided in 30d",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_newcomer_prs",
"params": {
"days": 30
}
}
],
"max_points": 13
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 9/30 approved changesets -- score normalized to 3",
"points": 4.5,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "good",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 74,
"inputs": {
"followers": 744,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "oceanbase",
"public_repos": 123,
"account_age_days": 1934
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "744 followers of oceanbase",
"points": 20.6,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 744,
"login": "oceanbase"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "123 public repos, account ~5 yr old",
"points": 23.6,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 123
}
},
{
"code": "account_age_years",
"params": {
"years": 5
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "exceptional",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"pyobvector"
],
"ecosystems": "pypi",
"any_deprecated": false,
"min_days_since_publish": 0
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on pypi",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "pypi"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 0 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 0
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "50 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 50
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "excellent",
"name": "Engineering Quality",
"value": 80,
"weight": 0.19,
"metrics": [
{
"key": "engineering_practices",
"band": "excellent",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": true
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "2 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 2
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": ".pylintrc",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".pylintrc"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 9.6,
"status": "met",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "16 out of 19 merged PRs checked by a CI test -- score normalized to 8",
"points": 16,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "good",
"name": "Documentation",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"topics": [
"agent-sdk",
"agentic-ai",
"agents",
"python-sdk",
"vector-database"
],
"has_wiki": false,
"homepage": "https://www.oceanbase.ai",
"has_readme": true,
"has_docs_dir": false,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://www.oceanbase.ai",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "5 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 5
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 51,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "moderate",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 51,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 17,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 1,
"scorecard_aggregate": 5.1
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "16 out of 19 merged PRs checked by a CI test -- score normalized to 8",
"points": 2,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 9/30 approved changesets -- score normalized to 3",
"points": 2.2,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 5 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7",
"points": 5.2,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "exceptional",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"commit_weight_rule": {
"min_commits": 50,
"min_commit_share": 0.1
},
"review_only_matches": 0,
"below_threshold_exposures": [],
"assessed_self_published_locations": 17
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "weak",
"name": "AI Readiness",
"value": 46,
"weight": 0.04,
"metrics": [
{
"key": "ai_agent_context",
"band": "at_risk",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 22,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.42,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "42 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 22.4,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 42,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 61,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [
"Makefile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0.05,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Makefile"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".pylintrc",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".pylintrc"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "5 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 5,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 55,
"inputs": {
"primary_language": "Python",
"largest_source_bytes": 47630,
"source_files_sampled": 53,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Python without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "Python"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/53 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 53,
"oversized": 0
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
}
],
"classification": {
"labels": [
"library"
],
"scores": {
"sdk": 2,
"library": 6
},
"primary": "library",
"evidence": [
{
"tier": "distribution",
"label": "library",
"source": "registry:pypi",
"weight": 6
},
{
"tier": "description",
"label": "sdk",
"source": "description:sdk",
"weight": 2
}
],
"artifacts": [],
"confidence": "medium",
"host_extension": false,
"runs_as_process": false,
"consumed_by_code": true
},
"metrics_version": "2.3.1"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"deps.dev does not index pypi:pyobvector@0.2.29; advisories assessed against the repository dependency graph instead",
"No resolved dependencies carried a version and a supported ecosystem"
],
"report_type": "repository",
"generated_at": "2026-07-29T03:00:25.803543Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/o/oceanbase/pyobvector.svg",
"full_name": "oceanbase/pyobvector",
"license_state": "standard",
"license_spdx": "Apache-2.0"
}