Exemplo n.º 1
0
    def render(self, **kwargs: dict) -> nbformat.NotebookNode:
        """
        Render a notebook dict from an expectation suite.
        """
        # noinspection PyTypeChecker
        suite: ExpectationSuite = kwargs.get("suite")
        batch_request: Optional[Union[str,
                                      Dict[str,
                                           Any]]] = kwargs.get("batch_request")

        if not isinstance(suite, ExpectationSuite):
            raise RuntimeWarning("render must be given an ExpectationSuite.")

        self._notebook = nbformat.v4.new_notebook()

        suite_name: str = suite.expectation_suite_name

        if (batch_request and isinstance(batch_request, dict)
                and BatchRequest(**batch_request)):
            batch_request = standardize_batch_request_display_ordering(
                batch_request=batch_request)
        else:
            batch_request = None

        self.add_header(suite_name=suite_name, batch_request=batch_request)
        self.add_authoring_intro(batch_request=batch_request)
        self.add_expectation_cells_from_suite(expectations=suite.expectations,
                                              batch_request=batch_request)
        self.add_footer(batch_request=batch_request)

        return self._notebook
    def __init__(
        self,
        context: DataContext,
        expectation_suite_name: str,
        profiler_name: str,
        batch_request: Union[str, Dict[str, Union[str, int, Dict[str, Any]]]],
    ) -> None:
        super().__init__(context=context)

        if batch_request is None:
            batch_request = {}

        deep_filter_properties_iterable(
            properties=batch_request,
            inplace=True,
        )
        batch_request = standardize_batch_request_display_ordering(
            batch_request=batch_request
        )

        self._batch_request = batch_request
        self._validator = context.get_validator(
            batch_request=BatchRequest(**batch_request),
            expectation_suite_name=expectation_suite_name,
        )

        self._profiler_name = profiler_name
        self._expectation_suite_name = self._validator.expectation_suite_name
    def anonymize(self, obj: Optional[object] = None, **kwargs) -> Any:
        anonymized_batch_request_properties_dict: Optional[Dict[
            str, List[str]]] = None

        # noinspection PyBroadException
        try:
            from great_expectations.core.batch import (
                BatchRequest,
                get_batch_request_from_acceptable_arguments,
                standardize_batch_request_display_ordering,
            )

            batch_request: BatchRequest = get_batch_request_from_acceptable_arguments(
                **kwargs)
            batch_request_dict: dict = batch_request.to_json_dict()

            anonymized_batch_request_dict: Optional[Union[
                str, dict]] = self._anonymize_batch_request_properties(
                    source=batch_request_dict)
            anonymized_batch_request_dict = standardize_batch_request_display_ordering(
                batch_request=anonymized_batch_request_dict)
            deep_filter_properties_iterable(
                properties=anonymized_batch_request_dict,
                clean_falsy=True,
                inplace=True,
            )

            anonymized_batch_request_required_top_level_properties: dict = {}
            batch_request_optional_top_level_keys: List[str] = []
            batch_spec_passthrough_keys: List[str] = []
            data_connector_query_keys: List[str] = []
            runtime_parameters_keys: List[str] = []

            anonymized_batch_request_properties_dict = {
                "anonymized_batch_request_required_top_level_properties":
                (anonymized_batch_request_required_top_level_properties),
                "batch_request_optional_top_level_keys":
                batch_request_optional_top_level_keys,
                "batch_spec_passthrough_keys":
                batch_spec_passthrough_keys,
                "runtime_parameters_keys":
                runtime_parameters_keys,
                "data_connector_query_keys":
                data_connector_query_keys,
            }
            self._build_anonymized_batch_request(
                destination=anonymized_batch_request_properties_dict,
                source=anonymized_batch_request_dict,
            )
            deep_filter_properties_iterable(
                properties=anonymized_batch_request_properties_dict,
                clean_falsy=True,
                inplace=True,
            )
            batch_request_optional_top_level_keys.sort()
            batch_spec_passthrough_keys.sort()
            data_connector_query_keys.sort()
            runtime_parameters_keys.sort()

        except Exception:
            logger.debug(
                "anonymize_batch_request: Unable to create anonymized_batch_request payload field"
            )

        return anonymized_batch_request_properties_dict