Source code for jsoncrack_for_sphinx.search.search_policy

"""
Search policy configuration for schema files.
"""

from typing import Optional

from ..utils.types import PathSeparator


[docs] class SearchPolicy: """Schema file search policy configuration.""" def __init__( self, include_package_name: bool = False, include_path_to_file: bool = True, path_to_file_separator: PathSeparator = PathSeparator.DOT, path_to_class_separator: PathSeparator = PathSeparator.DOT, custom_patterns: Optional[list] = None, ): """ Configure how schema files are searched. Args: include_package_name: Whether to include package name in search patterns include_path_to_file: Whether to include intermediate path components (e.g., endpoints.catalog) path_to_file_separator: How to separate path components in file names path_to_class_separator: How to separate class/method components custom_patterns: Additional custom patterns to try (optional) Examples: For "perekrestok_api.endpoints.catalog.ProductService.similar": SearchPolicy(False, True, PathSeparator.DOT, PathSeparator.DOT): → "ProductService.similar.schema.json" → "endpoints.catalog.ProductService.similar.schema.json" SearchPolicy(False, False, PathSeparator.DOT, PathSeparator.DOT): → "ProductService.similar.schema.json" (только класс+метод) SearchPolicy(True, True, PathSeparator.SLASH, PathSeparator.DOT): → "perekrestok_api/endpoints/catalog/ProductService.similar.schema.json" SearchPolicy(False, True, PathSeparator.NONE, PathSeparator.NONE): → "ProductServicesimilar.schema.json" """ self.include_package_name = include_package_name self.include_path_to_file = include_path_to_file self.path_to_file_separator = path_to_file_separator self.path_to_class_separator = path_to_class_separator self.custom_patterns = custom_patterns or [] def __repr__(self) -> str: return ( f"SearchPolicy(include_package_name={self.include_package_name}, " f"include_path_to_file={self.include_path_to_file}, " f"path_to_file_separator={self.path_to_file_separator}, " f"path_to_class_separator={self.path_to_class_separator})" )