# Catalogus
A Python library providing classes for name-to-object registry-like support.
## Overview
Catalogus provides a simple and extensible registry system that allows you to:
- Register objects by name
- Retrieve objects by name
- Support lazy loading of objects
- Maintain type safety with generic support
This library was extracted from the Breezy version control system to provide a reusable registry implementation.
## Installation
```bash
pip install catalogus
```
## Quick Start
```python
from catalogus import Registry
# Create a registry
my_registry = Registry()
# Register objects directly
my_registry.register('item1', some_object)
# Register with lazy loading
my_registry.register_lazy('item2', 'my.module', 'MyClass')
# Retrieve objects
obj = my_registry.get('item1')
```
## Features
- **Type-safe**: Full generic type support with TypeVar
- **Lazy loading**: Objects can be loaded on-demand from modules
- **Flexible registration**: Support for direct objects and lazy imports
- **Iterator support**: Iterate over registered items
- **Python 3.9+**: Modern Python support
## Development
Install development dependencies:
```bash
pip install -e .[dev]
```
Run tests:
```bash
pytest
```
Format code:
```bash
ruff format
```
Check code style:
```bash
ruff check
mypy catalogus
```
## License
This project is licensed under the GNU General Public License v2 or later (GPLv2+).
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Raw data
{
"_id": null,
"home_page": null,
"name": "catalogus",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": "Breezy Developers <breezy-core@googlegroups.com>",
"keywords": "registry, plugin, extensibility",
"author": null,
"author_email": "Breezy Developers <breezy-core@googlegroups.com>",
"download_url": "https://files.pythonhosted.org/packages/a8/3e/8c9e87e4fc3c6c987a7f663730994fca8bfd8b61b821e401507384ee41f0/catalogus-0.1.0.tar.gz",
"platform": null,
"description": "# Catalogus\n\nA Python library providing classes for name-to-object registry-like support.\n\n## Overview\n\nCatalogus provides a simple and extensible registry system that allows you to:\n- Register objects by name\n- Retrieve objects by name\n- Support lazy loading of objects\n- Maintain type safety with generic support\n\nThis library was extracted from the Breezy version control system to provide a reusable registry implementation.\n\n## Installation\n\n```bash\npip install catalogus\n```\n\n## Quick Start\n\n```python\nfrom catalogus import Registry\n\n# Create a registry\nmy_registry = Registry()\n\n# Register objects directly\nmy_registry.register('item1', some_object)\n\n# Register with lazy loading\nmy_registry.register_lazy('item2', 'my.module', 'MyClass')\n\n# Retrieve objects\nobj = my_registry.get('item1')\n```\n\n## Features\n\n- **Type-safe**: Full generic type support with TypeVar\n- **Lazy loading**: Objects can be loaded on-demand from modules\n- **Flexible registration**: Support for direct objects and lazy imports\n- **Iterator support**: Iterate over registered items\n- **Python 3.9+**: Modern Python support\n\n## Development\n\nInstall development dependencies:\n\n```bash\npip install -e .[dev]\n```\n\nRun tests:\n\n```bash\npytest\n```\n\nFormat code:\n\n```bash\nruff format\n```\n\nCheck code style:\n\n```bash\nruff check\nmypy catalogus\n```\n\n## License\n\nThis project is licensed under the GNU General Public License v2 or later (GPLv2+).\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n",
"bugtrack_url": null,
"license": "GPL-2.0-or-later",
"summary": "Classes to provide name-to-object registry-like support",
"version": "0.1.0",
"project_urls": {
"Bug Tracker": "https://github.com/breezy-team/catalogus/issues",
"Homepage": "https://github.com/breezy-team/catalogus",
"Source Code": "https://github.com/breezy-team/catalogus"
},
"split_keywords": [
"registry",
" plugin",
" extensibility"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "a83e8c9e87e4fc3c6c987a7f663730994fca8bfd8b61b821e401507384ee41f0",
"md5": "2493380bc899751e80f015401dc6f91a",
"sha256": "bea432f5611e29b5e1988ac9242cfb679c2ca0cb5f8591915eabc39d49c629c3"
},
"downloads": -1,
"filename": "catalogus-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "2493380bc899751e80f015401dc6f91a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 19893,
"upload_time": "2025-09-02T21:54:51",
"upload_time_iso_8601": "2025-09-02T21:54:51.985794Z",
"url": "https://files.pythonhosted.org/packages/a8/3e/8c9e87e4fc3c6c987a7f663730994fca8bfd8b61b821e401507384ee41f0/catalogus-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-02 21:54:51",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "breezy-team",
"github_project": "catalogus",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "catalogus"
}