# Thoth Vector Database Manager v2.0
A high-performance, Haystack-based vector database manager with support for multiple backends and local embedding capabilities.
## ๐ Features
- **Multi-backend support**: Qdrant, Weaviate, Chroma, PostgreSQL pgvector, Milvus, Pinecone
- **Haystack integration**: Uses Haystack as an abstraction layer over vector stores
- **Local embeddings**: Uses open-source Sentence Transformers for local embedding generation
- **Memory optimization**: Lazy loading and efficient batch processing
- **API compatibility**: Maintains backward compatibility with existing ThothVectorStore API
- **Type safety**: Full type hints and Pydantic validation
- **Flexible deployment**: Multiple modes (memory, filesystem, server) for different use cases
- **Production-ready**: Comprehensive testing and robust error handling
## ๐ฆ Installation
```bash
# Basic installation
pip install thoth-vdb2
# With specific backend support
pip install thoth-vdb2[qdrant]
pip install thoth-vdb2[weaviate]
pip install thoth-vdb2[chroma]
pip install thoth-vdb2[pgvector]
pip install thoth-vdb2[milvus]
pip install thoth-vdb2[pinecone]
# All backends
pip install thoth-vdb2[all]
```
## ๐๏ธ Architecture
The library is built on a clean architecture with:
- **Core**: Base interfaces and document types
- **Adapters**: Backend-specific implementations using Haystack
- **Factory**: Unified creation interface
- **Compatibility**: Legacy API support
## ๐ Quick Start
### New API (Recommended)
```python
from vdbmanager import VectorStoreFactory, ColumnNameDocument, SqlDocument, HintDocument
# Create a vector store
store = VectorStoreFactory.create(
backend="qdrant",
collection="my_collection",
host="localhost",
port=6333
)
# Add documents
column_doc = ColumnNameDocument(
table_name="users",
column_name="email",
original_column_name="user_email",
column_description="User email address",
value_description="Valid email format"
)
doc_id = store.add_column_description(column_doc)
# Search documents
results = store.search_similar(
query="user email",
doc_type="column_name",
top_k=5
)
```
### Legacy API (Backward Compatible)
```python
from vdbmanager import ThothVectorStore
# Works exactly like before
store = ThothVectorStore(
backend="qdrant",
collection="my_collection",
host="localhost",
port=6333
)
# All existing methods work
doc_id = store.add_column_description(column_doc)
results = store.search_similar("user email", "column_name")
```
## ๐ง Configuration
### Qdrant
```python
store = VectorStoreFactory.create(
backend="qdrant",
collection="my_collection",
host="localhost",
port=6333,
api_key="your-api-key", # Optional
embedding_dim=384, # Optional
hnsw_config={"m": 16, "ef_construct": 100}
)
```
### Weaviate (Production-Ready with Docker)
**Docker Setup (Recommended):**
```python
store = VectorStoreFactory.create(
backend="weaviate",
collection="MyCollection",
url="http://localhost:8080",
use_docker=True,
docker_compose_file="docker-compose-weaviate.yml"
)
```
**Manual Configuration:**
```python
store = VectorStoreFactory.create(
backend="weaviate",
collection="MyCollection",
url="http://localhost:8080",
timeout=30,
skip_init_checks=False, # Set to True if gRPC issues
api_key="your-api-key" # Optional
)
```
> ๐ **See [Weaviate Configuration Guide](docs/WEAVIATE_CONFIGURATION.md) for detailed setup instructions**
### Chroma (Multiple Modes)
**Memory Mode (Recommended for Testing):**
```python
store = VectorStoreFactory.create(
backend="chroma",
collection="my_collection",
mode="memory" # Fast, isolated, no persistence
)
```
**Filesystem Mode:**
```python
store = VectorStoreFactory.create(
backend="chroma",
collection="my_collection",
mode="filesystem",
persist_path="./chroma_db"
)
```
**Server Mode (Production):**
```python
store = VectorStoreFactory.create(
backend="chroma",
collection="my_collection",
mode="server",
host="localhost",
port=8000
)
```
> ๐ **See [Chroma Configuration Guide](docs/CHROMA_CONFIGURATION.md) for detailed setup instructions**
### PostgreSQL pgvector
```python
store = VectorStoreFactory.create(
backend="pgvector",
collection="my_table",
connection_string="postgresql://user:pass@localhost:5432/dbname"
)
```
### Milvus (Multiple Modes)
**Lite Mode (Recommended for Testing):**
```python
store = VectorStoreFactory.create(
backend="milvus",
collection="my_collection",
mode="lite",
connection_uri="./milvus.db" # File-based storage
)
```
**Server Mode (Production):**
```python
store = VectorStoreFactory.create(
backend="milvus",
collection="my_collection",
mode="server",
host="localhost",
port=19530
)
```
> ๐ **See [Milvus Configuration Guide](docs/MILVUS_CONFIGURATION.md) for detailed setup instructions**
### Pinecone
```python
store = VectorStoreFactory.create(
backend="pinecone",
collection="my-index",
api_key="your-api-key",
environment="us-west1-gcp-free"
)
```
## ๐ Performance Optimizations
### Memory Usage
- **Lazy initialization**: Embedders and connections are initialized on first use
- **Singleton pattern**: Same configuration reuses existing instances
- **Batch processing**: Efficient bulk operations
### Performance Tuning
```python
# Optimize for specific use cases
store = VectorStoreFactory.create(
backend="qdrant",
collection="optimized",
embedding_model="sentence-transformers/all-MiniLM-L6-v2", # 384-dim, fast
hnsw_config={"m": 32, "ef_construct": 200} # Better search quality
)
```
## ๐งช Testing
```bash
# Run all tests
pytest
# Run specific backend tests
pytest tests/test_qdrant.py -v
# Run with coverage
pytest --cov=vdbmanager tests/
```
## ๐ Migration Guide
### From v1.x to v2.x
#### Simple Migration
```python
# Old code (v1.x)
from vdbmanager import QdrantHaystackStore
store = QdrantHaystackStore(
collection="my_docs",
host="localhost",
port=6333
)
# New code (v2.x) - fully compatible
from vdbmanager import QdrantHaystackStore # Still works!
# Or use new API
from vdbmanager import VectorStoreFactory
store = VectorStoreFactory.create(
backend="qdrant",
collection="my_docs",
host="localhost",
port=6333
)
```
#### Advanced Migration
```python
# Old code
from vdbmanager import ThothVectorStore
# New code - same interface, better internals
from vdbmanager import ThothVectorStore # Still works with warnings
# Recommended new approach
from vdbmanager import QdrantAdapter
store = QdrantAdapter(
collection="my_docs",
host="localhost",
port=6333
)
```
## ๐ API Reference
### Core Classes
#### VectorStoreFactory
```python
# Create store
store = VectorStoreFactory.create(backend, collection, **kwargs)
# From config
config = {"backend": "qdrant", "params": {...}}
store = VectorStoreFactory.from_config(config)
# List backends
backends = VectorStoreFactory.list_backends()
```
#### Document Types
- `ColumnNameDocument`: Column metadata
- `SqlDocument`: SQL examples
- `HintDocument`: General hints
### Methods
- `add_column_description(doc)`: Add column metadata
- `add_sql(doc)`: Add SQL example
- `add_hint(doc)`: Add hint
- `search_similar(query, doc_type, top_k=5, score_threshold=0.7)`: Semantic search
- `get_document(doc_id)`: Retrieve by ID
- `bulk_add_documents(docs)`: Batch insert
- `get_collection_info()`: Get stats
## ๐ Troubleshooting
### Common Issues
#### Connection Errors
```python
# Check service availability
import requests
requests.get("http://localhost:6333") # Qdrant
```
#### Memory Issues
```python
# Use smaller embedding model
store = VectorStoreFactory.create(
backend="qdrant",
collection="my_collection",
embedding_model="sentence-transformers/all-MiniLM-L6-v2" # 384-dim
)
```
#### Performance Issues
```python
# Tune HNSW parameters
store = VectorStoreFactory.create(
backend="qdrant",
collection="my_collection",
hnsw_config={"m": 16, "ef_construct": 100}
)
```
## ๐ค Contributing
1. Fork the repository
2. Create a feature branch
3. Add tests for new functionality
4. Ensure all tests pass
5. Submit a pull request
## ๐ License
MIT License - see LICENSE file for details.
## Directory structure
vdbmanager/
โโโ core/ # Base interfaces and document types
โ โโโ base.py # Core document classes and interfaces
โ โโโ __init__.py
โโโ adapters/ # Backend-specific implementations
โ โโโ haystack_adapter.py # Base Haystack adapter
โ โโโ qdrant_adapter.py # Qdrant implementation
โ โโโ weaviate_adapter.py # Weaviate implementation
โ โโโ chroma_adapter.py # Chroma implementation
โ โโโ pgvector_adapter.py # PostgreSQL pgvector
โ โโโ milvus_adapter.py # Milvus implementation
โ โโโ pinecone_adapter.py # Pinecone implementation
โโโ factory.py # Unified creation interface
โโโ compat/ # Legacy compatibility layer
โ โโโ __init__.py
โ โโโ thoth_vector_store.py
โโโ __init__.py # Public API exports
## NewAPI (reccomended)
from vdbmanager import VectorStoreFactory, ColumnNameDocument
### Create any backend
store = VectorStoreFactory.create(
backend="qdrant",
collection="my_docs",
host="localhost",
port=6333
)
### Use optimized methods
doc_id = store.add_column_description(column_doc)
results = store.search_similar("user email", "column_name")
## Old API (Fully compatible)
from vdbmanager import ThothVectorStore # Works with warnings
### Existing code continues to work
store = ThothVectorStore(
backend="qdrant",
collection="my_docs",
host="localhost",
port=6333
)
Raw data
{
"_id": null,
"home_page": null,
"name": "thoth-vdbmanager",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": null,
"keywords": "vector-database, ai, machine-learning, embeddings, similarity-search",
"author": null,
"author_email": "Marco Pancotti <mp@tylconsulting.it>",
"download_url": "https://files.pythonhosted.org/packages/d0/29/a92c0b312644fb16c75d8ea74d8400748914cd809c5ac051a2e081c6099c/thoth_vdbmanager-0.2.12.tar.gz",
"platform": null,
"description": "# Thoth Vector Database Manager v2.0\n\nA high-performance, Haystack-based vector database manager with support for multiple backends and local embedding capabilities.\n\n## \ud83d\ude80 Features\n\n- **Multi-backend support**: Qdrant, Weaviate, Chroma, PostgreSQL pgvector, Milvus, Pinecone\n- **Haystack integration**: Uses Haystack as an abstraction layer over vector stores\n- **Local embeddings**: Uses open-source Sentence Transformers for local embedding generation\n- **Memory optimization**: Lazy loading and efficient batch processing\n- **API compatibility**: Maintains backward compatibility with existing ThothVectorStore API\n- **Type safety**: Full type hints and Pydantic validation\n- **Flexible deployment**: Multiple modes (memory, filesystem, server) for different use cases\n- **Production-ready**: Comprehensive testing and robust error handling\n\n## \ud83d\udce6 Installation\n\n```bash\n# Basic installation\npip install thoth-vdb2\n\n# With specific backend support\npip install thoth-vdb2[qdrant]\npip install thoth-vdb2[weaviate]\npip install thoth-vdb2[chroma]\npip install thoth-vdb2[pgvector]\npip install thoth-vdb2[milvus]\npip install thoth-vdb2[pinecone]\n\n# All backends\npip install thoth-vdb2[all]\n```\n\n## \ud83c\udfd7\ufe0f Architecture\n\nThe library is built on a clean architecture with:\n\n- **Core**: Base interfaces and document types\n- **Adapters**: Backend-specific implementations using Haystack\n- **Factory**: Unified creation interface\n- **Compatibility**: Legacy API support\n\n## \ud83d\ude80 Quick Start\n\n### New API (Recommended)\n\n```python\nfrom vdbmanager import VectorStoreFactory, ColumnNameDocument, SqlDocument, HintDocument\n\n# Create a vector store\nstore = VectorStoreFactory.create(\n backend=\"qdrant\",\n collection=\"my_collection\",\n host=\"localhost\",\n port=6333\n)\n\n# Add documents\ncolumn_doc = ColumnNameDocument(\n table_name=\"users\",\n column_name=\"email\",\n original_column_name=\"user_email\",\n column_description=\"User email address\",\n value_description=\"Valid email format\"\n)\n\ndoc_id = store.add_column_description(column_doc)\n\n# Search documents\nresults = store.search_similar(\n query=\"user email\",\n doc_type=\"column_name\",\n top_k=5\n)\n```\n\n### Legacy API (Backward Compatible)\n\n```python\nfrom vdbmanager import ThothVectorStore\n\n# Works exactly like before\nstore = ThothVectorStore(\n backend=\"qdrant\",\n collection=\"my_collection\",\n host=\"localhost\",\n port=6333\n)\n\n# All existing methods work\ndoc_id = store.add_column_description(column_doc)\nresults = store.search_similar(\"user email\", \"column_name\")\n```\n\n## \ud83d\udd27 Configuration\n\n### Qdrant\n```python\nstore = VectorStoreFactory.create(\n backend=\"qdrant\",\n collection=\"my_collection\",\n host=\"localhost\",\n port=6333,\n api_key=\"your-api-key\", # Optional\n embedding_dim=384, # Optional\n hnsw_config={\"m\": 16, \"ef_construct\": 100}\n)\n```\n\n### Weaviate (Production-Ready with Docker)\n\n**Docker Setup (Recommended):**\n```python\nstore = VectorStoreFactory.create(\n backend=\"weaviate\",\n collection=\"MyCollection\",\n url=\"http://localhost:8080\",\n use_docker=True,\n docker_compose_file=\"docker-compose-weaviate.yml\"\n)\n```\n\n**Manual Configuration:**\n```python\nstore = VectorStoreFactory.create(\n backend=\"weaviate\",\n collection=\"MyCollection\",\n url=\"http://localhost:8080\",\n timeout=30,\n skip_init_checks=False, # Set to True if gRPC issues\n api_key=\"your-api-key\" # Optional\n)\n```\n\n> \ud83d\udcd6 **See [Weaviate Configuration Guide](docs/WEAVIATE_CONFIGURATION.md) for detailed setup instructions**\n\n### Chroma (Multiple Modes)\n\n**Memory Mode (Recommended for Testing):**\n```python\nstore = VectorStoreFactory.create(\n backend=\"chroma\",\n collection=\"my_collection\",\n mode=\"memory\" # Fast, isolated, no persistence\n)\n```\n\n**Filesystem Mode:**\n```python\nstore = VectorStoreFactory.create(\n backend=\"chroma\",\n collection=\"my_collection\",\n mode=\"filesystem\",\n persist_path=\"./chroma_db\"\n)\n```\n\n**Server Mode (Production):**\n```python\nstore = VectorStoreFactory.create(\n backend=\"chroma\",\n collection=\"my_collection\",\n mode=\"server\",\n host=\"localhost\",\n port=8000\n)\n```\n\n> \ud83d\udcd6 **See [Chroma Configuration Guide](docs/CHROMA_CONFIGURATION.md) for detailed setup instructions**\n\n### PostgreSQL pgvector\n```python\nstore = VectorStoreFactory.create(\n backend=\"pgvector\",\n collection=\"my_table\",\n connection_string=\"postgresql://user:pass@localhost:5432/dbname\"\n)\n```\n\n### Milvus (Multiple Modes)\n\n**Lite Mode (Recommended for Testing):**\n```python\nstore = VectorStoreFactory.create(\n backend=\"milvus\",\n collection=\"my_collection\",\n mode=\"lite\",\n connection_uri=\"./milvus.db\" # File-based storage\n)\n```\n\n**Server Mode (Production):**\n```python\nstore = VectorStoreFactory.create(\n backend=\"milvus\",\n collection=\"my_collection\",\n mode=\"server\",\n host=\"localhost\",\n port=19530\n)\n```\n\n> \ud83d\udcd6 **See [Milvus Configuration Guide](docs/MILVUS_CONFIGURATION.md) for detailed setup instructions**\n\n### Pinecone\n```python\nstore = VectorStoreFactory.create(\n backend=\"pinecone\",\n collection=\"my-index\",\n api_key=\"your-api-key\",\n environment=\"us-west1-gcp-free\"\n)\n```\n\n## \ud83d\udcca Performance Optimizations\n\n### Memory Usage\n- **Lazy initialization**: Embedders and connections are initialized on first use\n- **Singleton pattern**: Same configuration reuses existing instances\n- **Batch processing**: Efficient bulk operations\n\n### Performance Tuning\n```python\n# Optimize for specific use cases\nstore = VectorStoreFactory.create(\n backend=\"qdrant\",\n collection=\"optimized\",\n embedding_model=\"sentence-transformers/all-MiniLM-L6-v2\", # 384-dim, fast\n hnsw_config={\"m\": 32, \"ef_construct\": 200} # Better search quality\n)\n```\n\n## \ud83e\uddea Testing\n\n```bash\n# Run all tests\npytest\n\n# Run specific backend tests\npytest tests/test_qdrant.py -v\n\n# Run with coverage\npytest --cov=vdbmanager tests/\n```\n\n## \ud83d\udcc8 Migration Guide\n\n### From v1.x to v2.x\n\n#### Simple Migration\n```python\n# Old code (v1.x)\nfrom vdbmanager import QdrantHaystackStore\n\nstore = QdrantHaystackStore(\n collection=\"my_docs\",\n host=\"localhost\",\n port=6333\n)\n\n# New code (v2.x) - fully compatible\nfrom vdbmanager import QdrantHaystackStore # Still works!\n\n# Or use new API\nfrom vdbmanager import VectorStoreFactory\n\nstore = VectorStoreFactory.create(\n backend=\"qdrant\",\n collection=\"my_docs\",\n host=\"localhost\",\n port=6333\n)\n```\n\n#### Advanced Migration\n```python\n# Old code\nfrom vdbmanager import ThothVectorStore\n\n# New code - same interface, better internals\nfrom vdbmanager import ThothVectorStore # Still works with warnings\n\n# Recommended new approach\nfrom vdbmanager import QdrantAdapter\n\nstore = QdrantAdapter(\n collection=\"my_docs\",\n host=\"localhost\",\n port=6333\n)\n```\n\n## \ud83d\udd0d API Reference\n\n### Core Classes\n\n#### VectorStoreFactory\n```python\n# Create store\nstore = VectorStoreFactory.create(backend, collection, **kwargs)\n\n# From config\nconfig = {\"backend\": \"qdrant\", \"params\": {...}}\nstore = VectorStoreFactory.from_config(config)\n\n# List backends\nbackends = VectorStoreFactory.list_backends()\n```\n\n#### Document Types\n- `ColumnNameDocument`: Column metadata\n- `SqlDocument`: SQL examples\n- `HintDocument`: General hints\n\n### Methods\n- `add_column_description(doc)`: Add column metadata\n- `add_sql(doc)`: Add SQL example\n- `add_hint(doc)`: Add hint\n- `search_similar(query, doc_type, top_k=5, score_threshold=0.7)`: Semantic search\n- `get_document(doc_id)`: Retrieve by ID\n- `bulk_add_documents(docs)`: Batch insert\n- `get_collection_info()`: Get stats\n\n## \ud83d\udc1b Troubleshooting\n\n### Common Issues\n\n#### Connection Errors\n```python\n# Check service availability\nimport requests\nrequests.get(\"http://localhost:6333\") # Qdrant\n```\n\n#### Memory Issues\n```python\n# Use smaller embedding model\nstore = VectorStoreFactory.create(\n backend=\"qdrant\",\n collection=\"my_collection\",\n embedding_model=\"sentence-transformers/all-MiniLM-L6-v2\" # 384-dim\n)\n```\n\n#### Performance Issues\n```python\n# Tune HNSW parameters\nstore = VectorStoreFactory.create(\n backend=\"qdrant\",\n collection=\"my_collection\",\n hnsw_config={\"m\": 16, \"ef_construct\": 100}\n)\n```\n\n## \ud83e\udd1d Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Add tests for new functionality\n4. Ensure all tests pass\n5. Submit a pull request\n\n## \ud83d\udcc4 License\n\nMIT License - see LICENSE file for details.\n\n## Directory structure\nvdbmanager/\n\u251c\u2500\u2500 core/ # Base interfaces and document types\n\u2502 \u251c\u2500\u2500 base.py # Core document classes and interfaces\n\u2502 \u2514\u2500\u2500 __init__.py\n\u251c\u2500\u2500 adapters/ # Backend-specific implementations\n\u2502 \u251c\u2500\u2500 haystack_adapter.py # Base Haystack adapter\n\u2502 \u251c\u2500\u2500 qdrant_adapter.py # Qdrant implementation\n\u2502 \u251c\u2500\u2500 weaviate_adapter.py # Weaviate implementation\n\u2502 \u251c\u2500\u2500 chroma_adapter.py # Chroma implementation\n\u2502 \u251c\u2500\u2500 pgvector_adapter.py # PostgreSQL pgvector\n\u2502 \u251c\u2500\u2500 milvus_adapter.py # Milvus implementation\n\u2502 \u2514\u2500\u2500 pinecone_adapter.py # Pinecone implementation\n\u251c\u2500\u2500 factory.py # Unified creation interface\n\u251c\u2500\u2500 compat/ # Legacy compatibility layer\n\u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u2514\u2500\u2500 thoth_vector_store.py\n\u2514\u2500\u2500 __init__.py # Public API exports\n\n\n## NewAPI (reccomended)\nfrom vdbmanager import VectorStoreFactory, ColumnNameDocument\n\n### Create any backend\nstore = VectorStoreFactory.create(\n backend=\"qdrant\",\n collection=\"my_docs\",\n host=\"localhost\",\n port=6333\n)\n\n### Use optimized methods\ndoc_id = store.add_column_description(column_doc)\nresults = store.search_similar(\"user email\", \"column_name\")\n\n\n## Old API (Fully compatible)\nfrom vdbmanager import ThothVectorStore # Works with warnings\n\n### Existing code continues to work\nstore = ThothVectorStore(\n backend=\"qdrant\",\n collection=\"my_docs\",\n host=\"localhost\",\n port=6333\n)\n",
"bugtrack_url": null,
"license": null,
"summary": "A vector database management module for ThothAI Project",
"version": "0.2.12",
"project_urls": {
"Bug Tracker": "https://github.com/mptyl/thoth_vdb2/issues",
"Documentation": "https://github.com/mptyl/thoth_vdb2#readme",
"Homepage": "https://github.com/mptyl/thoth_vdb2",
"Source Code": "https://github.com/mptyl/thoth_vdb2"
},
"split_keywords": [
"vector-database",
" ai",
" machine-learning",
" embeddings",
" similarity-search"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "4b44fe03d991321e09ec31231518ad022cbb4eb09aff7ec03ff434b831a5f569",
"md5": "6b2a8208c70fa4a83d738a031a3263ca",
"sha256": "9f86c6f1b96a9c165a33ee75ca56694047d5f13f235e313efba79adf0d24ac1a"
},
"downloads": -1,
"filename": "thoth_vdbmanager-0.2.12-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6b2a8208c70fa4a83d738a031a3263ca",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 38908,
"upload_time": "2025-07-26T11:35:41",
"upload_time_iso_8601": "2025-07-26T11:35:41.365211Z",
"url": "https://files.pythonhosted.org/packages/4b/44/fe03d991321e09ec31231518ad022cbb4eb09aff7ec03ff434b831a5f569/thoth_vdbmanager-0.2.12-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d029a92c0b312644fb16c75d8ea74d8400748914cd809c5ac051a2e081c6099c",
"md5": "f49a020ba04fc5d72ae66045967e3b45",
"sha256": "aededd7a6bcafd89fda86ca5444660aa3813b52d005acd90be13fbd8e9691044"
},
"downloads": -1,
"filename": "thoth_vdbmanager-0.2.12.tar.gz",
"has_sig": false,
"md5_digest": "f49a020ba04fc5d72ae66045967e3b45",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 32662,
"upload_time": "2025-07-26T11:35:47",
"upload_time_iso_8601": "2025-07-26T11:35:47.787763Z",
"url": "https://files.pythonhosted.org/packages/d0/29/a92c0b312644fb16c75d8ea74d8400748914cd809c5ac051a2e081c6099c/thoth_vdbmanager-0.2.12.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-26 11:35:47",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "mptyl",
"github_project": "thoth_vdb2",
"github_not_found": true,
"lcname": "thoth-vdbmanager"
}