Module secfsdstools.c_index.searching

company search logic.

Expand source code
"""
company search logic.
"""
from typing import Optional

import pandas as pd

from secfsdstools.a_config.configmgt import ConfigurationManager
from secfsdstools.a_config.configmodel import Configuration
from secfsdstools.c_index.indexdataaccess import ParquetDBIndexingAccessor


class IndexSearch:
    """Provides search methods on the index_report table."""

    def __init__(self, dbaccessor: ParquetDBIndexingAccessor):
        self.dbaccessor = dbaccessor

    @classmethod
    def get_index_search(cls, configuration: Optional[Configuration] = None):
        """
        Creates a IndexSearch instance.
        If no  configuration object is passed, it reads the configuration from
        the config file.
        Args:
            configuration (Configuration, optional, None): configuration object

        Returns:
            IndexSearch: instance of IndexSearch
        """
        if configuration is None:
            configuration = ConfigurationManager.read_config_file()

        accessor: ParquetDBIndexingAccessor = ParquetDBIndexingAccessor(db_dir=configuration.db_dir)
        return IndexSearch(accessor)

    def find_company_by_name(self, name_part: str) -> pd.DataFrame:
        """
        Searches entries by the given name part. Upper/lower case is ignored.

        Args:
            name_part:

        Returns:
            pd.DataFrame: with columns 'cik', 'name'
        """

        return self.dbaccessor.find_company_by_name(name_part=name_part)

Classes

class IndexSearch (dbaccessor: ParquetDBIndexingAccessor)

Provides search methods on the index_report table.

Expand source code
class IndexSearch:
    """Provides search methods on the index_report table."""

    def __init__(self, dbaccessor: ParquetDBIndexingAccessor):
        self.dbaccessor = dbaccessor

    @classmethod
    def get_index_search(cls, configuration: Optional[Configuration] = None):
        """
        Creates a IndexSearch instance.
        If no  configuration object is passed, it reads the configuration from
        the config file.
        Args:
            configuration (Configuration, optional, None): configuration object

        Returns:
            IndexSearch: instance of IndexSearch
        """
        if configuration is None:
            configuration = ConfigurationManager.read_config_file()

        accessor: ParquetDBIndexingAccessor = ParquetDBIndexingAccessor(db_dir=configuration.db_dir)
        return IndexSearch(accessor)

    def find_company_by_name(self, name_part: str) -> pd.DataFrame:
        """
        Searches entries by the given name part. Upper/lower case is ignored.

        Args:
            name_part:

        Returns:
            pd.DataFrame: with columns 'cik', 'name'
        """

        return self.dbaccessor.find_company_by_name(name_part=name_part)

Static methods

Creates a IndexSearch instance. If no configuration object is passed, it reads the configuration from the config file.

Args

configuration : Configuration, optional, None
configuration object

Returns

IndexSearch
instance of IndexSearch
Expand source code
@classmethod
def get_index_search(cls, configuration: Optional[Configuration] = None):
    """
    Creates a IndexSearch instance.
    If no  configuration object is passed, it reads the configuration from
    the config file.
    Args:
        configuration (Configuration, optional, None): configuration object

    Returns:
        IndexSearch: instance of IndexSearch
    """
    if configuration is None:
        configuration = ConfigurationManager.read_config_file()

    accessor: ParquetDBIndexingAccessor = ParquetDBIndexingAccessor(db_dir=configuration.db_dir)
    return IndexSearch(accessor)

Methods

def find_company_by_name(self, name_part: str) ‑> pandas.core.frame.DataFrame

Searches entries by the given name part. Upper/lower case is ignored.

Args

name_part:

Returns

pd.DataFrame
with columns 'cik', 'name'
Expand source code
def find_company_by_name(self, name_part: str) -> pd.DataFrame:
    """
    Searches entries by the given name part. Upper/lower case is ignored.

    Args:
        name_part:

    Returns:
        pd.DataFrame: with columns 'cik', 'name'
    """

    return self.dbaccessor.find_company_by_name(name_part=name_part)