{"id":44653,"library":"csrd-repository","title":"csrd-repository","description":"Base repository and database adapter abstractions for CSRD API projects. Current version 0.5.28, rapid development with frequent releases.","status":"active","version":"0.5.28","language":"python","source_language":"en","source_url":"https://github.com/csrd-api/fastapi-common","tags":["csrd","repository","database","abstraction"],"install":[{"cmd":"pip install csrd-repository","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Required for SQL database adapter implementations","package":"sqlalchemy","optional":true},{"reason":"Used for data validation and settings management","package":"pydantic","optional":true}],"imports":[{"wrong":"from csrd.repository import BaseRepository","symbol":"BaseRepository","correct":"from csrd import BaseRepository"}],"quickstart":{"code":"from csrd.repository import BaseRepository, RepositoryAdapter\nfrom typing import Any, Dict, List, Optional\n\nclass MyRepository(RepositoryAdapter):\n    async def get(self, id: str) -> Optional[Dict[str, Any]]:\n        return {\"id\": id, \"name\": \"example\"}\n    async def list(self, filters: Optional[Dict[str, Any]] = None) -> List[Dict[str, Any]]:\n        return [{\"id\": \"1\", \"name\": \"example\"}]\n    async def create(self, data: Dict[str, Any]) -> Dict[str, Any]:\n        return data\n    async def update(self, id: str, data: Dict[str, Any]) -> Optional[Dict[str, Any]]:\n        return {\"id\": id, **data}\n    async def delete(self, id: str) -> bool:\n        return True\n\nrepo = MyRepository()\nprint(repo.get(\"test\"))","lang":"python","description":"Minimal implementation of a repository adapter"},"warnings":[{"fix":"Replace `from csrd.repository import BaseAdapter` with `from csrd.repository import RepositoryAdapter` and update class definitions.","message":"In v0.5.0 the adapter base class was renamed from `BaseAdapter` to `RepositoryAdapter`. Code using `BaseAdapter` will break.","severity":"breaking","affected_versions":">=0.5.0"},{"fix":"Use `from sqlalchemy.ext.asyncio import create_async_engine` and pass `engine` to the repository.","message":"The `csrd.repository.adapters.SQLAlchemyRepository` now requires an async engine; synchronous usage is deprecated and will be removed in v0.6.0.","severity":"deprecated","affected_versions":"0.5.x"},{"fix":"Add `await repository.init()` after instantiation, typically inside an async lifespan or on startup event.","message":"When using the built-in `SQLAlchemyRepository`, you must call `await repository.init()` before any CRUD operations. Skipping this will raise `RuntimeError: Repository not initialized`.","severity":"gotcha","affected_versions":">=0.4.0"},{"fix":"Override `get_session` method or use `RepositoryAdapter` directly for custom implementations.","message":"The `BaseRepository` no longer provides a default `session` context manager. Code relying on `self.session` as a property will fail.","severity":"gotcha","affected_versions":">=0.5.20"}],"env_vars":null,"search_vec":"'0.5.28':16 'abstract':9,25 'adapt':8 'api':12 'base':4 'csrd':2,11,22 'csrd-repositori':1 'current':14 'databas':7,24 'develop':18 'frequent':20 'project':13 'rapid':17 'releas':21 'repositori':3,5,23 'version':15","created_at":"2026-06-07T12:51:10.874823+00:00","updated_at":"2026-06-07T12:51:10.874823+00:00","problems":{"verify_error":"Traceback (most recent call last):\n  File \"<string>\", line 1, in <module>\nImportError: cannot import name 'BaseRepository' from 'csrd' (unknown location)"},"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/csrd-api/fastapi-common","github":"https://github.com/csrd-api/fastapi-common","docs":null,"changelog":null,"pypi":null,"npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"import_fail","verified_at":"2026-07-03","last_verified":"2026-07-03","next_check":"2026-07-10","install_tag":null}}