SYMBOL INDEX (1056 symbols across 119 files) FILE: app/backend/app.py function index (line 115) | async def index(): function redirect (line 122) | async def redirect(): function favicon (line 127) | async def favicon(): function assets (line 132) | async def assets(path): function content_file (line 138) | async def content_file(path: str, auth_claims: dict[str, Any]): class JSONEncoder (line 183) | class JSONEncoder(json.JSONEncoder): method default (line 184) | def default(self, o): function format_as_ndjson (line 197) | async def format_as_ndjson(r: AsyncGenerator[dict, None]) -> AsyncGenera... function chat (line 208) | async def chat(auth_claims: dict[str, Any]): function chat_stream (line 237) | async def chat_stream(auth_claims: dict[str, Any]): function auth_setup (line 269) | def auth_setup(): function config (line 275) | def config(): function speech (line 305) | async def speech(): function upload (line 350) | async def upload(auth_claims: dict[str, Any]): function delete_uploaded (line 370) | async def delete_uploaded(auth_claims: dict[str, Any]): function list_uploaded (line 383) | async def list_uploaded(auth_claims: dict[str, Any]): function setup_clients (line 394) | async def setup_clients(): function close_clients (line 739) | async def close_clients(): function create_app (line 747) | def create_app(): FILE: app/backend/approaches/approach.py class ActivityDetail (line 54) | class ActivityDetail: class Document (line 63) | class Document: method serialize_for_results (line 78) | def serialize_for_results(self) -> dict[str, Any]: class WebResult (line 109) | class WebResult: method serialize_for_results (line 115) | def serialize_for_results(self) -> dict[str, Any]: class SharePointResult (line 127) | class SharePointResult: method serialize_for_results (line 135) | def serialize_for_results(self) -> dict[str, Any]: class RewriteQueryResult (line 149) | class RewriteQueryResult: class ThoughtStep (line 157) | class ThoughtStep: method update_token_usage (line 162) | def update_token_usage(self, usage: CompletionUsage) -> None: class AgenticRetrievalResults (line 168) | class AgenticRetrievalResults: class DataPoints (line 182) | class DataPoints: class ExtraInfo (line 191) | class ExtraInfo: class TokenUsageProps (line 199) | class TokenUsageProps: method from_completion_usage (line 206) | def from_completion_usage(cls, usage: CompletionUsage) -> "TokenUsageP... class GPTReasoningModelSupport (line 220) | class GPTReasoningModelSupport: class Approach (line 225) | class Approach(ABC): method __init__ (line 241) | def __init__( method build_filter (line 285) | def build_filter(self, overrides: dict[str, Any]) -> Optional[str]: method search (line 295) | async def search( method extract_rewritten_query (line 366) | def extract_rewritten_query( method rewrite_query (line 394) | async def rewrite_query( method run_agentic_retrieval (line 438) | async def run_agentic_retrieval( method replace_all_ref_ids (line 692) | def replace_all_ref_ids( method get_sources_content (line 721) | async def get_sources_content( method get_citation (line 831) | def get_citation(self, sourcepage: Optional[str]): method get_image_citation (line 834) | def get_image_citation(self, sourcepage: Optional[str], image_url: str): method download_blob_as_base64 (line 839) | async def download_blob_as_base64(self, blob_url: str, user_oid: Optio... method compute_text_embedding (line 880) | async def compute_text_embedding(self, q: str): method compute_multimodal_embedding (line 904) | async def compute_multimodal_embedding(self, q: str): method get_system_prompt_variables (line 910) | def get_system_prompt_variables(self, override_prompt: Optional[str]) ... method get_response_token_limit (line 919) | def get_response_token_limit(self, model: str, default_limit: int) -> ... method get_lowest_reasoning_effort (line 925) | def get_lowest_reasoning_effort(self, model: str) -> ChatCompletionRea... method create_chat_completion (line 935) | def create_chat_completion( method format_thought_step_for_chatcompletion (line 984) | def format_thought_step_for_chatcompletion( method run (line 1006) | async def run( method run_stream (line 1014) | async def run_stream( FILE: app/backend/approaches/chatreadretrieveread.py class ChatReadRetrieveReadApproach (line 28) | class ChatReadRetrieveReadApproach(Approach): method __init__ (line 37) | def __init__( method extract_followup_questions (line 101) | def extract_followup_questions(self, content: Optional[str]): method get_search_query (line 106) | def get_search_query(self, chat_completion: ChatCompletion, default_qu... method run_without_streaming (line 113) | async def run_without_streaming( method run_with_streaming (line 146) | async def run_with_streaming( method run (line 232) | async def run( method run_stream (line 242) | async def run_stream( method run_until_final_call (line 252) | async def run_until_final_call( method run_search_approach (line 338) | async def run_search_approach( method run_agentic_retrieval_approach (line 451) | async def run_agentic_retrieval_approach( method _select_knowledgebase_client (line 509) | def _select_knowledgebase_client( FILE: app/backend/approaches/promptmanager.py class PromptManager (line 14) | class PromptManager: method __init__ (line 19) | def __init__(self): method build_system_prompt (line 27) | def build_system_prompt( method build_user_prompt (line 42) | def build_user_prompt( method build_conversation (line 66) | def build_conversation( method load_tools (line 102) | def load_tools(self, path: str) -> list[ChatCompletionToolParam]: FILE: app/backend/chat_history/cosmosdb.py function post_chat_history (line 24) | async def post_chat_history(auth_claims: dict[str, Any]): function get_chat_history_sessions (line 81) | async def get_chat_history_sessions(auth_claims: dict[str, Any]): function get_chat_history_session (line 134) | async def get_chat_history_session(auth_claims: dict[str, Any], session_... function delete_chat_history_session (line 174) | async def delete_chat_history_session(auth_claims: dict[str, Any], sessi... function setup_clients (line 206) | async def setup_clients(): function close_clients (line 234) | async def close_clients(): FILE: app/backend/core/authentication.py class AuthError (line 25) | class AuthError(Exception): method __init__ (line 26) | def __init__(self, error, status_code): method __str__ (line 30) | def __str__(self) -> str: class AuthenticationHelper (line 34) | class AuthenticationHelper: method __init__ (line 37) | def __init__( method get_auth_setup_for_client (line 77) | def get_auth_setup_for_client(self) -> dict[str, Any]: method get_token_auth_header (line 114) | def get_token_auth_header(headers: dict) -> str: method get_auth_claims_if_enabled (line 138) | async def get_auth_claims_if_enabled(self, headers: dict) -> dict[str,... method check_path_auth (line 176) | async def check_path_auth(self, path: str, auth_claims: dict[str, Any]... method create_pem_format (line 205) | async def create_pem_format(self, jwks, token): method validate_access_token (line 224) | async def validate_access_token(self, token: str): FILE: app/backend/core/sessionhelper.py function create_session_id (line 5) | def create_session_id( FILE: app/backend/custom_uvicorn_worker.py class CustomUvicornWorker (line 44) | class CustomUvicornWorker(UvicornWorker): FILE: app/backend/decorators.py function authenticated_path (line 13) | def authenticated_path(route_fn: Callable[[str, dict[str, Any]], Any]): function authenticated (line 44) | def authenticated(route_fn: _C) -> _C: FILE: app/backend/error.py function error_dict (line 15) | def error_dict(error: Exception) -> dict: function error_response (line 23) | def error_response(error: Exception, route: str, status_code: int = 500): FILE: app/backend/load_azd_env.py function load_azd_env (line 11) | def load_azd_env(): FILE: app/backend/prepdocs.py function check_search_service_connectivity (line 37) | async def check_search_service_connectivity(search_service: str) -> bool: function setup_list_file_strategy (line 50) | def setup_list_file_strategy( function setup_file_processors (line 62) | def setup_file_processors( function main (line 102) | async def main(strategy: Strategy, setup_index: bool = True): FILE: app/backend/prepdocslib/blobmanager.py class BlobProperties (line 23) | class BlobProperties(TypedDict, total=False): class BaseBlobManager (line 29) | class BaseBlobManager: method sourcepage_from_file_page (line 35) | def sourcepage_from_file_page(cls, filename, page=0) -> str: method blob_name_from_file_name (line 42) | def blob_name_from_file_name(cls, filename) -> str: method add_image_citation (line 46) | def add_image_citation( method upload_document_image (line 93) | async def upload_document_image( method download_blob (line 103) | async def download_blob( class AdlsBlobManager (line 123) | class AdlsBlobManager(BaseBlobManager): method __init__ (line 130) | def __init__(self, endpoint: str, container: str, credential: AsyncTok... method close_clients (line 148) | async def close_clients(self): method _ensure_directory (line 151) | async def _ensure_directory(self, directory_path: str, user_oid: str) ... method upload_blob (line 173) | async def upload_blob(self, file: File | IO, filename: str, user_oid: ... method _get_image_directory_path (line 208) | def _get_image_directory_path(self, document_filename: str, user_oid: ... method upload_document_image (line 224) | async def upload_document_image( method download_blob (line 258) | async def download_blob( method remove_blob (line 316) | async def remove_blob(self, filename: str, user_oid: str) -> None: method list_blobs (line 349) | async def list_blobs(self, user_oid: str) -> list[str]: class BlobManager (line 389) | class BlobManager(BaseBlobManager): method __init__ (line 394) | def __init__( method close_clients (line 415) | async def close_clients(self): method get_managedidentity_connectionstring (line 418) | def get_managedidentity_connectionstring(self): method upload_blob (line 423) | async def upload_blob(self, file: File) -> str: method upload_document_image (line 441) | async def upload_document_image( method download_blob (line 466) | async def download_blob( method remove_blob (line 526) | async def remove_blob(self, path: Optional[str] = None): FILE: app/backend/prepdocslib/cloudingestionstrategy.py class SkillConfig (line 42) | class SkillConfig: class CloudIngestionStrategy (line 51) | class CloudIngestionStrategy(Strategy): # pragma: no cover method __init__ (line 54) | def __init__( method _build_skillset (line 117) | def _build_skillset(self) -> SearchIndexerSkillset: method setup (line 287) | async def setup(self) -> None: method run (line 362) | async def run(self) -> None: FILE: app/backend/prepdocslib/csvparser.py class CsvParser (line 9) | class CsvParser(Parser): method parse (line 14) | async def parse(self, content: IO) -> AsyncGenerator[Page, None]: FILE: app/backend/prepdocslib/embeddings.py class EmbeddingBatch (line 20) | class EmbeddingBatch: method __init__ (line 23) | def __init__(self, texts: list[str], token_length: int): class ExtraArgs (line 28) | class ExtraArgs(TypedDict, total=False): class OpenAIEmbeddings (line 32) | class OpenAIEmbeddings(ABC): method __init__ (line 46) | def __init__( method _api_model (line 64) | def _api_model(self) -> str: method before_retry_sleep (line 67) | def before_retry_sleep(self, retry_state): method calculate_token_length (line 70) | def calculate_token_length(self, text: str): method split_text_into_batches (line 74) | def split_text_into_batches(self, texts: list[str]) -> list[EmbeddingB... method create_embedding_batch (line 105) | async def create_embedding_batch(self, texts: list[str], dimensions_ar... method create_embedding_single (line 128) | async def create_embedding_single(self, text: str, dimensions_args: Ex... method create_embeddings (line 143) | async def create_embeddings(self, texts: list[str]) -> list[list[float]]: class ImageEmbeddings (line 157) | class ImageEmbeddings: method __init__ (line 163) | def __init__(self, endpoint: str, token_provider: Callable[[], Awaitab... method create_embedding_for_image (line 167) | async def create_embedding_for_image(self, image_bytes: bytes) -> list... method create_embedding_for_text (line 185) | async def create_embedding_for_text(self, q: str): method before_retry_sleep (line 200) | def before_retry_sleep(self, retry_state): FILE: app/backend/prepdocslib/figureprocessor.py class MediaDescriptionStrategy (line 22) | class MediaDescriptionStrategy(Enum): class FigureProcessor (line 30) | class FigureProcessor: method __init__ (line 33) | def __init__( method get_media_describer (line 52) | async def get_media_describer(self) -> MediaDescriber | None: method mark_content_understanding_ready (line 84) | def mark_content_understanding_ready(self) -> None: method describe (line 89) | async def describe(self, image_bytes: bytes) -> str | None: function build_figure_markup (line 101) | def build_figure_markup(image: "ImageOnPage", description: Optional[str]... function process_page_image (line 113) | async def process_page_image( FILE: app/backend/prepdocslib/fileprocessor.py class FileProcessor (line 8) | class FileProcessor: FILE: app/backend/prepdocslib/filestrategy.py function parse_file (line 21) | async def parse_file( class FileStrategy (line 53) | class FileStrategy(Strategy): method __init__ (line 58) | def __init__( method setup_search_manager (line 92) | def setup_search_manager(self): method setup (line 106) | async def setup(self): method run (line 119) | async def run(self): class UploadUserFileStrategy (line 149) | class UploadUserFileStrategy: method __init__ (line 154) | def __init__( method add_file (line 183) | async def add_file(self, file: File, user_oid: str): method remove_file (line 196) | async def remove_file(self, filename: str, oid: str): FILE: app/backend/prepdocslib/htmlparser.py function cleanup_data (line 14) | def cleanup_data(data: str) -> str: class LocalHTMLParser (line 31) | class LocalHTMLParser(Parser): method parse (line 34) | async def parse(self, content: IO) -> AsyncGenerator[Page, None]: FILE: app/backend/prepdocslib/integratedvectorizerstrategy.py class IntegratedVectorizerStrategy (line 32) | class IntegratedVectorizerStrategy(Strategy): # pragma: no cover method __init__ (line 37) | def __init__( method create_embedding_skill (line 70) | async def create_embedding_skill(self, index_name: str) -> SearchIndex... method setup (line 136) | async def setup(self): method run (line 168) | async def run(self): FILE: app/backend/prepdocslib/jsonparser.py class JsonParser (line 9) | class JsonParser(Parser): method parse (line 14) | async def parse(self, content: IO) -> AsyncGenerator[Page, None]: FILE: app/backend/prepdocslib/listfilestrategy.py class File (line 14) | class File: method __init__ (line 20) | def __init__(self, content: IO, acls: Optional[dict[str, list]] = None... method filename (line 25) | def filename(self) -> str: method file_extension (line 52) | def file_extension(self): method filename_to_id (line 55) | def filename_to_id(self): method close (line 63) | def close(self): class ListFileStrategy (line 68) | class ListFileStrategy(ABC): method list (line 73) | async def list(self) -> AsyncGenerator[File, None]: method list_paths (line 77) | async def list_paths(self) -> AsyncGenerator[str, None]: class LocalListFileStrategy (line 82) | class LocalListFileStrategy(ListFileStrategy): method __init__ (line 87) | def __init__(self, path_pattern: str, enable_global_documents: bool = ... method list_paths (line 91) | async def list_paths(self) -> AsyncGenerator[str, None]: method _list_paths (line 95) | async def _list_paths(self, path_pattern: str) -> AsyncGenerator[str, ... method list (line 104) | async def list(self) -> AsyncGenerator[File, None]: method check_md5 (line 110) | def check_md5(self, path: str) -> bool: FILE: app/backend/prepdocslib/mediadescriber.py class MediaDescriber (line 23) | class MediaDescriber(ABC): method describe_image (line 25) | async def describe_image(self, image_bytes) -> str: class ContentUnderstandingDescriber (line 29) | class ContentUnderstandingDescriber(MediaDescriber): method __init__ (line 51) | def __init__(self, endpoint: str, credential: AsyncTokenCredential): method poll_api (line 55) | async def poll_api(self, session, poll_url, headers): method create_analyzer (line 70) | async def create_analyzer(self): method describe_image (line 96) | async def describe_image(self, image_bytes: bytes) -> str: class MultimodalModelDescriber (line 119) | class MultimodalModelDescriber(MediaDescriber): method __init__ (line 120) | def __init__(self, openai_client: AsyncOpenAI, model: str, deployment:... method describe_image (line 125) | async def describe_image(self, image_bytes: bytes) -> str: FILE: app/backend/prepdocslib/page.py class ImageOnPage (line 7) | class ImageOnPage: method to_skill_payload (line 20) | def to_skill_payload( method from_skill_payload (line 40) | def from_skill_payload(cls, data: dict[str, Any]) -> tuple["ImageOnPag... class Page (line 92) | class Page: class Chunk (line 110) | class Chunk: FILE: app/backend/prepdocslib/parser.py class Parser (line 8) | class Parser(ABC): method parse (line 13) | async def parse(self, content: IO) -> AsyncGenerator[Page, None]: FILE: app/backend/prepdocslib/pdfparser.py class LocalPdfParser (line 29) | class LocalPdfParser(Parser): method parse (line 35) | async def parse(self, content: IO) -> AsyncGenerator[Page, None]: class DocumentAnalysisParser (line 47) | class DocumentAnalysisParser(Parser): method __init__ (line 53) | def __init__( method parse (line 65) | async def parse(self, content: IO) -> AsyncGenerator[Page, None]: method figure_to_image (line 197) | async def figure_to_image(doc: pymupdf.Document, figure: DocumentFigur... method table_to_html (line 239) | def table_to_html(table: DocumentTable): method crop_image_from_pdf_page (line 260) | def crop_image_from_pdf_page( FILE: app/backend/prepdocslib/searchmanager.py class Section (line 53) | class Section: method __init__ (line 58) | def __init__(self, chunk: Chunk, content: File, category: Optional[str... class SearchManager (line 65) | class SearchManager: method __init__ (line 71) | def __init__( method create_index (line 96) | async def create_index(self): method create_knowledgebase (line 484) | async def create_knowledgebase(self): method update_content (line 595) | async def update_content(self, sections: list[Section], url: Optional[... method remove_content (line 647) | async def remove_content(self, path: Optional[str] = None, only_oid: O... FILE: app/backend/prepdocslib/servicesetup.py function clean_key_if_exists (line 30) | def clean_key_if_exists(key: Optional[str]) -> Optional[str]: class OpenAIHost (line 37) | class OpenAIHost(str, Enum): function setup_search_info (line 52) | def setup_search_info( function setup_openai_client (line 84) | def setup_openai_client( function setup_image_embeddings_service (line 141) | def setup_image_embeddings_service( function setup_embeddings_service (line 157) | def setup_embeddings_service( function setup_blob_manager (line 182) | def setup_blob_manager( function setup_figure_processor (line 212) | def setup_figure_processor( function build_file_processors (line 246) | def build_file_processors( function select_processor_for_filename (line 317) | def select_processor_for_filename(file_name: str, file_processors: dict[... FILE: app/backend/prepdocslib/strategy.py class SearchInfo (line 13) | class SearchInfo: method __init__ (line 19) | def __init__( method create_search_client (line 41) | def create_search_client(self) -> SearchClient: method create_search_index_client (line 44) | def create_search_index_client(self) -> SearchIndexClient: method create_search_indexer_client (line 47) | def create_search_indexer_client(self) -> SearchIndexerClient: class DocumentAction (line 51) | class DocumentAction(Enum): class Strategy (line 57) | class Strategy(ABC): method setup (line 62) | async def setup(self): method run (line 65) | async def run(self): FILE: app/backend/prepdocslib/textparser.py function cleanup_data (line 9) | def cleanup_data(data: str) -> str: class TextParser (line 24) | class TextParser(Parser): method parse (line 27) | async def parse(self, content: IO) -> AsyncGenerator[Page, None]: FILE: app/backend/prepdocslib/textprocessor.py function combine_text_with_figures (line 14) | def combine_text_with_figures(page: "Page") -> None: function process_text (line 27) | def process_text( FILE: app/backend/prepdocslib/textsplitter.py class TextSplitter (line 15) | class TextSplitter(ABC): method split_pages (line 22) | def split_pages(self, pages: list[Page]) -> Generator[Chunk, None, None]: function _safe_concat (line 88) | def _safe_concat(a: str, b: str) -> str: function _normalize_chunk (line 111) | def _normalize_chunk(text: str, max_chars: int) -> str: class _ChunkBuilder (line 133) | class _ChunkBuilder: method can_fit (line 153) | def can_fit(self, text: str, token_count: int) -> bool: method add (line 161) | def add(self, text: str, token_count: int) -> bool: method force_append (line 168) | def force_append(self, text: str): method flush_into (line 171) | def flush_into(self, out: list[Chunk]): method has_content (line 180) | def has_content(self) -> bool: method append_figure_and_flush (line 183) | def append_figure_and_flush(self, figure_text: str, out: list[Chunk]): class SentenceTextSplitter (line 189) | class SentenceTextSplitter(TextSplitter): method __init__ (line 194) | def __init__(self, max_tokens_per_section: int = 500): method _find_split_pos (line 206) | def _find_split_pos(self, text: str) -> tuple[int, bool]: method split_page_by_max_tokens (line 247) | def split_page_by_max_tokens(self, page_num: int, text: str) -> Genera... method _is_heading_like (line 273) | def _is_heading_like(self, line: str) -> bool: method _should_cross_page_overlap (line 292) | def _should_cross_page_overlap(self, prev: Chunk, nxt: Chunk) -> bool: method _append_overlap (line 311) | def _append_overlap(self, prev_chunk: Chunk, next_chunk: Chunk) -> Chunk: method split_pages (line 380) | def split_pages(self, pages: list[Page]) -> Generator[Chunk, None, None]: class SimpleTextSplitter (line 586) | class SimpleTextSplitter(TextSplitter): method __init__ (line 592) | def __init__(self, max_object_length: int = 1000): method split_pages (line 595) | def split_pages(self, pages: list[Page]) -> Generator[Chunk, None, None]: FILE: app/backend/setup_cloud_ingestion.py function setup_cloud_ingestion_strategy (line 29) | async def setup_cloud_ingestion_strategy( function main (line 148) | async def main(): FILE: app/frontend/src/api/api.ts constant BACKEND_URI (line 1) | const BACKEND_URI = ""; function getHeaders (line 6) | async function getHeaders(idToken: string | undefined): Promise { function chatApi (line 25) | async function chatApi(request: ChatAppRequest, shouldStream: boolean, i... function getSpeechApi (line 39) | async function getSpeechApi(text: string): Promise { function getCitationFilePath (line 63) | function getCitationFilePath(citation: string): string { function uploadFileApi (line 69) | async function uploadFileApi(request: FormData, idToken: string): Promis... function deleteUploadedFileApi (line 84) | async function deleteUploadedFileApi(filename: string, idToken: string):... function listUploadedFilesApi (line 100) | async function listUploadedFilesApi(idToken: string): Promise { function postChatHistoryApi (line 114) | async function postChatHistoryApi(item: any, idToken: string): Promise { FILE: app/frontend/src/components/AnalysisPanel/AgentPlan.tsx type Props (line 102) | interface Props { FILE: app/frontend/src/components/AnalysisPanel/AnalysisPanel.tsx type Props (line 14) | interface Props { FILE: app/frontend/src/components/AnalysisPanel/AnalysisPanelTabs.tsx type AnalysisPanelTabs (line 1) | enum AnalysisPanelTabs { FILE: app/frontend/src/components/AnalysisPanel/ThoughtProcess.tsx type Props (line 14) | interface Props { function truncateImageUrl (line 20) | function truncateImageUrl(val: string) { FILE: app/frontend/src/components/AnalysisPanel/TokenUsageGraph.tsx type TokenUsage (line 4) | interface TokenUsage { type TokenLabelKey (line 11) | type TokenLabelKey = "prompt" | "reasoning" | "output" | "total"; type AdditionalTotal (line 13) | type AdditionalTotal = { type SupplementaryUsage (line 19) | type SupplementaryUsage = { type PercentBase (line 26) | type PercentBase = number | undefined; type TokenUsageSegmentLabels (line 37) | interface TokenUsageSegmentLabels { type TokenUsageStackedBarProps (line 43) | interface TokenUsageStackedBarProps { type TokenUsageValueBarTone (line 87) | type TokenUsageValueBarTone = "primary" | "secondary"; type TokenUsageValueBarGrouping (line 88) | type TokenUsageValueBarGrouping = "grouped" | "standalone"; type TokenUsageValueBarProps (line 90) | interface TokenUsageValueBarProps { type TokenUsageGraphProps (line 117) | interface TokenUsageGraphProps { FILE: app/frontend/src/components/AnalysisPanel/agentPlanUtils.ts type QueryPlanStep (line 1) | type QueryPlanStep = { function getStepLabel (line 39) | function getStepLabel(step: QueryPlanStep): string { FILE: app/frontend/src/components/Answer/Answer.tsx type Props (line 17) | interface Props { FILE: app/frontend/src/components/Answer/AnswerError.tsx type Props (line 6) | interface Props { FILE: app/frontend/src/components/Answer/AnswerParser.tsx type CitationDetail (line 5) | type CitationDetail = { type CitationFragment (line 15) | type CitationFragment = type ActivityStepMeta (line 22) | type ActivityStepMeta = { type HtmlParsedAnswer (line 27) | type HtmlParsedAnswer = { function parseAnswerToHtml (line 206) | function parseAnswerToHtml(answer: ChatAppResponse, isStreaming: boolean... function extractCitationDetails (line 216) | function extractCitationDetails(answer: ChatAppResponse, isStreaming = f... FILE: app/frontend/src/components/Answer/SpeechOutputAzure.tsx type Props (line 7) | interface Props { FILE: app/frontend/src/components/Answer/SpeechOutputBrowser.tsx type Props (line 7) | interface Props { FILE: app/frontend/src/components/ClearChatButton/ClearChatButton.tsx type Props (line 7) | interface Props { FILE: app/frontend/src/components/Example/Example.tsx type Props (line 3) | interface Props { FILE: app/frontend/src/components/Example/ExampleList.tsx type Props (line 6) | interface Props { FILE: app/frontend/src/components/HelpCallout/HelpCallout.tsx type IHelpCalloutProps (line 6) | interface IHelpCalloutProps { FILE: app/frontend/src/components/HistoryButton/HistoryButton.tsx type Props (line 7) | interface Props { FILE: app/frontend/src/components/HistoryItem/HistoryItem.tsx type HistoryData (line 7) | interface HistoryData { type HistoryItemProps (line 13) | interface HistoryItemProps { function HistoryItem (line 19) | function HistoryItem({ item, onSelect, onDelete }: HistoryItemProps) { function DeleteHistoryModal (line 40) | function DeleteHistoryModal({ isOpen, onClose, onConfirm }: { isOpen: bo... FILE: app/frontend/src/components/HistoryPanel/HistoryPanel.tsx constant HISTORY_COUNT_PER_LOAD (line 12) | const HISTORY_COUNT_PER_LOAD = 20; function groupHistory (line 115) | function groupHistory(history: HistoryData[]) { FILE: app/frontend/src/components/HistoryProviders/CosmosDB.ts class CosmosDBProvider (line 4) | class CosmosDBProvider implements IHistoryProvider { method resetContinuationToken (line 10) | resetContinuationToken() { method getNextItems (line 15) | async getNextItems(count: number, idToken?: string): Promise { method deleteItem (line 47) | async deleteItem(id: string, idToken?: string): Promise { FILE: app/frontend/src/components/HistoryProviders/IProvider.ts type HistoryMetaData (line 3) | type HistoryMetaData = { id: string; title: string; timestamp: number }; type Answers (line 4) | type Answers = [user: string, response: ChatAppResponse][]; type HistoryProviderOptions (line 6) | const enum HistoryProviderOptions { type IHistoryProvider (line 12) | interface IHistoryProvider { FILE: app/frontend/src/components/HistoryProviders/IndexedDB.ts class IndexedDBProvider (line 4) | class IndexedDBProvider implements IHistoryProvider { method constructor (line 13) | constructor(dbName: string, storeName: string) { method init (line 20) | private async init() { method resetContinuationToken (line 35) | resetContinuationToken() { method getNextItems (line 40) | async getNextItems(count: number): Promise { method addItem (line 77) | async addItem(id: string, answers: Answers): Promise { method getItem (line 92) | async getItem(id: string): Promise { method deleteItem (line 99) | async deleteItem(id: string): Promise { FILE: app/frontend/src/components/HistoryProviders/None.ts class NoneProvider (line 3) | class NoneProvider implements IHistoryProvider { method resetContinuationToken (line 5) | resetContinuationToken(): void { method getNextItems (line 8) | async getNextItems(count: number): Promise { method addItem (line 11) | async addItem(id: string, answers: Answers): Promise { method getItem (line 14) | async getItem(id: string): Promise { method deleteItem (line 17) | async deleteItem(id: string): Promise { FILE: app/frontend/src/components/MarkdownViewer/MarkdownViewer.tsx type MarkdownViewerProps (line 10) | interface MarkdownViewerProps { FILE: app/frontend/src/components/QuestionInput/QuestionInput.tsx type Props (line 18) | interface Props { FILE: app/frontend/src/components/QuestionInput/SpeechInput.tsx type Props (line 8) | interface Props { FILE: app/frontend/src/components/Settings/Settings.tsx type SettingsProps (line 10) | interface SettingsProps { FILE: app/frontend/src/components/SettingsButton/SettingsButton.tsx type Props (line 7) | interface Props { FILE: app/frontend/src/components/SupportingContent/SupportingContent.tsx type Props (line 8) | interface Props { FILE: app/frontend/src/components/SupportingContent/SupportingContentParser.ts type ParsedSupportingContentItem (line 3) | type ParsedSupportingContentItem = { function parseSupportingContentItem (line 8) | function parseSupportingContentItem(item: string): ParsedSupportingConte... FILE: app/frontend/src/components/TokenClaimsDisplay/TokenClaimsDisplay.tsx type Claim (line 16) | type Claim = { FILE: app/frontend/src/components/UploadFile/UploadFile.tsx type Props (line 11) | interface Props { FILE: app/frontend/src/components/UserChatMessage/UserChatMessage.tsx type Props (line 3) | interface Props { FILE: app/frontend/src/components/VectorSettings/VectorSettings.tsx type Props (line 10) | interface Props { FILE: app/frontend/src/i18n/LanguagePicker.tsx type Props (line 9) | interface Props { FILE: app/frontend/src/pages/NoPage.tsx function Component (line 3) | function Component(): JSX.Element { FILE: app/functions/document_extractor/function_app.py class GlobalSettings (line 34) | class GlobalSettings: function configure_global_settings (line 48) | def configure_global_settings(): function extract_document (line 112) | async def extract_document(req: func.HttpRequest) -> func.HttpResponse: function process_document (line 205) | async def process_document(data: dict[str, Any]) -> dict[str, Any]: function get_file_acls (line 262) | async def get_file_acls(file_path: str) -> tuple[list[str], list[str]]: function build_document_components (line 338) | def build_document_components( FILE: app/functions/figure_processor/function_app.py class GlobalSettings (line 40) | class GlobalSettings: function configure_global_settings (line 49) | def configure_global_settings(): function process_figure_request (line 129) | async def process_figure_request(req: func.HttpRequest) -> func.HttpResp... FILE: app/functions/text_processor/function_app.py class GlobalSettings (line 36) | class GlobalSettings: function configure_global_settings (line 48) | def configure_global_settings(): function process_text_entry (line 119) | async def process_text_entry(req: func.HttpRequest) -> func.HttpResponse: function process_document (line 173) | async def process_document(data: dict[str, Any]) -> list[dict[str, Any]]: FILE: evals/evaluate.py class AnyCitationMetric (line 39) | class AnyCitationMetric(BaseMetric): method evaluator_fn (line 43) | def evaluator_fn(cls, **kwargs): method get_aggregate_stats (line 53) | def get_aggregate_stats(cls, df): class CitationsMatchedMetric (line 61) | class CitationsMatchedMetric(BaseMetric): method evaluator_fn (line 65) | def evaluator_fn(cls, **kwargs): method get_aggregate_stats (line 81) | def get_aggregate_stats(cls, df): function get_openai_config (line 89) | def get_openai_config(): function get_azure_credential (line 98) | def get_azure_credential(): FILE: evals/generate_ground_truth.py function get_azure_credential (line 25) | def get_azure_credential(): function get_search_documents (line 36) | def get_search_documents(azure_credential, num_search_documents=None) ->... function generate_ground_truth_ragas (line 55) | def generate_ground_truth_ragas(num_questions=200, num_search_documents=... FILE: evals/safety_evaluation.py class HarmSeverityLevel (line 26) | class HarmSeverityLevel(Enum): function get_azure_credential (line 38) | def get_azure_credential(): function callback (line 49) | async def callback( function run_simulator (line 91) | async def run_simulator(target_url: str, max_simulations: int): FILE: locustfile.py class ChatUser (line 7) | class ChatUser(HttpUser): method ask_question (line 11) | def ask_question(self): FILE: scripts/adlsgen2setup.py class AdlsGen2Setup (line 21) | class AdlsGen2Setup: method __init__ (line 26) | def __init__( method run (line 59) | async def run(self): method create_service_client (line 113) | def create_service_client(self): method upload_file (line 118) | async def upload_file(self, directory_client: DataLakeDirectoryClient,... method create_or_get_group (line 123) | async def create_or_get_group(self, group_name: str): function main (line 157) | async def main(args: Any): FILE: scripts/auth_common.py function get_application (line 8) | async def get_application(graph_client: GraphServiceClient, client_id: s... function test_authentication_enabled (line 18) | def test_authentication_enabled(): FILE: scripts/auth_init.py function create_application (line 35) | async def create_application(graph_client: GraphServiceClient, request_a... function add_client_secret (line 50) | async def add_client_secret(graph_client: GraphServiceClient, app_id: st... function create_or_update_application_with_secret (line 62) | async def create_or_update_application_with_secret( function update_azd_env (line 89) | def update_azd_env(name, val): function random_app_identifier (line 93) | def random_app_identifier(): function server_app_initial (line 99) | def server_app_initial(identifier: int) -> Application: function server_app_permission_setup (line 106) | def server_app_permission_setup(server_app_id: str) -> Application: function client_app (line 154) | def client_app(server_app_id: str, server_app: Application, identifier: ... function server_app_known_client_application (line 188) | def server_app_known_client_application(client_app_id: str) -> Application: class GrantDefinition (line 197) | class GrantDefinition: method scope_string (line 203) | def scope_string(self) -> str: function grant_application_admin_consent (line 209) | async def grant_application_admin_consent(graph_client: GraphServiceClie... function main (line 279) | async def main(): # pragma: no cover FILE: scripts/auth_update.py function main (line 15) | async def main(): FILE: scripts/copy_prepdocslib.py function copy_tree (line 15) | def copy_tree(src: Path, dest: Path) -> None: function main (line 21) | def main() -> None: FILE: scripts/cosmosdb_migration.py class CosmosDBMigrator (line 38) | class CosmosDBMigrator: method __init__ (line 43) | def __init__(self, cosmos_account, database_name, credential=None): method connect (line 60) | async def connect(self): method migrate (line 79) | async def migrate(self): method close (line 131) | async def close(self): function migrate_cosmosdb_data (line 139) | async def migrate_cosmosdb_data(): FILE: scripts/load_azd_env.py function load_azd_env (line 10) | def load_azd_env(): FILE: scripts/manageacl.py class ManageAcl (line 27) | class ManageAcl: method __init__ (line 32) | def __init__( method run (line 70) | async def run(self): method view_acl (line 94) | async def view_acl(self, search_client: SearchClient): method remove_acl (line 100) | async def remove_acl(self, search_client: SearchClient): method remove_all_acls (line 116) | async def remove_all_acls(self, search_client: SearchClient): method add_acl (line 130) | async def add_acl(self, search_client: SearchClient): method get_documents (line 146) | async def get_documents(self, search_client: SearchClient): method enable_acls (line 160) | async def enable_acls(self, endpoint: str): method update_storage_urls (line 198) | async def update_storage_urls(self, search_client: SearchClient): method enable_global_access (line 228) | async def enable_global_access(self, search_client: SearchClient): function main (line 260) | async def main(args: Any): FILE: scripts/verify_search_index_acls.py function main (line 16) | async def main(): FILE: tests/conftest.py function mock_search (line 78) | async def mock_search(self, *args, **kwargs): function mock_azurehttp_calls (line 85) | def mock_azurehttp_calls(monkeypatch): function mock_speech_success (line 98) | def mock_speech_success(monkeypatch): function mock_speech_cancelled (line 103) | def mock_speech_cancelled(monkeypatch): function mock_speech_failed (line 108) | def mock_speech_failed(monkeypatch): function mock_openai_embedding (line 113) | def mock_openai_embedding(monkeypatch): function mock_openai_chatcompletion (line 139) | def mock_openai_chatcompletion(monkeypatch): function mock_acs_search (line 291) | def mock_acs_search(monkeypatch): function mock_search_knowledgebase (line 301) | def mock_search_knowledgebase(monkeypatch): function mock_acs_search_filter (line 311) | def mock_acs_search_filter(monkeypatch): function mock_blob_container_client (line 321) | def mock_blob_container_client(monkeypatch): function mock_blob_container_client_exists (line 326) | def mock_blob_container_client_exists(monkeypatch): function mock_blob_container_client_does_not_exist (line 334) | def mock_blob_container_client_does_not_exist(monkeypatch): function mock_env (line 503) | def mock_env(monkeypatch, request): function mock_reasoning_env (line 530) | def mock_reasoning_env(monkeypatch, request): function mock_knowledgebase_env (line 557) | def mock_knowledgebase_env(monkeypatch, request): function mock_knowledgebase_auth_env (line 581) | def mock_knowledgebase_auth_env(monkeypatch, request): function mock_vision_env (line 605) | def mock_vision_env(monkeypatch, request): function mock_vision_auth_env (line 624) | def mock_vision_auth_env(monkeypatch, request): function client (line 643) | async def client( function reasoning_client (line 662) | async def reasoning_client( function knowledgebase_client (line 681) | async def knowledgebase_client( function knowledgebase_auth_client (line 701) | async def knowledgebase_auth_client( function client_with_expiring_token (line 726) | async def client_with_expiring_token( function auth_client (line 746) | async def auth_client( function auth_public_documents_client (line 785) | async def auth_public_documents_client( function vision_client (line 829) | async def vision_client( function vision_auth_client (line 856) | async def vision_auth_client( function mock_validate_token_success (line 885) | def mock_validate_token_success(monkeypatch): function mock_confidential_client_success (line 893) | def mock_confidential_client_success(monkeypatch): function mock_confidential_client_unauthorized (line 911) | def mock_confidential_client_unauthorized(monkeypatch): function mock_data_lake_service_client (line 929) | def mock_data_lake_service_client(monkeypatch): function mock_user_directory_client (line 1123) | def mock_user_directory_client(monkeypatch): function chat_approach (line 1132) | def chat_approach(): FILE: tests/e2e.py function wait_for_server_ready (line 21) | def wait_for_server_ready(url: str, timeout: float = 10.0, check_interva... function free_port (line 36) | def free_port() -> int: function run_server (line 44) | def run_server(port: int): function live_server_url (line 70) | def live_server_url(mock_env, mock_acs_search, free_port: int) -> Genera... function sized_page (line 80) | def sized_page(page: Page, request): function test_home (line 86) | def test_home(page: Page, live_server_url: str): function test_chat (line 91) | def test_chat(sized_page: Page, live_server_url: str): function test_chat_stop_button_visibility (line 166) | def test_chat_stop_button_visibility(page: Page, live_server_url: str): function test_chat_stop_restores_question (line 205) | def test_chat_stop_restores_question(page: Page, live_server_url: str): function test_chat_customization (line 246) | def test_chat_customization(page: Page, live_server_url: str): function test_chat_customization_multimodal (line 317) | def test_chat_customization_multimodal(page: Page, live_server_url: str): function test_chat_nonstreaming (line 414) | def test_chat_nonstreaming(page: Page, live_server_url: str): function test_chat_followup_streaming (line 445) | def test_chat_followup_streaming(page: Page, live_server_url: str): function test_chat_followup_nonstreaming (line 490) | def test_chat_followup_nonstreaming(page: Page, live_server_url: str): function test_upload_hidden (line 528) | def test_upload_hidden(page: Page, live_server_url: str): function test_upload_disabled (line 578) | def test_upload_disabled(page: Page, live_server_url: str): function test_agentic_retrieval_effort_minimal_disables_web (line 629) | def test_agentic_retrieval_effort_minimal_disables_web(page: Page, live_... FILE: tests/mocks.py class MockAzureCredential (line 47) | class MockAzureCredential(AsyncTokenCredential): method get_token (line 49) | async def get_token(self, *scopes, **kwargs): # accept claims, enable... class MockAzureCredentialExpired (line 54) | class MockAzureCredentialExpired(AsyncTokenCredential): method __init__ (line 56) | def __init__(self): method get_token (line 59) | async def get_token(self, *scopes, **kwargs): class MockBlobClient (line 67) | class MockBlobClient: method download_blob (line 68) | async def download_blob(self): class MockBlob (line 72) | class MockBlob: method __init__ (line 73) | def __init__(self): method readall (line 78) | async def readall(self): method readinto (line 81) | async def readinto(self, buffer: BytesIO): class MockAiohttpClientResponse404 (line 85) | class MockAiohttpClientResponse404(aiohttp.ClientResponse): method __init__ (line 86) | def __init__(self, url, body_bytes, headers=None): class MockAiohttpClientResponse (line 95) | class MockAiohttpClientResponse(aiohttp.ClientResponse): method __init__ (line 96) | def __init__(self, url, body_bytes, headers=None): class MockTransport (line 105) | class MockTransport(AsyncHttpTransport): method send (line 106) | async def send(self, request: HttpRequest, **kwargs) -> AioHttpTranspo... method __aexit__ (line 120) | async def __aexit__(self, *args): method open (line 123) | async def open(self): method close (line 126) | async def close(self): class MockAsyncPageIterator (line 130) | class MockAsyncPageIterator: method __init__ (line 131) | def __init__(self, data): method __aiter__ (line 134) | def __aiter__(self): method __anext__ (line 137) | async def __anext__(self): class MockCaption (line 143) | class MockCaption: method __init__ (line 144) | def __init__(self, text, highlights=None, additional_properties=None): class MockAsyncSearchResultsIterator (line 150) | class MockAsyncSearchResultsIterator: method __init__ (line 151) | def __init__(self, search_text, vector_queries: Optional[list[VectorQu... method __aiter__ (line 302) | def __aiter__(self): method __anext__ (line 305) | async def __anext__(self): method get_count (line 310) | async def get_count(self): method by_page (line 313) | def by_page(self): class MockResponse (line 317) | class MockResponse: method __init__ (line 318) | def __init__(self, status, text=None, headers=None): method __aexit__ (line 323) | async def __aexit__(self, exc_type, exc, tb): method __aenter__ (line 326) | async def __aenter__(self): method text (line 329) | async def text(self): method json (line 332) | async def json(self): method raise_for_status (line 335) | def raise_for_status(self): class MockEmbeddingsClient (line 340) | class MockEmbeddingsClient: method __init__ (line 341) | def __init__(self, create_embedding_response: openai.types.CreateEmbed... method create (line 344) | async def create(self, *args, **kwargs) -> openai.types.CreateEmbeddin... class MockClient (line 348) | class MockClient: method __init__ (line 349) | def __init__(self, embeddings_client): function mock_vision_response (line 353) | def mock_vision_response(): function create_mock_retrieve (line 375) | def create_mock_retrieve(response_type="default"): function mock_retrieval_response (line 423) | def mock_retrieval_response(): function mock_retrieval_response_with_web (line 452) | def mock_retrieval_response_with_web(): function mock_retrieval_response_with_sharepoint (line 499) | def mock_retrieval_response_with_sharepoint(): function mock_retrieval_response_with_sorting (line 546) | def mock_retrieval_response_with_sorting(): function mock_retrieval_response_with_top_limit (line 584) | def mock_retrieval_response_with_top_limit(): class MockAudio (line 611) | class MockAudio: method __init__ (line 612) | def __init__(self, audio_data): method read (line 616) | def read(self): class MockSpeechSynthesisCancellationDetails (line 620) | class MockSpeechSynthesisCancellationDetails: method __init__ (line 621) | def __init__(self): class MockAudioCancelled (line 626) | class MockAudioCancelled: method __init__ (line 627) | def __init__(self, audio_data): method read (line 632) | def read(self): class MockAudioFailure (line 636) | class MockAudioFailure: method __init__ (line 637) | def __init__(self, audio_data): method read (line 641) | def read(self): class MockSynthesisResult (line 645) | class MockSynthesisResult: method __init__ (line 646) | def __init__(self, result): method get (line 649) | def get(self): class MockDirectoryClient (line 654) | class MockDirectoryClient: method get_directory_properties (line 655) | async def get_directory_properties(self): method get_access_control (line 659) | async def get_access_control(self): method get_file_client (line 663) | def get_file_client(self, filename): class MockFileClient (line 669) | class MockFileClient: method __init__ (line 670) | def __init__(self, path_name): method download_file (line 673) | async def download_file(self): function mock_speak_text_success (line 677) | def mock_speak_text_success(self, text): function mock_speak_text_cancelled (line 681) | def mock_speak_text_cancelled(self, text): function mock_speak_text_failed (line 685) | def mock_speak_text_failed(self, text): FILE: tests/test_adlsgen2setup.py function mock_open (line 27) | def mock_open(monkeypatch): function mock_adlsgen2setup (line 42) | def mock_adlsgen2setup(monkeypatch): function mock_get_group_success (line 54) | def mock_get_group_success(monkeypatch): function mock_get_group_missing (line 74) | def mock_get_group_missing(monkeypatch): function mock_put_group (line 85) | def mock_put_group(monkeypatch): function test_adls_gen2_setup (line 101) | async def test_adls_gen2_setup( function test_adls_gen2_create_group (line 140) | async def test_adls_gen2_create_group( FILE: tests/test_agentic_retrieval.py function test_agentic_retrieval_default_sort (line 18) | async def test_agentic_retrieval_default_sort(chat_approach, monkeypatch): function test_agentic_retrieval_no_references (line 44) | async def test_agentic_retrieval_no_references(chat_approach, monkeypatch): function test_agentic_retrieval_web_results (line 69) | async def test_agentic_retrieval_web_results(chat_approach, monkeypatch): function test_agentic_retrieval_sharepoint_results (line 100) | async def test_agentic_retrieval_sharepoint_results(chat_approach, monke... function test_agentic_retrieval_minimal_uses_query_rewrite (line 126) | async def test_agentic_retrieval_minimal_uses_query_rewrite(chat_approac... function test_agentic_retrieval_minimal_requires_string (line 174) | async def test_agentic_retrieval_minimal_requires_string(chat_approach): FILE: tests/test_app.py function fake_response (line 15) | def fake_response(http_code): function messages_contains_text (line 45) | def messages_contains_text(messages, text): function pop_citation_activity_details (line 52) | def pop_citation_activity_details(result: dict[str, Any] | None): # typ... function test_missing_env_vars (line 65) | async def test_missing_env_vars(): function test_index (line 75) | async def test_index(client): function test_redirect (line 81) | async def test_redirect(client): function test_favicon (line 88) | async def test_favicon(client): function test_cors_notallowed (line 96) | async def test_cors_notallowed(client) -> None: function test_assets_route_delegates_to_send_from_directory (line 102) | async def test_assets_route_delegates_to_send_from_directory(client, mon... function test_cors_allowed (line 116) | async def test_cors_allowed(client) -> None: function test_chat_request_must_be_json (line 123) | async def test_chat_request_must_be_json(client): function test_send_text_sources_false (line 131) | async def test_send_text_sources_false(client): function test_search_image_embeddings_ignored_without_multimodal (line 148) | async def test_search_image_embeddings_ignored_without_multimodal(client): function test_content_file_missing_content_settings (line 167) | async def test_content_file_missing_content_settings(auth_client, monkey... function test_chat_stream_request_must_be_json (line 180) | async def test_chat_stream_request_must_be_json(client): function test_json_encoder_drops_optional_fields (line 187) | def test_json_encoder_drops_optional_fields(): function test_auth_setup_returns_payload (line 197) | async def test_auth_setup_returns_payload(client): function test_chat_handle_exception (line 206) | async def test_chat_handle_exception(client, monkeypatch, snapshot, capl... function test_chat_stream_handle_exception (line 223) | async def test_chat_stream_handle_exception(client, monkeypatch, snapsho... function test_chat_handle_exception_contentsafety (line 240) | async def test_chat_handle_exception_contentsafety(client, monkeypatch, ... function test_chat_handle_exception_streaming (line 257) | async def test_chat_handle_exception_streaming(client, monkeypatch, snap... function test_chat_handle_exception_contentsafety_streaming (line 274) | async def test_chat_handle_exception_contentsafety_streaming(client, mon... function test_speech (line 289) | async def test_speech(client, mock_speech_success): function test_speech_token_refresh (line 301) | async def test_speech_token_refresh(client_with_expiring_token, mock_spe... function test_speech_request_must_be_json (line 332) | async def test_speech_request_must_be_json(client, mock_speech_success): function test_speech_request_cancelled (line 340) | async def test_speech_request_cancelled(client, mock_speech_cancelled): function test_speech_request_failed (line 353) | async def test_speech_request_failed(client, mock_speech_failed): function test_chat_text (line 366) | async def test_chat_text(client, snapshot): function test_chat_text_agent (line 385) | async def test_chat_text_agent(knowledgebase_client, snapshot): function test_chat_text_filter (line 402) | async def test_chat_text_filter(auth_client, snapshot): function test_chat_text_filter_agent (line 424) | async def test_chat_text_filter_agent(knowledgebase_auth_client, snapshot): function test_chat_text_filter_public_documents (line 446) | async def test_chat_text_filter_public_documents(auth_public_documents_c... function test_chat_text_semanticranker (line 470) | async def test_chat_text_semanticranker(client, snapshot): function test_chat_text_semanticcaptions (line 486) | async def test_chat_text_semanticcaptions(client, snapshot): function test_chat_prompt_template (line 502) | async def test_chat_prompt_template(client, snapshot): function test_chat_seed (line 519) | async def test_chat_seed(client, snapshot): function test_chat_hybrid (line 535) | async def test_chat_hybrid(client, snapshot): function test_chat_hybrid_semantic_ranker (line 555) | async def test_chat_hybrid_semantic_ranker(client, snapshot): function test_chat_hybrid_semantic_captions (line 578) | async def test_chat_hybrid_semantic_captions(client, snapshot): function test_chat_vector (line 602) | async def test_chat_vector(client, snapshot): function test_chat_vector_semantic_ranker (line 621) | async def test_chat_vector_semantic_ranker(client, snapshot): function test_chat_text_semantic_ranker (line 643) | async def test_chat_text_semantic_ranker(client, snapshot): function test_chat_stream_text (line 662) | async def test_chat_stream_text(client, snapshot): function test_chat_text_reasoning (line 678) | async def test_chat_text_reasoning(reasoning_client, snapshot): function test_chat_stream_text_reasoning (line 700) | async def test_chat_stream_text_reasoning(reasoning_client, snapshot): function test_chat_stream_text_filter (line 716) | async def test_chat_stream_text_filter(auth_client, snapshot): function test_chat_with_history (line 738) | async def test_chat_with_history(client, snapshot): function test_chat_session_state_persists (line 762) | async def test_chat_session_state_persists(client, snapshot): function test_chat_stream_session_state_persists (line 779) | async def test_chat_stream_session_state_persists(client, snapshot): function test_chat_followup (line 796) | async def test_chat_followup(client, snapshot): function test_chat_stream_followup (line 816) | async def test_chat_stream_followup(client, snapshot): function test_chat_vision (line 834) | async def test_chat_vision(monkeypatch, vision_client, snapshot): function test_chat_stream_vision (line 845) | async def test_chat_stream_vision(vision_client, snapshot): function test_chat_vision_user (line 856) | async def test_chat_vision_user(monkeypatch, vision_auth_client, mock_us... function test_format_as_ndjson (line 869) | async def test_format_as_ndjson(): FILE: tests/test_app_config.py function minimal_env (line 11) | def minimal_env(monkeypatch): function test_app_local_openai (line 27) | async def test_app_local_openai(monkeypatch, minimal_env): function test_app_azure_custom_key (line 38) | async def test_app_azure_custom_key(monkeypatch, minimal_env): function test_app_azure_custom_identity (line 50) | async def test_app_azure_custom_identity(monkeypatch, minimal_env): function test_app_user_upload_processors (line 64) | async def test_app_user_upload_processors(monkeypatch, minimal_env): function test_app_user_upload_requires_storage_configuration (line 78) | async def test_app_user_upload_requires_storage_configuration(monkeypatc... function test_app_user_upload_requires_enforce_access_control (line 91) | async def test_app_user_upload_requires_enforce_access_control(monkeypat... function test_app_user_upload_processors_docint (line 106) | async def test_app_user_upload_processors_docint(monkeypatch, minimal_env): function test_app_user_upload_processors_docint_localpdf (line 121) | async def test_app_user_upload_processors_docint_localpdf(monkeypatch, m... function test_app_user_upload_processors_docint_localhtml (line 138) | async def test_app_user_upload_processors_docint_localhtml(monkeypatch, ... function test_app_config_default (line 155) | async def test_app_config_default(monkeypatch, minimal_env): function test_app_config_use_vectors_true (line 169) | async def test_app_config_use_vectors_true(monkeypatch, minimal_env): function test_app_config_use_vectors_false (line 183) | async def test_app_config_use_vectors_false(monkeypatch, minimal_env): function test_app_config_semanticranker_free (line 197) | async def test_app_config_semanticranker_free(monkeypatch, minimal_env): function test_app_config_semanticranker_disabled (line 212) | async def test_app_config_semanticranker_disabled(monkeypatch, minimal_e... function test_app_config_user_upload (line 227) | async def test_app_config_user_upload(monkeypatch, minimal_env): function test_app_config_user_upload_novectors (line 245) | async def test_app_config_user_upload_novectors(monkeypatch, minimal_env): function test_app_config_user_upload_bad_openai_config (line 265) | async def test_app_config_user_upload_bad_openai_config(monkeypatch, min... function test_app_config_user_upload_openaicom (line 281) | async def test_app_config_user_upload_openaicom(monkeypatch, minimal_env): function test_app_config_for_client (line 299) | async def test_app_config_for_client(client): function test_app_config_for_reasoning (line 311) | async def test_app_config_for_reasoning(monkeypatch, minimal_env): function test_app_config_for_reasoning_without_streaming (line 325) | async def test_app_config_for_reasoning_without_streaming(monkeypatch, m... function test_app_config_for_reasoning_override_effort (line 339) | async def test_app_config_for_reasoning_override_effort(monkeypatch, min... function test_app_enables_azure_monitor_when_connection_string_set (line 354) | def test_app_enables_azure_monitor_when_connection_string_set(monkeypatch): FILE: tests/test_auth_init.py function graph_client (line 35) | def graph_client(monkeypatch): class FakeRequestBuilder (line 105) | class FakeRequestBuilder: method __init__ (line 106) | def __init__(self, result): method get (line 109) | async def get(self): class FakeOAuthGrant (line 113) | class FakeOAuthGrant: method __init__ (line 114) | def __init__(self): method configure (line 120) | def configure(self, responses, raise_on_post=None): method next_response (line 126) | def next_response(self): method handle_post (line 131) | def handle_post(self, grant): function test_create_application_success (line 142) | async def test_create_application_success(graph_client): function test_create_application_missing_ids (line 152) | async def test_create_application_missing_ids(graph_client, monkeypatch): function test_add_client_secret_success (line 170) | async def test_add_client_secret_success(graph_client): function test_add_client_secret_missing_secret (line 178) | async def test_add_client_secret_missing_secret(graph_client): function test_create_or_update_application_creates_and_adds_secret (line 186) | async def test_create_or_update_application_creates_and_adds_secret(grap... function test_create_or_update_application_existing_adds_secret (line 217) | async def test_create_or_update_application_existing_adds_secret(graph_c... function test_create_or_update_application_existing_with_secret (line 248) | async def test_create_or_update_application_existing_with_secret(graph_c... function test_client_app_validation_errors (line 271) | def test_client_app_validation_errors(): function test_client_app_success (line 286) | def test_client_app_success(): function test_server_app_permission_setup (line 295) | def test_server_app_permission_setup(): function test_grant_application_admin_consent_creates_grants (line 304) | async def test_grant_application_admin_consent_creates_grants(graph_clie... function test_grant_application_admin_consent_skips_existing_grants (line 321) | async def test_grant_application_admin_consent_skips_existing_grants(gra... function test_grant_application_admin_consent_handles_insufficient_permissions (line 339) | async def test_grant_application_admin_consent_handles_insufficient_perm... FILE: tests/test_authenticationhelper.py function create_authentication_helper (line 28) | def create_authentication_helper( function create_search_client (line 44) | def create_search_client(): function create_mock_jwt (line 48) | def create_mock_jwt(kid="mock_kid", oid="OID_X"): function test_get_auth_claims_success (line 79) | async def test_get_auth_claims_success(mock_confidential_client_success,... function test_get_auth_claims_success_no_required (line 87) | async def test_get_auth_claims_success_no_required(mock_confidential_cli... function test_get_auth_claims_unauthorized (line 95) | async def test_get_auth_claims_unauthorized(mock_confidential_client_una... function test_auth_setup (line 102) | def test_auth_setup(mock_confidential_client_success, mock_validate_toke... function test_auth_setup_required_access_control (line 108) | def test_auth_setup_required_access_control(mock_confidential_client_suc... function test_auth_setup_required_access_control_and_unauthenticated_access (line 114) | def test_auth_setup_required_access_control_and_unauthenticated_access( function test_get_auth_token (line 122) | def test_get_auth_token(mock_confidential_client_success, mock_validate_... function test_check_path_auth_denied (line 140) | async def test_check_path_auth_denied(monkeypatch, mock_confidential_cli... function test_check_path_auth_allowed_sourcepage (line 166) | async def test_check_path_auth_allowed_sourcepage( function test_check_path_auth_allowed_sourcefile (line 197) | async def test_check_path_auth_allowed_sourcefile( function test_check_path_auth_allowed_empty (line 225) | async def test_check_path_auth_allowed_empty( function test_check_path_auth_allowed_fragment (line 253) | async def test_check_path_auth_allowed_fragment( function test_check_path_auth_allowed_without_access_control (line 281) | async def test_check_path_auth_allowed_without_access_control( function test_create_pem_format (line 312) | async def test_create_pem_format(mock_confidential_client_success, mock_... function test_validate_access_token (line 394) | async def test_validate_access_token(monkeypatch, mock_confidential_clie... FILE: tests/test_blob_manager.py function blob_manager (line 20) | def blob_manager(): function adls_blob_manager (line 32) | def adls_blob_manager(monkeypatch): function test_upload_and_remove (line 43) | async def test_upload_and_remove(monkeypatch, mock_env, mock_blob_contai... function test_upload_and_remove_all (line 92) | async def test_upload_and_remove_all(monkeypatch, mock_env, mock_blob_co... function test_create_container_upon_upload (line 141) | async def test_create_container_upon_upload(monkeypatch, mock_env, blob_... function test_dont_remove_if_no_container (line 170) | async def test_dont_remove_if_no_container( function test_upload_document_image (line 185) | async def test_upload_document_image(monkeypatch, mock_env, directory_ex... function test_adls_upload_document_image (line 240) | async def test_adls_upload_document_image(monkeypatch, mock_env, adls_bl... function test_get_managed_identity_connection_string (line 287) | def test_get_managed_identity_connection_string(mock_env, blob_manager): function test_sourcepage_from_file_page (line 294) | def test_sourcepage_from_file_page(): function test_blob_name_from_file_name (line 299) | def test_blob_name_from_file_name(): function test_download_blob (line 305) | async def test_download_blob(monkeypatch, mock_env, mock_blob_container_... function test_download_blob_not_found (line 338) | async def test_download_blob_not_found(monkeypatch, mock_env, mock_blob_... function test_download_blob_container_not_exist (line 353) | async def test_download_blob_container_not_exist( function test_download_blob_empty_path (line 362) | async def test_download_blob_empty_path(monkeypatch, mock_env, mock_blob... function test_download_blob_with_user_oid (line 369) | async def test_download_blob_with_user_oid(monkeypatch, mock_env, blob_m... function test_download_blob_properties_none (line 377) | async def test_download_blob_properties_none(monkeypatch, mock_env, mock... function test_adls_download_blob_permission_denied (line 401) | async def test_adls_download_blob_permission_denied(monkeypatch, mock_en... function test_adls_download_blob_with_permission (line 419) | async def test_adls_download_blob_with_permission( FILE: tests/test_chatapproach.py function mock_search (line 31) | async def mock_search(*args, **kwargs): function mock_retrieval (line 35) | async def mock_retrieval(*args, **kwargs): function test_get_search_query (line 39) | def test_get_search_query(chat_approach): function test_get_search_query_returns_default (line 106) | def test_get_search_query_returns_default(chat_approach): function test_get_search_query_returns_default_on_error (line 115) | def test_get_search_query_returns_default_on_error(chat_approach, monkey... function test_extract_rewritten_query_invalid_json (line 127) | def test_extract_rewritten_query_invalid_json(chat_approach): function test_extract_followup_questions (line 158) | def test_extract_followup_questions(chat_approach): function test_extract_followup_questions_three (line 165) | def test_extract_followup_questions_three(chat_approach): function test_extract_followup_questions_no_followup (line 180) | def test_extract_followup_questions_no_followup(chat_approach): function test_extract_followup_questions_no_pre_content (line 187) | def test_extract_followup_questions_no_pre_content(chat_approach): function test_search_results_filtering_by_scores (line 207) | async def test_search_results_filtering_by_scores( function test_search_results_query_rewriting (line 231) | async def test_search_results_query_rewriting(chat_approach, monkeypatch): function test_compute_multimodal_embedding (line 258) | async def test_compute_multimodal_embedding(monkeypatch, chat_approach): function test_compute_multimodal_embedding_no_client (line 282) | async def test_compute_multimodal_embedding_no_client(): function test_chat_prompt_render_with_image_directive (line 313) | async def test_chat_prompt_render_with_image_directive(chat_approach): function test_get_sources_content_downloads_images_from_images_container (line 366) | async def test_get_sources_content_downloads_images_from_images_containe... function test_replace_all_ref_ids_unknown_fallback (line 401) | def test_replace_all_ref_ids_unknown_fallback(chat_approach): function test_replace_all_ref_ids_mixed (line 428) | def test_replace_all_ref_ids_mixed(chat_approach): function test_replace_all_ref_ids_sharepoint_priority (line 459) | def test_replace_all_ref_ids_sharepoint_priority(chat_approach): function test_get_sources_content_includes_sharepoint (line 477) | async def test_get_sources_content_includes_sharepoint(chat_approach): function test_select_knowledgebase_client_priorities (line 508) | def test_select_knowledgebase_client_priorities(chat_approach): function test_select_knowledgebase_client_requires_configuration (line 535) | def test_select_knowledgebase_client_requires_configuration(chat_approach): function test_run_with_streaming_handles_non_stream_response (line 545) | async def test_run_with_streaming_handles_non_stream_response(chat_appro... function test_run_until_final_call_rejects_web_streaming (line 590) | async def test_run_until_final_call_rejects_web_streaming(chat_approach): FILE: tests/test_content_file.py function test_content_file (line 25) | async def test_content_file(monkeypatch, mock_env, mock_acs_search, mock... function test_content_file_useruploaded_found (line 84) | async def test_content_file_useruploaded_found( function test_content_file_useruploaded_notfound (line 134) | async def test_content_file_useruploaded_notfound( FILE: tests/test_cosmosdb.py class MockCosmosDBResultsIterator (line 77) | class MockCosmosDBResultsIterator: method __init__ (line 78) | def __init__(self, data=[]): method __aiter__ (line 81) | def __aiter__(self): method __anext__ (line 84) | async def __anext__(self): method get_count (line 89) | async def get_count(self): method by_page (line 92) | def by_page(self, continuation_token=None): function test_chathistory_newitem (line 101) | async def test_chathistory_newitem(auth_public_documents_client, monkeyp... function test_chathistory_newitem_error_disabled (line 136) | async def test_chathistory_newitem_error_disabled(client, monkeypatch): function test_chathistory_newitem_error_container (line 150) | async def test_chathistory_newitem_error_container(auth_public_documents... function test_chathistory_newitem_error_entra (line 164) | async def test_chathistory_newitem_error_entra(auth_public_documents_cli... function test_chathistory_newitem_error_runtime (line 176) | async def test_chathistory_newitem_error_runtime(auth_public_documents_c... function test_chathistory_query (line 198) | async def test_chathistory_query(auth_public_documents_client, monkeypat... function test_chathistory_query_continuation (line 214) | async def test_chathistory_query_continuation(auth_public_documents_clie... function test_chathistory_query_error_disabled (line 230) | async def test_chathistory_query_error_disabled(client, monkeypatch): function test_chathistory_query_error_container (line 237) | async def test_chathistory_query_error_container(auth_public_documents_c... function test_chathistory_query_error_entra (line 246) | async def test_chathistory_query_error_entra(auth_public_documents_clien... function test_chathistory_query_error_runtime (line 252) | async def test_chathistory_query_error_runtime(auth_public_documents_cli... function test_chathistory_getitem (line 270) | async def test_chathistory_getitem(auth_public_documents_client, monkeyp... function test_chathistory_getitem_error_disabled (line 288) | async def test_chathistory_getitem_error_disabled(client, monkeypatch): function test_chathistory_getitem_error_container (line 298) | async def test_chathistory_getitem_error_container(auth_public_documents... function test_chathistory_getitem_error_entra (line 308) | async def test_chathistory_getitem_error_entra(auth_public_documents_cli... function test_chathistory_getitem_error_runtime (line 316) | async def test_chathistory_getitem_error_runtime(auth_public_documents_c... function test_chathistory_deleteitem (line 332) | async def test_chathistory_deleteitem(auth_public_documents_client, monk... function test_chathistory_deleteitem_error_disabled (line 360) | async def test_chathistory_deleteitem_error_disabled(client, monkeypatch): function test_chathistory_deleteitem_error_container (line 370) | async def test_chathistory_deleteitem_error_container(auth_public_docume... function test_chathistory_deleteitem_error_entra (line 380) | async def test_chathistory_deleteitem_error_entra(auth_public_documents_... function test_chathistory_deleteitem_error_runtime (line 388) | async def test_chathistory_deleteitem_error_runtime(auth_public_document... FILE: tests/test_cosmosdb_migration.py class MockAsyncPageIterator (line 41) | class MockAsyncPageIterator: method __init__ (line 44) | def __init__(self, items): method __aiter__ (line 47) | def __aiter__(self): method __anext__ (line 50) | async def __anext__(self): class MockCosmosDBResultsIterator (line 56) | class MockCosmosDBResultsIterator: method __init__ (line 59) | def __init__(self, data=[]): method by_page (line 63) | def by_page(self, continuation_token=None): class MockPagesAsyncIterator (line 70) | class MockPagesAsyncIterator: method __init__ (line 73) | def __init__(self, data): method __aiter__ (line 77) | def __aiter__(self): method __anext__ (line 80) | async def __anext__(self): function test_migrate_method (line 88) | async def test_migrate_method(): function test_migrate_cosmosdb_data (line 171) | async def test_migrate_cosmosdb_data(monkeypatch): FILE: tests/test_csvparser.py function test_csvparser_single_row (line 9) | async def test_csvparser_single_row(): function test_csvparser_multiple_rows (line 26) | async def test_csvparser_multiple_rows(): function test_csvparser_empty_file (line 47) | async def test_csvparser_empty_file(): FILE: tests/test_function_apps.py class ChunkStub (line 22) | class ChunkStub: class SectionStub (line 29) | class SectionStub: function build_request (line 33) | def build_request(payload: dict[str, Any]) -> func.HttpRequest: function build_raw_request (line 45) | def build_raw_request(body: bytes) -> func.HttpRequest: function test_document_extractor_emits_pages_and_figures (line 57) | async def test_document_extractor_emits_pages_and_figures(monkeypatch: p... function test_document_extractor_with_adls_acls (line 138) | async def test_document_extractor_with_adls_acls(monkeypatch: pytest.Mon... function test_document_extractor_requires_single_record (line 212) | async def test_document_extractor_requires_single_record(monkeypatch: py... function test_document_extractor_handles_processing_exception (line 231) | async def test_document_extractor_handles_processing_exception(monkeypat... function test_document_extractor_invalid_json_returns_error (line 266) | async def test_document_extractor_invalid_json_returns_error() -> None: function test_document_extractor_process_document_http_error (line 274) | async def test_document_extractor_process_document_http_error(monkeypatc... function test_document_extractor_managed_identity_reload (line 310) | def test_document_extractor_managed_identity_reload(monkeypatch: pytest.... function test_figure_processor_returns_enriched_metadata (line 328) | async def test_figure_processor_returns_enriched_metadata(monkeypatch: p... function test_figure_processor_invalid_json_returns_error (line 382) | async def test_figure_processor_invalid_json_returns_error(monkeypatch: ... function test_figure_processor_initialisation_with_env (line 393) | def test_figure_processor_initialisation_with_env(monkeypatch: pytest.Mo... function test_figure_processor_warns_when_openai_incomplete (line 468) | def test_figure_processor_warns_when_openai_incomplete(monkeypatch: pyte... function test_text_processor_builds_chunk_with_caption (line 481) | async def test_text_processor_builds_chunk_with_caption(monkeypatch: pyt... function test_document_extractor_without_settings (line 573) | async def test_document_extractor_without_settings(monkeypatch: pytest.M... function test_document_extractor_module_init_key_error (line 595) | def test_document_extractor_module_init_key_error( function setup_acl_mocks (line 626) | def setup_acl_mocks(monkeypatch: pytest.MonkeyPatch, acl_string: str, en... function test_get_file_acls_extracts_user_oids (line 663) | async def test_get_file_acls_extracts_user_oids(monkeypatch: pytest.Monk... function test_get_file_acls_extracts_group_ids (line 674) | async def test_get_file_acls_extracts_group_ids(monkeypatch: pytest.Monk... function test_get_file_acls_ignores_entries_without_read_permission (line 685) | async def test_get_file_acls_ignores_entries_without_read_permission(mon... function test_get_file_acls_other_read_with_global_access_enabled (line 697) | async def test_get_file_acls_other_read_with_global_access_enabled(monke... function test_get_file_acls_other_read_with_global_access_disabled (line 710) | async def test_get_file_acls_other_read_with_global_access_disabled(monk... function test_get_file_acls_other_read_execute_with_global_access_enabled (line 724) | async def test_get_file_acls_other_read_execute_with_global_access_enabl... function test_get_file_acls_other_no_read_does_not_grant_global (line 735) | async def test_get_file_acls_other_no_read_does_not_grant_global(monkeyp... function test_get_file_acls_malformed_acl_entry (line 750) | async def test_get_file_acls_malformed_acl_entry(monkeypatch: pytest.Mon... function test_get_file_acls_handles_exception (line 767) | async def test_get_file_acls_handles_exception(monkeypatch: pytest.Monke... function test_get_file_acls_raises_without_settings (line 801) | async def test_get_file_acls_raises_without_settings(monkeypatch: pytest... function test_get_file_acls_mixed_users_and_groups (line 810) | async def test_get_file_acls_mixed_users_and_groups(monkeypatch: pytest.... function test_figure_processor_without_settings (line 824) | async def test_figure_processor_without_settings(monkeypatch: pytest.Mon... function test_text_processor_without_settings (line 851) | async def test_text_processor_without_settings(monkeypatch: pytest.Monke... function test_text_processor_invalid_json (line 879) | async def test_text_processor_invalid_json(monkeypatch: pytest.MonkeyPat... function test_text_processor_with_client_id (line 900) | async def test_text_processor_with_client_id(monkeypatch: pytest.MonkeyP... function test_text_processor_embeddings_setup (line 911) | async def test_text_processor_embeddings_setup(monkeypatch: pytest.Monke... function test_text_processor_configure_logs_when_embedding_config_missing (line 951) | def test_text_processor_configure_logs_when_embedding_config_missing( function test_text_processor_no_sections (line 971) | async def test_text_processor_no_sections(monkeypatch: pytest.MonkeyPatc... function test_text_processor_embeddings_not_initialized (line 1019) | async def test_text_processor_embeddings_not_initialized(monkeypatch: py... function test_text_processor_empty_chunk_skipped (line 1064) | async def test_text_processor_empty_chunk_skipped(monkeypatch: pytest.Mo... function test_text_processor_with_multimodal_embeddings (line 1115) | async def test_text_processor_with_multimodal_embeddings(monkeypatch: py... function test_text_processor_embedding_dimension_mismatch (line 1178) | async def test_text_processor_embedding_dimension_mismatch(monkeypatch: ... function test_text_processor_embeddings_missing_warning (line 1230) | async def test_text_processor_embeddings_missing_warning(monkeypatch: py... function test_text_processor_process_document_handles_missing_figures (line 1284) | async def test_text_processor_process_document_handles_missing_figures( function test_text_processor_process_document_returns_empty_when_no_pages (line 1335) | async def test_text_processor_process_document_returns_empty_when_no_pag... function test_text_processor_includes_acls_when_enabled (line 1353) | async def test_text_processor_includes_acls_when_enabled(monkeypatch: py... function test_text_processor_includes_empty_acls_when_enabled_but_none_found (line 1420) | async def test_text_processor_includes_empty_acls_when_enabled_but_none_... function test_text_processor_excludes_acls_when_disabled (line 1482) | async def test_text_processor_excludes_acls_when_disabled(monkeypatch: p... function test_text_processor_module_init_logs_warning (line 1545) | def test_text_processor_module_init_logs_warning( FILE: tests/test_htmlparser.py function test_htmlparser_remove_new_lines (line 9) | async def test_htmlparser_remove_new_lines(): function test_htmlparser_remove_white_spaces (line 21) | async def test_htmlparser_remove_white_spaces(): function test_htmlparser_remove_hyphens (line 33) | async def test_htmlparser_remove_hyphens(): function test_htmlparser_full (line 45) | async def test_htmlparser_full(): FILE: tests/test_jsonparser.py function test_jsonparser_single_obj (line 9) | async def test_jsonparser_single_obj(): function test_jsonparser_array_multiple_obj (line 21) | async def test_jsonparser_array_multiple_obj(): FILE: tests/test_listfilestrategy.py function test_file_filename (line 14) | def test_file_filename(): function test_file_file_extension (line 20) | def test_file_file_extension(): function test_file_contextmanager (line 26) | def test_file_contextmanager(): function test_file_filename_to_id (line 35) | def test_file_filename_to_id(): function test_file_filename_to_id_acls (line 48) | def test_file_filename_to_id_acls(): function test_locallistfilestrategy (line 60) | async def test_locallistfilestrategy(): function test_locallistfilestrategy_nesteddir (line 89) | async def test_locallistfilestrategy_nesteddir(): function test_locallistfilestrategy_checkmd5 (line 118) | def test_locallistfilestrategy_checkmd5(): function test_locallistfilestrategy_global (line 136) | async def test_locallistfilestrategy_global(): FILE: tests/test_manageacl.py class AsyncSearchResultsIterator (line 18) | class AsyncSearchResultsIterator: method __init__ (line 19) | def __init__(self, results): method __aiter__ (line 23) | def __aiter__(self): method __anext__ (line 26) | async def __anext__(self): method by_page (line 33) | def by_page(self): class AsyncPageIterator (line 37) | class AsyncPageIterator: method __init__ (line 38) | def __init__(self, pages): method __aiter__ (line 42) | def __aiter__(self): method __anext__ (line 45) | async def __anext__(self): class AsyncPageContent (line 53) | class AsyncPageContent: method __init__ (line 54) | def __init__(self, items): method __aiter__ (line 58) | def __aiter__(self): method __anext__ (line 61) | async def __anext__(self): function test_view_acl (line 70) | async def test_view_acl(monkeypatch, capsys): function test_remove_acl (line 93) | async def test_remove_acl(monkeypatch, capsys): function test_remove_all_acl (line 127) | async def test_remove_all_acl(monkeypatch, capsys): function test_add_acl (line 161) | async def test_add_acl(monkeypatch, caplog): function test_update_storage_urls (line 212) | async def test_update_storage_urls(monkeypatch, caplog): function test_enable_global_access (line 250) | async def test_enable_global_access(monkeypatch, caplog): function test_enable_acls_with_missing_fields (line 298) | async def test_enable_acls_with_missing_fields(monkeypatch, capsys): function test_enable_acls_without_missing_fields (line 326) | async def test_enable_acls_without_missing_fields(monkeypatch, capsys): function validate_index (line 367) | def validate_index(index): FILE: tests/test_mediadescriber.py function test_contentunderstanding_analyze (line 19) | async def test_contentunderstanding_analyze(monkeypatch, caplog): class MockAsyncOpenAI (line 144) | class MockAsyncOpenAI: method __init__ (line 145) | def __init__(self, test_response): class MockChatCompletions (line 150) | class MockChatCompletions: method __init__ (line 151) | def __init__(self, test_response): method create (line 155) | async def create(self, *args, **kwargs): function test_multimodal_model_describer (line 168) | async def test_multimodal_model_describer(monkeypatch, model, deployment... function test_multimodal_model_describer_empty_response (line 229) | async def test_multimodal_model_describer_empty_response(monkeypatch): FILE: tests/test_pdfparser.py function sample_image (line 42) | def sample_image(): function assert_image_equal (line 54) | def assert_image_equal(image1, image2): function test_crop_image_from_pdf_page (line 64) | def test_crop_image_from_pdf_page(): function test_table_to_html (line 88) | def test_table_to_html(): function test_table_to_html_with_spans (line 111) | def test_table_to_html_with_spans(): function test_process_figure_without_bounding_regions (line 134) | async def test_process_figure_without_bounding_regions(): function test_process_figure_with_bounding_regions (line 148) | async def test_process_figure_with_bounding_regions(monkeypatch, caplog): function test_parse_simple (line 181) | async def test_parse_simple(monkeypatch): function test_parse_with_filestorage (line 219) | async def test_parse_with_filestorage(monkeypatch): function test_parse_with_non_seekable_stream (line 257) | async def test_parse_with_non_seekable_stream(monkeypatch): function test_parse_doc_with_tables (line 307) | async def test_parse_doc_with_tables(monkeypatch): function test_parse_doc_with_figures (line 387) | async def test_parse_doc_with_figures(monkeypatch): function test_parse_unsupportedformat (line 443) | async def test_parse_unsupportedformat(monkeypatch, caplog): function test_figure_processor_openai_requires_client (line 507) | async def test_figure_processor_openai_requires_client(): function test_figure_processor_openai_describe (line 515) | async def test_figure_processor_openai_describe(monkeypatch): function test_figure_processor_content_understanding_initializes_once (line 538) | async def test_figure_processor_content_understanding_initializes_once(m... function test_figure_processor_none_strategy_returns_none (line 566) | async def test_figure_processor_none_strategy_returns_none(): function test_figure_processor_content_understanding_missing_endpoint (line 577) | async def test_figure_processor_content_understanding_missing_endpoint(): function test_figure_processor_content_understanding_missing_credential (line 588) | async def test_figure_processor_content_understanding_missing_credential(): function test_figure_processor_content_understanding_key_credential (line 599) | async def test_figure_processor_content_understanding_key_credential(): function test_figure_processor_openai_returns_describer (line 611) | async def test_figure_processor_openai_returns_describer(monkeypatch): function test_figure_processor_unknown_strategy (line 630) | async def test_figure_processor_unknown_strategy(caplog): function test_figure_processor_mark_content_understanding_ready (line 644) | async def test_figure_processor_mark_content_understanding_ready(): function test_build_figure_markup_without_description (line 653) | async def test_build_figure_markup_without_description(sample_image): function test_process_page_image_without_blob_manager (line 661) | async def test_process_page_image_without_blob_manager(sample_image): function test_process_page_image_without_figure_processor (line 672) | async def test_process_page_image_without_figure_processor(sample_image): function test_process_page_image_sets_description (line 691) | async def test_process_page_image_sets_description(sample_image): function test_process_page_image_skips_upload_if_url_exists (line 712) | async def test_process_page_image_skips_upload_if_url_exists(sample_image): function test_process_page_image_with_embeddings (line 731) | async def test_process_page_image_with_embeddings(sample_image): function test_image_on_page_from_skill_payload_without_bytes (line 750) | def test_image_on_page_from_skill_payload_without_bytes(): function test_image_on_page_from_skill_payload_invalid_page_num (line 770) | def test_image_on_page_from_skill_payload_invalid_page_num(): function test_image_on_page_from_skill_payload_invalid_bbox (line 784) | def test_image_on_page_from_skill_payload_invalid_bbox(): FILE: tests/test_prepdocs.py class MockEmbeddingsClient (line 21) | class MockEmbeddingsClient: method __init__ (line 22) | def __init__(self, create_embedding_response: openai.types.CreateEmbed... method create (line 25) | async def create(self, *args, **kwargs) -> openai.types.CreateEmbeddin... class MockClient (line 29) | class MockClient: method __init__ (line 30) | def __init__(self, embeddings_client): function test_compute_embedding_success (line 35) | async def test_compute_embedding_success(): function fake_response (line 82) | def fake_response(http_code): class RateLimitMockEmbeddingsClient (line 86) | class RateLimitMockEmbeddingsClient: method create (line 87) | async def create(self, *args, **kwargs) -> openai.types.CreateEmbeddin... function create_rate_limit_client (line 93) | async def create_rate_limit_client(*args, **kwargs): function test_compute_embedding_ratelimiterror_batch (line 98) | async def test_compute_embedding_ratelimiterror_batch(monkeypatch, caplog): function test_compute_embedding_ratelimiterror_single (line 116) | async def test_compute_embedding_ratelimiterror_single(monkeypatch, capl... class AuthenticationErrorMockEmbeddingsClient (line 133) | class AuthenticationErrorMockEmbeddingsClient: method create (line 134) | async def create(self, *args, **kwargs) -> openai.types.CreateEmbeddin... function test_compute_embedding_autherror (line 139) | async def test_compute_embedding_autherror(monkeypatch): function test_image_embeddings_success (line 164) | async def test_image_embeddings_success(mock_azurehttp_calls): function test_openai_embeddings_use_deployment_for_azure_model (line 194) | async def test_openai_embeddings_use_deployment_for_azure_model(): function test_manageacl_main_uses_search_key (line 229) | async def test_manageacl_main_uses_search_key(monkeypatch: pytest.Monkey... FILE: tests/test_prepdocslib_filestrategy.py function test_parse_file_with_images (line 23) | async def test_parse_file_with_images(monkeypatch): function test_file_strategy_setup_with_content_understanding (line 89) | async def test_file_strategy_setup_with_content_understanding(monkeypatc... FILE: tests/test_prepdocslib_textsplitter.py function test_sentencetextsplitter_split_empty_pages (line 28) | def test_sentencetextsplitter_split_empty_pages(): function test_sentencetextsplitter_split_small_pages (line 34) | def test_sentencetextsplitter_split_small_pages(): function test_sentencetextsplitter_list_parse_and_split (line 44) | async def test_sentencetextsplitter_list_parse_and_split(tmp_path, snaps... function test_simpletextsplitter_split_empty_pages (line 69) | def test_simpletextsplitter_split_empty_pages(): function test_simpletextsplitter_split_small_pages (line 75) | def test_simpletextsplitter_split_small_pages(): function test_sentencetextsplitter_split_pages (line 84) | def test_sentencetextsplitter_split_pages(): function pytest_generate_tests (line 101) | def pytest_generate_tests(metafunc): function test_sentencetextsplitter_multilang (line 108) | async def test_sentencetextsplitter_multilang(test_doc, tmp_path): function test_split_tables (line 142) | def test_split_tables(): function test_pages_with_figures (line 180) | def test_pages_with_figures(snapshot, file_name): function test_large_figure_not_split (line 200) | def test_large_figure_not_split(): function test_figure_at_start_emitted (line 221) | def test_figure_at_start_emitted(): function test_unbalanced_figure_treated_as_text (line 234) | def test_unbalanced_figure_treated_as_text(): function test_oversize_single_sentence_recursion (line 248) | def test_oversize_single_sentence_recursion(): function test_sentence_boundary_fallback_half_split (line 260) | def test_sentence_boundary_fallback_half_split(): function test_cross_page_merge_mid_sentence (line 269) | def test_cross_page_merge_mid_sentence(): function test_normalization_trims_leading_space_overflow (line 280) | def test_normalization_trims_leading_space_overflow(): function test_split_page_by_max_tokens_merges_heading_with_figure (line 295) | def test_split_page_by_max_tokens_merges_heading_with_figure(): function test_recursive_split_uses_sentence_boundary (line 306) | def test_recursive_split_uses_sentence_boundary(): function test_cross_page_merge_fragment_shift_no_sentence_end (line 321) | def test_cross_page_merge_fragment_shift_no_sentence_end(): function test_cross_page_merge_fragment_shift_with_sentence_end_and_shortening (line 338) | def test_cross_page_merge_fragment_shift_with_sentence_end_and_shortenin... function test_cross_page_merge_fragment_shift_hard_trim (line 362) | def test_cross_page_merge_fragment_shift_hard_trim(): function test_figure_merge_both_branches (line 382) | def test_figure_merge_both_branches(): function test_sentence_boundary_right_side (line 411) | def test_sentence_boundary_right_side(): function test_sentence_boundary_left_side (line 425) | def test_sentence_boundary_left_side(): function test_sentence_boundary_left_midpoint_exact (line 438) | def test_sentence_boundary_left_midpoint_exact(): function test_recursive_split_prefers_word_break_over_overlap (line 450) | def test_recursive_split_prefers_word_break_over_overlap(): function test_recursive_split_overlap_fallback_when_no_word_breaks (line 471) | def test_recursive_split_overlap_fallback_when_no_word_breaks(): function test_fragment_shift_token_limit_fits_false (line 493) | def test_fragment_shift_token_limit_fits_false(): function test_fragment_shift_token_limit_single_token_char (line 513) | def test_fragment_shift_token_limit_single_token_char(): function test_safe_concat_html_tag_boundary (line 533) | def test_safe_concat_html_tag_boundary(): function test_normalization_trims_trailing_space_overflow (line 546) | def test_normalization_trims_trailing_space_overflow(): function test_cross_page_fragment_shortening_path (line 567) | def test_cross_page_fragment_shortening_path(): function test_cross_page_fragment_hard_trim_iterative (line 582) | def test_cross_page_fragment_hard_trim_iterative(): function test_intra_page_semantic_overlap_applied (line 597) | def test_intra_page_semantic_overlap_applied(): function test_no_overlap_after_figure_previous (line 623) | def test_no_overlap_after_figure_previous(): function test_append_overlap_preserves_next_chunk_start (line 644) | def test_append_overlap_preserves_next_chunk_start(): FILE: tests/test_searchmanager.py function search_info (line 35) | def search_info(): function test_create_index_doesnt_exist_yet (line 44) | async def test_create_index_doesnt_exist_yet(monkeypatch, search_info): function test_create_index_using_int_vectorization (line 65) | async def test_create_index_using_int_vectorization(monkeypatch, search_... function test_create_index_does_exist (line 90) | async def test_create_index_does_exist(monkeypatch, search_info): function test_create_index_add_field (line 127) | async def test_create_index_add_field(monkeypatch, search_info): function test_create_index_adds_vectorizer_to_existing_index (line 160) | async def test_create_index_adds_vectorizer_to_existing_index(monkeypatc... function test_create_index_acls (line 227) | async def test_create_index_acls(monkeypatch, search_info): function test_create_index_acls_no_enforcement (line 260) | async def test_create_index_acls_no_enforcement(monkeypatch, search_info): function test_create_index_acls_no_existing_fields (line 293) | async def test_create_index_acls_no_existing_fields(monkeypatch, search_... function test_create_index_acls_no_existing_fields_no_enforcement (line 343) | async def test_create_index_acls_no_existing_fields_no_enforcement(monke... function test_create_index_acls_with_existing_fields (line 393) | async def test_create_index_acls_with_existing_fields(monkeypatch, searc... function test_create_index_acls_with_existing_fields_no_enforcement (line 453) | async def test_create_index_acls_with_existing_fields_no_enforcement(mon... function test_update_content (line 513) | async def test_update_content(monkeypatch, search_info): function test_update_content_many (line 545) | async def test_update_content_many(monkeypatch, search_info): function test_update_content_with_embeddings (line 580) | async def test_update_content_with_embeddings(monkeypatch, search_info): function test_update_content_no_images_when_disabled (line 644) | async def test_update_content_no_images_when_disabled(monkeypatch, searc... function test_update_content_with_images_when_enabled (line 673) | async def test_update_content_with_images_when_enabled(monkeypatch, sear... class AsyncSearchResultsIterator (line 721) | class AsyncSearchResultsIterator: method __init__ (line 722) | def __init__(self, results): method __aiter__ (line 725) | def __aiter__(self): method __anext__ (line 728) | async def __anext__(self): method get_count (line 733) | async def get_count(self): function test_remove_content (line 738) | async def test_remove_content(monkeypatch, search_info): function test_remove_content_no_docs (line 780) | async def test_remove_content_no_docs(monkeypatch, search_info): function test_remove_content_only_oid (line 804) | async def test_remove_content_only_oid(monkeypatch, search_info): function test_remove_content_no_inf_loop (line 864) | async def test_remove_content_no_inf_loop(monkeypatch, search_info): function test_create_index_with_search_images (line 904) | async def test_create_index_with_search_images(monkeypatch, search_info): function test_create_index_with_search_images_no_endpoint (line 965) | async def test_create_index_with_search_images_no_endpoint(monkeypatch, ... function test_create_index_with_search_images_and_embeddings (line 984) | async def test_create_index_with_search_images_and_embeddings(monkeypatc... function test_create_knowledgebase_field_names_with_acls_and_images (line 1062) | async def test_create_knowledgebase_field_names_with_acls_and_images(mon... function test_create_knowledgebase_with_sharepoint_source (line 1141) | async def test_create_knowledgebase_with_sharepoint_source(monkeypatch, ... function test_create_knowledgebase_with_web_and_sharepoint_sources (line 1212) | async def test_create_knowledgebase_with_web_and_sharepoint_sources(monk... FILE: tests/test_sentencetextsplitter.py function test_sentence_text_splitter_initializes_overlap_correctly (line 18) | def test_sentence_text_splitter_initializes_overlap_correctly( FILE: tests/test_servicesetup.py function test_setup_blob_manager_respects_storage_key (line 31) | def test_setup_blob_manager_respects_storage_key(monkeypatch: pytest.Mon... function test_setup_embeddings_service_populates_azure_metadata (line 71) | def test_setup_embeddings_service_populates_azure_metadata() -> None: function test_setup_embeddings_service_requires_endpoint_for_azure (line 95) | def test_setup_embeddings_service_requires_endpoint_for_azure() -> None: function test_setup_embeddings_service_requires_deployment_for_azure (line 116) | def test_setup_embeddings_service_requires_deployment_for_azure() -> None: function test_setup_openai_client_azure_constructs_endpoint_correctly (line 137) | def test_setup_openai_client_azure_constructs_endpoint_correctly(monkeyp... function test_setup_openai_client_azure_custom_uses_custom_url (line 162) | def test_setup_openai_client_azure_custom_uses_custom_url(monkeypatch: p... function test_setup_openai_client_azure_respects_api_key (line 185) | def test_setup_openai_client_azure_respects_api_key(monkeypatch: pytest.... function test_setup_openai_client_openai_requires_api_key (line 205) | def test_setup_openai_client_openai_requires_api_key() -> None: function test_setup_openai_client_azure_requires_service (line 215) | def test_setup_openai_client_azure_requires_service() -> None: function test_setup_openai_client_azure_custom_requires_url (line 225) | def test_setup_openai_client_azure_custom_requires_url() -> None: function test_setup_search_info_agentic_retrieval_without_model (line 235) | def test_setup_search_info_agentic_retrieval_without_model(): function test_setup_image_embeddings_multimodal_without_vision (line 247) | def test_setup_image_embeddings_multimodal_without_vision(): function test_setup_figure_processor_content_understanding (line 257) | def test_setup_figure_processor_content_understanding(): function test_build_file_processors_with_document_intelligence_key (line 273) | def test_build_file_processors_with_document_intelligence_key(): function test_build_file_processors_text_files (line 287) | def test_build_file_processors_text_files(): function test_build_file_processors_with_di_enables_office_formats (line 300) | def test_build_file_processors_with_di_enables_office_formats(): function test_build_file_processors_without_di_excludes_office_formats (line 313) | def test_build_file_processors_without_di_excludes_office_formats(): function test_clean_key_if_exists_handles_whitespace (line 325) | def test_clean_key_if_exists_handles_whitespace() -> None: function test_build_file_processors_logs_when_no_parsers (line 331) | def test_build_file_processors_logs_when_no_parsers( function test_select_processor_for_filename_raises_when_unknown (line 351) | def test_select_processor_for_filename_raises_when_unknown() -> None: FILE: tests/test_textparser.py function test_textparser_remove_new_lines (line 9) | async def test_textparser_remove_new_lines(): function test_textparser_remove_white_spaces (line 27) | async def test_textparser_remove_white_spaces(): function test_textparser_full (line 35) | async def test_textparser_full(): FILE: tests/test_textprocessor.py function test_combine_text_with_figures_no_description (line 5) | def test_combine_text_with_figures_no_description(): function test_combine_text_with_figures_placeholder_not_found (line 27) | def test_combine_text_with_figures_placeholder_not_found(caplog): function test_combine_text_with_figures_replaces_successfully (line 50) | def test_combine_text_with_figures_replaces_successfully(): FILE: tests/test_upload.py function test_upload_file (line 16) | async def test_upload_file(auth_client, monkeypatch, mock_data_lake_serv... function test_upload_file_error_wrong_directory_owner (line 91) | async def test_upload_file_error_wrong_directory_owner(auth_client, monk... function test_list_uploaded (line 123) | async def test_list_uploaded(auth_client, monkeypatch, mock_data_lake_se... function test_list_uploaded_nopaths (line 130) | async def test_list_uploaded_nopaths(auth_client, monkeypatch, mock_data... function test_delete_uploaded (line 156) | async def test_delete_uploaded(auth_client, monkeypatch, mock_data_lake_...