davidjurgens's picture
Deploy: Potato — Codebook Annotation
aceb1b2 verified
Raw
History Blame Contribute Delete
3.02 kB
"""
Data source implementations.
This module registers all available data source types. Source implementations
are lazy-loaded to avoid importing optional dependencies.
To add a new source type:
1. Create a new module (e.g., my_source.py) with a DataSource subclass
2. Import and register it in this file
3. Add any required dependencies to the requirements.txt (as optional)
"""
import logging
from potato.data_sources.base import SourceType
from potato.data_sources.manager import register_source_type
logger = logging.getLogger(__name__)
def _register_all_sources() -> None:
"""Register all available source implementations."""
# Local file source - always available
try:
from potato.data_sources.sources.local_source import LocalFileSource
register_source_type(SourceType.FILE, LocalFileSource)
except ImportError as e:
logger.debug(f"LocalFileSource not available: {e}")
# URL source - always available (uses standard library)
try:
from potato.data_sources.sources.url_source import URLSource
register_source_type(SourceType.URL, URLSource)
except ImportError as e:
logger.debug(f"URLSource not available: {e}")
# Google Drive source - requires google-api-python-client
try:
from potato.data_sources.sources.gdrive_source import GoogleDriveSource
register_source_type(SourceType.GOOGLE_DRIVE, GoogleDriveSource)
except ImportError as e:
logger.debug(f"GoogleDriveSource not available: {e}")
# Dropbox source - requires dropbox
try:
from potato.data_sources.sources.dropbox_source import DropboxSource
register_source_type(SourceType.DROPBOX, DropboxSource)
except ImportError as e:
logger.debug(f"DropboxSource not available: {e}")
# S3 source - requires boto3
try:
from potato.data_sources.sources.s3_source import S3Source
register_source_type(SourceType.S3, S3Source)
except ImportError as e:
logger.debug(f"S3Source not available: {e}")
# HuggingFace source - requires datasets
try:
from potato.data_sources.sources.huggingface_source import HuggingFaceSource
register_source_type(SourceType.HUGGINGFACE, HuggingFaceSource)
except ImportError as e:
logger.debug(f"HuggingFaceSource not available: {e}")
# Google Sheets source - requires google-api-python-client
try:
from potato.data_sources.sources.gsheets_source import GoogleSheetsSource
register_source_type(SourceType.GOOGLE_SHEETS, GoogleSheetsSource)
except ImportError as e:
logger.debug(f"GoogleSheetsSource not available: {e}")
# Database source - requires sqlalchemy
try:
from potato.data_sources.sources.database_source import DatabaseSource
register_source_type(SourceType.DATABASE, DatabaseSource)
except ImportError as e:
logger.debug(f"DatabaseSource not available: {e}")
# Register sources when module is imported
_register_all_sources()