Files
JobSourceAgent/jobsource/sources/__init__.py
2026-06-17 13:59:00 -04:00

39 lines
1.1 KiB
Python

"""Job source provider package.
Public API: JobSource interface + get_job_source() factory.
Heavy provider imports are deferred to get_job_source() so loading this
package does not pull in pandas, jobspy, or apify-client at import time.
"""
from __future__ import annotations
from .base import JobSource
__all__ = ["JobSource", "get_job_source"]
def get_job_source(settings=None) -> JobSource:
"""Return the configured JobSource instance.
Reads job_source from settings (default: get_settings()). Lazy-imports
the chosen module so the unused provider's heavy deps are never loaded.
Raises ValueError for unknown provider names.
"""
if settings is None:
from ..config import get_settings
settings = get_settings()
provider = settings.job_source.lower()
if provider == "jobspy":
from .jobspy_source import JobSpySource
return JobSpySource()
if provider == "apify":
from .apify_source import ApifySource
return ApifySource()
raise ValueError(
f"Unknown job_source {settings.job_source!r}. Valid values: 'jobspy', 'apify'."
)